First-Gen Xbox 360 Games Single-Threaded? 158
Scott Gualco wrote to mention a report at The Inquirer indicating that, despite the 360 itself being capable of multi-threading, first generation 360 titles will be single-threaded. From the article: "Every new machine has a nasty first set of games as the programmers work up to speed on the hardware. In this case, the up side is that there is about 6x the CPU power available and coming to a console near you in the second generation of games. The scary part is that everyone tells me that the PS3 is harder to program for than the Xbox360, and the tools are nowhere near the quality of Microsoft's. That means that even with an extra six months of design time, the initial PS3 games may be worse." Commentary available at Joystiq.
Middleware (Score:3, Interesting)
All I know is that doing it on you own is very challenging and adds so much complexity (race conditions and locking to name a few) that it's probably not worth the effort. Really all these systems need for great graphics is a kick butt graphics card!
Re:Surely this isn't true (Score:2, Interesting)
And are there any consoles that support threading now? For that matter, how common is multithreading in PC games? Most gaming machines (PC) have single chips and don't do multiprocessing, so probably people haven't got much experience in writing efficient, performant code for games that uses threading capabilities.
Not to say that threading games is impossible, or even particularly hard, just that when you bring a new technique/capability to a programming realm, it takes time to learn how to exploit it properly.
Sounds familiar (Score:4, Interesting)
1) Not enthusiastic about using multiple threads and
2) Very disappointed in both the 360's and the PS3's single-threaded CPU performance.
It was pulled pretty quickly, and the story is that the article was pulled to protect the anonymous source.
Not entirely true (Score:5, Interesting)
Gavin Carter: The game's code takes advantage of the multithreaded nature of the Xbox 360 and multithreaded PCs to improve just about every aspect of the game. The primary function is to improve framerates by off-loading some work from the main thread to the other processors. We do a variety of tasks on other threads depending on the situation - be it sound and music, renderer tasks, physics calculations, or anything else that could benefit. Loading also gets spread across hardware threads to aid in load times and provide a more seamless experience for the player.
That's not to say that writing software for multiple cores is easy. It's actually extremely hard to synchronize the various tasks that run on the different cores. I suspect that most early games will run slowly on a single core or somewhat inefficiently on multiple cores. It will be quite some time before developers can figure out how to use all of them efficiently enough.
The developer's dream is a single processor console that has a very fast CPU. Unfortunately that's hard to manufacture, so they're stuck with something less than ideal that can be made cheaply with today's technology.
Developers said (Score:2, Interesting)
Re:How can it get worse? (Score:3, Interesting)
Remember the early PS1 games? A lot of them were 2D or mixed 2D/3D (Final Fantasy VII had 2D environments with chunky, lego-man 3D characters, many others had 3D environments with 2D objects in them). It was a good while before good-looking fully 3D games were the norm, and even then, there were 2D games that came out like Valkyrie Profile and various fighters that looked much smoother than simmilar 3D games.
Then the PS2. A lot of the early games looked butt ugly when compared to the recent releases. To look back at GTA3 next to San Andreas on the PS2, it's hard to believe they're on the same system. Do the same with the PC or Xbox, and although there's a difference, it's not nearly as marked.
When the Game Cube and Xbox each came out, they both looked (at least to my taste) a fair bit better than the PS2. Before long, though, the PS2 games were a good match with the other consoles.
With the lackluster screens being shown so far and the quantity of "bullshots," I don't think the PS3 titles will live up to the system's touted graphical power.
History repeats itself (Score:1, Interesting)
I've Worked On (almost)Every Console (Score:2, Interesting)
It is clear to me that Microsoft is in full press damage control right now.
I don't know where the hell this notion that "game developers will need to time to adjust to the scary new world of multithreading" came from. But wherever it did come from it is complete bullshit.
Console game developers have been writing parallel code for a long,long time. Hell, I've been writing multi-threaded game code on my dual G5 for two years now. It took me maybe ten to fifteen minutes the day I got mine to look up how to spanw off a new thread in OS X and throw a huge chunk of code off in its own thread running on the second G5 chip resulting in a huge performance jump.
Not only have we been writing parallel/multi-threaded code, it just isn't an area of game development that is that interesting. My latest console game we spent about a half day moving code around to maximize parallelism. And then we got right back to working on the actual difficult stuff in making a modern console game.
The performance of the 360 has been shockingly underwhelming. The seemingly endless excuses about devkits or only using one core and so on indicate Microsoft knows they have really botched the 360 hardware and software tools. I am glad my company is skippng the 360 like we did with the Dreamcast.
The PS3 is an utter dream machine for game programmers. The hardware and tools kick ass. If you do graphics programming, you NEED to find some way to get your hands on one. I'm not saying break the law to get your hands on one, but I'd understand if you did...
Re:Surely this isn't true (Score:3, Interesting)
Using an appropriate language (for example, Java), and provided you know what you're doing, threading is not hard. One of the apps I am responsible for routinely runs 800+ threads on 16 processor boxes. I'm no rocket scientist, but it works. Threading is also not new, or rare. Taking a look at task manager on the XP box I'm using right now shows over 300 threads running, with some apps taking as many as 50. This is on a single processor box - threading works on a single processor because it allows you, the application programmer, not to have to write your own scheduler (for example, to handle blocking IO without locking up the GUI). The OS is usually better at these things than you.
I've seen the PS3 Instruction Architecture (Score:2, Interesting)
Thread safty solution (Score:2, Interesting)
I was just think about the same thing this morning which is a programming language designed from the ground up to be multi-threaded.
Here's a few ideas, let's see if we can get some other intelligent folks to join in.
** Contracts
I imagined having "contracts" much like C# has with interfaces. With a threaded "contract" code is checked at compile time instead of having runtime "gotchas".
"Contracts" would prevent any piece of code from spawning a thread and those objects/functions that did spawn threads would have coinciding "contracts" for the object/thread being called.
** Intelligent IDE
In Eclipse (not the best I know) there is a built in refactor. I can do all sorts of stuff like pull out a class, create stubs, infer generic types, convert anonymous to nested class and the like all with an automated process!
Now imagine if the IDE could check a class for it's thread safety-ness(sp) all before compiling. All a programmer would have to do is highlight a section of code and select the TYPE of thread (1 processor/multi thread, Dual processor single thread,etc) and then the IDE would use game theory to adjust the classes members all on the fly! Possible?
Ok that's just two, lol, but the whole emphasis is on:
*Compile time, safety for threads
*IDE on the fly thread contract correcting,regression and basic race condition checking
*Intelligent compiler warnings regarding possible inappropriate thread usage
*Thread Cases(?) - A restricted system of compile time thread safety where various *types* of threads have different access to other threads.. (private, public, protected) similar to classes. Prevents certain objects under this TYPE of thread from calling another TYPE of thread.. basically, more compile time safety
*Thread hierarchy(?) a strict system of enforcing what threads and objects (within a given thread) can call or pass/share data with another thread and object in another thread. Helps the compiler know how to optimize and the programmer find tricky logic errors
Ok that was wordy. Did it help to explain the vision I was having? Does this coincide with trends or ideas you had?
Cheers!
Re:Sounds familiar (Score:1, Interesting)
Wait until people start to see how slow the releases come out, and the massive lulls in new releases in times when gamers expect many. The cost and development times are just out of hand, and when sales don't keep up with the massive development costs the PS3 and 360 become expensive multi-media centers. The only true hope this round is that Sony and MS take huge financial hits (which they are already feeling, check out todays business news about MS and the stock issues and Sony cutting jobs left and right) Nintendo is perfectly placed to once again pick up a broken videogame industry and run with it. I wish them the best, and I hope for gaming's sake that innovation, fun, family, and gameplay once again become the core focus.