15-493 Game Programming: Formal Project Proposal

Game Name:
    Demolition (game changed)

Development Team:
    Matthew Anderson (ma@andrew)

Game Genre:
    Puzzle

Game Description:
A puzzle game based on the placing of explosive charges to do maximal damage to the game building. The building will be constructed of rectangular shaped blocks that react properly to explosion and interactions between other block. The block with have some connectivity that will not necessarily break under the force of a distance explosion. There will be several types of explosives: radial blasts, directional charges and rockets. The score will be determined by structural connections broken, positions of structure relative to its initial position, and maximum total kinetic energy. The game uses a physics engine based on impulse based collisions and implicitly solved contact and frictional forces, mainly implementing papers by Baraff.
Post Mortem(new)
I'll keep this very brief since you have probably read way too many of these already. For the most part the project worked out as I envisioned it. 95% of the Development time was spent working on the engine. Finally, late last thursday the physics engine was complete. I spent friday though monday developing the game and gui. I suppose it just goes show that you can have a decent game without spending a lot of time worrying about whether the final result will be fun or not. I took a very primal idea playing with blocks and destroying and made it into a game. It's hard to lose when you've got good material. Of course, it was a bit nerve racking to risk the entire game on the development of a physics engine, all the versions of the engine before thursday would have been able to support a game. Had it not gotten completed, there would have been no game. But thankfully, everything worked out.
There was almost no graphically flashiness in the entire project. The graphics would have no problem running on super-low end hardware. There were probably less than 500 polygons abused in the whole project, though no textures were harmed in the making of the project. The simulation however tanked even the most power of PCs. In the end, as was the joke around the cluster, my game was really a hasty front-end for a rigid body physics engine.
The main issues in the project were due only to the engine. There were two main issues robustness and performance. Clearly, in order to make a game both had to be optimized and balanced. The problems with robustness mainly stemed from numerical problem in simulation model. What might be ok for real numbers isn't for doubles. It took a lot of tweaking and numerical methods to get things working smoothly. Performance was another problem, the simulation needs to run in more or less realtime, otherwise the user will get frustrated. Since every bit of the code that I used was mine (aside from the standard C libraries) I had complete control to optimize anything I wanted. I spent half a day fiddling with gprof and probably got a 10x speedup. I also buffered the simulation output so things weren't as choppy. I made other more technical changes to the physical modelling that reduced realism slightly for a huge performance and robustness kick, but I won't go into them.
On a whole, I enjoyed the project. I think the biggest advantage I had in working on this project (other than I'm also a physics major) is that I spent the majority of my working time in the cluster, where I could talk about ideas and bounce things off other people in the class. Also it encouraged some healthy competition. That really it don't have much else to say. My engine is some 11000 lines, I'm sure less than 0.5% of those lines are thoughtful comments so if you would like to understand something more specific about the project email me. The main sources I drew on for the core engine were two papers by Baraff. First a 1994 SIGGRAPH paper on fast contact force computation and the second was the course note for his 1997 SIGGRAPH course on physically based modelling. Just Google for them.
veni, vidi, ludo (latin always makes things sound more noble somehow)
Game Features: Significant Technical Features: (updated) Implementation Plan: Schedule: (updated) Other Notes: