FlexBot Projects

Skip to : ongoing | proposed | enhancements

Ongoing Projects


Ultimately, we believe that for computer games, the perception of intentionality is more important than intentionality itself. To this end, we've tried to create bots which are relatively simple, very efficient and are observably intelligent. That is, we sacrifice complicated processing on the backend, and try to ensure that any intelligence we invest into the bot is overt to the end user.

Ledgewalker is the name of the bot which has been created as a result of this approach. It is very efficient; we've successfully run 32 bots, the maximum number supported by the game engine, on one machine under dedicated server mode, and 16 in listen server mode. Preliminary results show that Ledgewalker does exhibit behavior which players would term "intelligent", even though the rules that govern it are relatively simple. Ledgewalker was written in Generic Robot Language (GRL), a language originally designed for robot development. GRL is a simple language that extends traditional functional programming techniques to behavior-based systems. It is an architecture-neutral language based on Scheme for describing reactive control systems. GRL provides a wide range of constructs for defining data flow within communicating parallel control systems and manipulating them at compile time using functional programming techniques. Code written in GRL can be compiled to a variety of languages, including Scheme, Basic and C++.

For more information, see our paper for the AAAI 2002 spring symposium describing Ledgewalker. We are currently working on the follow-up to Ledgewalker, codenamed "Groo".

PackHunter and Hunter-Runner

Our new projects PackHunter and Hunter-Runner make use of the HIVEMind architecture to demonstrate close team coordination. PackHunter attempts to coordinate deathmatch bots on the same team. Hunter-Runner scenarios involve one Runner attempting to escape from a set of 3-5 Hunters. The Hunters cooperatively search the map until they locate the Runner and are able to trap him. When the Hunter bots trap the Runner, they open fire and destroy the Runner. 

Project Members: Aaron Khoo, Nick Trienens


Record FlexBot games as they happen and replay them later using the BigBrother game-viewing utility. The ReFlex project provides a "replay" tool for game review and analysis.


The objective of Patton is a study in the integration and interface of various technologies for mobile devices. To save vital processing time, FlexBot only outputs raw stat data. Parsing this data is the responsibility of the Perl servers, which input the parsed information into a MySQL server. Other Perl applications are then responsible for creating HTML files which display the data in a concise and meaningful way to the user. See the Patton homepage for more details.


Hamlet is a decision-theoretic system designed to manage the flow of gameplay experiences by supplying "just-in-time" aid to a player. Using techniques drawn from probability and utility theory, the system examines the player's inventory and strategically places aid within reach at critical points during the action. Our aim is to limit frustration (needless hunting for ammo or health, repeated death at the same point) while maintaining the dramatic tension or “flow” of the game (the player's experience of challenge, struggle and triumph at the controls). See the Hamlet homepage for more details.

Project Members: Robin Hunicke

The Next Generation FlexBot Project and FlexBot CS

A primary goal Next Generation FlexBot Project is to develop a hierarchical control system whose higher-level components can be reused with other games in the FPS domain. FlexBot CS is a rewrite of the original FlexBot architecture geared towards the Counter-Strike environment. The FlexBot CS environment, which features more complex goals than traditional deathmatch, will be the first target environment for experimenting with the Next Generation FlexBot Project's control methods.

Project Members: Greg Dunham

Porting FlexBot

FlexBot is currently available only for Half-Life under Windows. We in the process of porting FlexBot to Linux, and creating equivalent FlexBot implementations for Quake and Unreal.

Skip to : ongoing | proposed | enhancements