Maes
I like big butts!

Posts: 8664
Registered: 07-06 |
DaniJ said:
Doomsday has been using multiple concurrent threads for years now. Current releases use independent threads for sound effect playback monitoring, master server communications, network listening and map/resource/texture (up)loading and possibly some other stuff I am forgetting about.
That falls neatly into the space I allowed for secondary stuff like sound/networking/non-dependent stuff that could be serviced concurrently without really affecting the gameplay or risking breaking any delicate data dependencies. Actually, stuff like e.g. asking for a resource and then waiting for it while serviced on a separate thread is more of an "async task", which are more and more popular on certain SDKs (e.g. Apple's Grand Central Dispatch, Java's Futures and Callables, and .NET's async/await pattern), with more or less syntactic sugar. Sure, it helps using the extra cores somewhat, but they are still blocking tasks, for the most part. A background network or UI listener thread is another thing.
Sometimes, such parallelism may just be a side effect of the libraries used (e.g. sound mixers may effectively run on different threads or even different processes) so it comes "for free" but that has nothing to do with how the game logic, rendering and interpolation works: it's more of a case of the AI and renderer doing their thing, and the interpolation code is given maybe a remaining fraction of a tic to work out displayable differences and render them. Maybe more than once per tic, too, or maybe none, always trying to catch its breath ;-)
OK, maybe modern games are more "concurrent" in the proper sense, but even then I wouldn't put my hand over fire for it: the way they work and the way game designers learn to do stuff is one big serial, viciously data-dependent snake ;-)
Last edited by Maes on 10-26-11 at 02:52
|