![]() |
|
|
#76 | |
|
Semi-Retired Folder
Join Date: Nov 2005
Location: Indiana
Posts: 17,766 (6.48/day)
Thanks: 780
Thanked 5,121 Times in 3,710 Posts
|
Quote:
![]() And as it sits now, the hardware is the bottleneck, go read some of the earlier posts. GPUs can't keep up with the game, so throwing more CPU power at it isn't going to help.
__________________
Rig1: System Specs. Rig2: A8-5600K@4.4GHz / AsRock FM2A75 Pro4 / 8GB Corsair DDR3-1600 9-9-9-24 / HD7560D / Samsung DVD-Burner / 1.5TB WD Green + 3x3TB WD RED in RAID5 Rig3: Athlon X2 4200+ / M4A79 Deluxe / 4GB G.Skill Pi DDR2-800 4-4-4-12 / GT430 / Sony DVD-Burner / 500GB WD Rig4: Phenom II x6 1605T @ 3.6GHz / Asus M5A99X Evo / 8GB PNY DDR3-1600 9-9-9 / GTX470 & GTX470 / Samsung DVD-Burner / 1.5TB Seagate |
|
|
|
|
| The Following User Says Thank You to newtekie1 For This Useful Post: |
|
|
#77 | ||
![]() |
Quote:
Quote:
|
||
|
|
|
|
|
#78 | ||||
![]() Join Date: Feb 2010
Posts: 1,336 (1.12/day)
Thanks: 1,381
Thanked 272 Times in 190 Posts
|
Quote:
Quote:
What other ways could you think of? Quote:
Quote:
__________________
"Doom means two things: demons and shotguns." -John Carmack |
||||
|
|
|
|
|
#79 | |||
![]() Join Date: Jan 2012
Location: Dover, New Hampshire, USA
Posts: 4,277 (8.85/day)
Thanks: 1,284
Thanked 1,333 Times in 989 Posts
|
Quote:
Quote:
Quote:
I find your generalization of all software being clumped into a group called "multi-threadable" really kind of disturbing. Of course most stuff is multi-threadable how much time and effort are you going to have to put into development to make it work and work well while still delivering it in a reasonable amount of time and on budget.
__________________
MyHeat |
|||
|
|
|
|
|
#80 | ||||||||
![]() Join Date: Feb 2010
Posts: 1,336 (1.12/day)
Thanks: 1,381
Thanked 272 Times in 190 Posts
|
Quote:
Quote:
Or the thread is in an infinite loop waiting on a bunch of queues, like programs not from the late '80s or early '90s. Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
__________________
"Doom means two things: demons and shotguns." -John Carmack |
||||||||
|
|
|
|
|
#81 | |
![]() |
Quote:
Except for maybe the people who played the short-lived closed beta, I don't think anyone outside Maxis' programmers knows how complex the simulation algorithms are. Anyone from the beta care to share their experiences? |
|
|
|
|
|
|
#82 | |
|
"I go fast!1!11!1!"
Join Date: Oct 2008
Location: IA, USA
Posts: 10,583 (6.28/day)
Thanks: 1,755
Thanked 2,601 Times in 1,963 Posts
|
Quote:
Technically, multithreading is always less efficient (results out/clocks in) than single threading because multithreading requires management overhead.
__________________
Golden Rule of Programming: Never assume. try { SteamDownload(); } catch (Steamception ex) { RageQuit(); } Last edited by FordGT90Concept; Feb 14, 2013 at 01:20 AM. |
|
|
|
|
| The Following User Says Thank You to FordGT90Concept For This Useful Post: |
|
|
#83 | |
![]() Join Date: Feb 2010
Posts: 1,336 (1.12/day)
Thanks: 1,381
Thanked 272 Times in 190 Posts
|
Quote:
But wasting 3 or 5 or 7 cores is totally effiecent, whatever you say.
__________________
"Doom means two things: demons and shotguns." -John Carmack |
|
|
|
|
|
|
#84 | |
![]() Join Date: Jan 2012
Location: Dover, New Hampshire, USA
Posts: 4,277 (8.85/day)
Thanks: 1,284
Thanked 1,333 Times in 989 Posts
|
Quote:
I've written a few synchronous multi-threaded applications and it can get complicated very quickly. You also can't run the worker threads infinitely for a very good reason. The sim isn't running infinitely. There is a concept of time in the simulation which would most likely be described in the application as a number of tick that the simulation has run for. You have to synchronize that tick to every worker thread and a worker thread that is actively running isn't going to want to get interrupted to start over (that thread interrupt will also add overhead.) You say you can use a Queue like it is always thread-safe. Queues can have race conditions too and when you're writing a Sim where everything is writing to each other you're writing over another thread's memory. So if you really consider the amount of synchronization that needs to be done, as the world get larger that synchronization step is going to take longer with the more threads you have. Stateless applications love to be multi-threaded and I encourage you to do so if it will benefit but unfortunately this is not. Stateful applications do not love to be multi-threaded, they're complex (in the terms of not simple (not to be confused with easy,) since you're really going to be complecting multiple different ideas together. Not to say that you can't make them multi-threaded but the more states you have in any application the more difficult it is to keep multiple threads in sync. Also the threads need to be balanced. If one thread has more processing than the other ones then you'll be waiting on that last thread (because the entire simulation sim must be complete before moving on to the next.) So now you have the added a management problem of load balancing between threads because systems like Intel's CPUs with HTT. Those HTT cores do not scale linearly and each thread offers a varying level of performance. Same with floating point math on a newer BD or PD chip that hasn't been optimized with FMA3. So all in all, you're over simplifying how easy it is to program a stateful, syncronized, multi-threaded system and you've never truly worked on a large scale project if you think it will be easy. If multi-threading was as easy as you claimed everyone would be using it left and right with very little overhead. A lot of programmers seem to forget this but the more simple the program the faster it will run and the easier it will be to change in the future and when I say simple I mean the code and complexity has a lot to do with why code runs poorly and why it sucks. If you are a programmer (less so if you do it as hobby, but I recommend this to any programmer in the field,) I would watch this. It's a video at a Clojure conference and the talk revolves around what the definition of "Simple" is and which is right and how applying "Simples" to an application will result in better code. I recommend it. It's not completely related to this talk but it describes how complexity can snowball. Also to your queue argument. You need to lock down the queue every time you push or pull an item out of the queue because you're altering it and a race condition wouldn't just be bad for the application, it could corrupt the queue.
__________________
MyHeat Last edited by Aquinus; Feb 14, 2013 at 10:02 AM. |
|
|
|
|
| The Following User Says Thank You to Aquinus For This Useful Post: |
|
|
#85 | ||
|
"I go fast!1!11!1!"
Join Date: Oct 2008
Location: IA, USA
Posts: 10,583 (6.28/day)
Thanks: 1,755
Thanked 2,601 Times in 1,963 Posts
|
Quote:
![]() Quote:
FYI, instead of locks, I use events so instead of locking memory by a thread, I always make the thread that owns it perform the update. The weakest link becomes the main thread though because if it gets spammed with work to do by worker threads, the whole thing slows to a crawl (the main thread and all of the worker threads).
__________________
Golden Rule of Programming: Never assume. try { SteamDownload(); } catch (Steamception ex) { RageQuit(); } Last edited by FordGT90Concept; Feb 14, 2013 at 11:06 AM. |
||
|
|
|
|
|
#86 | |||||||||
![]() Join Date: Feb 2010
Posts: 1,336 (1.12/day)
Thanks: 1,381
Thanked 272 Times in 190 Posts
|
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
As above, you might need a whole one mutex per thread. God forbid.
__________________
"Doom means two things: demons and shotguns." -John Carmack Last edited by hellrazor; Feb 14, 2013 at 11:04 PM. Reason: Sorry, said something wrong. |
|||||||||
|
|
|
|
|
#87 | |||||||
![]() Join Date: Jan 2012
Location: Dover, New Hampshire, USA
Posts: 4,277 (8.85/day)
Thanks: 1,284
Thanked 1,333 Times in 989 Posts
|
Quote:
Quote:
![]() Quote:
Quote:
You should know better if you claim to know as much as you do.Quote:
Quote:
Quote:
Once again, you're assuming that the game loop needs the extra optimization. I suspect that it does't. Regardless if it's multi-threadable or not, it very well might not need it to begin with and if you disagree that's great but until the game is out or a beta released, we will not know and if you insist that it is necessary you better have some proof to back up that that claim that it needs it.
__________________
MyHeat |
|||||||
|
|
|
| The Following User Says Thank You to Aquinus For This Useful Post: |
|
|
#88 | |
![]() Join Date: May 2009
Location: London, UK
Posts: 3,671 (2.48/day)
Thanks: 444
Thanked 770 Times in 679 Posts
|
Quote:
I'll being waiting now thanks
__________________
![]() |
|
|
|
|
|
|
#89 | ||||||||
![]() Join Date: Feb 2010
Posts: 1,336 (1.12/day)
Thanks: 1,381
Thanked 272 Times in 190 Posts
|
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
__________________
"Doom means two things: demons and shotguns." -John Carmack |
||||||||
|
|
|
|
|
#90 | |
|
"I go fast!1!11!1!"
Join Date: Oct 2008
Location: IA, USA
Posts: 10,583 (6.28/day)
Thanks: 1,755
Thanked 2,601 Times in 1,963 Posts
|
Quote:
I mean, seriously, why are people making a big fuss out of this? This is a simulator game. Do you know what simulators do when the CPU burden is too heavy? They slow down the game tick rate. For example, instead of "Cheetah" speed passing a day per second, it maybe passes a day in five seconds. The game is very playable (albeit slower) no matter what CPU it is run on. Ergo, the argument is moot. Render is far more important in terms of the game experience and we know it is on a separate thread.
__________________
Golden Rule of Programming: Never assume. try { SteamDownload(); } catch (Steamception ex) { RageQuit(); } Last edited by FordGT90Concept; Feb 15, 2013 at 07:51 PM. |
|
|
|
|
| The Following User Says Thank You to FordGT90Concept For This Useful Post: |
|
|
#91 | ||||||
![]() Join Date: Jan 2012
Location: Dover, New Hampshire, USA
Posts: 4,277 (8.85/day)
Thanks: 1,284
Thanked 1,333 Times in 989 Posts
|
Quote:
Quote:
Quote:
![]() Then you shouldn't have mentioned pthreads when we're talking about applications in Windows land. Quote:
Quote:
"Wait" is also not the correct term because it's not waiting on anything. It's running and loaded if it's doing something, it's not waiting. If it is waiting, it is not doing anything. Quote:
...and I'm saying it probabaly doesn't need it and is more complicated to make it multi-threaded than you think. All data is different and just because they're all ones and zeroes doesn't mean they're all handled the same way.
__________________
MyHeat |
||||||
|
|
|
|
|
#92 |
|
Fishfaced Nincompoop
Join Date: Feb 2006
Location: Sweden
Posts: 7,908 (2.99/day)
Thanks: 1,076
Thanked 1,449 Times in 1,155 Posts
|
I kinda like hellrazor. He/she(it?????) is so damnable angry about everything.
|
|
|
|
| The Following User Says Thank You to Frick For This Useful Post: |
|
|
#93 |
|
Banstick Dummy
Join Date: Jun 2007
Location: Crystal River, FL
Posts: 15,111 (6.92/day)
Thanks: 1,337
Thanked 6,834 Times in 3,741 Posts
|
|
|
|
|
|
|
#94 |
|
"I go fast!1!11!1!"
Join Date: Oct 2008
Location: IA, USA
Posts: 10,583 (6.28/day)
Thanks: 1,755
Thanked 2,601 Times in 1,963 Posts
|
That's exactly why we wouldn't be working for EA. Developers only work for a company like EA if they are desperate for employment (or got bought out). There's many horror stories about big publishers like EA working their developers ragged.
__________________
Golden Rule of Programming: Never assume. try { SteamDownload(); } catch (Steamception ex) { RageQuit(); } |
|
|
|
| The Following User Says Thank You to FordGT90Concept For This Useful Post: |
|
|
#95 |
|
Fishfaced Nincompoop
Join Date: Feb 2006
Location: Sweden
Posts: 7,908 (2.99/day)
Thanks: 1,076
Thanked 1,449 Times in 1,155 Posts
|
Yeah, because others dont have deadlines to care about.
|
|
|
|
|
|
#96 | |
![]() Join Date: Jan 2012
Location: Dover, New Hampshire, USA
Posts: 4,277 (8.85/day)
Thanks: 1,284
Thanked 1,333 Times in 989 Posts
|
Quote:
I need to have a project done in the next week and a half. I would call that a deadline.
__________________
MyHeat |
|
|
|
|
|
|
#97 | |||||||
![]() Join Date: Feb 2010
Posts: 1,336 (1.12/day)
Thanks: 1,381
Thanked 272 Times in 190 Posts
|
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Move cars, check for collisions between cars, make sure all the buildings have the dependencies they need, make buildings do what they do, assuming that there's an array of int32_t's (one index for each building) do the whole taxes gained/maintenence spent. Then you could have the main thread total that all up, and voila! that's most of everything! Telling a few threads to do a sequence of functions is obviously just too difficult for you.
__________________
"Doom means two things: demons and shotguns." -John Carmack |
|||||||
|
|
|
|
|
#98 |
|
where the hell are my stars
Join Date: Jul 2006
Location: some AF base
Posts: 16,027 (6.42/day)
Thanks: 457
Thanked 2,755 Times in 2,224 Posts
|
I wait for the reviews of this to pop up in CPU reviews showing Intel CPU's performing better than AMD...This is why we can't have nice things.
__________________
|
|
|
|
| The Following User Says Thank You to cdawall For This Useful Post: |
|
|
#99 |
![]() Join Date: Apr 2011
Location: East Coast, USA
Posts: 1,160 (1.48/day)
Thanks: 107
Thanked 661 Times in 385 Posts
|
I'm sorry, but I need some help to understand. I've written C++ coding very infrequently. I've written batch files even less frequently. That puts me slightly above coding illiterate, but well below competent.
We start with the assumption that multiple core optimization can be done in all code. Even I know that is false. Interdependency in something like Sim City is so vital that slicing up bits of interaction would require more checks and balances to insure inter-operation than it would save. I envision this as a 6 cylinder car engine versus a 12 cylinder engine. Given double the cylinders you don't get double power, and the complexity of the fuel delivery system is exponentially greater due to strict timing requirements. Let's throw that assumption out the window for a moment, and assume multi-threading is possible and the overhead to manage it is minimal. Why then isn't every program multi-threaded? For a moment, think about the average computer user. They are capable of turning the machine on, will pay $100 per hour to have free AV and malware scans done at a PC repair place, and view tablet with surprising regard. These people won't spend $600 on a computer if they can get a $100 tablet to surf the web. EA is a business. Despite your protests, they exist only to make a profit. Businesses that provide a service, but do not make a profit, close. Consumers dictate how businesses can make money, and influence decision making by whether or not they purchase goods/services. If consumers are happy, business thrives and makes money. In a perfect world every service has its price point. In the real world, business determines actions by projected profits. How does this tie back? EA owns Maxis, and demands they make a profit. That profit is determined such that sales units*profit per unit-development costs=profit. Maxis projects sales based on previous versions, profit per unit is generally fixed, so they can find the maximum amount of money they can spend. Let's be generous, and say Maxis has the budget (both money and time) for programming a multi-threaded engine. Why? A large chunk of the consumer base only has 2 cores, not to mention all the extra development resources could be invested in play testing, story telling, adding features, etc... Why would you throw that money at something that a substantial chunk of consumers might never utilize? You've sighted BF3. That isn't Sim City. This statement is common sense, but you seem to not acknowledge it at all. The sales for BF3 were pretty much assured to dwarf Sim City. Niche games just can't have a huge budget (The studio that made Journey isn't doing so well, check the news). If you compare apples and oranges you generally don't get a cogent response. Don't want to read. I can simplify this into one sentence. "If the money was there Maxis would have seen fit to investing in development of a multi-thread engine." Please note, I said Maxis. EA can eat a dick as far as I'm concerned, but they aren't to blame for this PERCEIVED issue. Hate EA for something that they are actually responsible for, the list keeps on growing.
__________________
You haven't seen anything until you've seen this. *pokes computer* Wow! I didn't know the blue screen of death could get a blue screen of death. |
|
|
|
|
|
#100 |
![]() Join Date: Feb 2010
Posts: 1,336 (1.12/day)
Thanks: 1,381
Thanked 272 Times in 190 Posts
|
I didn't cite BF3, I think that was Ford or Pacman or somebody. But anyways...
I agree that you can't multithread everything; you need to have a large number of the same type of objects doing the same things to do it effectively, but I digress... Because you can scale it up so easily and have yourself a nigh-future proof engine. If they wanted to make a SimCity 6 or 7 or 8, they could use the same engine they already have, and only really have to pay for the other things like art, and sound, and maybe some development costs for new features or some crap. And it really doesn't cost that much more as long as you start with it in mind and you're already familiar with multithreaded development. The thing Aquinus doesn't get is that I'm not trying to staple it on to the engine they have already. It's too late, now the only choice to upgrade when people get more cores is to rewrite all of it. But I'm digressing again.... And I'm not saying that having a singlethreaded engine is bad, but in the wrong circumstances it can be terribly crippling - like say, SimCity. Let's all disregard the part where they force you to be social, the DRM, and the fact that it has to do with EA. The big problem with it being singlethreaded is that the cities are forced to be so damn small. Look at SimCity 4, that was a singlethreaded engine and everything was fucking huge, and large chunks of the game are the same: calculating crime rates and pollution, income/upkeep, making sure buildings have the proper utilities, watching trees grow, etc. It seems the only thing they've added on is better graphics and keeping track of individual cars and manufacturing parts and whatever falls under "agents", and it's one that would be seriously improved with multithreading, but (apparently) doing that has caused them to be forced to a small map. I mean, it seriously looks like they're trying to appeal to the farmville crowd.
__________________
"Doom means two things: demons and shotguns." -John Carmack |
|
|
|
| The Following User Says Thank You to hellrazor For This Useful Post: |
![]() |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Need XFX 6950 BIOS as I didn't make backup! | SaviourDCX | AMD / ATI | 16 | Jan 17, 2012 04:18 PM |
| Why are my CPU temperatures so high? | El_Mayo | Overclocking & Cooling | 41 | Mar 19, 2010 11:50 PM |
| Have you ever returned a part because it didn't overclock well? | newtekie1 | General Hardware | 24 | Oct 21, 2009 09:28 PM |
| Why overdrive/overclock from CCC didn't work on x1600pro? | ARTOSOFT | Graphics Cards | 3 | Sep 20, 2006 12:09 PM |