The Next Generation FlexBot Project
Stability. Power. Counter-Strike.
What is The Next Generation FlexBot Project?
The FlexBot 1.0 release provides a
well-defined interface for autonomous agents to operate within a standard
Half-Life multiplayer "deathmatch" environment. The system has proven
to be a useful test bed for AI techniques, with behavior-based techniques being
used to build bots that exhibit human-like behavior in combat situations. The
platform has also proven to be stable, with uptimes often ranging in the
hundreds of consecutive hours.
Building upon this success, the next generation of FlexBot will support more
complex goal-based scenarios in Counter-Strike,
a popular Half-Life MOD, while providing a programming interface that more
broadly applies to similar FPS-style games.
- Rebuild the system from the ground up for increased performance,
reliability, and flexibility. Such a rebuild should eliminate nagging
technical problems that are difficult or impossible to resolve in the
- Port FlexBot to the Counter-Strike environment. Counter-Strike requires
more intelligence than the "see-turn-shoot" reactive model that
works so well in a Half-Life deathmatch and should provide more interesting
problems for agent AI. See FlexBot CS for more
information about the Counter-Strike port.
- Design and build a hierarchical control system whose higher-level
components can be reused with other games in the FPS realm. Although
low-level motor control interfaces must be tailored to a specific gaming
environment, it should be possible to design higher-level interfaces that
are effective in similar environments.
Hierarchical Control Architecture
Control modules will be implemented as language-independent shared code
libraries. A modular, "stackable" architecture will be imposed (and
enforced) for control modules at any level. There will be three types of control
modules, each of which corresponds to a layer in the hierarchy described above:
Reactive, Deliberative, and Meta/Reflective. These layered modules will be
interchangeable with other modules designed for the same control layer, meaning,
for example, that a single Meta layer module would work with any Deliberative
layer module that is loaded into the hierarchy below it. The system will be
built for compatibility with the Windows dedicated server and client, as well as
with the Linux dedicated server.
Major project tasks
Specification of interfaces between the
Environment and Reactive process layers, between the Reactive and
Deliberative process layers, and between the Deliberative and
Meta/Reflective process layers.
Implementation of actuators and sensors
in the Counter-Strike environment (see FlexBot CS).
Implementation of functional framework
for hierarchical structure and interfaces.
There are several potential roadblocks that
may be encountered. Because Counter-Strike involves more complex goals than a
simple deathmatch game, defining logical low-level sensory interfaces related to
these objectives may prove difficult. It may also prove time-consuming to define
a single interface that can generally apply to the entire realm of FPS games due
to varying types of goals, interactions, and physical models across gaming
platforms. Maintaining cross-platform (Windows and Linux) compatibility will
also increase development time somewhat.
Possible future directions
The infrastructure created for this project
should open up many avenues for future exploration. Possible directions include:
Meta layer integration with QRG
Improving intelligent performance of
extremely low-overhead Reactive control systems such as behavior-based
Dynamic team-oriented tactical control
via multi-agent Meta layers
Creation of interchangeable
"personalities" for various niches in the control hierarchy (e.g.
a "Rambo" Reactive module that "shoots first and asks
questions later" vs. a "Recon" Reactive module that surveys
the scene and quietly passes observations up the hierarchy as long as it
Development of passive or interruptible
logistical planners for the Deliberative layer that are suitable for
real-time game environments
More powerful implementation of the
open-ended extension module architecture available in the original FlexBot
(e.g. for widely-dispersed, multi-modal monitoring and control capabilities)