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 engine.
- There are also some mature open-source middleware systems such as
Crystal Space and
OGRE.
- Most of these include significant terrain capability.
- Outerra is a good example of a
modern (2012) small commercial middleware focusing on terrain. "Planetary
engine for seamless planet rendering from space down to the surface. Can use
arbitrary resolution of elevation data, refining it to centimeter resolution
using fractal algorithms. Unlimited visibility, progressive download of
data, procedural content generation."
If we consider all game-oriented software libraries with terrain features,
there are far too many to list (thousands?), and new ones appear very often. Here are
some
historical examples:
-
AdVantage
terrain library by Filip Strugar
- 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 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
Unity
- 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 2013, the only way to get real terrain in/out of Unity is with
scripts that must run inside Unity itself (Object2Terrain
to import,
TerrainObjExporter to export) or using unitless "raw" files.
Back in 2004, an approach which didn't take off: Using Game
Engines for Architectural Walkthroughs.