• name-based object registry
  • graphics
    • scene hierarchy
    • skinning
    • shadow / lighting model
    • HDR
    • decals
    • particle systems
    • shader model / material system / associated tools
    • vertex animation
    • alpha sorting
    • terrain
    • culling/occlusion
    • frame buffer post-processing effects
    • split-screen support
    • view modes (AVP2 thermal vision, etc.)
    • mirrors/reflection
    • procedural geometry
    • text rendering/font issues
    • level of detail
  • resource management
    • asynchronous loading
    • resource lifetimes
    • streaming resource scheduling
  • recording/playback
    • frame-based
    • time-based
  • file access
    • pack files
    • fastload linear file image support
  • input
    • remapping
    • force feedback (okay, it's not input...)
  • game timer - frame timer, high resolution profile timer, multiple timer support
  • saving dynamic state
  • exporting constant state
  • cross-platform compatibility - don't forget I/O byte-order issues
  • message passing
  • internal game object structure - how to separate components?
  • external game object structure - hierarchy, dependency graph?
  • in-game UI
  • in-game cinematics
  • tools
    • classes to support easy tool UI creation
    • level editor
    • terrain editor
    • particle system editor
    • model/animation viewers
    • trigger system tool
    • cinematics tool
    • MAX plug-ins - exporter(s?), material
  • profiling
  • console
  • data pipeline
    • conversion - optimization for multiple platforms
  • sound - 3D, 2D, looping, looping subrange, effects
  • music
  • scripting - Python? Lua? Java? Roll your own?
    • script debugging
    • exposing code objects to script
    • deciding who writes the scripts
  • network
    • security/hacking issues
    • latency
    • bandwidth usage
  • error handling
  • physics - how to structure main loop? frame time or independent? interpolation between physics ticks?
    • stable integration
    • collision detection - what shapes? continuous or discrete?
    • collision response - approximation? impulse-based? penalty methods?
    • inverse kinematics
    • line of sight/ray queries
  • AI
    • fuzzy logic
    • state machines
    • path-finding
    • tools
  • animation and controllers/dynamics - for transforms, colors, floats
    • lip-sync/sound synchronization
    • interaction of animation and physics
  • memory management
  • RTTI - use C++? Roll your own? Do unsafe casts?
  • exception safety ala Herb Sutter
  • levelization ala John Lakos
  • localization
  • enhancing concurrency/multi-threading