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
- Player moves
- 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.
- Player
- 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
- 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
- Front end
- 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:
Post a Comment