Yep Frosted is right on the money, the ai coding pattern is less a problem than designing the game actually. Especially the construction of the accessible state, ie all the strategy to tag or feel the world.In fact utility is super hard because you must abstract behavior and choice to curve and score, which is not trivial. When I first seen this thread, I was about to make shout out to Dave Mark, but you guys covered it and I was about to tell about Utility tree but then it has been found (stack it up). IMHO teh best way to use utility is a concept tree (stack it up) that precisely map to concept, as an evaluation layer, then have the decision based on those concept in a behavior tree (world state ->perception -> evaluation -> decision -> action-> world state - ie the logic loop). In fact the concept in the evaluation pass are also managed with fsm (with state having local variable) to create slight context (so that you don't flip flop moods in a social sim for example). There is no silver bullet, a lot of people I met from the game industry now joke about the ai sandwich paradigm. It help that once you understand the logic loop of AI architecture are actually infinitely nestable according to your need. The best advice, to me, is to think about how to implement each step of the logic loop.