"Nerve-Damage"
Regular
"Engine development is an artistic process" Mike Acton of Insomniac on PS3 and next-gen game development
In what ways has the engine evolved since Resistance 1? There was a lot of talk about streaming textures at the time... What elements have you added since that game and what have you learned?
The engine is constantly changing. It's continually being upgraded and simplified, while we add new features and remove less useful ones. A sign of any maturing technology is that it becomes simpler rather than more complex. And as we work on our third-generation PS3 title, this is what we're starting to see. We've tried several approaches for different features and we're now definitely seeing a convergence of the ideas that have worked out well. For example, the physics, animation, glass, inverse kinetics, effects, and geometry database systems (just to start with) are now less complicated, thus offering more and significantly faster features than the versions found in Resistance 1.
We've also solidified some design patterns that are simplifying things. Take SPU Shaders, for example, which we discuss in detail on our newly established R&D site. SPU Shaders helped to make the big systems and all the little changes that come along during development a lot more practical to implement. They've also helped shed some light on programming the SPUs. Just having the ability to start putting high-level logic and AI on the SPUs was a major milestone that validated a lot of our ideas on how to distribute that type of work. This isn't to say that we have fewer challenges with each new generation of game--we just have all-new, even better and more streamlined challenges!
Have you had any moments of epiphany with the PS3 hardware - a moment where you've suddenly thought 'hey, I get it' and suddenly opened up a whole new avenue of power/possibility? Can you explain it in lots of technical detail ; )
As I said earlier, the more time you spend with a maturing technology, things only become simpler. In preparation for our GDC presentation this year, I asked some of our programmers what was the thing that really "clicked" for them as they've learned to work with the Cell. Off the top of my head, the main responses were:
Think in streams of data: Do similar things together.
Remember that local memory is really fast: Classically, you want to avoid algorithms that have heavy memory access. That's still true in general, just not on the SPUs themselves.
Forget about conventional Object-Oriented Programming: It's not so much that OOP is bad in and of itself, but the way it's taught and applied typically causes numerous and completely pointless difficulties when it comes to optimising data and code.