A system to dynamically load custom external control modules for FlexBot at
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
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.
- The FlexControl architecture is built into the FlexBot Beta 1 release.
- FlexControl modules can execute any FlexBot command that can be typed into
- 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
Existing FlexControl Modules
The TCP Commander sets up a socket server that listens for TCP connections and
passes requests along as FlexBot commands.
[ Source Code