![]() |
work in progress |
about me demos work in progress cv dissertation |
Outside of my job, I like to occupy myself with various games-related projects. These are some of the things I'm currently actively working on.
"walkcycle" an animation system aimed at next-gen platforms
Based upon the research I've done into next-generation platforms (particularly the PlayStation3/CELL Processor- see below), it seems that programs will need to be carefully designed with multithreading and multiprocessing as core factors. This holds true for the PS3, the XBox 360, future AMD and Intel 32- and 64-bit chips, PowerPC machines, and almost certainly the Nintento Revolution.
In order to really take advantage of this parallelism, it seems to me that systems should be designed as collections of small, self-contained tasks (to avoid issues with blocking due to too many critical sections). The PlayStation2 already encouraged this style of design to a degree, as the bus became almost off-limits during periods of heavy DMA transfer, the CPU had to be able to usefully process data in the (small) scratchpad.
It struck me that an animation system is an ideal candidate for such designs, as (with the proper data structuring), all the data needed to sample an animation at a given time can be arranged contiguously in memory, with no unused data inbetween. This lends itself to being parcelled into a neat package and sent to either an SPE (in the case of the CELL Processor), or processing by a pool of threads using lock-free primitives to distribute the work. For a game with a large number of animations, this would be trivial to load-balance.
Status: The system can play animations. I've written an exporter for Blender, and a test application to exercise it.
Next steps: Use a pool of threads to process large numbers of animations concurrently. Also port the system to the PlayStation2, with VU0 running in micro mode taking care of the sampling while the core feeds it and inflates the results to 4x4 matrices ready to send to VU1.
