Insomniac Games is currently in development on one of the first third-generation PlayStation 3 titles, Resistance 2. This page is a part of our larger NOCTURNAL INITIATIVE and documents our current research and development in hopes of supporting the PS3 development community and enhancing overall development for its core technologies such as the CELL processor and RSX. In addition, we hope that giving interested tech-heads a deeper look into Insomniac's game development and production philosophy will let them see a bit more of what goes on behind the scenes here.

About this Page
We will feature a large variety of documentation here, such as
  • Simple tips on how to optimize a certain piece of code or hardware
  • Internal presentations or conference presentations.
  • Articles featuring Insomniac tech team members.
  • More in-depth Insomniac research and analysis.
  • Visit nocturnal.insomniacgames.com for releases of our source code


  • Contact Us
    We'd love to hear what you think about this R&D page, please send your comments to us at techsite[at]insomniacgames.com
     

    Recent Articles (graphic)

    Gameplay on SPUs

    07/02/08 - 18:00 PST - Posted by Joe Valenzuela, Engine Programmer
    What does a next-gen engine look like? Well, for one thing, it needs to take advantage of the multi-CPU architectures. Scalable systems don't just happen, they're designed that way. I was lucky enough to give a presentation at Sony Devcon 2008 about how the Cell (and multi-core architectures generally) need to influence the design of gameplay systems. Designing your gameplay to work with deferred systems is an important step to scaling your performance with future platforms. I hope that this illustrates some of the planning that should go into place to eliminate "gotchas" when writing your next-gen gameplay code.
    Comment on the presentation
    Download the presentation

    Dynamic Component System

    07/02/08 - 18:00 PST - Posted by Terrance Cohen, Gameplay Lead Systems Programmer
    A year ago, we talked about a Gameplay Architecture for Performance, and since then, we’ve been hard at work putting our ideas into practice. The Dynamic Component System is our way of expressing gameplay in bite-size chunks that can be added to and removed from the game as needed. Dynamic components represent aspects of a game object or system’s behavior. They are allocated and deallocated on-demand from efficient memory pools, they’re hierarchical, and client code can query for an object’s component of a given type or a component that implements a given interface. Because of the way components are pooled, it is straightforward to run updates for a given component type in parallel with other component types, and on a different processor such as an SPU.
    Comment on the presentation
    Download the presentation

    Sound Formats for Everyone

    07/02/08 - 18:00 PST - Posted by David Thall, Sound Programmer
    Driven by hardware design and media requirements, sound file formats are constantly changing. For example, on the PS3 we encode and decode an AD-PCM format for the majority of our sound sources during playback. On computers and portable music devices, most of you will listen to perceptually-coded, lossy, variable bit-rate MP3s. Those who still have CD players will listen to CDDA-encoded, signed 16-bit PCM sampled at 44.1 kHz. And sound designers will work mainly with chunked file formats like WAV and AIFF that give them flexibility in storage, playback and interoperability.
    Read the rest of the article and download the presentation

    Optimization 101

    04/26/08 - 18:00 PST - Posted by Mike Acton, Engine Director
    Usually in presentations, what we (or anyone else really) usually give to the audience are answers (hopefully!) to some interesting problem. Especially when it comes to optimization techniques. It seemed to me there was a big gap there - certainly a lot of people can simply use the answers to make their code/game/application faster, but how do they get better at solving these problems themselves? Usually the answer is simply, "with experience."
    Read the article and download the presentation

    Shuffle Helper

    04/26/08 - 18:00 PST - Posted by Jonathan Garrett, Senior Engine Programmer
    Due to some of the problems encountered with those preprocessor shuffle helpers (Read: shuffles.pdf), I cobbled this little exe together. Here's the source: shuff.cpp
    See the examples and download the source

    igMobyBSpheres

    04/09/08 - 18:00 PST - Posted by Jonathan Garrett, Senior Engine Programmer
    On Resistance we used collision-prims to dynamically update moby bspheres on the ppu. For RCF we reworked this scheme to run asynchronously on the spu and to also create different bspheres for rendering related tasks and broad-phase collision.
    Download the presentation

    Presentations (graphic)Quick links to some of the presentations we have recently given (in PDF format).

    Progressive Mesh

    Dyadic Interpolation

    Debugging Tips

    GDC 2008 - Insomniac SPU Programming

    More on SPU Shaders

    Ragdolls and IK

    RFOM Debriefing

    Combined SPU Physics

    Introduction to B-Trees

    Fantasy of the Familiar

    Insomniac Occlusion Systems

    Texture Streaming

    Tier Systems

    Sound occlusion and diffraction

    Shadows in RCF

    Insomniac Games Custom Shaders and Effects

    Networks and Networking

    Virtual Memory System on Nintendo GameCube

    Eric Gooch's presentation on R:FOM lighting

    igCollision Presentation

    Multithreading Optimization Basics by Example

    Curved Surfaces on the RSX

    Effects Conduit

    Gameplay Architecture for Performance
    Research (graphic)

    Quick links to some of the research we have recently conducted.

    Curved Surfaces on the RSX
    (Updated with screenshot!)

    Process Memory Utility

    Dynamic SPU Code

    Previous Articles (graphic)

    SPU Shuffles

    04/09/08 - 18:00 PST - Posted by Jonathan Garrett, Senior Engine Programmer
    Here's a quick note about the shuffle-mask naming convention we use (borrowed from our friends at ICE / SCEE ATG). [Shared with permission.]

    GPU For Everyone

    04/02/08 - 18:00 PST - Posted by Mike Acton, Engine Director
    We're doing a "For Everyone" series of presentations here at Insomniac intended to give everyone at the company a better background in the details of technology we work with. While artists and designers may work with the tools and engine everyday, there are bound to be a few gaps in their knowledge when it comes to the internals. It's also important, I think, that even those who don't directly work with the game (writers, management, IT, etc.) have a basic understanding of how things are put together - you never know when that knowledge will come in handy. And at least everyone will know the terminology when they overhear conversations in the kitchen. :)

    If you are always reading (or hearing) terms like "vertex data", "index stream", "vertex program" or "fragment shader" and aren't quite sure what they all mean, exactly - then this presentation is for you!
    Download the presentation

    AsyncCharacterX

    04/02/08 - 18:00 PST - Posted by Mike Acton, Engine Director
    One of the things I've been most excited about lately here at Insomniac is our push to move higher-level gameplay code on to the SPUs - and have this be done by our gameplay programmers - AND make sure they get an understanding of the SPUs (and data design) in the process without giving up the "power" of the processor through crazy abstractions.
    Read the article and download the presentation

    MobyAsyncUpdate

    04/02/08 - 18:00 PST - Posted by Joe Valenzuela, Engine Programmer
    We here at Insomniac don't discriminate - we think all code belongs on the SPU. Engine programmer and good looking S.O.B. Joe Valenzuela describes the AsyncMobyUpdate and Guppy systems, which we use to make sure our gameplay and AI code can use all parts of the Cell.
    Download PDF file
    Comment on this presentation
    Archive (graphic)
    Check out some of our past highlights

    Three Big Lies

    Faster SPU Clamp

    Disk Journal Dump Tool

    Win32 Profile Tool

    Curiously Small Code

    Supporting Cylinder Collision

    SPU Cheat Sheet

    SPU Shaders Introduction

    Autodesk Mental Ray pipeline at Insomniac

    Mike Acton's Insomniac Blarg on the R&D page

    SPU Ninja Homework #3

    Beware of Statics

    A hair-tearing-out bug and quiz

    Why Rotqmbybi Is Broken

    Al Hastings on being an Engine Programmer at Insomniac

    Configuring VNC for PS3