Game World Concept, Design, Creation, and Management

Started by
10 comments, last by fireking 20 years, 5 months ago
Never done terrain before but from what i have read b4 from the Dungeon Siege Continuos World article, i think it is very useful. They don''t use heightmaps, but instead use small meshes and "stitch" them together to form an area. The advantage of this method is that you can load small amounts of geometry during runtime and not have slowdown. Also this method applies to all objects, trees, houses, barrels, bridges and anything that you see. While there is no code, the concept has been proved in Dungeon Siege where you never go through a loading screen from start to finish with the exception of the startup. Also, i feel it gives you alot of control over the detail of any area in your game.
Advertisement
It turns out the nevrax engine does use bezier patches for terrain. So there are people out there using bezier for terrain.

I found a good link on water erosion:
http://www.geocities.com/Area51/6902/t_hydro.html

It provides source for a c program that takes a matlab height field matrix and erodes it. It is super slow though.

I think I need to come back around and restate my goals and plan for terrain. I could handle terrain in several ways.

High level world design (the game globe):
Given my game is in a feudal Japanese cultural setting, perhaps I could download heightmaps for pieces of Japan. Maybe I could also get climatological/wildlife data on regions. This has the problem that it might be missing that fantastical element that grabs players.

Another method would be to sit down and draw a map that shows the regions, and detail geology and climate/wildlife for the regions. This would be the Tolkeinesque method of world creation.

A third method would be to have code that creates a landscape with random fractals, then water erodes the height map, to create a realistic random landscape.

For any of these methods, I''d need to figure out the scale of the world I''d use. Like perhaps 16km on a side? Its a balancing act of making the world big enough to warrant exploring, but small enough that it doesn''t feel empty and lifeless.


Low level world design:
Perhaps for each pixiel in the world heightmap, I would create a game tile. Each tile could either be a varying level of detail polygonal mesh, a set of bezier patches, or set of NURBS patches. Given that some nevrax/ryzom is using the bez patch method now, I am inclined to use that. Also by the time my game is released (2-3 years, if ever) graphics hardware will probably have advanced to the point that bez patches are commonly supported and not a performance issue.

Now what about what makes up the tiles? Do I create each tile by hand, do I autogenerate the tiles, or some mix of the two? I am inclined to mix the two.

I think I would create a library of trees/rocks/grass/mud/swamp/snow/etc region content sets and each tile would be some mix of a region content set. For example consider a region in an area marked at the high level as a frigid evergreen forest. Tiles in this region would grab at random content from the region type. They would have snow on the ground, occasional frosty rocks sticking out, and various large evergreen trees. As you moved away to the border of the forest towards a frozen mountainous area, the tiles may mix between the frosty evergreen forest content table and the rocky mountain peak table.

More TBD. Ask specific questions if you have them

-rm

This topic is closed to new replies.

Advertisement