Procedural Worlds to Challenge Game AI: Practicing with CityEngine (Contest)
<p class='premium-pre'>A new feature has been posted in the Premium area.</p>
<img src="http://aigamedev.com/city-panorama.jpg" class="alignleft" />
<img src="http://files.aigamedev.com/discussion/city-panorama.jpg" />
<p>One of the hottest topics of 2008 in the games industry was procedural world generation, which got a lot of attention due to the release of Spore primarily. The technology hasn’t swept across the industry yet; procedural techniques are still confined to a few games in practice, but with the growing costs of generating next-gen content this trend is likely to grow. There’s little doubt that we’ll have to deal with this problem as game AI developers very soon, so here’s how you can stay ahead of the curve!</p>
<p>This week for the developer discussion, <tt>AiGameDev.com</tt> has teamed up with <a href="http://www.procedural.com/">Procedural Inc.</a> — the team behind CityEngine. The topic for the discussion:</p>
<blockquote class="middle"><p>“How does <strong>procedural</strong> technology<br/> and the generation of detailed 3D <strong>cities</strong> <br/> affect our <strong>AI</strong> code, and what can we do<br/> to prepare for this <strong>paradigm</strong> shift?”</p></blockquote>
<p>Procedural Inc. is providing detailed 3D city models as a bonus to all new members of <tt>AiGameDev.com</tt>’s new continuous training program this week (just <a href="http://aigamedev.com/launch">recently relaunched</a>). However, you can also win a copy of these cities by entering this week’s discussion, and posting a comment on the blog or in the forums. The author of the most interesting and insightful comment will receive the 3D files of high detail cities generated by CityEngine.</p>
<img src="http://files.aigamedev.com/discussion/city-manhattan.jpg" />
<p><br/><u>Screenshot 1</u>: Procedurally generated version of Manhattan using <a href="http://www.procedural.com/cityengine/">CityEngine</a>.</p>
<p class='premium-post'><a href='http://www.aigamedev.com/index.php?id=38&tx_ttnews[tt_news]=1000968'>Click here</a> to read the original post.</p>
I kinda prefer introversions one though :) (go indie!!).
Incidentally, I'm going to experiment with procedural generation using AI agents this week. Testing out a thesis I discussed with Prof Gabriel (of lisp fame) a few years ago. I'll post a screenie if it doesnt look completely horrible.
Very cool, looking forward to playing with the bonus content :)
I've always been interested in the city generation but never had a chance to implement it, I remember reading Muellers SIGGRAPH 2001 paper quite well still. My only work in procedural generation was a SpeedTree style system and editor plus the typical landscape generation methods for the same editing system (and foliage to go with it).
I think procedurally generated worlds should fit perfectly into current data pipelines assuming that everyone is working with a reasonable intermediate format so the MAX -> exporter -> intermediate format step turns into procedural tool -> format convertor (if needed) -> intermediate format.
There may also be some checks / mesh operations needed on the data depending on how good the output is from the tool but these same steps are possibly being made on the meshes from artists also.
The main thing to get right in using procedurally generated content is advancing the tools for the designers/artists to easily get the final output they want, apart from games based around the concept of the procedural content there will likely need to be specific buildings in certain places or different types of buildings in other areas. This could be integrated into the tools or the output from the tool would possibly go into MAX/Maya for adjustment first (which reduces the use of the procedural tool as it's harder to regenerate the procedural elements once edited!).
Using mostly procedural content in a game does give a few advantages in that certain parameters can be exactly specified to help with the gameplay / AI.
For example it could assure us that the roads are always 4metres wide, buildings are always separated by at least a 1metre gap, knowing that these restrictions are being kept to could possibly help with path planning / agent movement. A mesh generated by an artist may not meet these requirements exactly and may require a checking tool / iteration to fix the art. If there was a requirement later in the project to expand the gap between buildings to 1.5metres then it would just be a case of setting the procedural tool off again. Possibly a slightly abstract example but the ability to rebuild to new parameters is a powerful one.