Apr
13
2008
One of the big things for games programming these days is dealing with multiprocessing. I have been working on a multithreaded renderer in my spare time to do interactive brush work. The previous movies for peduncle are all non-interactive. They actually render in faster than realtime, but they just run from a command line. First, I had to create the basic infrastructure, which is not much different than a game. This infrastructure means all of the usual subsystems like fileIO, memory, debug scaffolding, and rendering. I already had fileIO running in another thread. This evening, I got my multithreaded renderer working.
Continue Reading »
Apr
02
2008
Stormfront Studios has closed its doors. While I have not worked there for a number of years now, it was my first games job…they took a chance on a strange music guy who had been focusing on image processing. I am incredibly proud of The Lord of the Rings: The Two Towers. The tech that my engineering team and I created was truly some of best in the industry at the time.
Mar
16
2008
I have been dealing with multicore code lately. This is both at work and in my spare programming time. At work, the PS3 is an interesting problem because there are heterogenous CPUs (the PPU and SPUs). It becomes more complicated when there is not unified memory. Licensed PS3 programmers can download my C++ template class which tries to address this problem. At home, I am programming on a dual-core Wintel box, and in some ways it is not any easier.
Continue Reading »
Feb
17
2008
Sunday afternoon…mostly nice day outside. I’m trapped inside working on my presentations for GDC. So many good things have happened over the past year with the PS3 that it is taking quite a while to put it all together. It does not mean that we are done improving it, but it certainly makes me feel good about the future.
Feb
13
2008
The Game Developers Conference 2008 is next week. Suffice to say, preparing for it has been occupying most of my time lately. To the game developers who read this (and you know who you are :-) )and want to meet with Sony, let me know. Our meeting times are mostly booked, but we have a few left.
Jan
23
2008
I spent some more time playing with video output in Peduncle. This time, instead of using a movie file, I fed the system four still images. Each image had a single word on it in a different color – One, Two, Three, Four. The brushes were randomly placed on the images and wanted to move to brighter areas. If a brush was only on a black pixel, then it would randomly move in some direction. I also blended the color from frame to frame so that there would not be sudden changes as the underlying images switched.
Continue Reading »
Jan
22
2008
Today is my one year anniversary with Sony. A lot happens in one year…
Jan
22
2008
Amdahl’s law is mentioned a lot these days, especially with the multi-processor consoles which are out in the marketplace. I have been thinking a lot about how it actually applies to a typical game tick-loop. The main thing with Amdahl’s law is that it needs to be applied with all of the information or you can get incorrect results.
Amdahl’s law is the following formula:

Where:
F = serial part
N = num cores
For example, if you had an application which was set up as follows:

Continue Reading »
Jan
11
2008
I got video output working in Peduncle. I started with a movie with a couple of fish swimming around. I randomly place 1024 little “brushes” on it (just small circles). Each brush always has the color of the pixel under it. Every frame, each brush wants to move in the direction of a brighter pixel from the underlying movie. This means that over time, the brushes cluster together on the brighter sections of the movie.
I have a short version and long one.
Oct
09
2007
One of the things which I encounter in my day job is lots of engineers who do not know what DMA is. DMA is “direct memory access.” It is a way to transfer data from one memory location to another. For most PC and Xbox 360 programmers, DMA is handled by the OS and they do not have to care about it. DMA is fundamentally how bytes of data are moved through the hardware. This means that PCI buses do DMA, USB devices do DMA, hard drives do DMA, etc.
For PS3 (and PS2) programmers, DMA is a critical part of how to get the best performance. With the PS3, one needs to understand how the SPUs work, especially since the Cell architecture is based around it. The PS3 has two types of CPUs: the PPU and the SPU. The PPU is a traditional main CPU. It is a PowerPC chip, but it behaves basically like any CPU in your PC, like a Pentium chip. The SPU is a specialized chip which has limited RAM (256k) and is optimized for processing vector data. It is not made for general game code.
Continue Reading »