|
Introduction
As
a former game developer who has worked in the Visual Simulation
(VizSim) industry, I'd like to share my experiences. We all have read a
lot about serious games companies that apply game technology to
VizSim-like training and learning games. As you will see, there are a
lot of similarities between the games industry and the VizSim industry
that make VizSim companies attractive to game developers. Especially as
it seems to be a more respectable and serious job and you'll probably
get a thumbs up from your mom.
There
are things that make the traditional VIZSIM simulation business
different from what you probably will experience in the game business.
These differences start with terms used for technology components that
you've learned to understand. Prepare to no longer say ‘render engine',
but ‘computer image generator' (CIG) instead! The focus of the simulation of the world is different for the VizSim industry but most fundamental techniques are the same.
My
impression is that games have superior technology in various contexts
that are relevant for both industries. Still, games don't provide the
same sort of simulation fidelity that simulators do – partially because
there is no need to do so. I'll try to shed some light on more details while explaining the training simulator environment.
The
following text is not intended to be a general text about the VizSim
industry – I obviously can only tell you how it works where I worked,
and how it compared to my time in the game industry.
How did it all happen?
A
few years ago I was working for a games and game technology company as
the head of development. Unfortunately this company became defunct with
the dot com crash. Since I did not want to relocate my family again, I
tried to find a nearby position. On an online job portal, I stumbled
across a job ad saying ‘OpenGL' and ‘visualization.' These are among
the things I am experienced at, and I applied for the job. Funnily
enough four of my former colleagues had also applied for other jobs at
the same company, and we all ended up working there.
Simulators for ground vehicles
The
company we worked for mainly builds tanks and armored vehicles. They
also have a division that builds training simulators for everything
that drives on the ground (i.e. cars, trucks, tanks, trains, metros and
subways). In addition to driving simulators, they also do training
battle simulators for all sorts of tanks. Since people who buy tanks
are also interested in training equipment for these tanks, especially
simulators, the simulation division profits a lot from its big
‘mother.' This text will mostly cover military simulators since this is
what I worked on.
The
project I worked on was a networked battle tank simulator. It used 13
PCs per cabin to render 13 different views from inside the tank. The
simulated and displayed world was up to 80 x 50 square kilometers big
and 110 tanks plus effects had to rendered at constant 30Hz at 4xAA and
1280x1024. Trees and houses in the database were supposed to be
destructible. Dynamic craters from artillery impacts and dynamic track
marks from all tanks had to be supported. Furthermore, dynamic shadows
from all major scene parts due to a moving sun had to be rendered.
Lighting with dynamic and moving light sources also needed to work. In
addition to normal views, various sensor imaging techniques that
simulate IR or light amplifier devices had to be implemented. All of
this in isolation was no problem, but given the size of the scene and a
visibility range of over 5.5 kilometers the task was demanding.
Simulator Hardware
The
budget for a simulator varies a lot depending on the kind of simulator
to build. A complicated training simulator with multiple networked
cabins has a budget that can be compared to that of a AAA title, or may
even exceed a AAA budget. In general, though, the budget for a civil
simulator is well below that of a AAA title.
Hardware
is an important part of every simulator. A big chunk of the budget for
a training simulator is spent for hardware. This means there is less
money available for software and asset creation than for an AAA title.
For one project the hardware even included the construction of a
building that actually contained all the training equipment.
In general the hardware is a cabin (see e.g. http://www.sdtb.kiev.ua/sdtb_train_en.htm)
with an interior that is more or less a perfect copy of the cabin of
the real vehicle. All switches, steering wheels, knobs and other
equipment are present in the simulator cabin, and are functional as in
the real vehicle.
For
some simulators the cabin is mounted on a hydraulic motion system that
provides motions inside the cabin that are perceived as acceleration,
deceleration or other forces acting on the vehicle.
|
|
|
 |
 |
 |
A turret training simulator
|
Turret
training simulators feature a cabin that is actually a copy of the real
turret of a simulated tank and can weigh up to several tons (see e.g. http://www.c-its.com/svensk/simulation/CATS_Turret_Leo.html).
The turret sits on electrical motors that rotate the turret and its
inhabitants based on handles operated by the gunner. Turret trainer
hardware also moves the gun up and down and even allows for training
reloading of the gun. In addition to the gunner other positions of the
tank crew members are also supported and are provided with artificial
visuals.
Visualization
for simulators does not always happen on monitors, but very often on
non-planar projection screens that show edge blended projections of the
images computed by several CIG (computer image generator) computers and
projected by expensive projectors.
Each
simulator features a bunch of computers doing vehicle simulation,
physics simulation, sound simulation and visualization. So it's not at
all like the hardware environment of a computer game where there is
exactly one computer doing all the work. All this hardware needs to be
controlled by software, of course, and this is where we begin to see
more similarities to game development.
Simulator Software
I'll
now try to give some insight into the different software components
that run inside a simulator – most of run on their own dedicated
computer or even on more than one computer. Very often, simulation
software is a distributed software system.
The
relatively big number of computers in one simulator is a very
astonishing thing for a game developer. I still ask myself from time to
time – how can one need so many computers for tasks that run on one
computer in a typical game? There are obvious reasons for some of the
computers to be around, especially for visualization, as we will see
later. One thing to consider, though, is OS boundaries – e.g. real-time
3D rendering happens on Windows PCs, whereas the rest of the simulation
usually happens on Linux PCs. Most of the simulation software is
written in ADA - a semi-dead language that actually is pretty nice if
you take a closer look at it. Again, real-time 3D software is written
in C++. Although there are ADA compilers for Windows, the simulation
people I workede with feel a lot hate and disgust for Windows and
simply don't trust it, thus limiting their solution space.
Vehicle simulation
At
least one computer per simulator cabin, usually called the
‘Simulation-Host', polls all input switches and handles of the cabin
hardware to simulate the inner state of the vehicle. The
Simulation-Host also talks to a software component that provides a
spatial index for collisions detection and collision response for the
physical simulation of position and orientation of the simulated
vehicle.
The
Simulation-Host learns about the other entities in the simulation world
only through TCP/UDP data using the simulation domain standard
protocols DIS (short for Distributed Interactive Simulation – see (people.freebsd.org/~jha/aboutdis.html) or HLA (www.informs-sim.org/wsc98papers/227.PDF)
using multi-cast or broadcast. Other entities are other simulators or
AI vehicles which are called SAFs (Semi Automated Forces) or
CGFs(Computer Generated Forces) in the VizSim world.
The
rules of DIS are easy; the Simulation-Host is only allowed to tell
other simulation participants about its own state changes. It can't for
example determine if it has destroyed any other entity by the shot of
its main gun. What it is allowed to do is to tell everybody that it has
caused a detonation at a specific location. To decide if other entities
take damage from this detonation is up to the software simulating the
states of these entities.
The
Simulation-Host also talks to the computer running the visual systems
or CIGs that produce the real-time 3D views for all windows or other
viewing devices inside the vehicle. I'll talk more about 3D rendering
later. Simulation-Host also talks to a sound system component to
produce sounds as heard from inside the vehicle.
The
Simulation-Host is what in the games domain is the player object or PC
(player character) and its simulation. The SAFs are the VizSim world
equivalent to NPCs (non-player characers).
Since
the simulation of a tank, all its states, all its optics and other
components is pretty complex, a whole computer is allocated to this
task. Because a modern tank has a computer that shows a tactical map of
its surroundings and a way to transmit tactical symbols to friendly
tanks in an encrypted data format, it also needs to be simulated as
well as radio messages between all tanks in a scenario.
Physics simulation
A
few words on physics – the VizSim industry does not seem to use much
physics middleware like Havok or MathEngine. They do have pretty
advanced custom physics simulation software for tank physics, train
physics and so on, but no general rigid body physics software. For a
game physics developer, a VizSim company might be a good choice because
they are just beginning to explore things like full rigid body physics,
soft-body or even cloth simulation. The physics solutions are not as
refined in terms of mathematics used – I did not see techniques like
adaptive time steps, runge kutta or other integration techniques at
work (such as implicit integrators, verlet integrators etc.)
AI and World Simulation
All
artificial vehicles (NPCs), aircraft, human characters (usually called
DIs – dismounted infantry) are usually simulated by yet another
computer. Let's call this computer ‘Battlefield-Simulator.' It does all
the motion planning, strategic planning and animation control for AI
entities. The algorithms and data structures are the same that are used
in the game industry, e.g. A*, influence maps or state machines of
various flavors. For the project I worked on, an integration of an AI
middleware was one of the ways of trying to cope with the immense size
of some of the simulation worlds that were used and showed impressive
results.
The
world simulation also sends positional and other updates via DIS for
all simulation participants to inform them about these entities.
Therefore, you could call it the MMOG server of a training simulator.
There are examples of simulator scenarios that have featured thousands
of participants that were all connected via DIS and were spread across
several continents.
AI
seems to be the area with the most similarities between games and
VizSim. My impression was that games have the more advanced AI
technology. One thing to consider though is that not every cool AI
produces effects that are good for creating reproducible exercises –
which is what an VizSim instructor wants. A game has to look cool and
must be fun to play. Training simulations that have the goal to as
closely as possible mimic existing technology and real scenes in order
to fulfill training objectives. The training objectives are not to make
a simulator fun to play with, but to achieve a training goal. The
requirements that need to be fulfilled to achieve the training goals
might even affect things that games just leave out because they are
hard to achieve. This might not be possible if a VizSim customer
insists on a specific requirement.
|