Jump to content

Recommended Posts

3 hours ago, melquiades said:

How big is the impact on performance for the game to keep track of the age of every single item in the game?

pretty much nonexistent.

the age of each item is stored as a single float number that marks the cycle it was built in. "Age" in the ui is then calculated by simply subtracting that number from the current cycle.

 

  • Thanks 1

Why can't Klei themselves optimize their game, at least for multi-threaded processors? As far as I know, the Unity engine is capable of this. My colony has already grown to such a scale that it becomes impossible to play, even with the mod. And another question, will disabling the processor multi-threading help this game?

Yes, the awful performance in more advanced colonies is one of the biggest reasons that kills off the fun of playing.

Klei should ramp up their efforts to improve performance drastically.

Even on high-end PCs, the game becomes unplayable later on. 

 

Especially when you compare it to other large-scale factory-esque games, such as Factorio, which is ludicrously optimized. Granted, Factorio is on its own engine, so they don't have to rely on third party black magic, but still.

ONI really, REALLY suffers from poor performance by the mid to late game, and the garbage collection cycle is so noticable it causes full 1-2 second freezes about every 30 to 45 seconds.

15 hours ago, Nzot said:

Why can't Klei themselves optimize their game, at least for multi-threaded processors? As far as I know, the Unity engine is capable of this. My colony has already grown to such a scale that it becomes impossible to play, even with the mod. And another question, will disabling the processor multi-threading help this game?

Because Unity was a good choice back then, when they started the project. But the game has grown beyond that engine. The fact this mod can achieve a much higher performance compared to the base game is just because Peter can do what he wants. If it works, it works. If it does not, he has time to fix it. And if its incompatible with other mods, so be it. Even if someone really cant run this mod at all, because reasons, its not Peters problem. He is not obliged to make it run perfectly for everyone, nor is he paid for his incredible mod.

Klei does not have that freedom. They have to make sure, it just runs for everyone. Imagine the shitstorm, if only 5% of all players would have a glitch in savegames, making them worthless data garbage. They just cant afford to tinker with the code as modders can. And they neither have the ressources, nor the will to do a complete rewrite of the game.

Yeah Klei ist one of the good companies in the gaming industry. But when the last one, after a long day, switches the lights off in the studios, the bills have to get paid. A rewrite would not pay bills.

  • Like 2
  • Thanks 1
  • Health 1
13 hours ago, SharraShimada said:

A rewrite would not pay bills.

If Klei wants to be successful with the DLCs in the future, they must eventually tackle the performance issues on a deeper level.

That should ensure higher sales, and then they can pay their "bills." 

The problem is that the game in its current state is literally unplayable later on. What does it help if a game is amazing but no one can reasonably play it long-term? 

  • Like 2
13 hours ago, SharraShimada said:

Yeah Klei ist one of the good companies in the gaming industry. But when the last one, after a long day, switches the lights off in the studios, the bills have to get paid. A rewrite would not pay bills.

Yes, I agree that this is not economically profitable, but the game was released seven years ago and the developers are still adding content to it (most likely to attract new players) and if you look at the reviews on Steam, the game sold well. And about 8 thousand players play the game every day (statistics from SteamCharts) But they simply don’t want to improve performance or can’t, isn’t this a dead-end branch? This game is presented as a sandbox that you can play endlessly, but this is not true, because at some point you realize that playing is no longer fun because the FPS makes itself felt. And what remains? Just starting a new game and going through all the stages you’ve already been to, is that interesting? I have a pretty good PC, but of course the game doesn’t use it, again due to engine limitations.

4 hours ago, Nzot said:

But they simply don’t want to improve performance or can’t, isn’t this a dead-end branch?

Do you understand the magnitude of that task, and its impacts? What ONI does is not at all trivial, algorithmically. Comparing it to a direct-control game like Factorio, as another commenter did further up, is particularly ludicrous. Dupe pathfinding and errand assignment are the main performance sinks, from what I can see. Having them take place in a constantly changing environment makes it worse, because it limits potential gains from caching. This demonstration of a colony sim task scheduing library explains it in detail.

Also, the last major performance improvement was made just a few months ago (critter behaviour), and other changes, including changes inspired and/or pioneered by Fast Track, have been incorporated. Could even more be done? Definitely. Could it be done economically, compared to the potential gains in player satisfaction? Seems unlikely.

  • Like 1
  • Thanks 1
On 6/17/2024 at 7:48 PM, Henlikuoth said:

Even after cycle 1000, the loading times between cycles are starting to become annoying. 

A good performance is a keystone for any successful game. 

Onis sales proof you wrong...

Yeah it would be preferable if the game would run more smoothly on late game colonies but lets face it: Most of the people DONT play 10.000+ cycle saves.

3 hours ago, Nzot said:

Because THEY CAN'T

Maybe you could provide the 10000+ cycles colony to Klei and see what they can do about it. Because I feel not everyone has the privilege to run a colony to 10000+ cycles.

8 hours ago, SharraShimada said:

Onis sales

I know that ONI sales are good.

But that is even more of a reason for Klei to improve its performance drastically.

Also, it would be great if the game was still playable 10.000+ cycles. I usually stop at around 3000 simply because the performance has become too annoying. 

For me, the fun starts after the bases have been established and are working overall. But by then, it is no longer fun to watch the stuttering and long loading times between cycles. 

2 hours ago, DolphinWing said:

Maybe you could provide the 10000+ cycles colony to Klei and see what they can do about it. Because I feel not everyone has the privilege to run a colony to 10000+ cycles.

I can provide a colony with 2500+ cycles, each of my saves takes 10 seconds, and even a colony with 1000 cycles will be enough that the game does not work the same as in the initial stages. The point here is what your needs are, the larger your colony is and the more chaotic it is, the more it lags.

  • Like 1
On 6/15/2024 at 2:33 PM, The Toblin said:

Especially when you compare it to other large-scale factory-esque games, such as Factorio, which is ludicrously optimized. Granted, Factorio is on its own engine, so they don't have to rely on third party black magic, but still.

ONI really, REALLY suffers from poor performance by the mid to late game, and the garbage collection cycle is so noticable it causes full 1-2 second freezes about every 30 to 45 seconds.

so that was the freezing coming form. is there any possibility to optimized thing by any chance?

Exception while loading mod PeterHan.FastTrack at C:/Users/wxm/Documents/Klei/OxygenNotIncluded/mods/Local/FastTrack. 
HarmonyLib.HarmonyException: Patching exception in method null ---> System.ArgumentException: Undefined target method for patch method static System.Boolean PeterHan.FastTrack.UIPatches.OpenCodexEntry_Patch::Prefix()
  at HarmonyLib.PatchClassProcessor.PatchWithAttributes (System.Reflection.MethodBase& lastOriginal) [0x00047] in <6dcb326e4f6442999f701f1e67d0b5a0>:0 
  at HarmonyLib.PatchClassProcessor.Patch () [0x00068] in <6dcb326e4f6442999f701f1e67d0b5a0>:0 
   --- End of inner exception stack trace ---
  at HarmonyLib.PatchClassProcessor.ReportException (System.Exception exception, System.Reflection.MethodBase original) [0x00127] in <6dcb326e4f6442999f701f1e67d0b5a0>:0 
  at HarmonyLib.PatchClassProcessor.Patch () [0x00093] in <6dcb326e4f6442999f701f1e67d0b5a0>:0 
  at HarmonyLib.Harmony.<PatchAll>b__10_0 (System.Type type) [0x00007] in <6dcb326e4f6442999f701f1e67d0b5a0>:0 
  at HarmonyLib.CollectionExtensions.Do[T] (System.Collections.Generic.IEnumerable`1[T] sequence, System.Action`1[T] action) [0x00014] in <6dcb326e4f6442999f701f1e67d0b5a0>:0 
  at HarmonyLib.Harmony.PatchAll (System.Reflection.Assembly assembly) [0x00006] in <6dcb326e4f6442999f701f1e67d0b5a0>:0 
  at KMod.UserMod2.OnLoad (HarmonyLib.Harmony harmony) [0x00007] in <043309e6f0914d9f9e207a782760f195>:0 
  at PeterHan.FastTrack.FastTrackMod.OnLoad (HarmonyLib.Harmony harmony) [0x00000] in <ff6916707e9d43c3984481c8f2f85957>:0 
  at KMod.DLLLoader.LoadDLLs (KMod.Mod ownerMod, System.String harmonyId, System.String path, System.Boolean isDev) [0x00222] in <043309e6f0914d9f9e207a782760f195>:0 

  at UnityEngine.Debug.LogError (System.Object message, UnityEngine.Object context) [0x00000] in <72b60a3dd8cd4f12a155b761a1af9144>:0 
  at Debug.LogError (System.Object obj, UnityEngine.Object context) [0x00000] in <3a2e13ca97c146c4b5d2f735a443e5e3>:0 
  at DebugUtil.LogErrorArgs (UnityEngine.Object context, System.Object[] objs) [0x00000] in <3a2e13ca97c146c4b5d2f735a443e5e3>:0 
  at DebugUtil.LogException (UnityEngine.Object context, System.String errorMessage, System.Exception e) [0x00000] in <3a2e13ca97c146c4b5d2f735a443e5e3>:0 
  at KMod.DLLLoader.LoadDLLs (KMod.Mod ownerMod, System.String harmonyId, System.String path, System.Boolean isDev) [0x00000] in <043309e6f0914d9f9e207a782760f195>:0 
  at KMod.Mod.Load (KMod.Content content) [0x00000] in <043309e6f0914d9f9e207a782760f195>:0 
  at KMod.Manager.Load (KMod.Content content) [0x00000] in <043309e6f0914d9f9e207a782760f195>:0 
  at Global.Awake () [0x00000] in <043309e6f0914d9f9e207a782760f195>:0 
  at UnityEngine.Object.Internal_InstantiateSingleWithParent_Injected (UnityEngine.Object data, UnityEngine.Transform parent, UnityEngine.Vector3& pos, UnityEngine.Quaternion& rot) [0x00000] in <72b60a3dd8cd4f12a155b761a1af9144>:0 
  at UnityEngine.Object.Internal_InstantiateSingleWithParent (UnityEngine.Object data, UnityEngine.Transform parent, UnityEngine.Vector3 pos, UnityEngine.Quaternion rot) [0x00000] in <72b60a3dd8cd4f12a155b761a1af9144>:0 
  at UnityEngine.Object.Instantiate (UnityEngine.Object original, UnityEngine.Vector3 position, UnityEngine.Quaternion rotation, UnityEngine.Transform parent) [0x00000] in <72b60a3dd8cd4f12a155b761a1af9144>:0 
  at UnityEngine.Object.Instantiate[T] (T original, UnityEngine.Vector3 position, UnityEngine.Quaternion rotation, UnityEngine.Transform parent) [0x00000] in <72b60a3dd8cd4f12a155b761a1af9144>:0 
  at Util.KInstantiate (UnityEngine.GameObject original, UnityEngine.Vector3 position, UnityEngine.Quaternion rotation, UnityEngine.GameObject parent, System.String name, System.Boolean initialize_id, System.Int32 gameLayer) [0x00000] in <3a2e13ca97c146c4b5d2f735a443e5e3>:0 
  at Util.KInstantiate (UnityEngine.GameObject original, UnityEngine.GameObject parent, System.String name) [0x00000] in <3a2e13ca97c146c4b5d2f735a443e5e3>:0 
  at LaunchInitializer.Update () [0x00000] in <043309e6f0914d9f9e207a782760f195>:0 
Build: U52-622509-S (FT-0.13.6.0)

Edited by Ge0rge
8 hours ago, Ge0rge said:

Exception while loading mod PeterHan.FastTrack at C:/Users/wxm/Documents/Klei/OxygenNotIncluded/mods/Local/FastTrack. 
HarmonyLib.HarmonyException: Patching exception in method null ---> System.ArgumentException: Undefined target method for patch method static System.Boolean PeterHan.FastTrack.UIPatches.OpenCodexEntry_Patch::Prefix()
  at HarmonyLib.PatchClassProcessor.PatchWithAttributes (System.Reflection.MethodBase& lastOriginal) [0x00047] in <6dcb326e4f6442999f701f1e67d0b5a0>:0 
  at HarmonyLib.PatchClassProcessor.Patch () [0x00068] in <6dcb326e4f6442999f701f1e67d0b5a0>:0 
   --- End of inner exception stack trace ---
  at HarmonyLib.PatchClassProcessor.ReportException (System.Exception exception, System.Reflection.MethodBase original) [0x00127] in <6dcb326e4f6442999f701f1e67d0b5a0>:0 
  at HarmonyLib.PatchClassProcessor.Patch () [0x00093] in <6dcb326e4f6442999f701f1e67d0b5a0>:0 
  at HarmonyLib.Harmony.<PatchAll>b__10_0 (System.Type type) [0x00007] in <6dcb326e4f6442999f701f1e67d0b5a0>:0 
  at HarmonyLib.CollectionExtensions.Do[T] (System.Collections.Generic.IEnumerable`1[T] sequence, System.Action`1[T] action) [0x00014] in <6dcb326e4f6442999f701f1e67d0b5a0>:0 
  at HarmonyLib.Harmony.PatchAll (System.Reflection.Assembly assembly) [0x00006] in <6dcb326e4f6442999f701f1e67d0b5a0>:0 
  at KMod.UserMod2.OnLoad (HarmonyLib.Harmony harmony) [0x00007] in <043309e6f0914d9f9e207a782760f195>:0 
  at PeterHan.FastTrack.FastTrackMod.OnLoad (HarmonyLib.Harmony harmony) [0x00000] in <ff6916707e9d43c3984481c8f2f85957>:0 
  at KMod.DLLLoader.LoadDLLs (KMod.Mod ownerMod, System.String harmonyId, System.String path, System.Boolean isDev) [0x00222] in <043309e6f0914d9f9e207a782760f195>:0 

  at UnityEngine.Debug.LogError (System.Object message, UnityEngine.Object context) [0x00000] in <72b60a3dd8cd4f12a155b761a1af9144>:0 
  at Debug.LogError (System.Object obj, UnityEngine.Object context) [0x00000] in <3a2e13ca97c146c4b5d2f735a443e5e3>:0 
  at DebugUtil.LogErrorArgs (UnityEngine.Object context, System.Object[] objs) [0x00000] in <3a2e13ca97c146c4b5d2f735a443e5e3>:0 
  at DebugUtil.LogException (UnityEngine.Object context, System.String errorMessage, System.Exception e) [0x00000] in <3a2e13ca97c146c4b5d2f735a443e5e3>:0 
  at KMod.DLLLoader.LoadDLLs (KMod.Mod ownerMod, System.String harmonyId, System.String path, System.Boolean isDev) [0x00000] in <043309e6f0914d9f9e207a782760f195>:0 
  at KMod.Mod.Load (KMod.Content content) [0x00000] in <043309e6f0914d9f9e207a782760f195>:0 
  at KMod.Manager.Load (KMod.Content content) [0x00000] in <043309e6f0914d9f9e207a782760f195>:0 
  at Global.Awake () [0x00000] in <043309e6f0914d9f9e207a782760f195>:0 
  at UnityEngine.Object.Internal_InstantiateSingleWithParent_Injected (UnityEngine.Object data, UnityEngine.Transform parent, UnityEngine.Vector3& pos, UnityEngine.Quaternion& rot) [0x00000] in <72b60a3dd8cd4f12a155b761a1af9144>:0 
  at UnityEngine.Object.Internal_InstantiateSingleWithParent (UnityEngine.Object data, UnityEngine.Transform parent, UnityEngine.Vector3 pos, UnityEngine.Quaternion rot) [0x00000] in <72b60a3dd8cd4f12a155b761a1af9144>:0 
  at UnityEngine.Object.Instantiate (UnityEngine.Object original, UnityEngine.Vector3 position, UnityEngine.Quaternion rotation, UnityEngine.Transform parent) [0x00000] in <72b60a3dd8cd4f12a155b761a1af9144>:0 
  at UnityEngine.Object.Instantiate[T] (T original, UnityEngine.Vector3 position, UnityEngine.Quaternion rotation, UnityEngine.Transform parent) [0x00000] in <72b60a3dd8cd4f12a155b761a1af9144>:0 
  at Util.KInstantiate (UnityEngine.GameObject original, UnityEngine.Vector3 position, UnityEngine.Quaternion rotation, UnityEngine.GameObject parent, System.String name, System.Boolean initialize_id, System.Int32 gameLayer) [0x00000] in <3a2e13ca97c146c4b5d2f735a443e5e3>:0 
  at Util.KInstantiate (UnityEngine.GameObject original, UnityEngine.GameObject parent, System.String name) [0x00000] in <3a2e13ca97c146c4b5d2f735a443e5e3>:0 
  at LaunchInitializer.Update () [0x00000] in <043309e6f0914d9f9e207a782760f195>:0 
Build: U52-622509-S (FT-0.13.6.0)

Yes, the mod needs to be updated for each new version of the game. Be patient.

I really appreciate your update, it saved my game

On 7/19/2024 at 6:04 PM, SharraShimada said:

Give him a few days. It was just released. That man has a life too! You may life and wait for a few days!

I didn't mean to rush him. I just wanted to give him a forum message

Edited by crazy_xyr

Seems Fast Track is updated for Frosty Planet Pack. Thank you for amazing mod,,, and maintaining it...

 

Also I'm curious about performance related changes in this update. Although I did not find any significant in official update notes, I assume there would be some in the codebase... maybe? If you don't mind, could you please share some if you found something. 

 

And again, thank you for great mod..

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
  • Create New...