| |
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
|
|
|
GDC09 - Insomniac Physics
04/10/09 - 18:00 PST - Posted by Eric Christensen, Principal Engine Programmer
This year I had the opportunity to be part of Insomniac’s all day tutorial for GDC. I gave a presentation on Insomniac’s proprietary physics system, describing the evolution of its pipeline from inception to current day. In this presentation I explain the importance of optimizing a system for the SPU via shaders (isolated code fragments) and library shaders, as well as explaining the importance of good data design for optimal concurrency.
Comment on the presentation
Download the presentation
GDC09 - Resistance 2 Prelighting
04/10/09 - 18:00 PST - Posted by Mark Lee, Senior Engine Programmer
Resistance 2 had a big dynamic lighting overhaul from previous Insomniac titles. Here Mark Lee describes the new lighting and shadowing schemes used and touches on some of the implementation gotchas.
Comment on the presentation
Download the presentation
GDC09 - Gameplay Systems on the SPU
04/10/09 - 18:00 PST - Posted by Joe Valenzuela, Engine Programmer
This presentation, given as part of the Insomniac tutorial at GDC 2009, describes some of the systems and conventions used to support gameplay code on the SPUs.
Comment on the presentation
Download the presentation
Resistance 2 Water Rendering
04/10/09 - 18:00 PST - Posted by Mike Day, Senior Engine Programmer
We decided early on to devote much of the development budget to the modelling of interactive waves – waves emitted by local disturbances such as the impact of a projectile or a character wading through the water. The result is that while we feel the system is still lacking in certain features, we believe it demonstrates a technological first in games: interactive waves with the property of dispersion (a physically-based dependency between wavelength and wave velocity).
Read the article, download the paper, and get the source code
GTC09 - How a Physics Solver Works
04/10/09 - 18:00 PST - Posted by Eric Christensen, Principal Engine Programmer
This year I spoke at GTC about how a physics solver works. My intention was to provide a simple run-through of rigid bodies, constraints, and how they are used to pre-condition a solution. The presentation is meant to be comprehensive for everyone, so regardless of math background the information should be relatively easy to grasp. My hope is that this presentation will demystify how core solvers work. As a supplement to the presentation, I’ve provided source code for a simple 3D constraint solver which you can find on our nocturnal site. I encourage you to download the source code and experiment with it. I’d also like to point out that the solver does not have to be used for physics, as illustrated in my presentation.
Read the article, download the paper, and get the source code
Remez Exchange Algorithm
02/05/08 - 18:00 PST - Posted by Mike Day, Senior Engine Programmer
I was just telling Mark about some stuff I’ve been doing at home lately, and I thought I’d share. I’ve been trying my hand at the so-called Remez Exchange Algorithm, which is an iterative technique for finding coefficients of minimax polynomials (see example below). The results are promising… I’ve already got it to a state where we could actually use it, and once I’ve done a bit more work on it, maybe during post, I’ll put it up somewhere and write a wiki page on it.
Read the article
Morphing
02/05/08 - 18:00 PST - Posted by Jonathan Garret, Senior Engine Programmer
For Resistance 2 we added vertex-morphing support to allow more expressive facial animation. This was augmented with a system for compositing textures on the SPU to support features such as animator-driven dynamic-wrinkles.
Comment on the presentation
Download the presentation
Prelighting
02/05/08 - 18:00 PST - Posted by Mike Acton, Engine Director
During the development of Resistance 2, one of the things we decided we wanted to do was improve our lighting model toward more of a focus on runtime light performance. With deferred rendering all the rage, we certainly considered it. But ultimately we thought it both too large and too risky for our development process. So we went with a kind of semi-deferred model that allowed us to get much of the benefit of fully deferred rendering without having to completely re-write our pipeline. Mark Lee (Master Engine Programmer) explained the approach during a presentation to the programmers.
Comment on the presentation
Download the presentation
Ratchet & Clank Worldwide Studios Debrief
11/19/08 - 18:00 PST - Posted by Mike Acton, Engine Director
In February, we gave a presentation to the Sony first-party studios on how we progressed during the development of Ratchet and Clank Future: Tools of Technology. The purpose of these presentations is to share with other developers and to give hints to the things that improved our development process. And not just our engine or tools technology, but anything that we think might be helpful. I've culled out a few slides due to NDA, as well as a couple that might have caused forum meltdowns. But otherwise, this should hopefully provide a good inside look into some of our processeses as well as the tech changes we made during RCF.
Comment on the presentation
Download the presentation
|
Quick links to some of the presentations we have recently given (in PDF format).
GDC09 - Insomniac Physics
GDC09 - Insomniac Pre-Lighting
GDC09 - Gameplay Systems on SPUs
GTC09 - Physics Solver
Optimization 101
IG Moby B Spheres
GPU for Everyone
Async Character X
Moby Async Update
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
|
Quick links to some of the research we have recently conducted.
Resistance 2 Water Rendering
Curved Surfaces on the RSX (Updated with screenshot!)
Process Memory Utility
Dynamic SPU Code
|
Online Co-op Bot Synchronization
11/19/08 - 18:00 PST - Posted by Mike Acton, Engine Director
Heather Barclay (Multiplayer Lead Programmer) gave an introduction to the programming team on our approach to synchronizing the network data for Resistance 2 Co-op mode. For those of you playing the game now, you know how crazy these games can get, and yet everything stays pretty smooth (for the most part). Enjoy!
Comment on the presentation
Download the presentation
Normal Maps and Cube Maps For Everyone
11/19/08 - 18:00 PST - Posted by Mike Acton, Engine Director
Continuing our For Everyone series. Chester Hsieh (Associate Engine Programmer) had a go at describing how normal and cube maps work to the general studio population. This presentation is for the curious that might want to know a bit more about the math and logic behind these very common texture maps.
Comment on this presentation
Download the presentation
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
|
Check out
some of our past highlights
Shuffle Helper Source Code
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
|
|