First-Gen Xbox 360 Games Single-Threaded?
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.
Multi-threading doesn't actually buy you much with video games, not much can be done in parallel. About all you could do with it is run AI on a separate thread. That'd buy you an advantage for strategy games, but not much for anything else (where AI is light). Look at performance testing of games on multicore chips- they don't outperform single cores.
I still have more fans than freaks. WTF is wrong with you people?
What the hell? Not a single XBox 360 programmer can work out how to create new threads and identify at least some processes that are not dependent one each other? That sounds like complete nonsense to me. There are plenty of easy ways to separate your level setup, game logic, sound processing, graphics, AI, physics etc. into different threads. I'm not saying taking full advantage of all cores is easy, but the idea that none of the game developers have the ability to use more than one thread is stupid.
first generation 360 titles will be single-threaded ... the initial PS3 games may be worse
They'll be half-threaded?
If I have been able to see further than others, it is because I bought a pair of binoculars.
It seems like a lot of the things dealing with the Xbox360 have been rushed... I mean, here it is less than a month before it's released and I still don't think there's a 100% accurate list of games that will be available on the day of release.
This seems like the easiest place to cut corners. If the game will run fine using single threads, there's no incentive to develop a more streamlined game when time is of the essence.
This always seems to happen with systems, though... games coming out later in the system's lifespan look a lot nicer than games early on. As they use the SDK more they'll learn tricks to make things run and look better.
The middleware they all use probably isn't there yet. Once it is I think you will see more multi-threading.
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!
Keep in mind how new this mutli-threading thingy is. Why is sarcasm so hard to get across in type?
Most of the first run games will probably be developed based on the engine of the single-threaded previous sequel.
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.
I wasn't aware that everyone had PS3 development kits. Development kits for a console that is nowhere complete yet.
Are you sure by "everyone", you don't mean "the fanboy gremlin that lives in my arse"?
And as these systems get more complex, the development is going to get harder. I am a Sony fanboy, buy I am interested in hearing about what it's like to develop for Nintendos new system. I'm not interested in hearing "omgz teh XBOX has best hax tools for game making!" or "stfu m$ noob, ps3 pwnz joo cell!".
How about some actual reporting, the last half of that summary was totally unneccessary.
C17H21NO4
I'm suddenly reminded of that Anandtech article from a couple months back about how developers were:
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.
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
I told Sony over and over again that they'd better include an IDE with their SDK... they really dropped the ball on this one.
"Trolls they were, but filled with the evil will of their master: a fell race..." -- J.R.R. Tolkien on Olog-hai
This has been discussed on Evil Avatar for awhile now. It seems that for Oblivion at least, that statement isn't entirely true
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.
http://igo.ampednews.com/platform/xbox360/news/281 9/
There's the correct link to that story.
This should not even be an issue. How hard is it for MS to create a multithreaded api/sdk.
Microsoft could and should have designed the system around the technology.
Granted I'm not a gamer and don't follow the industry as such, it seems to be that MS may have made a huge mistake trying to get this system out the door.
Let's see.....
Games approved for release by MS -> 0
Games using systems biggest selling point (as in ultracool new multicore cpu) -> 0
Then the WalMart interference problems ( yes I know they're fixed) and all yeah....And then there's still the complains from the industry of still using dvd instead of a bigger media.
Lots of developers said quite a while ago in something I read on either GameSpot or EGM that most, if not all, of the first generation Xbox 360 titles would be single threaded. Using multiple threads is still a new technology and one that many developers are still only beginning to learn. I remember them saying that around the third and fourth generation of games is when you'll begin to see them take advantage of multiple cores.
This story is false as a couple posters have already pointed out.
Look, Slashdot, I know that if some idiot posted on a website how the 360 was made with tin cans and string and that everyone who buys one is going to mysteriously disappear from the face of the Earth while Microsoft's zombie army grows and grows. That doesn't mean you actually have to believe it.
I don't think anyone's even been able to determine what "event" this clearly-false statement was made at.
(next thing you know, they'll be posting articles here about how the Xbox 360 is powered by DEAD KITTENS...)
"You know your god is man-made when he hates all the same people you do."
I remember when COLECOVISION first came out, everyone complained that the launch games were "written in Pascal" and so weren't as cool as games in assembly language. This was also something the apologists claimed to explain away the poor quality of the launch titles.. "yeah the games kinda suck, but that's because they're written in pascal. The next batch of games will be in assembly and will be a lot better". Then of course, the great fallout happened... "oops".
I've worked on almost every console over the past decade or so and worked on every area of game engineering - graphics,AI,physics, and even sound recently.
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...
I don't BUY this single-threaded games stuff at all. Almost every application you come across nowadays is multi-threaded. I think either there is some funny definition of threads being used here, or it's just a load of garbage.
Dont bother clicking on the inquirer heres the entire article in full glory:
MICROSOFT'S VOLE DRAMA ARMY DROPPEDa bombshell today in a backhanded way.
During a talk on multithreaded programming, Microsoft used the three core, two thread per core Xbox360 as an example.
The bombshell was that the first generation of Xbox titles, all of them, are single threaded. Not good.
The INQ has gotten its hands on an Xbox360, yes, there is a Wal-Mart near us, and was completely underwhelmed by the quality of the games. Graphics quality was poor, and pixels were showing up blocky, ruining the wow-factor of the new console.
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.
Translation: We went to wall mart played the thing for 5 seconds then wrote an article based on that and 90% guessing, since the PS3 is also a hot item we speculated it will be worse. since well... Jeff from accounting say it will.
You know Zonk, next time you read "MICROSOFT'S VOLE DRAMA ARMY" as the source of the article, you probably shouldn't even read it, much less post it here.
Go ahead MOD my day!
More opinions here
Writing multi-threaded anything is hard. If developers have been used to designing and implementing single-threaded games, then there is going to be a serious learning curve. I'll take single-threaded games over crappy multi-threaded games with deadlocks. Actually I probably won't take either since I'm not going to get a 360 or PS3 for quite a while.
I downloaded the PS3's SPU instruction set pdf from the IBM download page. After reading that doc I thought, "Wow, this instruction set looks FUN!" It kindof reminded me of when I moved from MOS6502 to Intel 8088 - how much more fun it was to bit fiddle with the 8088. I think PS3 games are going to be a lot of fun to write code for - for bit fiddlers and premature optimization freaks. Will it be harder to code PS3 for than the XBOX 360? Unless Sony does something amazing with their SDK, I would say yes. But the rewards will probably be much higher with the PS3. I read something about being able to drop code sequences onto a SPU stream for scheduling execution, I thought that was a nifty idea. There's all these nifty buses on the Cell processor, connecting SPU's, for data sharing. Complicated, but allows for sophisticated designs.
Gabe Newell, one of the main guys behind Half-Life and Half-Life 2, talked about this a while ago. He was really annoyed at all these consoles and their multithreaded nature, since it meant a game you write for one of them only works on that console, and it's a bitch to write the games at all, since multithreaded things over like 4 or 6 proccessors or something is a real nightmare for coders. I'm grateful I play all my games on a PC.
Against stupidity the Gods themselves contend in vain.
That means that even with an extra six months of design time, the initial PS3 games may be worse.
Doesn't mean the games will be less fun
Ah, I see. Mr... Anonymous, is it? Thanks for the insight. And I guess you would know, since you've developed on every console in existence. Except dreamcast and xbox, and any before the past 10 years.
That's pretty funny, because there's this programmer out there named John Carmack who kinda disagrees with your views. Although, who the heck is that Carmack guy qnyway anyway? He's only written about a half-dozen 3D game engines from scratch and designs rockets in his spare time. He clearly doesn't have your level of expertise, what with your unknown work on these unspecified games at your unnamed employer.
I remember back in the day when games were making the transition from 2D to 3D graphics. At the time, 2D games in fact had much better graphics, but we suffered through the transition because after sufficient development had taken place the 3D would eventually surpass it. In the mean time, we were happy simply because 3D had a special kind of novelty, and it helped open up gameplay to new possibilities.
I'm guessing that this works the same for any new technology. Console game developers are not familiar enough with the new hardware in order to milk it for all that it's worth, and until they can figure out how to do that then there will be that grace period where the older, single-threaded games or what-have-you are going to be more stable and better written. Once they are done catching up. however, the results will be worth the wait (hopefully).
Actually, there is that part of me that really misses beautiful 2D games.
They don't need an IDE, they just need better tools. ProDG gives them a good debugger (the PS2 one was, at least), and it can integrate with Visual Studio if you want. Now they just need to get IBM to give them a really good cell compiler(s) instead of that hacked up MIPS gcc. In fact, I don't really care if there's an SPE compiler or not, I can manage using an assembler for that, they just need a solid PPE C++ one.
You've got it exactly right. People who are used to balancing the EE/VU0/VU1 are going to have no problem dealing with the 360. Even the PS3 is going to be a similar paradigm to PS2, just more general purpose, so there's no reason to be worried.
It's in all of microsoft's new C++ compilers, including xenon. Look it up.
Didnt they say this about the PS2 vs PS1 and the then PS2 rivals?
Looks like Sony cares as much about its corporate customers as retail consumers.
You'd think almost going bankrupt + major restructuring they woulda learnt by now...
Then again isn't this always a problem with the release of new hardware both for PC and consoles? When you get that brand new graphics card or soundcard it takes some hard searching to find a game that actually supports its new features. At the time of the Matrox G400 it was only a handfull of games that supported bumpmapping.
The x-box is now of course obsolete. After all it is already a few years old and we know that is succesor is to be launched soon. So exactly why are top games still being developed for it? Wouldn't it have been smarter to say, okay six months before the launch of a new generation console we stop releasing games for the old and concentrate on making games for the new one. Especially with the x-box 360 wich can't run existing x-box games this would really help during launch.
I can only imagine that for developers working 3 years on a top game the vague launch date of a new generation console is not enough to bet their own launch date on. Would you really want your Jade empire to be delayed a year because the 360 is delayed a year?
Every console ever launched needed time to come to full bloom. I am personally only interested in handhelds and at launch none of them had, for me, must have titles. The DS or PSP choice is not yet made for me as neither has a game I must have.
On the PC it is the same, when windows 95 hit many a game still had to run in dos mode. XP was not immidiatly supported as I am sure neither will Vista be.
As for the whole multi-threading bit, any big game has had to have been in production well before test units were around so they would have to have been developed on "normal" pc's. Multi-threading I am told by real programmers is a very different beast on different pieces of hardware so wouldn't it be sensible for a game developed mostly on non-existent hardware to be conservative in its reliance on hardware features? You wouldn't want to make a top game and then only find out that "shock and horror" a new consoles hardware doesn't live up to claims made by its creator?
As for the PS3 being harder to develop for then the X-box 360. Wasn't the same said about the PS2 vs the x-box? /me looks at PS2 vs X-box sales figures. Riiiight.
MMO Quests are like orgasms:
You may solo them, I prefer them in a group.
...but it isn't like he's spent a lot of time programming PS2 or Game Cube games. He's spent years optimizing PC code. Of course it will seem simpler to him.
Carmack also doesn't sound like he even has a PS3 dev kit. He's making an easy decision based upon the architecture he and his company is most familiar with. It's probably the right decision for him, recognizing that his company farms out console ports. But until a traditionally multiplatform developer speaks up, all judgement should be on hold, lest rampant fanboyism ruin business and artistic decisions.
Being from a PS2 house that has dabbled in other platforms, the PS2 is just fine as a system. It has quirks, but it isn't like people come to work every day dreading touching the thing. All of the systems have their individual irritations. I'm guessing that the next generation will be similar: the systems will be similar enough (revolution controller excepted) that you make your game on whatever platform will ensure the most people experience it. Fanboyism has a place, but it shouldn't be in development decisions.
The ______ Agenda
I love that the Inquirer linked "single-threaded games" with "blocky graphics". It couldn't have been, oh, that these are demos with code from 4 months ago. Or, that Walmart is show casing these bad boys on run of the mill CRTs instead of HDTVs. No, the sole reason for blocky graphics: single-threading. They do realize that just about every game up until now has used single threads, right?
Next they're going to be saying the controllers sucks because the USB ports aren't used.
Their doing pre-release damage control for the fact that the first generation 360 games will suck. They explain it away as being "single threaded" when the real reason is that the software companies have only had real machines for a short period of time and that first wave of games for a system almost universally suck.
"There are more things in heaven and earth, Horatio, than are dreamt of in your philosophy."
It seems like a lot of the things dealing with the Xbox360 have been rushed.
That's no coincidence though, because MS knows full well that it's only the Xbox 360's 4-5 month launch lead over PS3 that might even up the odds a little. Remember that PS2 is so far ahead of Xbox1 in market share and in game count that Sony can pretty much ignore MS in this generation.
MS doesn't want that to continue in the next generation, obviously, so I think they're right to bring out the new machine ASAP regardless of its state. People will complain a little, but they'll still buy it, especially over Xmas.
"The question of whether machines can think is no more interesting than [] whether submarines can swim" - Dijkstra
It's not just extremely hard to synchronize the various tasks - it's INCREDIBLY hard!
I know where you're coming from, and yes, it can be incredibly hard. However, this applies only when people use the WRONG methodology, ie. the one that they learned for single-task programming. Unfortunately, that's 99% of programmers, and therein lies the problem.
Let me give you a trivial little example to show that the difficulty is not inherent: any newbie programmer can create a long pipeline of Unix filters and run it with total success on a multi-CPU and hyperthreaded big-iron box with not a hint of race conditions, deadlocks, or data corruption. It's not because they're highly competent, but because the framework of Unix pipes hides all the necessary synchronization.
And it's just the same with multi-core games consoles. Of course, a simple pipe abstraction won't be enough there. The programming framework will require client-safe job queues, free process pools, task schedulers with variable policies, a routed and prioritized messaging system, and a whole host of internally-synchronized communication methods. And all of this infrastructure must hide the complexities of concurrency and multiprocessing behind opaque interfaces, so that people without a PhD in concurrency nor equivalent experience can still use them safely.
It's not actually hard at all given the right framework. But it's pretty close to impossible to build a reliably working product when concurrent programming is done in an ad hoc fashion.
"The question of whether machines can think is no more interesting than [] whether submarines can swim" - Dijkstra
This is quite not true. I work for EA (choose now: treat me as downtrodden abused worker, or as member of global conspiracy?) and all the Xbox360 sports launch titles are using multi-threading to some degree.
Admittedly, some are using it more than others -- not every game is using 6 threads, that's for sure. But they're definitely far from single-threaded.
I'm sure the second wave of X360 titles will more expansively make use of the multiple threads. Obviously I can't speak for other companies, but EA's games aren't single-threaded.
Sorry to post anonymously, but you probably would too in my position.
Is it just me or are threads the new pointers?
Smile.
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!
Smile.
Admittedly, Nintendo is busy replacing dogs with virtual pets, as puppy souls provide even more juice.
THREADBARE!