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.
Most video games are single threaded (Score:2, Insightful)
Re:Most video games are single threaded (Score:4, Insightful)
Games are far more threadable than you think.
Re:Most video games are single threaded (Score:2)
Exactly... Hell, for a 3-core Xbox360 chip, I'd say the smartest thing to do would be have two cores pretend they're doing SLI stuff. Core one does coordination and all the world bookkeeping, the other two cores are focused on rendering half the scene.
Re:Most video games are single threaded (Score:2)
Re:Most video games are single threaded (Score:2)
With current games that is true. However there is no reason new game engines cannot be made that do not have this limitation.
Unfortunately for the programmers, getting multi-threaded programs right is hard. I've done it, but I spent more time killing the thread related bugs than all the other bugs. (at least I think I've got all the bugs worked out now) This despite designing the project in advance to be threaded. Getting the locks right is hard (unless you can live with far to many locks, not the c
Re:Most video games are single threaded (Score:2)
Re:Most video games are single threaded (Score:1)
Re:Most video games are single threaded (Score:2)
Yes there is - games require real-time performance, and to get the best out of the hardware. One of the most common uses of multi-threading is to make sure the UI of an app isn't unresponsive due to a large amount of CPU processing that is being done (or something else with high latency, like network code over the internet).
As another poster has pointed out, a lot of the activities a game goes through are v
Re:Most video games are single threaded (Score:2)
Rendering is already done in parallel. The trouble is that it's the GPU that's doing it and not the CPU so having multiple threads/cores doesn't help much. Sure, you could switch to CPU rendering, but that is usually much slower than using the GPU.
And with the exception of AI, most of the tasks you listed take very little time, even on a single threaded CPU. And even AI doesn't have to take that much more time. It
Re:Most video games are single threaded (Score:4, Insightful)
Music has no advantage to multithreading it. You decode it to wav and send it down to the OS to play (yes, there is an OS, even on a console these days). Its not even like the DOS era where you had to set up the DMA to interrupt you at the half buffer point to fill over the used data. Perhaps if the games were generating music this would make a difference, but they aren't- they just play pre-created files and add in a sound effect occassionally. You could uncompress on another thread, but thats not much of a gain, as levels/areas tend to just have 1 song you load upon loading the game/level/area.
Player input is so rare an occurence (remember, we're at machine speeds here) that it doesn't make sense to give it its own thread. We're talking about something that occurs 2-3 times a second, to a GHZ processor. You'd have a thread with nothing to process 99.9% of the time, and who's time to process is extremely low priority (rememver, a long time to a CPU is a fraction of a second).
Networking- maybe. Of course, networking really is just another type of IO, and after already dealing with a network latency, a few more ms to wait won't be noticable. So there's little advantage to it having its own thread. And the actual sending is interrupt driven by the OS, so you don't need a thread to handle writing.
Worldkeeping and AI do make sense for complex AIs. Allowing decision making to occur on the player's turn would increase AI ability, allbeit at a cost in complexity (you'd have to guess at what the players turn would do). Good for turn based strategies like Civ and RTW. Not commonly done, though. Even Civ4 didn't multithread their AI off from the rest, and if there's any game that requires computational power its Civ.
THe other problem is that all of these things are very tightly coupled- rendering, for example, requires input from networking, IO, AI, every time they make a decision. Music needs to know what AI is doing and what the player/network players are doing. Etc. Compare this to a multithreaded server or computer app, where threads basicly just take a request and go off, just telling the main thread when they're done. Games would require a lot more interprocess communication, and that makes multithreading hard. High cost, with very low returns.
Now client server games are another matter- I'm sure MMO servers have multiple threads going. But notice how different that use case is- multiple loosely coupled computations, vs few highly coupled ones. ANd no rendering thread that basicly needs to know everything at all times.
Re:Most video games are single threaded (Score:2)
If there is a threading API for the OS, why not one that is visible to programmers.
I took the meaning of all of this to mean that the there is not multithreading across the cores, but that there is probably a threading substrate available to the programmers. This makes a lot more sense, since the OS would already have to provide context switching functionality.
Re:Most video games are single threaded (Score:2)
Re:Most video games are single threaded (Score:2)
Or, perhaps, threading also makes sense if the program compute-intensive and is running on a machine with multiple processor cores, so by multi-threading you can simply get more stuff done per second than you can by single
Re:Most video games are single threaded (Score:2)
C'mon, you've got to be taking the piss. First you said;
And now you're talking about there being no advantage in it. The advantage is thus: It's cheaper to make heaps of cores on last years process than it is to make a super fast core on todays process.
Re:Most video games are single threaded (Score:2, Insightful)
Most games do have a lot of potential for taking advantage of multiple cores.
Re:Most video games are single threaded (Score:2)
That way, we get nice, choppy noise in the background, rather than simple, clean, sound.
Nobody would put up with single threaded development in 2005. Simple fact of the matter, everyone is developing in C++, and someone has probably implemented a threading API for XBox360. It's not like programmers hack this stuff in differently for every t
Re:Most video games are single threaded (Score:2)
Given your other post, I'm curious- ever taken a course in hardware des
Re:Most video games are single threaded (Score:2)
All I really meant to say is 1) Threads are useful, I know that I use them a lot, and 2) The OS can provide threading capabilities, so PROBABLY what they meant is no hardwa
Re:Most video games are single threaded (Score:2)
Re:Most video games are single threaded (Score:2)
Music and speech is non-resident because there's just too big a variety in it to preload it all even on Xbox360 - besides, why spend time at a loading screen when we don't need to? A sports game will have literally thousands of speec
Surely this isn't true (Score:2, Insightful)
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 pr
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
Re:Surely this isn't true (Score:2)
Otherwise intelligent people seem to consider it (a) amazingly hard (b) brand new and cutting edge (c) only any use if you have multiple cores and (d) not really very useful at all to be honest. All four are false.
I have personally done threading. It is amazingly hard. I've spent as much time debugging thread related problems as everything else. In a single threaded design these problems wouldn't exist.
Thread is not brand new anymore.
If you have just one core you can do everything faster in a singl
Re:Surely this isn't true (Score:2)
The ease of doing this in Unix, combined with the real fast process creation time, is why m
Re:Surely this isn't true (Score:2)
Re:Surely this isn't true (Score:2)
Re:Surely this isn't true (Score:2)
If you want two threads which are totally independent you can have it.
In theory you are correct. However in practice you are wrong. In the real world memory 'scribblers' tend to corrupt data for the other thread, so you start looking in the wrong place for them. Worse, they are intermittent, so they are harder to catch in the first place. All you know is your customers (because these bugs often don't show up in test) are complaining that your program randomly doesn't work.
In practice processes se
Re:Surely this isn't true (Score:2, Informative)
Games don't have that luxury. Every subsystem needs to share data with every other subsystem. High degrees of coupling means high degrees of communication. They're also g
Re:Surely this isn't true (Score:2)
The rest of my point still stands- threading in tightly coupled environments is hard. The 800 thread guy is most likely doing trivial request based threading, as I s
Re:Surely this isn't true (Score:2)
Re:Surely this isn't true (Score:2)
I've written theaded code, too. I've done it in several languages, including Java. The last Java app I wrote that routinely used more than 100 threads per proc was server software that used one thread for each connection, with many hundred simultaneous connections. So
Re:Surely this isn't true (Score:1)
Re:Surely this isn't true (Score:2, Informative)
How do they do it then?
You licence existing technology (Unreal Eng
Re:Surely this isn't true (Score:2, Insightful)
Somehow you have to love the naive understanding that a given software technology can be optimized by throwing more threads at it. That's what all this marketing vodoo about multi-core and hyper-threaded hardware has got us into.
Adapting a single-threaded technology to make use of multi-core, massivly parallel hardware is a daunting task. To be precise, the studio I work at as a gamedev professional just threw 5 years of technology out of the window and started from scratch. Doing realtime con
Re:Surely this isn't true (Score:5, Insightful)
In case it's hard to work out, here's an alternative (and, I suspect, wholly correct explanation):
You've had real 360 dev kits for not very long - you've had to limp along with some half-way house that probably emulates many things until then. Your game is a launch title. This means it has a hard deadline. Either you launch when the Xbox launches, or you don't. This is a pretty binary state of affairs.
You're under intense time pressure. Most of the tools you're using are new/revised, and you have to create assets that are a different level of detail/effort than the previous games you've made, so you need to learn a lot of new tricks again. While you're updating the game engine itself, of course. Everything's changing.
Now, do you want to add to this volatile mix a bunch of multi-threading stuff for core game mechanics, with all the new code/mechanisms this will entail, and issues produced by multi-threaded access to game data, sync issues, race conditions, etc. and jeopardise the launch date of the game?
Or do you want to do the best you can in the time you have available?
I know which I'd choose.
(Aside: I see a lot of comments about audio, etc - of course multi-threading for stuff like audio playback is a no-brainer. Trust me, that's not the sort of thing that game devs are talking about when they say multi-threading games is hard. Conversely, multi-threading audio playback is not exactly a huge win anyway. The chipsets on these consoles do all the hard stuff - all the audio playback engine is doing is filling buffers and updating playback parameters. Exactly how long do you think that takes anyway?)
Re:Surely this isn't true (Score:2)
Its also not something that's generally handled by the processor. There's a separate processor for that. On PCs they call them sound cards.
Even my PDA has one. You send it the location of the audio stream in fairly large chunks and it takes care of the rest by interacting with the bus and memory controller. Making a thread for just that is a braindead decision. The only reason you'd want to do that is if you keep all your audio comp
Re:Surely this isn't true (Score:2)
Well, yes, that would probably be why I went on to say...
How can it get worse? (Score:5, Funny)
They'll be half-threaded?
Re:How can it get worse? (Score:1)
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
Re:How can it get worse? (Score:2)
Re: (Score:2)
Not too surprising (Score:4, Insightful)
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.
Re:Not too surprising (Score:5, Insightful)
I guess I thought the place where most 360 (and Xbox) games cut corners, was, you know, gameplay. It's pretty easy to make a game with flashy graphics on hardware like this, and especially since your graphics programmers and artists are jizzing all over the place with their HD textures and such, but it's a lot harder to make a game that's actually good. I'm not saying this stuff won't sell, obviously it will (it's new and shiny, we love that), but the quality (and fun) will probably suffer until at least the 2nd generation of games.
Re:Not too surprising (Score:2)
As well, how can you judge 360 games? Have you played them? Or are we going to make the assumption that "systems from Microsoft suck", even though the Windows and Xbox divisions are so far apart they're almost like different companies?
Re:Not too surprising (Score:2)
Thats not often true, often multi platform games would be made for the PS2 (more cash potential) ported over to the Xbox and GC resulting in some games performing worse on the box (rarely the gc). Of games optimized for each platform, then the Xbox was often slightly b
Re:Not too surprising (Score:2)
Re:Not too surprising (Score:2)
This is your opinion.
Halo
Re-hashed FPS with decent multiplayer.
Jet Grind Radio
JGR was a Dreamcast game. Its sequel appeared on the XBox (read: sequel).
MechWarrior
According to gamefaqs.com, there is no game named "MechWarrior" for the Xbox.
As well, how can you judge 360 games? Have you played them? Or are we going to make the assumption that "systems from Microsoft suck", even though the Windows and Xbox divisions are so far apart they'
Re:Not too surprising (Score:2)
The sequel argument is bunk. PS's biggest title was Final Fantasy VII. Nearly every game Nintendo makes is a sequel of a 20-year old series
Re:Not too surprising (Score:2)
With that said, you might now argue that I didn't "say" any of these thing in my original post
Re:Not too surprising (Score:2)
Xbox 360 rush to market is very important (Score:2)
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 s
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!
Cutting edge stuff! (Score:1)
Re:Cutting edge stuff! (Score:2)
Re:Cutting edge stuff! (Score:2)
Re:Cutting edge stuff! (Score:2)
Re:Cutting edge stuff! (Score:2, Informative)
No surprise (Score:2)
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.
Re:Sounds familiar (Score:1)
(At least two different people here inside MS with the knowledge pointed out glaring mistakes in that Anandtech gibberish within 15 minutes of that story being published. Essentially, the guy was talking out of his ass.)
SDK tools? (Score:4, Funny)
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.
Why? (Score:2)
Re:Why? (Score:2)
Re:Why? (Score:2)
As for using visual studio, I hope that comment was why you were modded flamebait. Aside from the fact that some people just prefer it, it's possible to use it to build and debug a
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.
Re:Not entirely true (Score:2)
Re:Not entirely true (Score:2)
Now before your panties bunch up in your ass and you throw a hissy fit, I'm not saying that the 360's processor sucks. It just won't be as efficient as a general purpose CPU. Therefore some games may run the same on the 360 and PC while the PC supposedly has less power.
Re:Not entirely true (Score:2)
Why not allow different processes to run on different cores? why not add an extra parameter to exec and fork so the child process is 'related' to the parent process and is run simultaneously or in close proximity with the parent, on another core?
I think the libraries make things complex, in an attemp to stay posix compliant. Heck I dont know if posix is broken if exec("helloworld",JUSTANOTHERTHREAD); is valid, provided exec("helloworld"); i
Re:Not entirely true (Score:2)
Different processes generally do run on different cores, on most multiprocess OSs I know of.
Child processes are related to the parent process (they have a parent-child relationship, the parent can pass some shared information into the child).
A greater degree of sharing (e.g. a shared memory space) is exactly what an (OS-level) thread is...a seperate, schedulable execution context which shares a memory space with its parent.
You're right in the pthreads API isn't the nicest one to work with. But in my ex
Re:Not entirely true (Score:2)
My dream is to finally have a language that handles threads in a managable way, rather than me having to manually deal with synchronisation, race issues, locking, etc, etc, etc. Most main modern languages (including java and C#) are built to essentially be backwards compatable with single threa
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 d
Use the right methodology, Luke! (Score:2)
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
Link (Score:1)
There's the correct link to that story.
sdk? (Score:1)
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 k
Re:sdk? (Score:2)
It's called OpenMP... (Score:2, Insightful)
Developers said (Score:2, Interesting)
Re:Developers said (Score:2, Insightful)
Symmetric multiprocessing was tried be
Holy shit, a coherent post! (Score:2)
FALSE!! (Score:1)
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 ar
Re:FALSE!! (Score:2)
So, if they ship with a couple discs of pr0n, the 360 will be self-powering? Sweet!
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
That's funny... (Score:4, Insightful)
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 [google.com] 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'm not saying Carmack is wrong... (Score:3, Insightful)
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, le
Re:That's funny... (Score:5, Insightful)
Unlike the other reply, I do disagree with John Carmack. I don't think he really knows what he's talking about in this case. The Xbox 360 is based on multiple (mostly) symmetric general purpose cores, whereas the PS3 is based on having a single general purpose core and multiple DSPs. This is a huge difference!
The DSPs on the PS3 are much, much faster than the PPC core, and your code will run faster even if you just farm a task to a DSP and wait for it to finish (i.e not parallel). They are harder to program than the PPC core, but hey that's what Devkits and proper code design were invented for. Probably the majority of your team doesn't need to know how to program it - they just call the appropriate API function like "BlendSpanLine" or "CopyBuffer" a couple of experts (or Sony) wrote for them.
I think when Carmack commented on the state of parallelism in consoles, he didn't quite grasp how different the approach is on the PS3 and how much better a solution it actually is. Sony and friends correctly identified that (I'll hand-wave here) 90% of processing is taken up in 5% of your code, and that 5% is generally a tiny little loop you can hand optimise and shove on a DSP. I mean, FFS this is exactly what we're doing on PCs using the shader engines on graphics cards! Why complain when the PS3 offers the same thing but more versatile and more parallel?
Re:I've Worked On (almost)Every Console (Score:2)
Nothing major, but a ballpark, something like "First Person Shooter", or "Real Time Strategy" or SOMETHING. Exactly what kinds of games does your company produce?
I've seen the PS3 Instruction Architecture (Score:2, Interesting)
Re:I've seen the PS3 Instruction Architecture (Score:2)
And immediately following the part you quoted from the parent post:
Gabe Newell Called It (Score:2)
Re:Gabe Newell Called It (Score:2)
Brave New Software (Score:3, Insightful)
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.
Inquirer = idiot (Score:2)
Next they're going to be saying the controllers sucks because the USB ports aren't used.
Re:Inquirer = idiot (Score:2)
The games played well, but the graphics were the same as I've been playing for the last 6+ months. One would think Microsoft would
Reason for this article (Score:2)
Re:'everyone' tells you, do they? (Score:3, Informative)
Don't act silly, he clearly means 'everyone who has a PS3 dev kit'.
You're right that the dev kits are still beta, but you have to realise that the launch titles are being developed right now.
Re:'everyone' tells you, do they? (Score:3, Insightful)
Seriously. What's with the XBOX-fanboy Sony-hating articles (or moderators, posters)? With "difficulty of development" we have to look at two different, but relavent points:
Re:Odd (Score:2)