Advertisement

Intelligent terrain

Started by November 08, 2005 11:44 AM
5 comments, last by GameDev.net 19 years ago
Hi everyone, i'm looking for info on intelligent terrain/environment systems. I hear it's being used in Oblivion (Bethseda's new elder scrolls game). Anyone know any resources? Dv8
Vterrain.org is a good resource on this topic. Warning, though: some of the papers are pretty deep.
enum Bool { True, False, FileNotFound };
Advertisement
Thank you :-)

Dv8
Hi,

Ok ....I am going to attempt to further the dicussion on this one as it is something I am interested in myself and have been wondering how oblivion is generating their forests.

I have been tinkering around with terrain and foliage for a while now and so far I have just been using simple methods. I load in my terrain and then use the characteristics of the terrain in any given tile to determine if something should grow there (much like how I determine what texture to use for splatting). As I am not artist, I basically only have one grass model and one tree model [grin]. So I just randomly place them on areas where grass and trees can grow.

I could extend this to have a selection of trees and shrubs and then add further conditions into which one is picked when placing them (altitude, weather conditions, amount of rocks ...acidity of soil? [lol]). This would surely all require a large amount of user input when creating the terrain though and doesn't seem to be what bethesda are doing.

Then there is the placement of "cool things". Like towns, ruins, shacks etc...
This would have an effect on the how the foliage was assigned (wouldn't want a 50 foot tree growing through your local inn [grin])

Of course here comes the clincher ...real time!!
According to the guy on that oblivion trailer, the forests are alive and growing? I could imagine all those things getting generated as a preprocessing stage ...but having the forest always thinking so that it grows and changes as you play ...well that has me stumped.

Hopefully somebody else will jump in and further the discussion on this as I would love to know more (even if they are just theories on how it MIGHT be done [grin])

Regards,
ViLiO
Richard 'ViLiO' Thomasv.net | Twitter | YouTube
Oblivion is generating it's forest through the use of SpeedTree from IDV. It is a pretty awesome solution to the problem if you've ever seen a demo of it running. Check out www.speedtree.com for more infromation on how it works, or if you wanna drop the g's on buying the system.
Hi,

I have been studying the spreedtree demos for a long time (the tree I made is a hack of their system of a trunk and then billboards for the leaves), and was aware Oblivion would be using speedtree. But all of the speedtree demos are pre-generated. Either an artist is placing the trees by hand (very much the case in the valley demo), or they are just using noise to place them (trees of pangaea).

Oblivion seems to be much more complex than this. I know a lot of the time when showcasing games, the narrators tend to bend the truth of what is actually being displayed (the arguably scripted sequence in the oblivion trailer where the woman sets her dog on fire [lol]) but it does seem to be suggested that the forest is alive and changing and may possibly be different everytime you start a new game.

Regards,
ViLiO
Richard 'ViLiO' Thomasv.net | Twitter | YouTube
Advertisement
Quote: Original post by ViLiO
Hi,

Ok ....I am going to attempt to further the dicussion on this one as it is something I am interested in myself and have been wondering how oblivion is generating their forests.

I have been tinkering around with terrain and foliage for a while now and so far I have just been using simple methods. I load in my terrain and then use the characteristics of the terrain in any given tile to determine if something should grow there (much like how I determine what texture to use for splatting). As I am not artist, I basically only have one grass model and one tree model [grin]. So I just randomly place them on areas where grass and trees can grow.

I could extend this to have a selection of trees and shrubs and then add further conditions into which one is picked when placing them (altitude, weather conditions, amount of rocks ...acidity of soil? [lol]). This would surely all require a large amount of user input when creating the terrain though and doesn't seem to be what bethesda are doing.

Then there is the placement of "cool things". Like towns, ruins, shacks etc...
This would have an effect on the how the foliage was assigned (wouldn't want a 50 foot tree growing through your local inn [grin])

Of course here comes the clincher ...real time!!
According to the guy on that oblivion trailer, the forests are alive and growing? I could imagine all those things getting generated as a preprocessing stage ...but having the forest always thinking so that it grows and changes as you play ...well that has me stumped.

Hopefully somebody else will jump in and further the discussion on this as I would love to know more (even if they are just theories on how it MIGHT be done [grin])

Regards,
ViLiO





The system Im working on has general foliage data for an area (big seed map for entire world corresponding to terrain types and waterways..) which determines the mix/population density of trees/bushes/clumps of grass etc.. which are then placed via random pattern controlled by world coords (making generation deterministic/repeatable).

For more complicated groups of objects, scripts are used which have logic to verify/adjust placement of the subcomponents (ie- a village of a vertain flavor has hundreds of sub-objects) which themselves may be parameterized scripts. The scripts even have functions to modify the terrain mesh (heightmap) to facilitate proper configurations (like flattening the area) and clearing the automaticly (random) created foliage objects (trees etc..) and can placing new ones appropriately.

The sub-object scripts include placement of NPCs (template driven also with scripts to have the NPCs adapt to the current situational placement).

This is all also a basis for a auto-quest generation system which allows placement of props for quests on-the-fly (alllowing a lazy evaluation method where clue objects are scattered and the quest only being 'realized' when activated by the player).

So maybe you should consider a script system to do the more intricate creation pattern stuff you need. (BTW, When I say scripts as per my project, I am actually talking about native C code routines instead of something like LUA that would run slower and require alot of glue code to imbed into my engine. Depending on your requirements, a seperate 'script' language (like LUA/PYTHON) could just as well be used.)





This topic is closed to new replies.

Advertisement