Page 1 of 1

[GSoC 2011] Ogre procedural scene generation - City life

Posted: Thu Apr 07, 2011 11:12 pm
by Perlmuxxed
Hello there! This is my proposal for GSoC

Personal Details

Name: Zoran Savic
Email: z.savic@23volts.com
OGRE Forum username: Perlmuxxed
GTalk or Skype ID : Perlmuxxed (Skype), z.savic@23volts.com (MSN), 469807562 (ICQ)

Project Proposal

I’m part of the University of Vienna group’s project in which we will extend OGRE 3D with procedural city/level design functions. This project focuses on developing easy to use interface for developers with which they could easily build a level, with setting some parameters, for better replayability value and therefore better experience of their games. This level generating system could be also used as a benchmarking tool for developers and their own implementations. It’s always useful to have level/world for testing purposes and with our project it’ll be simple as few clicks to generate a level to do some quick testing.
My part in this project will be to infuse some life into the city. That means I will code AI for pedestrians and cars etc and I’ll also the 3D models of those with animations, textures and so on. Therefore I will split the task in two:

Coding the AI:
The city will have different areas for e.g. buildings, streets and parks. There are also walkable areas like sidewalk, parks, cross-walk and so on which are used by pedestrians. World will be filled with objects of interest like e.g. park bench or shop. Each pedestrian will have a goal where he/she wants to go and this is where those mentioned objects will come in. Those objects will be randomly assigned to pedestrians as their goal. Path to the goal will be calculated and pedestrians will try to reach them. Pedestrians will be allowed to only move in walkable zones and should avoid collisions with another pedestrians and objects which could provide some unnatural movements. Therefore pedestrians I will implement something like “Reactive Path Following” which was used by valve in their Left for Dead game for more smooth movements.
If every pedestrian looks and moves the same as other it wouldn’t look naturally so I plan to classify pedestrians into different groups which would have different behaviors and looks. As an example there would be kids who obviously would be small, but their other appearances would also differ like e.g. maybe they would have school bag on their back or have a balloon in their hands and so on. It’s not only the looks of pedestrians which would be influenced by group’s behavior. For an example kids would be more lively while moving and would perhaps run to their goal or would spend some time with gazing at some shop windows.
Cars are only allowed to move on roads and should abide by the driving rules. They should stop if there is a red light on the cross road or let the pedestrians pass on the cross-walk and so on.

Modeling:
For this project I’ll create a database of assets which will be used. As for pedestrians there will be three base meshes: kid, grown-up female and grown-up male. They will have interchangeable body parts for different sizes. As each pedestrian will be grouped into behavior groups they would also look different except for size. I will create many accessories for that purpose e.g. kids would possibly have school bags; some people would have mp3 players, mobiles, hats, umbrella or simply different clothes. All those elements would be chosen by their behavior group and so we would have many different individuals walking down the streets.
I will also provide models for different cars. Nothing special about them except for maybe animated wheels for better looks but yeah…

Schedule

31. March – 7. April
• Research on the topic procedural scene generation, AI behavior
• Getting to know OGRE
• Establish development environment
• Put some objects into OGRE scene
• Model and animate base mesh and let it walk in the scene

7. April – 14. April
• Research on “AI Programming”
• Determine related implementation examples

14. April – 5. May
• Implement the classes so that the program can be run for first testing
• Refine the class-diagram/concept
• Modeling of few assets for testing purposes
• Result:
• Simple path finding should be able

5. May – 2. June
• Refine the implementation
• Extend the implementation and add missing features
• More modeling/texturing/animating
• Result:
• Objects of interest should be randomly assigned to pedestrians as their goal
• Reactive Path Following should be implemented and working
• Define behavior groups

2. June – 30. June
• Testing and Debugging
• Refine the implementation
• Add missing functionality or features
• More modeling/texturing/animating
• Result:
• Fully functional path finding AI
• Different looking and behaving humans which are defined through groups
• Car path finding AI which behaves on driving rules

30. June – 4. August
• Testing and debugging
• Clean up code

4. August – 25. August
• Final testing and correction of the Code
• Finishing the documentation

During my study I also work as web-developer but there shouldn’t be any difficulties for schedule plans.

Future Extensions

This project could be extended by more behavior groups as I’ll probably not have many of them. More models for more diversity are always an option and also path finding AI could and should be extended to match added behavior groups.

Why You're The Person For This Project

My interests in games reach way back as I was 4 years old and so I got some 10 years ago to be active in game developing. As many of us I also have started in modding community. Have done some Half Life/Half Life 2 and private Morrowind mods. At the beginning I was always modeler (started with Gmax, fun times). As the time passed by my colleague and I started to use some of the game engines for own projects. He was programmer and I modeler but as the project got more complex I would also do some programming. For the most part I was writing model-exporters/importers for 3D Studio Max and so on. Then as I started my study I had to do some c++ projects.

During my study I have done more programming then modeling, which was some experience but I always wished for more game developing centric studies, with avail. So that’s why I have chosen this particular topic as my Bachelor work. It combines both of my skills and is used for games which are my big passion.
While developing small projects with friend we always used another proprietary engine but were aware of OGRE 3D. Last year I wanted to do small game of my own to improve on my game relevant coding and so I started to look for some engines. OGRE 3D was one of the first I picked up and have done some testing and tutorials and so on. Unfortunately that’s the time I started to work as web-developer and haven’t found the time to work further on my private projects so I stalled it.

I have founded web-developing company and so I get projects assigned by another big company. Freelancer but only bigger so to say. I’m working on big well established projects like the EU project (still old infrastructure, should be switched in near future). That’s big 2 years project and as it’s EU project there are many different nations and languages involved. It’s great experience for teamwork and communication as I’m developing in big project which is spread across the world and is implementing many other functionalities.

So far I have used many coding languages C++, C#, Java, Python, OOP PHP, and other. I need to refresh a bit my C++ skills but that shouldn’t be problem, just some warming up. As I’ve written model exporters I got into graphics systems. Exporting vertices, indices, texture coordinates animation information and so on were all part of my doing and so I got some understanding in “low-level” game developing.

As I mentioned I’ve spent most of my time as modeler and for all that time I’ve 3D Studio Max as my program of choice but as It goes any 3D program wasn’t issue. Furthermore I use Autodesk Mudbox for sculpting normal maps and Autodesk Motionbuilder for animations. I’ll also use those during this project. Current versions are all of 2011 but as soon as there are 2012 student versions I’ll switch to those.

Why OGRE?

Well OGRE is the only engine which I’ll shoot first out of my head if someone asked for open source game engine. Honestly I don’t even know if there is another engine like that where people like me could contribute to such ambitious project like OGRE. Even if I’m being ignorant of other engines the great documentation and community like those of OGRE are always a plus.

Anything Else

I always wanted to do some experimenting with motion capturing. So I’ll see if it’s possible for me to get hands on some nice camera or even Kinect to do some mo-cap. Not that it bothers but it would be kind of fun for me :)

Thank you for your time.