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.

Thursday, April 24, 2008

Dr Dobbs Game Challenge - Win Cash!


Dr Dobbs Magazine has teamed up with Microsoft for a game programming competition. You modify a game they give you (using a trial version of Visual Studio 2008), and stand a chance of winning part of a $10,000 cash prize pool.

Even if you don't win, this kind of stuff is great on your resume and good for your brain. It shows that you're eager and competent, and gives you a demo you can show to people.

It's likely C# based, which isn't what I'd generally recommend focusing on, but it's a useful language to know.

Friday, April 11, 2008

List of UI systems for games

Here's a list of third party UI systems for use in games.

Commercial Systems
Open Source
  • CEGUI (Crazy Eddie's GUI) (Free and can likely be easily ported to console)


Am I missing any? Post the name and I'll add it to the list (and not publish the post, to keep the page cleaner).

Sunday, March 02, 2008

Can't select Debug or Release configurations in Visual Studio 2005?

When you first install Visual Studio Express, it avoids confusing beginners by hiding the build configurations. Of course, this confuses the people who understood it already...

  • Select 'Tools->Options' and if it's not already checked, check 'Show all settings'.
  • Now choose 'Projects and Solutions' and check 'Show advanced build configurations'.

Perhaps now that I've blogged it, I'll remember it next time... :)