Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Video Game Anatomy: Design & Subsytems Architecture

A rough outline of the code structure of a game.
by

Nick Wiggill

on 28 April 2010

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Video Game Anatomy: Design & Subsytems Architecture

Overview Terminology (3mins)
Game Concept Design: Software Development Viewpoint (8 mins) Intent: Describe the composition of a game ITO code
Code-centric, without specifics
Primarily for non-techies
Required terminology to be covered
Touches on core concept design and assets
1 hour, mins shown on each slide
A lot more to be said but... time!

Questions

Unknown terms: please ask immediately!
Anything else: please take note of the slide, and ask at end of talk.
Pressing questions may be asked in between slides (try to keep to a minimum)
MMO = MMOG = Massively Multiplayer Online Game
FPS = First Person Shooter = a 3D game where you have a first person point of view
Sprite = a small 2D game graphic
(3D) Model/mesh = an object (often as contained a file) representing form in 3D space
Texture = images overlaid on 3D models to provide surface detail
Entity = an actor in the game, i.e. some object which is in some sense active and regularly changes state
(source) code = the lines of raw programming code OR (in this talk) the program files these are compiled to create.
codebase = the entire body of raw code that constitutes the application
assets = content = resources = the non-code, digital resources that form the representation of the game, eg. 2D graphics, 3D models, fonts, streaming media like MP3 and AVI, text representing dialog and storyline, and file packages containing all of the above.
coder = developer = programmer = folks who write code!
class = a blueprint for a module of OO code functionality
object = a given instance of a particular class/blueprint (can be one or many)

Questions?
Terminology continued (7 mins) Application = An interactive program that runs under a modern operating system to fulfill a task
Game = Really just another type of application
Processing = the work a computer does to perform any task (eg. drawing graphics, keeping score)
System = application OR hardware OR operating system OR distributed system (eg. SETI online)
Client = a machine (in the case of games, your workstation, laptop, console, mobile) which works with a server, according to it's "direction", to accomplish certain application tasks
Server = a system which provides a service to clients (often coordination as in online games)
Subsystem / Module = Discrete section of application logic dealing with certain functionality.
Engine = Subsystem that gives the impression of performing processing on it's own initiative.
Platform = hardware or OS

Questions? Code production (6 mins)
Process:

Breaking concepts down to their smallest constituents
Prototype-test iterative cycle to implement and refine our design
The smaller picture: Focus only on the problem at hand
The bigger picture: Architecture, setting up a sound framework of subsystems

Aids used:

UML
RAD tools
Design patterns for a sound inter- and intra-modular architecture
XP practices eg. iterative development, unit testing, "coding for today", letting code "evolve"




Issues affecting concept design, from a developer's viewpoint:


Existence of rules in digital games: ludus (agon/alea) vs. paidea (mimesis/ilinx)
Complexity (Tic-tac-toe vs. Quake vs. WoW outbreak)
Separating form and function (eg. roguelikes, playing cards)
Iterative prototyping process & design lockdown Assets vs. Code (4 mins) Differentiate between code and assets.

Assets are game "data": movie, audio clips, sound effects, stills, sprites, 3D objects, text
Not strictly necessary, though practically very necessary (Simon, NetHack, Unreal, Quake soundtracks)
Proxy that brings the player in touch with the game, enhancing suspension of disbelief
Production consists of a "pipeline" of different tools used to produce/refine each type of asset to it's final state. Subsystems (5 mins) At last!

Types: Peripheral (my own definition), Utility, Core (the good stuff)
Subsystems within subsystems
Sections of logic split off into own subsystems once they become large enough
A subsystem can exist as one (singleton) or many (instances)
Need to use "soft" definitions
Variation from design to design, so necessary to (over)simplify.

The following is not an exhaustive list! But certainly the most common. Input manager (1 min) Resource loader / Resource manager (2 mins) Entity manager (2 min) Physics engine (3 mins) 2D or 3D
Can mean simply "motion" rather than "physics" -- distinction is blurred
Simple as Manic Miner, more complex like Asteroids right up to modern day physics
Vector math crucial, more advanced for 3D eg. Matrices, Quaternions
3rd examples: Box2D, Havok, Aegia, PhysX, Bullet Collision detection & resolution subsystem (1 min) Purpose of separating Detection and Resolution
Can be part of the physics engine or even the display system (esp. older systems).
Crucial to any game with any degree of free movement. Central game system & loop (2 mins)
The "glue", all-encompassing / overarching, lies at the centre of most modern games directing other subsystems to perform tasks
These processing updates happen every few milliseconds.
All processing that needs to be done must happen within the given period. We can prioritise more important processing to delay the rest, however.
Not all subsystems need to be called to act (engines), but many will.
Controls logic central to the game concept
Depends on game in question
Definition of what is "core" is blurred, and has changed over time
Typically a top level subsystem that manages an entire subsection of game logic, but could refer to its helpers (utility subsystems) too
A "huge task" to cover (Gregory & Lander, 2009)
Best studied by looking at what existing games of the desired genre have incorporated
(eg. RTS pathfinding)

Examples:

Character creation (any RPG you can think of)
Narrative controller (Fallout series)
Moral evaluation (Fable, Black and White)
Mini-games (eg. persuading people in Elder Scrolls: Oblivion)
Skill (eg. alchemy in Elder Scrolls: Oblivion)
Auctions (WoW)
Economy (Eve Online)
Mouse-gestured magic subsystem (Arx Fatalis)
Fluid dynamics subsystem (Dwarf Fortress)
Dynamic terrain generator (Civilization, Warlords Battlecry) Core mechanics subsystems (4 mins) Holding references
Active vs. inactive
Creation and deletion of entities
Caching retired entities for reuse Talks through the OS and drivers to all peripherals

keyboard
mouse
joystick
gun
microphone
webcam

Buffers input to be processed on next update. Rendering engine (3 mins) AKA Renderer

Responsibilities:

blitting/draw calls
sprite or 3D object management
view culling - deciding what you can and can't see
depth sorting / z-ordering - sorting the back to front order of objects to be drawn on the screen
managing frame rates / display frequency
can be used for collision detection

May tie in closely with particle engine. AI subsystems (5 mins) Definition may be hazy
Very simple or complex (processor-intensive)
One of the hardest parts of a game to make effective, hence ubiquitous "dumb" AI
Machine learning (GA, NN) is possible but introduces as much (or more) complexity as the problems it solves (understanding of success criteria)
An individual AI subsystem / module may drive one or many entities either individually or collectively

Typical applications of AI in games (some overlap):

coordinating movement
prioritising goals
foresight and prediction (eg. in chess where number of moves is enumerable)
pathfinding/seeking (any type of game with freely moving entities)
collision avoidance
strategies and tactics (strategy and first person games)
resource economy management (strategy and business/trading games)
trajectory calculation (war and sports games)
state management (e.g. activity changes) Particle system (1 min) Commonly seen effects: magic, explosions, debris
Highly optimised
Ties in tightly with rendering engine "Resource" = Assets/Content
Performs loading, parsing of various filetypes
Necessity to hold references (manager)
Data dictionary for fast lookups The End! URL for this prezi:

http://prezi.com/aunpec39snhy/

Any further questions send to:

Contact: nick.wiggill@gmail.com
website: www.handcraftedgames.net Scripting system (2 mins) Necessary for recorded actions
Helps debugging
Helps to design the game narrative flow
Also good for AI behaviours
Full transcript