BFG: Firefighting Edition
The BFG series of courses serves as an introduction to real-world computer science by providing a framework in which a group of students design, administrate, and produce a game for a client under real deadline and budget constraints. This year's game is being developed in conjunction with the University of Illinois's Illinois Fire Service Institute, an institution specializing in training firefighters.
The game will be a training simulation for first-response fire officers. Having arrived at the scene of a home or business fire, the fire officer trainee will have to make a series of command decisions directing a team of AI-controlled non-player firefighters in order to rescue victims, minimize property damage, and control the spread of the fire. The training simulation could then be used in conjunction with expert supervision or in a lesson mode designed to teach fire officers how to make the correct decisions through repeated training exercises.
To serve as a training tool, it is necessary that the game be accurate, interactive, and responsive. More specifically, though strict physical accuracy is unecessary, the behavior of the fire needs to be believable, the user must be able to interact with the simulation (extinguish fires, cut the roof for ventilation, etc), and the simulation must respond believably to these interactions. Also, since the course lasts only a year and will comprise different students in the first and second semesters, rapid development and modularity are important design factors.
We decided to base the architecture of the game around a central simulator comprising two parts: a spatial simulator, which is responsible for the fire's behavior, and a sound simulator, which keeps track of sounds (e.g. from victims or vigorous burning) and determines where they can be heard. The simulator must operate in real-time, be fully modifiable by outside clients, and use no information outside of its current state to determine its next state. These restrictions allow for the parallel development of modular clients that interact with the simulator to produce the effects in the game.
The simulator clients include the player interface (graphics, controls, etc), the non-player characters such as firefighters and victims, wind or weather effects...anything which conveys or impacts the state of either sound or the fire. These clients can read the simulator state and set it directly, and the simulator will continue the simulation from that point. The architecture also allows for clients that serve as simulator shortcuts. For example, a client will be responsible for radiative heat, while another is responsible for building collapse due to materials being consumed by fire. A third will be used to monitor for pre-backdraft or flashover conditions and manually force the appropriate effect given certain triggers.
A key aspect of making this game a reality is dealing with very real deadline and resource constraints. The goal for the students enrolled in the first semester is to organize teams with explicit responsibilities and prepare an infrastructure that will allow for rapid development when more students enroll next semester. To this end, our milestone for the end of the first semester is to simulate a building on fire and be able to view it in a 3D graphics engine; the second semester will be used to provide the functionality necessary to put the fire out.
Due to the small number of students enrolled in the first semester, we had to limit the creation of teams to only those necessary for the completion of our first milestone:
- Spatial Team: Responsible for the spatial component of the simulator. The current design is a Markov cellular automata with clients used for fast effects, such as explosions, and phenomena that doesn't fit well into a cellular scheme, such as radiation. A detailed description of the spatial simulator can be found here, and preliminary results can be found here.
- Interface Team: Responsible for the interface presented to the player. For the first semester, this primarily involves the presentation of the two story building we'll be burning and believable fire and smoke.
- Modeling Team: Responsible for creating all the models used by the Interface Team. These include buildings, furniture, non-player characters, tools, etc.