Jump to content

Performance optimization


Recommended Posts

I really love this game, but it is in serious need of some sort of performance optimization.  Maybe offload some of the work to threads.  It's rather disappointing when I run this game and it's running so slow and with lots of stutters, while my CPU (AMD Ryzen 9 3900X) is running at 5-10% utilization.

Please please do something to make this game take advantage of a modern CPU's multi-threaded nature.  This game should run a lot better than it does, and it's not because of the systems it's being run on.

Link to comment
Share on other sites

Same issue (AMD Ryzen 7 3800X), if I try to increase game speed even duplicants become 'jittery' - they move, then they pause, then they move... Yet CPU is barely utilized according to task manager (which likely means that all those colonies live in a single thread).

The less said about critters the better.

Link to comment
Share on other sites

Yes, everything is very bad with performance. The factory with its kilometers of tapes works without any complaints at all. What I don’t understand at all, the graphics do not count at all, all the calculations are into squares. Let's say there are 100,000 of them, and several calculations per square. But the video geometry with its tops and planes, it has a lot of times more calculations. Very strange, I don't really like unity engine.

Link to comment
Share on other sites

there is too many numbers at animation that why performance is just not so good, it needs fast memory and good cpu because it reads those numbers all the time

they could change that by convert those coordinate images to one big atlas and use images instead, but i think its big job and they not bother about that

 

 

Link to comment
Share on other sites

hi,

i also had some performance issues, in late game 1164 cycles

System: 

  1. GPU: Nvidia GTX 1060
  2. RAM 32 GB DDR 3000Mhz
  3. Display FullHD

i started to swap cpus and got some results (load save game, pressed play, wait one minute, then noted fps)

  • Ryzen 7 1700: 20-22fps
  • Ryzen 5 3600: 32-34fps (32MB L3 Cache)
  • Ryzen 7 5700G: 32-34fps (16MB L3 Cache)
  • Intel Core i5 12600k: 40-42fps (Default)
  • Intel Core i5 12600k: 48-49fps (Turbo @4 Core usage 5,2Ghz)

savegame (Space Out) attached below

yes i think atm oxygen is all about single core performance

THISISBENCHMARK.zip

Link to comment
Share on other sites

2 hours ago, eclipse10000 said:

hi,

i also had some performance issues, in late game 1164 cycles

System: 

  1. GPU: Nvidia GTX 1060
  2. RAM 32 GB DDR 3000Mhz
  3. Display FullHD

i started to swap cpus and got some results (load save game, pressed play, wait one minute, then noted fps)

  • Ryzen 7 1700: 20-22fps
  • Ryzen 5 3600: 32-34fps (32MB L3 Cache)
  • Ryzen 7 5700G: 32-34fps (16MB L3 Cache)
  • Intel Core i5 12600k: 40-42fps (Default)
  • Intel Core i5 12600k: 48-49fps (Turbo @4 Core usage 5,2Ghz)

savegame (Space Out) attached below

yes i think atm oxygen is all about single core performance

THISISBENCHMARK.zip 15.93 MB · 0 downloads

main game thread is usually over coded, that is were the multi-thread comes to help, or you reduce cpu stress in main thread by some other methods like using one loop for todo multi stuff, that needs heavy thinking ahead , but most devs go easy way and not think about that.

there is huge difference when 1 loop does 10 things or 10 loops does 1 thing

 

 

Link to comment
Share on other sites

On 11/19/2021 at 7:48 PM, Chetar Ruby said:

I really love this game, but it is in serious need of some sort of performance optimization.  Maybe offload some of the work to threads.  It's rather disappointing when I run this game and it's running so slow and with lots of stutters, while my CPU (AMD Ryzen 9 3900X) is running at 5-10% utilization.

Please please do something to make this game take advantage of a modern CPU's multi-threaded nature.  This game should run a lot better than it does, and it's not because of the systems it's being run on.

If you can, then try to disable 12 logic cores - Reduce from 24 to 12 logic cores to reduce shared cache access. 

L3 cpu caches are shared between your cores with your model. In contrast a modern 4 core cpu at high clock speed, with dedicated large caches per core and deactivated virtual cores, can work good with ONI and may provide better or good game performance.

Reducing cpus down to 2-4 logic cores ( if possible) at max settings performance will also feed 3d title graphic cards best, if settings are optimized by the user. Few games benefit from up to 128, or more, cpu cores. IMHO 4 real cpu cores, are perfect for gaming.

ONI performance scales to this list:

https://www.cpubenchmark.net/singleThread.html

Link to comment
Share on other sites

babba, you've completely missed the entire point of my post.

In fact, you instead pointed out the problem in a round-about way:  Making games single-threaded is something that needs to go away.  We've had multi-core computers for 2 decades now, if not longer.

Telling me I'm using my CPU wrong is.. wrong.  Developers, including Klei, need to get with the times and code multi-threaded to take full advantage of modern CPUs.  There's just no excuse other than inability, incompetence, or unwillingness.  Very few game developers are coding to multi-core machines.  But some are, and their games are leaps ahead of competition that is single-threaded.

Link to comment
Share on other sites

Game multi core support is a problem since 20 years, hopefully more games and game engines will provide multi-core support over the next 10 or 20 years. What players can try is to get the most out of 1-2 cores for games. With cpu games like ONI its often a surprise for people, because its a title which does not really depend on a 3d card.

Hopefully there will me more dlc`s over the next 5 years, in a few years the cpu`s will overtake the games resource demand - Market cpu`s have caught well up with ONI in the last 4 years.

When players show up with 24 or more logic cores, one can keep asking Klei in posts over the next few years and/or tune there systems themself to get the most out of 1-2 cores. Klei`s improvements are slow, they want to keep the game stable without a ton of extra crashes.

As general recommendation for gaming I would always deactivate virtual cpu cores on an new built gaming rig, IMHO its just a marketing gag ( in view of gaming ) which often allocates shared resources.

ONI time now :p Wishing a nice weekend :angel:

https://www.cpubenchmark.net/singleThread.html

IMHO $ good value cpu`s for gaming, great ONI performers :afro:

image.thumb.png.9be09b0b96e4ad2525f16b6182520e47.png

Link to comment
Share on other sites

15 hours ago, Chetar Ruby said:

babba, you've completely missed the entire point of my post.

In fact, you instead pointed out the problem in a round-about way:  Making games single-threaded is something that needs to go away.  We've had multi-core computers for 2 decades now, if not longer.

Telling me I'm using my CPU wrong is.. wrong.  Developers, including Klei, need to get with the times and code multi-threaded to take full advantage of modern CPUs.  There's just no excuse other than inability, incompetence, or unwillingness.  Very few game developers are coding to multi-core machines.  But some are, and their games are leaps ahead of competition that is single-threaded.

i think, maybe this change will never happen, because this optimization will cost most time in game development, it is not as easy as it sounds

only option if u want to play the game with high fps, is buying a good single core cpu

Link to comment
Share on other sites

On 11/27/2021 at 1:30 PM, eclipse10000 said:

i think, maybe this change will never happen, because this optimization will cost most time in game development, it is not as easy as it sounds

only option if u want to play the game with high fps, is buying a good single core cpu

Same opinion, alternative take.

This change will never happen because Unity as engine wandered far, far away from player's needs.

Whoever decided to implement bugged as hell resource gluttonous code recompilation on game launch (which happened somewhere in one of Unity 2019 releases), that person should be beaten with a shovel each time that recompilation fumbles significantly.

(since I'm incompatible with programming on genetical level, I'm not entirely sure that that's exact cause of MY woes with multiple Unity based titles - but what else can dry-hump my HDD for 15+ minutes while littering in Temp folders profusely on game launch?)

Link to comment
Share on other sites

On 11/27/2021 at 12:30 PM, eclipse10000 said:

because this optimization will cost most time in game development, it is not as easy as it sounds

developers have the different debugger tools where they can analyze the performance and see where is the issue. its more like in devs hands if they want todo that or not.

but this game code is also huge, make changes may break allot stuff

On 11/26/2021 at 9:56 PM, babba said:

yes currently shows that any latest 12 series intel desktop cpu is good en-oh for enjoy oni in long run, but that shows also how bad is game self optimized because fact is, you can play 7 years old pc almost all modern games just fine if you have for that the normal gaming GPU

Link to comment
Share on other sites

On 11/26/2021 at 8:18 PM, Chetar Ruby said:

 Making games single-threaded is something that needs to go away.  

The laws of physics do not agree. Some things you cant just thwor more cores on it and expect them to run faster. It just dont work that way. 

Why dont you eat your need for calories for the month at the very first day? Because it would not work. You better wait, until you are hungry again, and got rid of the waste. The same applies here. Sometimes you have to just wait for the result and then proceed from there. And because there are so many of this tasks, that all depend on each other, there is not much you can do about it. 

Parallelisation can only do so much, but its not wonder weapon. Some task can speed up with more cores, other wont benefit at all. 

This game is a simulation. Sims cause always way more stress to hardware compared to something light like a shooter or something.

Link to comment
Share on other sites

1 hour ago, SharraShimada said:

This game is a simulation.

there is one problem with that, this game is not the real time simulation, they show in this game usually in milliseconds not nano or even lower ones

much higher problem is in this game the graphic draw/handling by the cpu

Link to comment
Share on other sites

On 12/18/2021 at 4:05 PM, gabberworld said:

there is one problem with that, this game is not the real time simulation, they show in this game usually in milliseconds not nano or even lower ones

much higher problem is in this game the graphic draw/handling by the cpu

The game is calculating a lot of things, often with many dependencies, within a certain time. Regardless of the time frame grid.

The outcomes of these calculations can vary a lot and can exceed the developers intended or expected average results in the game, it is hard for the developer to predict an outcome on a lot of variable values. 

In real time computing, all variables ( and future expected variables, calculations, decisions) and results have to create an 100% definite outcome intended for a pre defined decision moment in the future. Real time computing can have a lot of idling (cpu) spare time, to guarantee that there will always be an final calculation result at hand for execution in the future and to ensure that system components ( busses, memory, cpus etc.) are not overloaded in time critical future moments.

It can be common, depending on the type of system ( rocket cpu, car or aviation computers etc.), that realtime systems cpu(s) run idle for 99% of the time, to ensure 100% decision making capabity and capacity when computer action has to be performed. 

A typical realtime system will never or seldom get more content, hard or software upgrades as this could add unknown variables, distortion, error sources, maintenance issues and general unreliability to some existing system. 

Changing an OS setting to "Realtime" is something completely different, it's an manual direction of handing more system resources over to something. The different meanings of "Realtime" can have all kind of aspects, depending on the context. 

There is so many levels and layers of complexity to things nowadays in the world, one of the reasons why developers seldom interact with their audience is that there are different levels on fundamental knowledge, meanings and understanding. 

My father sold flight simulators, military space and rocket hardware, I was producer on AAA titles, +100 staff.

I love to play the game as little mind meme consumer noob, however... From time to time Klei posts some of their development analysis tool screenshots, which make it obvious that pros are at work. Game development, hardware and software are very complex and complicated - The game is well beyond Tetris.

Complaining in constructive ways is always good :p

Link to comment
Share on other sites

1 hour ago, gabberworld said:

you not able play this game with your cheap home pc if it would be realtime simulator.

 

What does real time simulator mean to you :confused: Do you mean the simulation of a clock :confused: Depending on the customer target group, that needs to be more or less precise - At least if customer returns want to be avoided, but it also depends on the attitude quality and morale of the seller :confused: :flustered::concern:

There had be players complaining about simulated time in the game, for their automation heavy build style and way of playing the "game". I have no clue how the time system(s) work in the game, but to cater to the automation audience - That type of player audience surely is interested how "time" can or does work in the game. From my point of view there is a lot of other running systems ( like path finding ) which affect "time" in the game a lot, not even talking of what hardware a player is running the game on. There surely is a lot of systems which compete for "time" in the game.

If someone wants to share their knowledge on how "time" works in the game(simulation), that would be great to hear. Whatever forumistas know about it, it would be great to hear peoples views and experiences :razz: If someone wants to share knowledge... :cheerful:

@mathmanican@NeoDeusMachina@JRup@KonfigSys@sakura_sk babba ping alarm ! :ghost:

Railroad Tycoon

Link to comment
Share on other sites

4 hours ago, babba said:

From my point of view there is a lot of other running systems ( like path finding ) which affect "time" in the game a lot

The more I put things behind pneumatic doors with a "lock" the less pathfinding dupes do, autosweepers and automation, ftw... I now have a lot of idlers more often than not. I have to make an actual drecko farm in order to properly cull those and seal off the place I'm dropping off excess critters in the wild... (I only combined a pincha pepper farm with some ranching...) I also need to rebuild the one and only glass forge setup in order to avoid around ten dupes (or more) sweeping up 1kg packets of glass just because...

On the bright side, they tend to do new projects a little faster.

Link to comment
Share on other sites

they can increase performance if they convert they current animations to single images and use those instead, note (convert can be done when game starts for example). there is huge difference when you run one GameObject vs 10 object for one drawing

even UnityEngine self tells that Allot GameObjects may cause performance issues in 2d games because every one off those use coordinates what handled from cpu

another is collider but im not sure yet how to handle that for this game

 

 

 

Link to comment
Share on other sites

2 hours ago, EustaceCS said:

It's not 'increase performance'.

It's 'let's hide it under the carpet so maybe nobody would notice'.

? you probaply not know what i talk. the issue is that they currently calculate image movements on live mode, for every image , leg, foot, heat, body hands and so on, because everyone have they own coordinates it is stressful for cpu if you have allot off them  . if those small images are converted to one big one like normal 2d games use, you take that stress away.

there is nothing hiding about this it just would calculate they  format what they use to normal game Sprites and then use those instead, also they then can continue use they tool what they use currently for make the sprites

and if you not know then 1 animation may contain thousands off coordinate numbers depends off animation complex,

and now image if you screen have them 1000, that 1 animation turns to very big number what needed handle by cpu and memory

Link to comment
Share on other sites

On 12/18/2021 at 3:31 PM, SharraShimada said:

The laws of physics do not agree. Some things you cant just thwor more cores on it and expect them to run faster. It just dont work that way. 

ONI still has lots of unused potential for parallelization.

"Spaced out" specifically doesn't need for each colony to run in a single thread. But likely there are better ways to thread the game. Potentially: temperature, germs, pathfinding and radiation calculations do not interact directly or in a restraining manner (since player doesn't care if temperature will apply to germs a second late) thus do not need to happen in a single thread. Pathfinding is done per dupplicate/critter, so calculating that in parallel also should be possible. UI accounts resources in main thread and only when the game is not on a pause, it could have been a mutex-free  thread, because it doesn't need to modify anything in main thread, only read/observe.

Factorio implemented insane thread parallelization without mutexes and without atomic variables by processing map as tiles/chunks and mathematically ensuring that no tile/chunk will be processed simultaneously with a neighbor. Factorio has less interacting things, but belts and arms still transfer items, trains and bitters use pathfinding, turrets target enemies and pollution still spreads. Factorio limits amount of threads artificially due to memory bandwidth being an issue, but otherwise they squeeze as much as they can from threads.

P.S. Brains are paralleled to the extreme. Billions of processors in a single brain. Physics in this context is not a limit for ONI nor for most games. Dev time/skill plus financial backing are (because if product owner thinks it's fine as is, there is nothing a dev can do).

Link to comment
Share on other sites

2 hours ago, AndreyKl said:

ONI still has lots of unused potential for parallelization.

"Spaced out" specifically doesn't need for each colony to run in a single thread.

 

yes that is 100% true. all the stuff what is not related directly to the graphic can be used as parallel 

graphic is the thing what you see in human eye and that's it. if user cant see that. you don't need use that either.

player not care if your dupe pee at other dimension as he cant see that anyway. so that info can be handled in database not in graphic

that includes also this black fog area. as user cant see that what is behind, you not need draw that either

and that what factorio game is been doing, they not even build the full world at there. when you start move around it start generate that

note. in factorio game you are able run out memory at some point, there is not power full en-oh home users motherboards in market that you can handle with that game. but that is like years off play the same map

 

Link to comment
Share on other sites

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.

×
  • Create New...