Mo McRoberts

Music • Broadcasting • Technology


  1. Simple scene loader
  1. Composite (group) objects
  2. Primitive transforms & translation
  3. Group transforms & translations
  4. Includes/reuse of composite obects (via xlink:href and xml:id)
  1. SDL-based scene viewer
  1. Simple colour shading of primitives
  2. Shaded/wireframe toggle
  3. Keyboard/mouse camera movement
  4. Model loading
  1. Texture loading
  2. Add a skybox/skydome
  3. Configurable cameras (first- vs third-person vs overhead, for example) and a camera cycle key
  1. Scene inheritance: load all of the objects from a base scene, then extend it with additional objects
  2. Physics and collisions
  1. Animated models
  2. Optional raycasting mode
  1. Trigger a visual effect when collisions or raycast occur
  2. Audio (play a sound when a collision occurs)
  3. Add a "goal" objects which can be collided-with to end the scene
  4. Add an optional countdown timer
  5. Add optional score-keeping
  6. Move object behaviours (keep score, play sound, add visual effect, etc.) into Lua
  7. Ability to load assets, including scene XML, Lua and textures from packages (ZIP files)
  8. Fork into Ding! from Scene Viewer
  1. Add global states
  2. Add progression (a goal or timer expiry leads to another scene)
  3. Add scene music
  4. Add high-scores
  5. Split into Arcade (timed) and Peaceful (untimed, but objects may only be collided with a certain number of times) modes
  6. Add health to Arcade mode and health-influencing (damaging and enhancing) objects
  7. Add damaging NPC objects which pathfind and have their own health