Project planning is essential to any bigger project. It diminishes (though not totally eliminates) the chance of losing track of things and helps you to structure your work. I’m not planning in doing this formally correct for the Stop, Ampeltime! project, but I need to do it in some form. This post may be a bit chaotic and bloated with all kinds of different information, but it will be a first crude step to planning things out more structured than ‘just in my head’. So I will try to list all the things I need for the project and provide a general idea in which order I’ll try to do them in. You can think of these items as ‘product backlog items’ as they are called in the agile software development framework Scrum, if you will.
I suppose this plan may have many flaws and errors. Some of them will be corrected and adapted over the course of the project, but if you have any suggestions on things to avoid, things to NOT do like I planned, things I forgot about or any other advice, please feel free to leave a comment!
From a technical standpoint, right now all that is fixed is the graphics engine (Ogre3D) and an idea of what platforms the game should run on (Windows, Mac and hopefully Linux too). There are a lot of technical components that yet have to be chosen. So what else do I need?
- GUI framework (evaluation in progress, probably Gorilla)
- sound engine/framework
- physics engine (vehicle collisions on faulty intersections and maybe a good set of functions that are helpful with other calculations in the game)
- networking component/library (login to server, highscore upload, level up-/download, betatester-feedback function)
Feature-wise, there’s a lot to do. Here’s a list of some of the features I can think of implementing, in order of implementation:
Basic Functions
- mesh factory, with the following functionality:
- terrain generation (flat)
- street generation (3D spline to x-lane road)
- basic GUI elements
- label
- button
- text field
- street building:
- interface (crude)
- create vehicle emitting and consuming street parts
- basic level data structure
- save & load levels
- define incoming/outgoing vehicles
- basic vehicle AI
- vehicles accelerate, brake, drive to speed limit
- inter vehicle communication (vehicles react to preceding vehicle’s actions)
- intersection detection
- stop marker creation
- lane blocking & unblocking system
- right of way detection
- basic traffic regulating elements
- traffic lights
- stop markers
- visual debugging tools
- modular 3D info pane for game objects
- improve vehicle AI
- stop at intersection stop markers
- use turn lights
- use horn
- basic game stats tracking
- vehicles that passed through the system
- traffic jam length (m)
- total & average vehicle waiting time
- routing intelligence
- detect routes & create route list
- calculate chance of route being chosen based on level data
- basic game logic
- start/stop/reset simulation
- simulation run time
- evaluate simulation: pass/try again
After completing the basic functions, the game should be about on the same level as the flash prototype (regarding gameplay). It I will not directly port code from the prototype, but generously borrow concepts and algorithms from the existing code.
At this stage I’ll try to keep everything graphics and GUI related as simple and open as I can. I plan to collaborate with a more skilled artist than me to create the GUI/menus and the graphics, so I try to put the least possible effort in creating such things at this stage and make sure no possibility is obstructed for creating any type of graphics/GUI.
Advanced Functions & Visuals
- extend terrain generation
- use height map
- extend street building:
- streets follow terrain
- bridges, tunnels
- streets modify terrain
- extend mesh factory with the following functionality:
- procedural building generation, simple buildings (place buildings adjacent to roads, use maximum space)
- enhance graphics
- screen space ambient occlusion shader
- create materials for different level elements
- more vehicle types
- tram
- bus
- train
- improve vehicle AI
- change lanes
- overtaking
- implement physics for collisions at intersections
- more gameplay elements
- traffic counters
- triggers
- create tram/bus/train lines
- level design
- model 3D objects
- building parts
- street parts
- bridge parts
- tunnel parts
- trees
- environmental objects
- basic online functions
- game database
- users
- levels
- highscores
- user login via game
- user registration
- highscore & level upload
- level download
- beta-user feedback function (bug reports including screenshots)
- game database
The items at this stage are a little less ‘sharp’ and complete, as they lie further away from the current point in time. They will be specified more clearly when this stage is reached.
Finalization & Extra Features
- GUI design
- menu design
- add sound & music
- level editor
- Google Maps integration (create levels from Google Maps imagery and terrain height data)
- website redesign
- user login on website
- purchase game/beta
- more levels
- bugfixing
The items at this stage are even less sharp than the previous ones. When the game has reached this stage, many other tasks and to do’s will have arisen.
This list will be completed and maybe re-posted at a later stage of development when substantial changes have been made to it and/or substantial progress has been made.