Thursday, May 15, 2008

Components of a Console Game

Something that comes up from time to time is the need for a full breakdown of everything which makes up a game. It's a tricky thing to do, as each game is different, and there are many approaches to any given part. Here's a quick brainstormed list though, to give an idea of what goes into a game.

  • Engine
    • You can choose to license/use an existing engine, or build your own. There are pro's and con's to both approaches.
    • The Basics
      • Memory allocation
      • Debug text output to screen and debugger
      • File IO
      • Reading config / xml files
      • Build process
    • Rendering
      • Shader pipeline
      • Render opaque static objects
      • Render skinned objects
      • Render transparent objects
      • More complex material effects. Lighting, environment mapping, bump/parallax, etc.
      • Screen effects. HDR/Bloom, lens flare, depth of field etc.
    • Animation
      • Hierarchical skinned animation, including art tool exporter and pack process.
      • Blending of animations
      • ‘Blend shape’ vertex animation
      • Ability to modify animated meshes ‘by hand’ (e.g. IK or head tracking).
    • Events - the ability to send events between systems/objects.

 

  • Gameplay
    • Player
      • Player moves
        • Walk / run / jump
        • Attack moves
        • Swim
        • Pick up weapon
      • Behaviour
        • Rag doll
        • IK for foot placement
        • Look at interesting objects
        • Conversations
        • Attached physics objects / cloth
    • NPC
      • Ambient characters / animals
      • Enemies
      • Bosses
      • Systems
        • State machine (often hierarchical).
        • Attaching of FX/sound.
        • Route planning.
        • Method for spawning / handling high numbers.
    • Gameplay Widgets
      • Static object
      • Breakable physics objects
      • Weapons
      • Treasure chest
      • Collectables
      • Pushable objects
      • Doors
      • Vehicles
    • Non-Gameplay Widgets
      • Butterflies.

 

  • Networking / Multiplayer
    • Guaranteed / Non guaranteed messaging system.
    • Synchronization strategy.
    • Testing harness.

 

  • Tools (some mentioned in other points)
    • Art pipeline for objects, environment and characters.
    • Level building tool for level layout and scripting.
    • UI building tool.

 

  • Systems
    • UI
      • Tool for building and animating UI, Scripting system for ‘gluing it together’, Integration with game engine.
      • Runtime component for playing the UI.
      • Font rendering.
      • Localization system.
    • Sound
      • Loading sounds, Memory resident sounds, Streamed sounds, 3D position support, Effects (e.g. Echo), Categorization of sounds (game/dialogue/menu), Volume controls by category, Connecting of sounds to other widgets.
    • Physics
      • Select from free or purchased middleware and integrate with engine.
    • FMV
      • Select from free or purchased middleware and integrate with engine.
    • Cinematics
      • If game calls for conveying story, build a system for using the game engine to enact story sections.
    • FX
      • Particles, Ribbons, Shrapnel, Lights, Water, Fire, Fog, Rain, Tool for artist to configure effects, Tool for adding effects to cinematics.
    • Networking / Lobby

 

  • UI Screens
    • Front end
      • Basic: Attract mode, Main Menu, Level Select, Load/Save, Options, Cheats, Unlocked Content, Credits.
      • Network play related: Chat room, Matchmaking, Leaderboard, Clans, News.
    • In game pause menu
      • Map, Objectives, Inventory, Some repeated functionality from front end.
    • TRC Compliance
    • Achievement points

 

  • Infrastructure
    • Automated building and testing
    • Builds / Fire fighting
    • Automated error reporting
      • ‘Crash dump’ information per platform, Detailed error reports sent by email automatically when tools fail.

No comments: