Back to Blogging
I must appologize for not blogging over here more often. I have been posting fairly regularly now over at blogs.sun.com, but I need to get into the habit of going back and forth. A lot has been going on around here, and I will get to that later today. I will start by reposting something I posted over thare last week. As usual, the community is amazing, so thanks for being so patient.
This week Sony, IBM, and Toshiba released more details about the cell technology that they have been working on for the last 3 years. One of the first devices to utilize this new technology will be the Playstation 3. The rumbling started last year when developers started to get the specs on the next generation game consoles. They would be CMT, or Chip Multi Threading, machines.
So, why is this such a big thing? Multiple CPU machines have been around for many many years. Visualization systems have been using multiple thread systems to power their visualizations ever since the technology was available. But when the specs for next generation consoles were given to game developers, they hated it. The industry is very change adverse. They know how to make single threaded games that squeeze out every ounce of performance, and they would be perfectly happy if physics would allow clock rates to climb to infinity. Unfortunately, that is not the case, so things are changing.
It is not as though the industry doesn't have experience with multithreaded environments. The Playstation 2 has multiple processing units. The difference is that each processing unit on the PS2 has a very specific function. Although, there are some threading quirks that have made many a PS2 developer bang their head against the wall. Most of the problem of harnessing the power of the next generation machines will revolve around rearchitecting their simulations.
If you look at the general flow of a common game engine, it follows roughly the same path - gather input, process each world entity (responding to physics and collision), decide what is visible, sort it, and then render. By doing this in a single threaded environment, you have a closed set finite state machine where ambiguities can be resolved with simple tie breaking rules. Once you make multiple processing units available, things get trickier. In big visualizations systems, there are usually many screens to render to, and therefore, some processing can be divided among screens. That doesn't work in single screen environments. Trying to have multiple processing units feeding a single graphics device can cause graphics context thrashing. Although it is worth noting that many graphics cards do divide up the single screen and parallelize the work for performance. Other techniques are needed to utilize the processors.
If mutiple rendering processors is not the answer, then we need to look at the other systems. I don't want this to turn into a debate on engine design, so I will simple give a few examples to illustrate the possibilities. Input systems have a possibility for multiplayer input, but often these functions are handled by the hardware anyways. Processing each world entity in parallel has a lot of possibility, but it does require the finite state machine to become not quite a closed set. Imagine one entity making a decision based upon another entity which is about to change state in parallel. It definitely causes the equation to go from finite to becoming valid within a given range. Deciding what is visible is another massively parallel activity. The complexity of worlds could become much greater if we started to utilize some parallel occlusion culling methods. Sorting could be parallelized to a certain extent as well. As we can see, there are many ways to divide the simulation into many parallel components. If you look at what we did with Java 3D, you can see some of these methods implemented.
No matter what the PS3 turns out to be - because there still seems to be lots of missing data - it will be a machine that has more than just a few processing cores. This will be the case of all client machines in the not too distant future, so the industry will have to adapt. Most likely there will be three responses. Some people will not adapt, giving us games that only look incrementally better than the current generation. Some people will retire. And some people will step up to the challenge, harness the true power of these machines, and blow us away with the games that they create. I can't wait.
P.S. Did I mention that Java would be the perfect platform to harness the power of these machines. Oh well, that is a different topic.
- Login or register to post comments
- Printer-friendly version
- yensid's blog
- 581 reads





