home

team

projects

papers

downloads

manual

messageboard

About FlexBot

FlexBot is essentially a Half-Life mod. It is a system that provides a framework for developers to create 'bots', or simulated players, for participation in multiplayer games along with other humans or bots. The developers of Half-Life, Valve Software, publicly provided an SDK for the Half-Life engine which has been available for some time. This has led to a proliferation of 'mods', i.e. new programs based on the Half-Life model. Furthermore, within the system is a 'fake client' option which allows non-human characters to participate in a standard multiplayer game controlled by the host computer. As a result, a small community of bot developers has sprung up around the Half-Life engine.

Being robot hackers by trade, we designed the interface to the Half-Life engine in a manner that we were familiar with. The FlexBot interface has a clear set of sensors and actuators. The programmer is responsible for the "think" function in between. Any calls to the Half-Life engine are done entirely through the provided interface. This has the advantage of shielding the bot developer from the inner workings of the Half-Life engine, providing a clean and simple interface for rapid development. However, the disadvantageous side of this is that the bot developer has access to no more information than the interface provides.

Unlike other APIs such as those provided by Quakebot and Gamebots, we do not explicitly present the user with a tcp socket interface. Instead, we assume that any bots will run concurrently with the game server on the same machine. It is an explicit goal of ours that any bots built should not tax the host machine much, and should be able to co-exist with the game server. We feel that, from a game programmer's perspective, it is better to assume that our users are the common players who only have access to one machine at a time. However, it is worthy to note that adding a socket interface to an external client bot machine would be trivial in FlexBot.

FlexBot is written in C++ and the bot behaviors are DLLs residing in a pre-determined sub-directory within the Half-Life installation path. Bots can be written in any language which can generate a Windows DLL.

Ultimately, FlexBot is meant as a testbed for experimentation. We have used it to implement some theories and ideas about games that our group has come up with. Since our group is primarily concerned with higher-level concepts, FlexBot is a nice tool since it abstracts away much of the lower level nitty-gritty details and affords a rich environment in which to experiment. See the projects page for some of the ongoing projects that we're working on using the FlexBot architecture.

Furthermore, FlexBot is also a teaching tool. Its interface is reasonably simple and well-documented. It was used in the Behavior-Based Robotics class as a simulator on which the students could implement some of the ideas they had been taught. These students also acted as the first large beta-test group that the FlexBot architecture has been through. We're happy to report that, in general, FlexBot was stable and presented no large showstopping bugs.

  khoo@cs.northwestern.edu