Playstation 2 Emotion Engine
Basil writes: "Here's an in-depth article on the Playstation 2 Emotion Engine at Ars[Technica] that you really shouldn't miss. The article goes a long way in explaining the intricacies of the overall design, relating the performance of the MIPS III core to their somewhat odd implementation of two vector processing units."
The thing does run a mangled version of Linux internally. It can get files via NFS, and it has an internal web server that lets you perform various admin functions. They don't want you telnetting to it, though. I think they did some tricks to the pty system that may have made interactive shells a bad idea. Just a guess.
As a former PC game shop, we actually were using the Metroworks system to do development. Compared to dev studio, it was wretched, frankly. Building on a linux system with a gcc cross compiler was the recommended way to do things, and frankly, I would have preferred it.
The hardware is fucked up. Seriously fucked up. Scary fucked up. The first generation of PS2 games isn't going to get close to actually using the system capabilities. Nor is the second generation. Maybe the third generation.
We had several hard-core 3D graphics programmers with multiple commercial titles under their belts working on the system, and their progress was, frankly, pathetic. Why? Because although its not all that hard to write a simple renderer from the EE Core, its a major pain if you want to actually use the box. After all, the core is only 300Mhz, its not all that interesting. You really need to use the VUs if you want to start slamming matrix manipulations around.
The VU's have basically no memory. So, you can't actually fit an entire model inside them. So, we were going to do a pipeline where individual primitives (i.e. quads, tristrips, fans, whatever) would get queued, the VU1 would just eat stuff off the queue, do the transforms, and render. Well, we also decided that the system would be great for doing curved surfaces. That complicates everything. How does your physics system do collisions with a dynamically tesselated curved surface where the generated tris are all off on another CPU where you can't touch it? So you need to resolve collisions either directly between the surfaces (ow) or use simpler geometries. Annoying.
Then Renderware came in and gave a demo. They've had dev systems for quite a while, and they have a mature abstraction to the whole rendering process, and their entire scheme for doing the rendering is fucking wild; as I understand it, they don't even leave code on the VU's, they download it constantly, alongside whatever work they need it to do. They are running the DMA at like 90% capacity, which rocks. Their stuff looks awesome, and they get pretty damned good performance.
I personally believe that there will be more RenderWare based games than studios touching the raw hardware, especially for generation 1. Its a lot easier to learn an API than to try to understand poorly documented (and japlish, when it is documented) hardware specs.
At any rate, its not a good year to invest in the games industry. Everybody is blowing wads of dough trying to learn all the new platforms.
You think this emotion engine is complex, you should try to figure out the one in my girlfriend. Sometimes, I wish God would just Open Source women so that maybe I'd be able to understand them.
kwsNI