Jump to content

[BETA] Fast Track - Performance Mod for Oxygen Not Included


Recommended Posts

Fast Track 0.12.2 has been released. A single frame offset has been added to prevent extraneous radbolt collisions with rapid fire pulses such as those released by the Radbolt Chamber, and compatibility workarounds have been added for two more mods.

  • Like 3
  • Big Ups 1
Link to comment
Share on other sites

Hello,
Not sure if you want bug reports in here or in the git.
 

NullReferenceException

KMonoBehaviour.IStateMachineTarget.get_gameObject () (at <d2ff0ec32ae74bb091b2c7c87705ee3b>:0)
Chore`1[StateMachineInstanceType].get_gameObject () (at <ad882e55d8ac49379773540ee16f428f>:0)
Chore.IsValid () (at <ad882e55d8ac49379773540ee16f428f>:0)
PeterHan.FastTrack.GamePatches.ChoreComparator.FastCheckPreconditions (Chore chore, ChoreType typeForPermission) (at <c984c3552d1e4351b9a70046f2828951>:0)
PeterHan.FastTrack.GamePatches.ChoreComparator.Collect (Chore chore) (at <c984c3552d1e4351b9a70046f2828951>:0)
PeterHan.FastTrack.GamePatches.ChoreComparator.CollectNonFetch (System.Collections.Generic.IList`1[T] chores) (at <c984c3552d1e4351b9a70046f2828951>:0)
PeterHan.FastTrack.GamePatches.ChorePatches+GlobalChoreProvider_CollectChores_Patch.Prefix (ChoreConsumerState consumer_state, GlobalChoreProvider __instance, System.Collections.Generic.List`1[T] succeeded) (at <c984c3552d1e4351b9a70046f2828951>:0)
(wrapper dynamic-method) GlobalChoreProvider.GlobalChoreProvider.CollectChores_Patch1(GlobalChoreProvider,ChoreConsumerState,System.Collections.Generic.List`1<Chore/Precondition/Context>,System.Collections.Generic.List`1<Chore/Precondition/Context>)
ChoreConsumer.FindNextChore (Chore+Precondition+Context& out_context) (at <ad882e55d8ac49379773540ee16f428f>:0)
Brain.FindBetterChore (Chore+Precondition+Context& context) (at <ad882e55d8ac49379773540ee16f428f>:0)
Brain.UpdateChores () (at <ad882e55d8ac49379773540ee16f428f>:0)
Brain.UpdateBrain () (at <ad882e55d8ac49379773540ee16f428f>:0)
(wrapper dynamic-method) MinionBrain.MinionBrain.UpdateBrain_Patch0(MinionBrain)
PeterHan.FastTrack.PathPatches.AsyncBrainGroupUpdater.EndBrainUpdate () (at <c984c3552d1e4351b9a70046f2828951>:0)
PeterHan.FastTrack.World_LateUpdate_Patch.Postfix () (at <c984c3552d1e4351b9a70046f2828951>:0)
(wrapper dynamic-method) World.World.LateUpdate_Patch2(World)

Build: U48-568201-S

So far, this is the first bug I've encountered in countless hours with this mod, so I call that a success for being a beta ;)

-edit-

As said below, issues should be reported in the GitHub repository, which I have now done. Disregard this message.
https://github.com/peterhaneve/ONIMods/issues/405

Kind regards,
Niels

Edited by nepp95
Link to comment
Share on other sites

On 3/21/2022 at 5:11 AM, Peter Han said:

It crashes!

Crashes or bugs that occur will be easier to fix if reported on the GitHub Issues page rather than this thread. Please include logs with any reports:

  • Windows: %USERPROFILE%\AppData\LocalLow\Klei\Oxygen Not Included\Player.log
  • Mac: ~/Library/Logs/Klei/Oxygen Not Included/Player.log
  • Linux: ~/.config/unity3d/Klei/Oxygen Not Included/Player.log

@nepp95 Please put it in issues page not here :D

  • Health 1
Link to comment
Share on other sites

I am getting half the FPS on 0.12.2 than with 0.12.1 (They weren't high to begin with).

EDIT: nevermind, the game slowly goes to a crawl after a while playing, regardless of the fast track version installed. one of the mods i installed recently could have a memory leak, need to test more.

EDIT 2: It was just shenanigans from an old mod:

 

 

 

Edited by melquiades
Link to comment
Share on other sites

This is so good! My fps went from 32 to 50!

I may be 1900 cycles into this save, but.... All i've done is strip mine 1.5 asteroids, and fill most of my main with tiles. Those stupid gas physics calculations on empty areas were hurting badly and even then it was only 32 FPS, probably because it was cutting calculations. Thanks!

Edited by Flytrap
  • Like 1
Link to comment
Share on other sites

4 hours ago, Flytrap said:

This is so good! My fps went from 32 to 50!

I may be 1900 cycles into this save, but.... All i've done is strip mine 1.5 asteroids, and fill most of my main with tiles. Those stupid gas physics calculations on empty areas were hurting badly and even then it was only 32 FPS, probably because it was cutting calculations. Thanks!

built tiles are worse than gasses in most occasions.

the best you can do is create vacuumed areas

Link to comment
Share on other sites

On 9/23/2023 at 7:36 AM, SGT_Imalas said:

built tiles are worse than gasses in most occasions.

the best you can do is create vacuumed areas

Seems like tiles should be better tho? My understanding is that vacuum tiles have to check for adjacent gas/liquid whereas solid tiles only care about temp?

Link to comment
Share on other sites

2 hours ago, Charletrom said:

Seems like tiles should be better tho? My understanding is that vacuum tiles have to check for adjacent gas/liquid whereas solid tiles only care about temp?

The myth about "vacuum tries to expand like a gas" is false.

Vacuum also has no gas shader and no heat transfer

But those matter very little, as the Sim is less than 20% of frame time.

For constructed tiles;

Each tile has ~20 behaviours, some of them have update/simXms methods, those run each frame / every X milliseconds

Rendering tiles calls into slow, custom rendering methods

Even though STC are bypassed, the tiles still need to have heat transfer structures created and collected and sent to the Sim as buildings to handle melt notifications

Serializing and deserializing tiles is fairly slow due to all the behaviours, murdering save/load times

 

  • Like 1
  • Big Ups 2
Link to comment
Share on other sites

4 hours ago, SGT_Imalas said:

The myth about "vacuum tries to expand like a gas" is false.

Vacuum also has no gas shader and no heat transfer

But those matter very little, as the Sim is less than 20% of frame time.

For constructed tiles;

Each tile has ~20 behaviours, some of them have update/simXms methods, those run each frame / every X milliseconds

Rendering tiles calls into slow, custom rendering methods

Even though STC are bypassed, the tiles still need to have heat transfer structures created and collected and sent to the Sim as buildings to handle melt notifications

Serializing and deserializing tiles is fairly slow due to all the behaviours, murdering save/load times

 

Awesome thanks! Knew I was asking the right person (love your mods). Thanks for the education

Link to comment
Share on other sites

On 10/2/2023 at 10:16 AM, SGT_Imalas said:

These informations are from a conversation I had with PeterHan, he understands the game performance much better than I do

So does strip mining help my game run better? What about abyssalite, as I usually leave most of it and build around it.

I try vacuum sealing everything and making infinite solid storage drop offs for each category. 

Any other tips? 

Link to comment
Share on other sites

5 minutes ago, cyberwarlord said:

So does strip mining help my game run better? What about abyssalite, as I usually leave most of it and build around it.

I try vacuum sealing everything and making infinite solid storage drop offs for each category. 

Any other tips? 

No strip mining will not help. You could activate sandbox mode and fill spaces you will never need again with Neutronium. As far as i know Neutronium is used as an inactive piece internally. It just does nothing at all.

Link to comment
Share on other sites

1 hour ago, SharraShimada said:

No strip mining will not help. You could activate sandbox mode and fill spaces you will never need again with Neutronium. As far as i know Neutronium is used as an inactive piece internally. It just does nothing at all.

I kinda used all the spaces on my home world. . .

Link to comment
Share on other sites

5 hours ago, G9980 said:

hello, after the last update, the mod stopped loading. Should I write here to have it updated ?

It happens basically every update, he already knows and is working on it.  Just wait.  It doesn't usually take terribly long.

Edited by King of Blades
Link to comment
Share on other sites

Fast Track 0.12.3 has been released. This version might finally fix a race condition that could sometimes scramble the text describing stored items in the side screen, since it had to be rewritten anyways to handle the restructuring that occurred in today's patch.

I have not forgotten about smart conduit rebuild! However, Klei's continuous improvement of the base game constantly breaks Fast Track, making it hard to work on massive rewrites.

  • Like 5
  • Health 2
  • Big Ups 1
Link to comment
Share on other sites

On 3/21/2022 at 6:11 AM, Peter Han said:

Fast Track - An Oxygen Not Included Optimization Mod

Optimizes almost every aspect of Oxygen Not Included, improving late game frame rate by 40% or more in many cases. Colonies with many critters and Duplicants, and Spaced Out colonies spread across many planetoids, are likely to see the largest savings.

This mod is currently in beta, as it performs a massive overhaul of many game internals, and is not quite ready for a release on the major modding platforms. Fast Track has been play tested, but not in every possible scenario, so the beta is currently recommended for more experienced Oxygen Not Included players with late game colonies that suffer more from low performance. It will be released on Steam after more testing, after which beta releases will no longer be supported.

No support on any public testing branch or versions before Song of the Moo.

How to Install

Fast Track beta releases are available on GitHub. Extract the contents of the release ZIP to the Local mods folder, creatingLocalif necessary:

  • Windows: %USERPROFILE%\Documents\Klei\OxygenNotIncluded\mods\local
    Replace the documents path with the path to your Documents folder if this folder has been redirected.
  • Mac OS: /Users/user name/Library/Application Support/unity.Klei.Oxygen Not Included/mods/Local
    Replace user name with your user name. Folder name is case sensitive
  • Linux: ~/.config/unity3d/Klei/Oxygen Not Included/mods/Local
    Folder name is case sensitive

Enable the mod in the Mods menu and restart the game. Fast Track has mostly been tested with the Spaced Out! DLC enabled but should also run on the vanilla game.

It crashes!

Crashes or bugs that occur will be easier to fix if reported on the GitHub Issues page rather than this thread. Please include logs with any reports:

  • Windows: %USERPROFILE%\AppData\LocalLow\Klei\Oxygen Not Included\Player.log
  • Mac: ~/Library/Logs/Klei/Oxygen Not Included/Player.log
  • Linux: ~/.config/unity3d/Klei/Oxygen Not Included/Player.log

Gameplay Impacts

Oxygen Not Included gameplay is linked to its current performance, so running Fast Track may cause gameplay impacts. Most of these should be beneficial, such as Slicksters no longer starving to death even surrounded by carbon dioxide, but save a backup of any important colonies in case a bug occurs.

The increase in critter performance may cause aggressive critters such as Beetas and Pokeshells to run their AIs often enough to attack Duplicants, in cases where low performance previously permitted Duplicants to escape unharmed.

But my frame rate is still only 30 FPS!

Oxygen Not Included monitors its current frame rate and reduces calculations when it dips below 30 FPS. Improving performance when your frame rate is at or below 30 FPS may cause the game to restore those calculations, improving gameplay but again decreasing frame rate to that target level.

I want to use my other mods!

Fast Track has not been tested with all possible mod combinations but could cause conflicts with the extensive changes it makes to optimize the game. Other mods can be used with Fast Track, but additional crashes and bugs could occur that are outside of Fast Track's control.

Options

All optimizations, except for some important bug fix optimizations, can be turned on or off individually in the Mod Options menu. The Debug Metrics option (disabled by default) is not an optimization - it adds lots of output logs (thus somewhat decreasing performance) to profile performance bottlenecks and should be turned off during normal gameplay.

 

FastTrack_0.12.3.zip 541.15 kB · 395 downloads

感谢大佬!!

Link to comment
Share on other sites

A crash with version 0.12.3 (without any other mod). Happens when I start the game, only option is to quit and disable the mod.

 

Exception while loading mod PeterHan.FastTrack at C:/Users/XXXX/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.GetRequirementDescriptors_Patch::Prefix(System.Collections.Generic.List`1<Descriptor> descriptors, System.Boolean indent, System.Collections.Generic.List`1& __result)
  at HarmonyLib.PatchClassProcessor.PatchWithAttributes (System.Reflection.MethodBase& lastOriginal) [0x00047] in <2f5aaaa000594d07b9998f4cff1e9662>:0 
  at HarmonyLib.PatchClassProcessor.Patch () [0x00057] in <2f5aaaa000594d07b9998f4cff1e9662>:0 
   --- End of inner exception stack trace ---
  at HarmonyLib.PatchClassProcessor.ReportException (System.Exception exception, System.Reflection.MethodBase original) [0x00127] in <2f5aaaa000594d07b9998f4cff1e9662>:0 
  at HarmonyLib.PatchClassProcessor.Patch () [0x00082] in <2f5aaaa000594d07b9998f4cff1e9662>:0 
  at HarmonyLib.Harmony.<PatchAll>b__10_0 (System.Type type) [0x00007] in <2f5aaaa000594d07b9998f4cff1e9662>:0 
  at HarmonyLib.CollectionExtensions.Do[T] (System.Collections.Generic.IEnumerable`1[T] sequence, System.Action`1[T] action) [0x00014] in <2f5aaaa000594d07b9998f4cff1e9662>:0 
  at HarmonyLib.Harmony.PatchAll (System.Reflection.Assembly assembly) [0x00006] in <2f5aaaa000594d07b9998f4cff1e9662>:0 
  at KMod.UserMod2.OnLoad (HarmonyLib.Harmony harmony) [0x00007] in <ad882e55d8ac49379773540ee16f428f>:0 
  at PeterHan.FastTrack.FastTrackMod.OnLoad (HarmonyLib.Harmony harmony) [0x00000] in <f7b10c126701469288f805e42bf76df5>:0 
  at KMod.DLLLoader.LoadDLLs (KMod.Mod ownerMod, System.String harmonyId, System.String path, System.Boolean isDev) [0x00222] in <ad882e55d8ac49379773540ee16f428f>: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 <d2ff0ec32ae74bb091b2c7c87705ee3b>:0 
  at DebugUtil.LogErrorArgs (UnityEngine.Object context, System.Object[] objs) [0x00000] in <d2ff0ec32ae74bb091b2c7c87705ee3b>:0 
  at DebugUtil.LogException (UnityEngine.Object context, System.String errorMessage, System.Exception e) [0x00000] in <d2ff0ec32ae74bb091b2c7c87705ee3b>:0 
  at KMod.DLLLoader.LoadDLLs (KMod.Mod ownerMod, System.String harmonyId, System.String path, System.Boolean isDev) [0x00000] in <ad882e55d8ac49379773540ee16f428f>:0 
  at KMod.Mod.Load (KMod.Content content) [0x00000] in <ad882e55d8ac49379773540ee16f428f>:0 
  at KMod.Manager.Load (KMod.Content content) [0x00000] in <ad882e55d8ac49379773540ee16f428f>:0 
  at Global.Awake () [0x00000] in <ad882e55d8ac49379773540ee16f428f>: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 <d2ff0ec32ae74bb091b2c7c87705ee3b>:0 
  at Util.KInstantiate (UnityEngine.GameObject original, UnityEngine.GameObject parent, System.String name) [0x00000] in <d2ff0ec32ae74bb091b2c7c87705ee3b>:0 
  at LaunchInitializer.Update () [0x00000] in <ad882e55d8ac49379773540ee16f428f>:0 
Build: U48-568201-VD

 

Edited by Yalokin
typo
Link to comment
Share on other sites

On 10/13/2023 at 10:56 PM, Yalokin said:

A crash with version 0.12.3 (without any other mod). Happens when I start the game, only option is to quit and disable the mod.

 

Exception while loading mod PeterHan.FastTrack at C:/Users/XXXX/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.GetRequirementDescriptors_Patch::Prefix(System.Collections.Generic.List`1<Descriptor> descriptors, System.Boolean indent, System.Collections.Generic.List`1& __result)
  at HarmonyLib.PatchClassProcessor.PatchWithAttributes (System.Reflection.MethodBase& lastOriginal) [0x00047] in <2f5aaaa000594d07b9998f4cff1e9662>:0 
  at HarmonyLib.PatchClassProcessor.Patch () [0x00057] in <2f5aaaa000594d07b9998f4cff1e9662>:0 
   --- End of inner exception stack trace ---
  at HarmonyLib.PatchClassProcessor.ReportException (System.Exception exception, System.Reflection.MethodBase original) [0x00127] in <2f5aaaa000594d07b9998f4cff1e9662>:0 
  at HarmonyLib.PatchClassProcessor.Patch () [0x00082] in <2f5aaaa000594d07b9998f4cff1e9662>:0 
  at HarmonyLib.Harmony.<PatchAll>b__10_0 (System.Type type) [0x00007] in <2f5aaaa000594d07b9998f4cff1e9662>:0 
  at HarmonyLib.CollectionExtensions.Do[T] (System.Collections.Generic.IEnumerable`1[T] sequence, System.Action`1[T] action) [0x00014] in <2f5aaaa000594d07b9998f4cff1e9662>:0 
  at HarmonyLib.Harmony.PatchAll (System.Reflection.Assembly assembly) [0x00006] in <2f5aaaa000594d07b9998f4cff1e9662>:0 
  at KMod.UserMod2.OnLoad (HarmonyLib.Harmony harmony) [0x00007] in <ad882e55d8ac49379773540ee16f428f>:0 
  at PeterHan.FastTrack.FastTrackMod.OnLoad (HarmonyLib.Harmony harmony) [0x00000] in <f7b10c126701469288f805e42bf76df5>:0 
  at KMod.DLLLoader.LoadDLLs (KMod.Mod ownerMod, System.String harmonyId, System.String path, System.Boolean isDev) [0x00222] in <ad882e55d8ac49379773540ee16f428f>: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 <d2ff0ec32ae74bb091b2c7c87705ee3b>:0 
  at DebugUtil.LogErrorArgs (UnityEngine.Object context, System.Object[] objs) [0x00000] in <d2ff0ec32ae74bb091b2c7c87705ee3b>:0 
  at DebugUtil.LogException (UnityEngine.Object context, System.String errorMessage, System.Exception e) [0x00000] in <d2ff0ec32ae74bb091b2c7c87705ee3b>:0 
  at KMod.DLLLoader.LoadDLLs (KMod.Mod ownerMod, System.String harmonyId, System.String path, System.Boolean isDev) [0x00000] in <ad882e55d8ac49379773540ee16f428f>:0 
  at KMod.Mod.Load (KMod.Content content) [0x00000] in <ad882e55d8ac49379773540ee16f428f>:0 
  at KMod.Manager.Load (KMod.Content content) [0x00000] in <ad882e55d8ac49379773540ee16f428f>:0 
  at Global.Awake () [0x00000] in <ad882e55d8ac49379773540ee16f428f>: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 <d2ff0ec32ae74bb091b2c7c87705ee3b>:0 
  at Util.KInstantiate (UnityEngine.GameObject original, UnityEngine.GameObject parent, System.String name) [0x00000] in <d2ff0ec32ae74bb091b2c7c87705ee3b>:0 
  at LaunchInitializer.Update () [0x00000] in <ad882e55d8ac49379773540ee16f428f>:0 
Build: U48-568201-VD

 

Fast Track's version must be exactly matched to the running game version. For the previous update branch U48-568201, you would need to use version 0.12.2.

As Fast Track is still in beta due to the rapid pace of Klei continuing to update the base game, it currently does not support any previous or public testing branches. If Fast Track is important to you, consider staying on the current release branch.

Link to comment
Share on other sites

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
 Share

×
  • Create New...