Gillius's Programming

Super IsoBomb 3D
Project Midterm Update

Last updated: Sunday, October 19, 2003 3:59 PM

Originally written: 10/12/2003

Project midterm update for the Super IsoBomb 3D project, under development by the following students

for the class Computer Graphics 2 (4003-571-01) taught by Nan Schaller.

Project Summary

For this project, the team will take the code from the original Super IsoBomb game, and rewrite the graphics engine (currently in an orthographic 2D isometric projection) to use a fully 3D engine. We intend on focusing the engine on non-photorealistic rendering (NPR). To implement NPR, the two important pipeline features that require focus are the texturing and lighting stages.

Because of the non-standard issues faced in NPR, the traditional fixed real-time pipeline is not suitable for our project. We decided to use Vertex Shader 1.0 assembly language and DirectX8.1 to implement a toon shader. DirectX provides an optimized software fallback for processing the vertices, so using vertex shaders will be faster than any implementation we could reasonably implement.

Project Objectives

Completed Objectives

System and Software

We plan to utilize the following hardware components:

We plan to utilize the following software components:

Project Breakdown

Component Assigned To Description
Cel-shading
(model renderer)
Winnebeck The cel-shading system brings together texturing and lighting techniques to shade in a cartoon style.
Particle Engine Winnebeck The original Super IsoBomb game included a particle system engine. This needs some minor updating for performance and for the new rendering style (3D rather than manual projection to 2D).
Map Renderer Hilliker Handles rendering of the static 3D geometric content (the levels).
Lighting Hilliker The lighting system needs to address the lights in a logical sense, if there are dynamic lights, as well as providing the relevant information to the model renderering.
Camera Mowry In the original game, the camera was fixed to an isometric view. In the 3D-world the camera can be controlled, and it is handled as an object in the world. For the HSR component, the camera exists as a view frustum
Hidden Surface Removal Mowry Assists the Map Renderer, and to some extent the model renderer by providing only the surfaces most likely to be visible and eliminating surfaces obviously not visible.

Project Timeline

Week Description
3
  • Begin map rendering, model rendering, camera
6
  • Complete map rendering, camera
  • Begin optimization (Hidden Surface Removal), lighting
7
  • Complete optimization, lighting
  • Begin general gameplay improvements, update networking engine
8
  • Complete model rendering
  • Begin particle engine
10
  • Code/documentation due

Current Progress

Jason:

When we decided to use vertex shaders, we had to reimplement all of the functionality the fixed pipeline provided to us. So, our vertex shaders also have to do the blended skeletal animation. Ironically almost all of the code in the shader was simply just reimplementing the animation the fixed pipeline provided for us.

The skeletal animation system can now render models in toon-shading format. It still needs to be refactored and merged into the isobomb code.

I have not yet started on updating the particle system for the new 3D isobomb engine.

EDIT 10/19: The particle system has been updated and finished and is in the game now.

Jon:

I spent the last few weeks revising the code from the original Super Isobomb so that it works properly in a 3D environment. The 3D map rendering is complete. The map code also includes functionality for improved collision detection and an integrated quad map. At this point, almost all of the gameplay elements of the original Super Isobomb is working in the 3D environment. It also is using the new improved collision detection algorithm. The quad map is implemented, but is not being used.

Peter:

Once the Isobomb 3D map renderer was working, I made camera views and linked them to the DirectInput controls. The main diagonal camera view rotates to either 90 degree or 45 degree increments (the final version may pick one of these two). Based on the angle of the camera, the movement controls are modified in direction (swapping Z or X or multiplying by -1). A top down camera view will also probably be added, and possibly a moving camera at the level start-up. There is also a camera view used to track behind a moving homing bomb (from directly behind the homing bomb instead of angled).

Meanwhile, we have made plans to submit our game to this year's IGF (Independent Game Festival) "Student Showcase" - http://www.indiegames.com/. We did some recruiting for help with this (particularly artists for original content). The upcoming game is going to have a new artistic theme and fully original content (the theme planned is cel-shaded cartoon monkeys). We currently have committed a lead 3D animator for the new characters, and two 3D static model artists. We also have an artist committed to create original textures appropriate for the new theme. Finally, we have a programmer who may create a front end GUI for the game (interacting with it via text files). We also have a sound artist who will help us with sounds.