Novel formalisms for constructing agent-based AI in digital games have enabled practitioners to create new breeds of non-player characters. One of these, layered Statechart-based AI, shows considerable promise by being highly modular, reusable, and designer friendly, but as yet it has not been applied to an AI of substantial complexity. We remedied this by designing and modelling an agent comparable in size and complexity to a commercial AI, clearly demonstrating that layered Statechart-based AIs can meet the demands for AI in top of the line digital games.
As a reference point, we looked to the highly popular and well received em behaviour tree AI used in the commercial game Halo, and reconstructed it using the new approach. This process revealed several previously unidentified design considerations, such as sensor patterns, the necessity of subsumption, and the utility of orthogonal regions. Key features of the Halo AI were specifically addressed, including stimulus behaviours, styles and masks, and memory usage, proving by example that usage of the layered Statechart approach does not result in a loss of functionality compared to behaviour trees.
The work presented here is the complete library of Statecharts that formed our AI. All Statecharts were constructed using IBM Rational Rhapsody, and are given here in Rhapsody source and as .pdf illustrations for easy perusal. The Statecharts here are considered authoritative for this research, and are more current than papers that describe them. Where possible, papers will be updated to reflect the newest version of the research.
Please contact Chris Dragert (chris.dragert (at) mail.mcgill.ca) for more information.
SourceAll work was done in IBM Rational Rhapsody. It can be downloaded on a trial basis from IBM here.
- Command execution should have an executor and actuator
- Flying vehicles need to be recognized and handled accordingly
- Vehicles have a secondary attack that isn't accounted for
- Ranged weapons with a travel time (e.g. rockets) need to be aimed differently than instant weapons (e.g. a sniper rifle)
- Some output events aren't received: ev_VehicleSpotAvailable, ev_StopMove in some cases.
Last updated: June 2, 2012