How the left and right brain learned to
love one another
Tim Moss
Sony Computer Entertainment America,
Santa Monica Studio.
Presentation Objectives
• Post Mortem
• Team Structure
• High level Summary of methods
Brief History
• Studio started in 1999
• ‘Fun Games that Sell’
• First project ‘Kinetica’
– An average game that sold averagely (But
had nice technology)
Objectives
• Establish a new Franchise for Sony
• A 3rd Person Action Platformer taking
the best elements of ICO, Devil May Cry
etc.
• Cinematic Camera
• Epic Story
• ‘Casual Hardcore’
Design Objectives
• Lots of special cases
• It should feel REALLY BIG.
• Feature creep…… don’t exactly know
what I want … but I will know it when I
see it.
• Game should keep moving, no obvious
repeats.
Programming Objectives
• 60 Frames Per Sec
• Technically outstanding on release.
• Build game / engine methodically, to avoid
wasting time and reduce bugs.
• Avoid special cases
• Prevent the programming department from
becoming a bottleneck
• Spend the last month of the project on the
beach while the game is being completed.
Bridging the Communication
Gap
•
•
•
•
Left brain / Right brain
Designers want special cases
Programmers hate special cases
Tools were the answer
Studio Layout
Open plan facts
• Facilitates conversation
• No-where to hide – so productivity
seems better. Can’t surf Ebay all day.
• You feel like you’re in a team.
• Headphones are vital.
• Difficult to avoid seagull management.
Team Structure
•
•
•
•
•
Code team (7)
Design team (10)
Art team (22)
Sound (3)
Production (4)
Code Team
• 7 Senior Programmers
• Broad responsibilities
• Usually a single point of contact for a
given system
Design Team
•
•
•
•
•
Game Director
4 Level Designers / Scripters
3 Combat Designers
2 Sound Implementers
1 Camera Designer
Art Team
•
•
•
•
•
Art
Art
Art
Art
Art
–
–
–
–
–
Environments (6)
Animation (5)
Characters (4)
Concept (3)
Technical Artists (4)
Technical Artists
• A group of 4 for GoW.
• Helped the Programmers structure the
tools.
• Helped design interfaces for the Maya
users.
• Troubleshooters
• Helped us avoid over-engineering.
Asset Creation based in
Maya
•
•
•
•
•
•
•
•
Art – Environments, Characters, Particles
Collision – Separate geometry from Art.
Camera Placement
Entity System (Scripting)
Sound / Music Triggers
Visibility Triggers
Loading Zone Triggers
Waypoint layouts
Asset Control
• Alienbrain …. Used simply as a file
structure system. Not at all customised.
That’s probably why it’s ok for us.
• The programmers didn’t use it for code.
Maya File structure
World
Cameras Entities Visuals Waypoints Sound
File Structure
• Allows multiple people to work on different
aspects of the same level.
• Common interface allows cross pollination of
responsibilities.
• Helps with bottleneck issues since chances
are higher that someone else can do any
given task.
Build Tools
• A single tool processes the .mb file
producing:– Binary chunks
– PERL Include Files
• Only changed pieces of scene are
rebuilt subsequently, the rest comes
from the cache.
• Complete Level data file is assembled
using a PERL script.
In Game Tweaking
• Some stuff can be edited in game
– Cameras
– Combat specifics
– Fog
• Saved to disk, included into the WAD
file on the next rebuild.
• Tweaks are checked into Alienbrain.
Easy workflow
• Every person has Maya installed, along
with the current build of game and tools
• Any person can build any asset of the
entire game on their own machine.
• Fast iteration time when editing specific
assets.
• No programmer intervention required.
Code Structure
• 3 time rule – if a request comes through 3
times, its probably something that’s really
wanted.
• Evaluate any serious design request with an
eye to adding a ‘feature’ to support it. Build it
in neatly and in as general way as possible.
• Don’t Hack EVER. You will pay for it later.
• HOWEVER – Resist the urge to over-engineer
Simple AI / Player
structure
• Common code for all enemies and the
player
• Navigation / Combat in 2 separate
systems so that 2 programmers could
work concurrently.
• Easier to debug
• Much less code
Navigation Code
• Objects represented by
a capsule.
• Line tests into the
collision to find
surfaces.
• Separate Physical
Position from actual
position to reduce pops.
• All characters use the
same code.
Combat / Move System
• Every single character in games used same Combat /
Move system, even the player.
• Designers could cut up anims
• Special tools to allow real-time tweaking of combat
from a PC.
• Branches setup to occur on :–
–
–
–
–
Hits from or to other chars
Environment hits
Timers
Button presses
Etc….
Combat / Move System
Details
•
•
•
•
•
•
Add sound effects
Add visual effects
Play at different speeds
Synchronize with targets
Add Button press triggers.
Track and Field Play back.
Player / AI
• Player :– Joypad converted into a Worldvector, this
drives motion
– Buttons control which combat moves are
called
• AI :– World Vector is calculated, used to drive
motion
– Decision Tree decides which move.
Waypoints
• Created using a tool in Maya
• Overlays a grid onto a Room in Maya.
• Designers can ‘paint’ accessible
gridsquares.
• Tool automatically sets up linkages.
• Enemies can then use this to navigate
through environment.
Synchronized Animations
• Player can synchronize animation with an object in
the environment.
• Puts the job of doing special case in the hands of the
animators and designers.
Synchronized Examples
• Cranks – Play a synced animation, and
player stays attached to the handle.
Handle can be moved anywhere by
animation.
• Lift Doors – Use track and field
mechanic.
• Combat – all over the place.
Entity System
• Annotation system for game levels
• Allows designers to add reactivity by
connecting "events" to "actions", e.g.
–
–
"pull lever" -> "open door"
"player in zone" -> "load next level“
• Designers create entities and zones.
Connect them and edit attributes in a
MEL based editor.
Entity System - Tools
• Various Entity Types
– Sensors – Detect Entry / Exit from zones, Creation / Destruction of
objects
– Actuators – Play Animations, Control visibility, create objects /
• Entities have attributes, some are common, some are custom
per type.
• Attributes may contain in-line script code, e.g.
– "Enabled: (GotShield && GotKey && ! DoorOpened)“
– "Execute: if (OnBeam) SetCamera ('OverheadCam')“
• Scripting is very simple in scope:
– if/else, int/float/string variables, built-in commands
– NO loops, user-defined functions
• Interconnection between entities is very limited:
– Sensors can only trigger actuators
– Many-to-1 and 1-to-many is allowed
Entity System - Game
• All creatures / objects have "markers"
that are tracked as they move through
"entity zones"
• This motion, as well as internal game
activity, give rise to messages that are
passed among entities
• Interpreting entity attribute scripts
changes the internal game state
Camera System
• Completely scripted
– No Collision
– No line of sight checks
• Set Design Level building strategy.
• Cameras can be controlled by the entity
system.
Camera System Contd
• Static – Fixed Position, Direction and FOV
• Animated
• Dynamic – constraints setup in maya. Actual
position calculated by game code.
• Action Zoom – Combat controlled, aims at
character, plays with FOV.
• Multiple cameras can run at once.
• Cameras can be overlapped to avoid rapid
switching.
Visibility System
• Entirely setup by hand.
• We always know where the camera is,
what its pointing at.
• Camera Position controls visibility.
Environmental Sound and
Music
• Sound effects can be added to
animations within Maya by a designer.
• Atmospheric sound zones can be placed
in a region.
• Music triggers can be done the same
way
Memory Management
32 Meg
memory
1.5
Meg
Exe
Run
Time
Data
Perm
Data
4*1 Meg
Enemies
16 Meg for Levels, split into 2
• Establish Hard Rules.
– 16 Meg for Level Data (Split into 2 Levels)
– 4 * 1 Meg for Enemies
Memory Management contd
• Let Art / Design do their own Memory
Management.
– Avoids Pigeon Holing anyone. Every level ends up
being a good compromise.
• Tools for memory tracking available in game.
– The artists frequently spotted memory leaks /
problems using this.
Level Loading Scheme
Load
Level B
Block
Level B
Level A
Block
Level A
Level B
Load
Level A
Level Loading Scheme
• 2 Levels loaded simultaneously. Either Current
Level and Last level, or Current and Next.
• Design places Load Triggers. These kick off a
level load.
• Also place Load Blocks.
• Simple rule – allow 1 sec of travel time for
every 1 meg of level that needs to load.
• 4 enemy slots also changed out at Level Load
time.
Flash
• All Front End and HUD elements done
using Flash. Heavily optimized for the
engine.
• Compiler is freely available on website.
• Allows prototyping and design without
programmer.
Optimising for Speed
• Frame rate is displayed front and center
to everyone, 60fps regarded as the
100% CPU and GS.
• Lead Programmer hassles them
endlessly about 60fps.
• The Frame Rate lies to everyone
Scheduling
• Overall Task List for the whole project,
broken down by programmer.
• Updated regularly
• Only added time estimates for what was
being done next.
• ‘Bang for the Buck’ approach.
Did it work?
• Executable for God of War was 1.5
meg. No code loading was done.
• General code made the game small,
more cache efficient. Ran faster.
• Engine / Tools are being used again on
GOW2. Also moving on to our PS3
titles.
Testing / Debugging
• 500 Bugs in database 2 weeks from
Gold Master. 25 were Programmer bugs.
• Led to a more bug free game – no
single group was overwhelmed.
Summary
• Programmers don’t drive game
development like the old days
• Expect more from Art and Design. They
can cope with it.
• Programmers are able to provide a
logical ‘left brain’ structure to the
project that the creative ‘right brain’
types aren’t even aware of.
© Copyright 2026 Paperzz