GCAP 2008 Torus Games

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Favorite

    GCAP 2008 Torus Games - Presentation Transcript

    1. DS to 360 – Secrets of Successful Multi-Console Development Kevin McIntosh & Stuart Cameron Torus Games for Game Connect: Asia Pacific 2008
    2. What we’re talking about….
      • Quick history of the company
      • Why we’re able to give the talk today
      • Advantages for your customers
      • Advantages for your studio
      • Production perspective and a splash about art / audio / design
      • The juicy part, programmer’s perspective and detail
    3. A brief history of Torus
      • Started in 1994 with 3 staff
      • Developed more than 90 titles
      • Worked with a wide variety of publishers
      • Developed on a wide variety of target platforms
      • Approved developer on all consoles
      • Many staff coming up to 10 years at the company
    4. Torus’ Games & Platforms
      • Game Boy – 6
      • Game Gear – 1
      • PC – 6
      • Playstation – 1
      • Sega Saturn – 1
      • Game Boy Color – 11
      • Game Boy Advance – 23
      • Playstation 2 – 8
      • Xbox – 2
      • N-Gage – 3
      • TOTAL – 94 titles
      • LMAX – 5
      • Leapster – 2
      • PSP – 2
      • DS – 10
      • Gamecube – 1
      • Leapster 2 – 4
      • Roadrunner – 1
      • Didj – 1
      • Wii – 5
      • Xbox 360 – 1
    5. The beginning…
    6. Shrek Smash n’ Crash Racing
      • Nintendo Gamecube
      • Sony Playstation 2
      • Nintendo DS
      • Nintendo Game Boy Advance
      • Sony PSP
      • 9 month development
    7. Recent multi-platform titles
      • Shrek Smash N’ Crash Racing
        • PS2, PSP, Gamecube, DS, GBA
      • Legends of the Indy 500
        • Wii, PS2, DS
      • Monster Jam
        • 360, PC, Wii, PS2, DS
      • Zoo Hospital
        • DS, Wii
      • Monster Jam: Urban Assault
        • Wii, PS2, PSP, DS
      • Current big platformer
        • Wii, PS2, DS
      • Next big title
        • 360, PS3, Wii, DS
    8. Banding
        • Customers
        • Production
        • Design
        • Audio creation
        • Art creation
      Xbox 360 / Sony PS3 / PC Sony PS2 / Nintendo Wii / Sony PSP Nintendo DS
    9. Audio perspective
      • Assets created in 48kHz, regardless of the platform
      • Wii / 360 – 44.1kHz assets for sound and music
      • DS – 11kHz music, 8kHz SFX
      • What to stream? Platform RAM? Platform cartridge space?
      • How to cut in the right places?
      • Create assets for particular platforms if necessary – DS
      • Concessions – subtitles rather than voice over moments
    10. Wii Wii ~200,000 tris 256x256 textures Vertex colour Lighting ~140,000 tris of grass.
    11. PS2 PS2 ~50,000 tris 128x128 textures Vertex colour Lighting No grass.
    12. Xbox 360 / PC Xbox 360 ~400,000 tris 512x512 textures Normal Maps Specular Maps Realtime sperical harmonic lighting system via FX shaders. No game lighting shown.
    13. Nintendo DS DS ~6,000 tris 64x64 textures Vertex colour Lighting “ Faceme” Trees
    14. Xbox 360 Xbox 360 ~20,000 tris 9x 1024x1024 textures 9x 512x512 textures
    15. Trucks - Wii / PS2
      • Wii / PS2
      • ~5000 tris
      • Wii
      • 2x 512x512 textures
      • x 256x256 textures
      • PS2
      • 2x 256x256 textures
      • 1x 128x128 textures
    16. Trucks - DS DS ~350 tris 1x 128x128 texture 2x 64x64 textures
    17. Texture Pipeline
        • Created at 1024 for Xbox360,
        • made with Spec / Norm as standard
        • Render from Maya with spec & normal map
        • to add detail for low-end diffuse
        • Batch reduced to suit the size and colour depth
        • of other platforms
    18. Texture Pipeline
        • Maya Render
        • Combines…
        • 360 Diffuse
        • Final Wii/PS2 Diffuse
        • Output
    19. Advantages to you…
        • More valuable to publishers
        • Original? More potential for sales
        • More variety for team, more knowledge
        • More efficient asset creation
        • Quicker prototyping
        • Avoid any console lulls
    20. Target Consoles
      • Lots of target platforms:
      • Nintendo DS
      • Nintendo Wii
      • PlayStation 2
      • PlayStation 3
      • PSP
      • Xbox 360
      • PC
      • … and others
    21. How?
      • How do we target all those platforms and:
      • Minimise overall development time
      • Minimise reworking of existing code and assets
      • Minimise risk (!)
      • Maximise quality and quantity of game content
      • Don’t restrict what we can do on high-end by also supporting low-end
    22. Code Sharing (1)
      • We share the same core libraries across ALL platforms, even Nintendo DS
      • The PC and Xbox 360 run the same core engine as the Nintendo DS
    23. Code Sharing (2)
      • The secret:
      • Shared header files, platform-specific implementations where necessary
      • We share headers for all our core systems, including:
      • Input
      • File system
      • Asset management & streaming
      • Save games
      • Sound system
      • Networking
      • Renderer
      • Physics (common interface, subset of functionality on low-end)
      • Math
      • etc.
    24. Code Sharing (3)
      • All active projects run off a shared set of core libraries.
      • Branching is delayed until games near completion.
      • New projects always switch to the current trunk.
      • Advantages:
      • Less code to maintain (less bugs!)
      • More efficient, cleaner code
      • Consistency
      • Code sharing
      • Minimal learning curve across projects
    25. Architectural Overview TSE Libraries Libcontent Game content Memory card Physics Audio Graphics Input Networking XML Movie Player TSE Core Types Math File System Memory Mgmt Asset System Debug Support Containers Entity System UI Common Entities Entity Space LiteScript Particle Effects Localisation Support
    26. Fixed Point vs Floating Point (1)
      • A simple typedef called fp32, either:
        • a float, or
        • a signed integer containing a 20.12 fixed point value
      • Add & subtract use identical syntax
      • Macros are used for multiply & divide
      • Yes, precision can be an issue!
        • less then you’d expect
        • 20.12 is a good balance
      • All our 2D & 3D vector, matrix, quaternion types share identical headers for ALL platforms, different per-platform implementations.
    27. Fixed Point vs Floating Point (2)
      • The result:
      • Shared game content code between fixed point and floating point platforms (eg. DS and Wii)
      • Sounds like madness… Works incredibly well in practise!
      • Used often for:
        • character states
        • missions
        • game state
        • camera control
        • interactive game objects
        • etc.
      • Some selective #ifdefs where appropriate, but not many
    28. Single-Core vs Multi-Core (1)
      • Traditionally:
      • Active game entities update themselves, their components and make expensive blocking calls to query game state
      • Why is this bad?
      • Regardless of concurrency issues, it’s bad for cache!
    29. Single-Core vs Multi-Core (2)
      • Solution:
      • Move updating from entities to batch updated components owned by dedicated systems
      • Break requests into discrete work units eg.
        • Individual particle effects
        • Physics islands
        • Cloths
        • Path finding
        • Visibility checks
        • Raycasts
        • Spatial queries
      • Assume jobs will take time to execute, possibly across frames
    30. Single-Core vs Multi-Core (3)
      • Your game entities then become:
        • Simple state machines
        • Submit jobs, poll them for completion
        • Make decisions based on results and change state
      • On multi-core systems:
        • Run each job in parallel
        • No synchronisation to worry about between them other than dispatching of the job
      • On single-core systems:
        • Great data & instruction cache utilisation
      • It works just as well on low-end as on high-end
      • A win across the board!
    31. Endianness
      • We take a simple approach to this:
      • BAKE IT OFFLINE
      • Why do something at runtime (eg. endian fixups) when you can do it offline when compiling the asset?
      • Put the complexity into the tool, not your runtime code.
    32. TSEDataBuilder
      • We use TSEDataBuilder to build almost all our binary assets.
      • It manages:
      • Memory usage across regions and alignment
      • Endian fixups
      • Pointer fixups
      • Fixed point conversions
      • Output:
      • Another library is used to write out assets built using the TSEDataBuilder to our standard asset file format.
    33. Code Compilation
      • We use Visual Studio .NET as our IDE, using:
        • native vcproj file settings for Microsoft platforms
        • Makefile targets executed from IDE for other platforms
      • Standard makefiles across platforms with per-platform includes for compiler settings.
    34. Art Pipeline
      • Modelling, texturing, animation and collision done in Maya
      • “ Scene” files:
      • Maya exporter generates cross-platform text file format for models, animation & collision
      • Can be compiled to native model format on any platform
      • Simple material system:
      • Mapping of materials to per-platform shaders
    35. Overall Asset Management Goals
      • Allow sharing of assets across appropriate target platforms (eg. Wii / PS2, Xbox 360 / PS3 / PC)
      • Allow complete automation of CD/DVD image creation from source code and assets for all platforms.
      • Stream everything! Textures, models, samples, scripts, entity placements, collision, strings… EVERYTHING .
      • Fast load times
      • Minimise RAM usage and fragmentation
    36. The Answer: Compilation
      • Just as we build code, we also build assets
      • The same source assets are built to each of the target platforms
    37. Asset Compilation (1)
      • Assets are compiled for each target platform
      • Compiled from a mixture of cross-platform and platform-specific source assets
      • Tools resolve dependencies between assets eg.
        • Models reference textures including normal maps etc on some platforms only
        • Placed entities reference script functions
        • Script functions reference individual sounds and other assets
        • Placed entities referencing script functions referencing other script functions referencing sound assets… and so forth.
    38. Asset Compilation (2)
      • Tools determines asset requirements for every load region of every level and game state offline .
      • The naïve approach is for game entities to load the assets they require as they require them – our assets are loaded up-front before our game entities look for them.
      • We fully automate disc image generation, from code compilation, asset compilation and bundling of assets.
    39. Asset Compilation (3)
      • All assets are written using a standard chunked file format, regardless of platform.
      • RAM Layout:
      • Each chunk in an asset can load into a different area of memory, including temporary allocations for upload to VRAM, sound RAM etc.
      • Fixups:
      • Helper library provides simple, uniform handling of pointer, float point / fixed point and endian fixups.
      • Standard fixup chunk generated by asset compilation from helper library.
    40. Asset Loading
      • Runtime asset system does all file I/O and memory management
      • Unified and straight-forward streaming
      • Game systems simply register callbacks to trigger on completion of loading of their assets
      • Game content requests loading of a hunkfile and polls for completion
      • Internally load jobs are queued to avoid thrashing the disc
    41. Network Gameplay
      • Both local and wide area network gameplay are becoming more and more important
      • Our single-player games are built as multi-player games with one player
      • Allows us to easily support multiplayer on individual platforms as required
    42. Resolutions & Aspect Ratios
      • All game consoles, PC and hand-helds are different!
      • Target highest resolution the game needs to support
      • Use the orthographic projection to scale & stretch display to native resolution & aspect ratio eg.
        • 1600x1200 -> 640x480 4:3
        • 1920x1200 -> 640x480 16:10
      • Assume fixed vertical resolution, horizontal can increase/decrease with aspect ratio
      • Use vertical FOV as it’s aspect ratio independent, not horizontal
    43. Safe Regions
      • All consoles have different “safe regions” ie. a border around the display you’re not allowed to draw critical information into
      • Position everything relative to edges your viewport, clamped to the edges of the safe region.
    44. Questions / Comments / Abuse?

    + FlunkyClausFlunkyClaus, 11 months ago

    custom

    554 views, 1 favs, 1 embeds more stats

    At GCAP 2008, Kevin McIntosh and Stuart Cameron gav more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 554
      • 553 on SlideShare
      • 1 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 0
    Most viewed embeds
    • 1 views on http://www.torusgames.com

    more

    All embeds
    • 1 views on http://www.torusgames.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories