enterprise12nx Posted July 22, 2019 Share Posted July 22, 2019 Hello, ive been playing this game since it was first released, lately ive been playing and also watching Brothgar on youtube, and by mid game, the framerates are just unplayable, even with a low dupe population(under 15?) and while my base isnt small, its not huge. My system isnt weak sporting an i7-6700k and GTX 1080TI with 32GB of Ram and running the game on a samsung 860 EVO SSD. This doesnt just pertain to the dev builds either. I struggle to maintain 10-15 FPS on 2-3 speed. I cant imagine having only a moderate system and trying to run this. While this isnt a BAD looking game in reference to graphics, its nice, but its not a AAA title. I think before early access release, this game REALLY needs to support multicore, all processors now mostly have 4+ cores, and many people im sure will be picking this game up after EA, i think it will tank in reviews due to FPS when these new people start having these problems This is one of my favorite games, like Rimworld, im ALWAYS coming back to it im reaching almost 500 hours of playtime. I know multicore support isnt easy, and im assuming it may even require a recode from the ground up, im not sure if its possible, and im sure its been mentioned. It just worries me for the reviews, especially down the line when more content continues to be added! Either way, thanks for this amazing game and your continued love and support to your fans and community! Link to comment https://forums.kleientertainment.com/forums/topic/109234-this-game-needs-multicore-support/ Share on other sites More sharing options...
bobucles Posted July 23, 2019 Share Posted July 23, 2019 Concurrent programming is hard. Concurrent programming with spaghetti in a simulation where every system interacts with every other system is basically impossible. It has to be designed from the ground up and no half measure will ever work. It's not a job to take up before release. Thread support is relatively easy to implement. It is not true concurrent programming, instead it allows certain tasks to assist the main program on the side. The exact details are beyond me but some of it comes down to real nit picky stuff. There are a few places where concurrent programming isn't too bad, for example if there's a lot of static input and a very simple output. Pathing algorithms are one example. A lot of read-only data goes into the pathing algorithm, lots of math happens, and the output is a pre packaged path. The main program can definitely leave the heavy lifting to another process and worry about something else. Link to comment https://forums.kleientertainment.com/forums/topic/109234-this-game-needs-multicore-support/#findComment-1230192 Share on other sites More sharing options...
FenrirZeroZero Posted July 23, 2019 Share Posted July 23, 2019 Three examples wher threating would help: Heat exchange inside of of compactors/fridges etc. (the exchange item to item. every x ticks the threat reports the heat delta that interacts with the compactor itself) Germ population & spread Pathfinding: If the threaded path is blocked while calculating then the dupe should still use it until he reaches the wall. then recalculate a new path. Why? Because it is also more realistic that dupes don't instantly now that something changed... Realismus and Performance yeay. Link to comment https://forums.kleientertainment.com/forums/topic/109234-this-game-needs-multicore-support/#findComment-1230336 Share on other sites More sharing options...
SharraShimada Posted July 23, 2019 Share Posted July 23, 2019 Piping and pathfinding is already multithreaded. The problem is the huge amount of calculations going on for the world itself. They could make parcels to calculate them on different cores, but thats something unity does not support. They would have to develop themself. Link to comment https://forums.kleientertainment.com/forums/topic/109234-this-game-needs-multicore-support/#findComment-1230429 Share on other sites More sharing options...
Nightinggale Posted July 23, 2019 Share Posted July 23, 2019 Using more than one CPU core is problematic. Imagine doing research and you gain a point. The computer will do this: copy the current number of points from RAM to a register add 1 to register copy register to RAM Now imagine two dupes doing this one two different CPU cores. By the time dupe A reach step 3, the other dupe is already at step 2. This means they both go: copy the value 4 to register 4+1 = 5 store value 5 in RAM Now we have 4+1+1=5 and the game is buggy. This can be solved by making sure only one core is accessing a certain part of the memory at once. However then it's like each CPU core shouting "Is anybody using this part?" and wait for an answer. If nobody answered, then it can go ahead. If there is an answer, then do nothing until the other one is finished. The problem is if the cores wait for each other, they won't work in parallel, but also if there is no answer, then they still had to wait. Imagine you are driving a car and there are roads in Manhattan layout. If you are the only car, you can drive and assume there are no other cars. As soon as there are two cars, you set up 4 way stop signs in each intersection because you might meet the other car. Suddenly you have to stop at each intersection, which slows you down noteworthy even if you fail to see the other car. In fact if you end up driving 80% slower, you need to use 5 cars to just transport the same amount of people around, meaning it's faster to have one car and no stop signs than 4 cars and stop signs. It's precisely the same with CPU cores. Just adding support for multiple cores will slow down the game. To speed up the game, you will need some sort of design where if a CPU core writes to memory, no other core is allowed to access it, meaning the core knows it is the only one to use that part of memory even without wasting time asking. Building a system like that is non-trivial and maybe impossible in a system like the temperature exchange in ONI where all cells interact with other cells. I would love ONI to be faster. It would be awesome if somebody can figure out how to make use of as many CPU cores as possible. However there is a reason why there has been a push towards development tools to make multi core programming easier for more than a decade (almost two I think) and single threaded performance is still the main requirement for most games. ONI adds support for multiple cores one step at a time and I fail to see it can be done any different. If widespread multi core support would be a matter of assigning one programmer for a month or two and then people get twice the FPS, then we could be sure Klei would have done it already. Let's not forget that there is also single core performance boosts, which can be obtained. They do those one step at a time as well. It's not unheard of that single core optimization is more rewarding for each development hour than adding multi core support. Klei optimizes single core performance as well, but you won't notice much because that too is one step at a time. Link to comment https://forums.kleientertainment.com/forums/topic/109234-this-game-needs-multicore-support/#findComment-1230561 Share on other sites More sharing options...
enterprise12nx Posted July 23, 2019 Author Share Posted July 23, 2019 5 hours ago, Nightinggale said: Using more than one CPU core is problematic. Imagine doing research and you gain a point. The computer will do this: copy the current number of points from RAM to a register add 1 to register copy register to RAM Now imagine two dupes doing this one two different CPU cores. By the time dupe A reach step 3, the other dupe is already at step 2. This means they both go: copy the value 4 to register 4+1 = 5 store value 5 in RAM Now we have 4+1+1=5 and the game is buggy. This can be solved by making sure only one core is accessing a certain part of the memory at once. However then it's like each CPU core shouting "Is anybody using this part?" and wait for an answer. If nobody answered, then it can go ahead. If there is an answer, then do nothing until the other one is finished. The problem is if the cores wait for each other, they won't work in parallel, but also if there is no answer, then they still had to wait. Imagine you are driving a car and there are roads in Manhattan layout. If you are the only car, you can drive and assume there are no other cars. As soon as there are two cars, you set up 4 way stop signs in each intersection because you might meet the other car. Suddenly you have to stop at each intersection, which slows you down noteworthy even if you fail to see the other car. In fact if you end up driving 80% slower, you need to use 5 cars to just transport the same amount of people around, meaning it's faster to have one car and no stop signs than 4 cars and stop signs. It's precisely the same with CPU cores. Just adding support for multiple cores will slow down the game. To speed up the game, you will need some sort of design where if a CPU core writes to memory, no other core is allowed to access it, meaning the core knows it is the only one to use that part of memory even without wasting time asking. Building a system like that is non-trivial and maybe impossible in a system like the temperature exchange in ONI where all cells interact with other cells. I would love ONI to be faster. It would be awesome if somebody can figure out how to make use of as many CPU cores as possible. However there is a reason why there has been a push towards development tools to make multi core programming easier for more than a decade (almost two I think) and single threaded performance is still the main requirement for most games. ONI adds support for multiple cores one step at a time and I fail to see it can be done any different. If widespread multi core support would be a matter of assigning one programmer for a month or two and then people get twice the FPS, then we could be sure Klei would have done it already. Let's not forget that there is also single core performance boosts, which can be obtained. They do those one step at a time as well. It's not unheard of that single core optimization is more rewarding for each development hour than adding multi core support. Klei optimizes single core performance as well, but you won't notice much because that too is one step at a time. yes im aware, but many games use up to 4 cores now just fine, so its possible to do. I feel if they are nearing FULL release(THIS MONTH) then they have done most of the optimizations they can..if not they should not be releasing it yet, as it seriously is a struggle to play the game only a few hours in once your getting a complex base. optimizing for a single core is only going to get performance so far. Again my main worry is the bomb of negative reviews because of bad performance, especially since after 2 hours you cannot refund, people are going to EXPLODE saying they were cheated, etc because now that they are over 2 hours in and the performance is drastically dropping. Im not saying i agree with this, as this game is amazing...but i think we have all seen how people get on steam reviews. as Shigeru Miyamoto said "A delayed game is eventually good, but a rushed game is forever bad," Link to comment https://forums.kleientertainment.com/forums/topic/109234-this-game-needs-multicore-support/#findComment-1230893 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.
Please be aware that the content of this thread may be outdated and no longer applicable.