home

about

team

projects

papers

downloads

manual

messageboard

FlexControl

A system to dynamically load custom external control modules for FlexBot at run-time.


Summary

Expanding the realm of FlexBot game control beyond the Half-Life console window can allow for a variety of creative solutions to game management. In the early pre-release versions of FlexBot, all external control functionality was hard-coded into the FlexBot system. While this design provided some basic external control capabilities, it limited the user to the specialized interface provided. Additional control features required modification of the FlexBot source code, forcing the developer to work with a non-standard build of the FlexBot system that was not easily upgradeable. The control system relied entirely on TCP sockets and modification of the control interface could be a daunting task.

FlexControl provides a framework for the user to create custom external game control modules that can be loaded by FlexBot at run-time. Any number of FlexControl modules may be loaded simultaneously and all modules run in parallel. FlexBot frequently queries every loaded FlexControl module to check for incoming commands to execute. Because modules are compiled into DLL's, their implementation is language-independent. FlexControl modules are simple to develop because they can easily be compiled in Microsoft Visual Studio using the provided template code.


Control Flow


Details

  • The FlexControl architecture is built into the FlexBot Beta 1 release.
  • FlexControl modules can execute any FlexBot command that can be typed into the console.
  • Modules are compiled into DLL's.
  • C++ template code provides the framework for creating a simple module.
  • Compiled FlexControl module DLL's are placed in the FlexBot/dlls/FlexControl/ directory. All modules in this directory are loaded by FlexBot at run-time.
  • Modules can be easily distributed for use by other users without recompiling or reconfiguring any parts of the system. The module will work on a different FlexBot-equipped machine as soon as the user drops the file into the appropriate directory.
  • There is no limit to the number of FlexControl modules that may be running concurrently.

Existing FlexControl Modules

TCP Commander
The TCP Commander sets up a socket server that listens for TCP connections and passes requests along as FlexBot commands.
[ Source Code | Download ]

  gdunham@northwestern.edu