• Content Count

  • Joined

  • Last visited

Community Reputation

21 Excellent

1 Follower

About Heinermann

  • Rank
    Junior Member

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Who are you to gatekeep what I am doing with modding? I should be able to include any third party libraries to assist with my development. It doesn't need to be Node, it can be anything else. I was only testing something here and won't actually be including Node after all, but my mod WILL have other dependencies from NuGet and there is no possible way to do it otherwise (unless you suggest I stupidly include the source codes of all transitive dependencies). Also what do you know about the game's performance? You think running a light thread in the background is going to seriously impact it in any meaningful way? I am well aware of the game's performance bottlenecks, I have profiled it myself. It doesn't even matter because any performance hit tradeoff with this scope is worth it. I really don't need your attitude but I'll consider looking into ILRepack if it's still an issue when I finish everything. However that's not the point. The point is that it is easily fixable with the TL;DR that I wrote above. If ILRepack doesn't work well I'd rather just tell people to preload a second mod which applies the change I mentioned. I think people can manage that much if they want to connect multiple instances of ONI together or send their resources to Factorio, Kerbal Space Program, or other games/servers... --- EDIT: Let's for the sake of ending this here, assume that there are two cases: ILMerging doesn't work on the dependencies and it is infeasible to move them elsewhere such as a subdirectory (or there is a mechanism preventing it). ILMerging works but it just causes it to crash on the main binary because it contains the same IL as the module that crashed before.
  2. TL;DR for Devs The crash occurs in KMod.DLLLoader.LoadDLLs() on a call to Assembly.GetTypes(), it can be resolved by adding a try/catch around the call to GetTypes. Issue Description Including some dependencies with a mod can lead to failure. For example, adding the massive Jering.Javascript.NodeJS or other large frameworks and including all the dependency DLLs with the mod will trigger the following exception (and trigger the crash dialog). Exception while loading mod ClusterioBridge at C:/Users/heine/Documents/Klei/OxygenNotIncluded/mods/Dev/ClusterioBridge. System.Reflection.ReflectionTypeLoadException: Exception of type 'System.Reflection.ReflectionTypeLoadException' was thrown. at (wrapper managed-to-native) System.Reflection.Assembly.GetTypes(System.Reflection.Assembly,bool) at System.Reflection.Assembly.GetTypes () [0x00000] in <695d1cc93cca45069c528c15c9fdd749>:0 at KMod.DLLLoader.LoadDLLs (KMod.Mod ownerMod, System.String harmonyId, System.String path, System.Boolean isDev) [0x0010c] in <b2059d57da244ebc9fb8d55e7bbaa6c7>: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 <3366109ff608488f8317d0b43357f1ba>:0 at DebugUtil.LogErrorArgs (UnityEngine.Object context, System.Object[] objs) [0x00000] in <3366109ff608488f8317d0b43357f1ba>:0 at DebugUtil.LogException (UnityEngine.Object context, System.String errorMessage, System.Exception e) [0x00000] in <3366109ff608488f8317d0b43357f1ba>:0 at KMod.DLLLoader.LoadDLLs (KMod.Mod ownerMod, System.String harmonyId, System.String path, System.Boolean isDev) [0x00000] in <b2059d57da244ebc9fb8d55e7bbaa6c7>:0 at KMod.Mod.Load (KMod.Content content) [0x00000] in <b2059d57da244ebc9fb8d55e7bbaa6c7>:0 at KMod.Manager.Load (KMod.Content content) [0x00000] in <b2059d57da244ebc9fb8d55e7bbaa6c7>:0 at Global.Awake () [0x00000] in <b2059d57da244ebc9fb8d55e7bbaa6c7>: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 <3366109ff608488f8317d0b43357f1ba>:0 at Util.KInstantiate (UnityEngine.GameObject original, UnityEngine.GameObject parent, System.String name) [0x00000] in <3366109ff608488f8317d0b43357f1ba>:0 at LaunchInitializer.Update () [0x00000] in <b2059d57da244ebc9fb8d55e7bbaa6c7>:0 Build: U42-509629-SD I have worked around the issue by creating a separate mod to patch the ONI code before loading the larger mod.
  3. The Turbulence node in biome noise files does not work and will crash the game. I discovered the reason was due to faulty code in ONI. In ProcGen.Noise.Transformer.CreateModule(), it has logic for Turbulence but is missing a return statement (and instead falls back to returning a Displace transformer). This then fails with a NullReferenceException because it tries to cast the erroneous Displace to a Turbulence instance (because the transformerType is Turbulence). Attached files: Crash log The biome noise file I was testing Image showing the biome noise graph EDIT: For anyone running into this, the Displace node acts similar to Turbulence, and I was able to switch it out for my use case. output_log.txt DarkCave.yaml
  4. This is still happening in BUILD: AP-420700 Log attached but I don't see anything notable aside from the following: The referenced script on this Behaviour (Game Object '<null>') is missing! (Filename: Line: 294) The referenced script on this Behaviour (Game Object 'CrewOverviewPanels') is missing! (Filename: Line: 294) The referenced script on this Behaviour (Game Object 'CrewOverviewPanels') is missing! (Filename: Line: 294) [20:04:02.114] [1] [INFO] WattsonMessage OnActivate EDIT: Worth noting that I uninstalled, deleted all mods, and started from fresh and this still occurs. OS: Windows 10 Pro (64bit); Version 2004; OS build 19041.508; Windows Feature Experience Pack 120.2212.31.0 output_log.txt
  5. I think that's a general issue even with different things, I agree they should come up with a solution for it.
  6. I disagree with this assessment because critters are always different individual objects, and also because it would break my mod (renaming critters).
  7. Very minor detail, but when you hover over a critter in the world, it has the critter type but also a quantity unit i.e. "Hatch x 1", even though critters are not stackable quantities. My expectation would be that it shows "Hatch", not "Hatch x 1".
  8. The UI locks up (can't scroll around) if you set a duplicant name to an empty string. When this happens you are unable to click the rename button again, and you are unable to scroll or zoom the screen even if you deselect the duplicant. The workaround is to deselect the duplicant, reselect it, and then click the rename button again and press enter to finally restore functionality. This is probably because the coroutine "PostOnEndEditRoutine" and OnNameChanged callback is not called when the string is empty.
  9. The button to edit the name of a storage bin has the tooltip "Give this Duplicant a new name". Since it is not a Duplicant, the tooltip doesn't make much sense in this case.
  10. I've observed Pips try grabbing seeds from storage bins, and I ended up with this issue as well.
  11. Context Making a mod that causes items to float in liquid. Just thought you could use a heads up on this logic error. Note: Just want to be extra clear that this is a bug with the vanilla game, not a mod. Bug It's very minor but potentially difficult to find. The issue is with Grid.IsVisiblyInLiquid - at least in the disassembly, we have this snippet if the cell above is not a liquid: float num2 = Mass[num]; float num3 = (float)(int)pos.y - pos.y; if (num2 / 1000f <= num3) { return true; } The problem is when taking the precision out of pos, we're left with a negative number, so this condition becomes impossible to fulfill. I think the purpose of this was to check how much of a fraction the mass of the tile was liquid, and return true if it is below that fraction. Illustration: pos.y = 58.918 (float)(int)pos.y - pos.y = (float)(int)58.918 - 58.918 = 58 - 58.918 = -0.918 Sample values logged through a copy of this function in gravity simulation: y: 178.823, num3: -0.823 y: 173.825, num3: -0.825 y: 173.930, num3: -0.930 y: 173.884, num3: -0.884 y: 173.885, num3: -0.885 y: 230.935, num3: -0.935 y: 173.824, num3: -0.824 y: 58.918, num3: -0.918 Fix I believe the ideal logic would be float num3 = pos.y - Mathf.Floor(pos.y); EDIT: After testing, the comparison should be negated, it should be greater than, not less than or equals, since we want to see if the quantity of water is greater than the position we're checking.
  12. In that context it looks like the word should have been "nasty", not "nest".
  13. Here are the possible packages as of this posting (will probably change in future updates) Cycle 0 - Sandstone, 1000 kg - Dirt, 500 kg - Algae, 500 kg - Oxylite, 100 kg - Water, 2000 kg - Sand, 3000 kg - Coal, 3000 kg - Fertilizer, 3000 kg - Briar Seed, 3 - Mirth Leaf Seed, 3 - Joya Seed, 3 - Fungal Spore, 1 - Blossom Seed, 2 - Nutrient Bar, 5 - Muckroot, 6 - Shine Nymph, 1 - Hatchling, 1 - Puftlet, 1 - Shine Nymph Egg, 3 - Hatchling Egg, 3 - Puftlet Egg, 3 - Vitamin Chews, 3 - Snazzy Suit, 1 Cycle 6 - Omelette, 3 Cycle 12 - Ice, 4000 kg - Copper Ore, 2000 kg, (discovered) - Gold Amalgam, 2000 kg, (discovered) - Bristle Berry, 3 - Larva Egg, 3 Cycle 24 - Copper, 400 kg, (discovered) - Iron, 400 kg, (discovered) - Wort Seed, 1 - Fried Mushroom, 3 - Drecklet, 1 - Pacu, 8 - Shove Vole Egg, 3 - Drecklet Egg, 3 Cycle 48 - Lime, 150 kg, (discovered) - Plastic, 500 kg, (discovered) - Glass, 200 kg, (discovered) - Steel, 100 kg, (discovered) - Barbeque, 3 - Vole Pup, 1 - Slickster Larva, 1
  14. Before this patch I never noticed any invisible dupes, now they are almost always invisible.