Terrain in Games
Computer games have featured terrain since the earliest 3D graphics.
However, representing the real world has not been a priority; they are usually
"fantasy" worlds. Even when the real world is the subject, an extremely
limited area or view of the world is used, with no geographic framework.
Even worse, technology is usually created for a game and discarded or lost soon
after. Nonetheless, because so much time, energy and money has been spent
in the game world over the years, it is worth looking at their terrain.
Middleware
- There is a field of software which is licensed to companies which want to
produce a game. This software includes APIs, tools, viewers, etc. Sometime
it is called a "game engine", or "middleware platform".
- Well-known examples include NDL Gamebryo,
RenderWare, and the Quake
and Unreal engines.
- There are also some mature open-source middleware systems such as
Crystal Space and
OGRE.
- Some of these include significant terrain capability.
If we consider all game-oriented software libraries with terrain features,
there are far too many to list, and new ones appear very often. Here are
some
historical examples:
-
AdVantage
terrain library
- Very smooth paging of grid and imagery datasets up to 32k*32k in
size
- Fast rendering technique that uses almost no CPU time, is GPU and
VRAM friendly, and has smooth transition (morph) between LOD levels.
- Several nice demo datasets.
- The author, Filip Strugar, gives an example of elevation data size:
For the classic Puget Sound dataset (16k*16k, 2 bytes/heixel), that's
256 Mh/512 MB of input, processed as 48.26 million triangles, 306 MB of
storage space, which is only 1.2 bytes per input heixel. Textures are
handled as DDS with around .5 bytes/texel.
-
T-5
Terrain Rendering Engine by Rui Ferreira
- the current engine has attractive, full-unique texturing and RTIN
CLOD for elevation
- Rui says he tried out every sort of algorithm: binary triangle
trees, quadtrees, split-only versions, leaf split-mergers, weird split
metrics, vertices buffers, dynamic variance, diamond combiners, fan
optimizers, 5 point strips, top-down, bottom-up...
- the engine does
full unique
texturing
In some cases is can be possible to get real-world data into a game engine,
but the process is usually painfully difficult, as demonstrated in
3dNemo Tutorials: Google Earth to
Unity (2009)
As of 2004, an interesting trend: Using Game
Engines for Architectural Walkthroughs.