[1.0] Combat Extended - 1.8.2 CE Melee released (17.11.2019)

Started by NoImageAvailable, June 09, 2017, 04:13:13 PM

Previous topic - Next topic

NoImageAvailable

Quote from: PixelBitZombie on September 12, 2017, 08:24:39 AM
Would love to keep using this mod but I just found out it is what has been causing my extremely long load times, upwards of 20 minutes. Without CE, load times dropped to 6 minutes. I am of course using a lot of mods but for the most part all of them are compatible even with CE.

So this is interesting because I've never had his issue before. I'll see what someone says and check for new versions.

That's not a CE thing, its just how the xpath patches work makes them slow down load times. CE uses a lot of them so it will have a noticeable impact on slower machines but adding a bunch of small mods they will eventually add up to the same result. There is nothing we can do to fix this other than wait for the base game to be fixed.
"The power of friendship destroyed the jellyfish."

PixelBitZombie

#391
Quote from: NoImageAvailable on September 12, 2017, 09:32:44 AM
Quote from: PixelBitZombie on September 12, 2017, 08:24:39 AM
Would love to keep using this mod but I just found out it is what has been causing my extremely long load times, upwards of 20 minutes. Without CE, load times dropped to 6 minutes. I am of course using a lot of mods but for the most part all of them are compatible even with CE.

So this is interesting because I've never had his issue before. I'll see what someone says and check for new versions.

That's not a CE thing, its just how the xpath patches work makes them slow down load times. CE uses a lot of them so it will have a noticeable impact on slower machines but adding a bunch of small mods they will eventually add up to the same result. There is nothing we can do to fix this other than wait for the base game to be fixed.

Yeah I mean I don't got the best machine, but its amazing how long the load times are once CE is enabled. However when you say slow, do you mean HDD, CPU or RAM or even a mixture? Thanks though for letting me know its more or so an actual issue with the Game itself.

Edit: Is there no way to cut back and get rid of useless xpath patches?
"When logic and proportion have fallen sloppy dead
And the White Knight is talking backwards
And the Red Queen's off with her head"


maculator

Yes the loading times can be really long, I'd like to know hwy that is.
With just myn ormal mods it almost loads like vanilla. CE extends it to almost a minute.

NoImageAvailable

Quote from: maculator on September 12, 2017, 02:30:51 PM
Yes the loading times can be really long, I'd like to know hwy that is.
With just myn ormal mods it almost loads like vanilla. CE extends it to almost a minute.

The xpath operation requires a lot of CPU time to find the def because it has to process all loaded XML for every patch. This makes them really slow, even when optimized (you don't even want to know how long loading times were before we discovered the //-thing). Word on the street is A18 has indexing though, so that's going to massively improve xpath performance since you're essentially replacing a search through files with a simple lookup operation.
"The power of friendship destroyed the jellyfish."

maculator

Thats great to hear! Anyways its worth the waiting, I prefer do die quickly instead of having my colonists getting beaten half dead only to then die in hospital with infection. CE makes for good quick fights and alot of action^^

PS: sorry for all those misspelled words above, don't know why I didn't see that...
PPS: The Learning helper files aren't translated in german is someone on to that? I don't want to promise anything but if not, I might - maybe look into it on the weekend.
PPPS: Is it normal that I don't get the Simple sidearms window with CE enabled? The options tell me it (SS) recognises that CE is active and that it'll let CE manage the inventory.

falconne

A question for the developers:

I'm trying to determine if a mod I made recently for friendly fire avoidance will be able to work with this mod. My question is, does CE change the vanilla miss radius for regular ranged weapons (i.e. those without a forced miss radius)? In vanilla, a regular ranged weapon has a miss radius of one tile (i.e. the bullet can travel to the target tile or one of the 8 tiles surrounding it). My mod uses this fact to calculate a fire cone within which pawns are subject to friendly fire. If the miss radius were made dynamic, then my mod would fail to prevent all possible friendly fire scenarios. Does CE keep this default miss radius to 1 tile?

NoImageAvailable

Quote from: falconne on September 14, 2017, 06:02:43 AM
A question for the developers:

I'm trying to determine if a mod I made recently for friendly fire avoidance will be able to work with this mod. My question is, does CE change the vanilla miss radius for regular ranged weapons (i.e. those without a forced miss radius)? In vanilla, a regular ranged weapon has a miss radius of one tile (i.e. the bullet can travel to the target tile or one of the 8 tiles surrounding it). My mod uses this fact to calculate a fire cone within which pawns are subject to friendly fire. If the miss radius were made dynamic, then my mod would fail to prevent all possible friendly fire scenarios. Does CE keep this default miss radius to 1 tile?

CE replaces the vanilla shooting system with its own more or less made from scratch version. We have our own Verb classes and a ProjectileCE class which doesn't inherit from vanilla Projectile. The CE system doesn't rely on RNG To-Hit rolls like vanilla does, instead it uses a combination of various factors to essentially create a cone of fire*. The projectile is then sent on a random trajectory* within that cone and will fly until it collides with something.

If you wanted to make your mod compatible your best bet would probably be to sum up the accuracy factors in the ShotVecReport to get a maximum horizontal deviation angle and project a cone of potential fire from the shooter. Or just leave it at 1 because honestly, most guns won't have deviations of more than 1 tile except at extreme ranges, i.e. when friendly fire is unlikely to begin with and projecting cones is CPU-intensive.

*There is actually a lot more stuff going on here but I don't think Lissajous curves are particularly relevant to your case.
"The power of friendship destroyed the jellyfish."

falconne

Quote from: NoImageAvailable on September 14, 2017, 08:44:19 AM
CE replaces the vanilla shooting system with its own more or less made from scratch version. We have our own Verb classes and a ProjectileCE class which doesn't inherit from vanilla Projectile.

Regarding the 1-tile miss radius, as you said I can probably leave that alone and cover most realistic scenarios.

However the fact that CE uses Verb_LaunchProjectileCE that doesn't inherit from Verse.Verb_LaunchProjectile means my mod won't work, as my mod determines what a projectile weapon is by checking if its associated verb is Verse.Verb_LaunchProjectile. Is there a reason Verb_LaunchProjectileCE inherits from Verse.Verb instead of Verse.Verb_LaunchProjectile? If there were no downside to inheriting from the latter then that would be nice for mods like mine as they would work seamlessly in vanilla and CE.

Kori

Hello and thank you for this great mod, I even gave up my colony to start all over just to play with CE and I don't regret it at all!  :)

I just have one question regarding compatibility:
When you say that CE isn't compatible with any mods that add new animals, does that also count for the Vanilla Animal Overhaul https://ludeon.com/forums/index.php?topic=34173.0 which makes more types of animals available as pack animals? Do pack-versions of animals count as "new" animals?


NoImageAvailable

Quote from: falconne on September 14, 2017, 10:25:56 PM
Is there a reason Verb_LaunchProjectileCE inherits from Verse.Verb instead of Verse.Verb_LaunchProjectile?

It was originally set up this way to prevent the class from inheriting unneeded junk variables and methods from LaunchProjectile. Those have since been moved to Verb so it might be possible to change the inheritance chain, but it would need some testing first to make sure it doesn't trip any vanilla checks for LaunchProjectile it shouldn't.

Quote from: Kori on September 15, 2017, 01:04:57 AM
Do pack-versions of animals count as "new" animals?

No, it should be compatible. Unless it uses def overrides to make its changes, in which case just load CE lower in the load order and it should work.
"The power of friendship destroyed the jellyfish."

falconne

Quote from: NoImageAvailable on September 16, 2017, 03:12:19 AM
It was originally set up this way to prevent the class from inheriting unneeded junk variables and methods from LaunchProjectile. Those have since been moved to Verb so it might be possible to change the inheritance chain, but it would need some testing first to make sure it doesn't trip any vanilla checks for LaunchProjectile it shouldn't.

Fair enough. It would be helpful if changing the chain could be investigated.  In the meantime I'll see if there's a polymorphic way of telling from Verse.Verb if the weapon is a ranged one.

NoImageAvailable

Quote from: falconne on September 16, 2017, 03:39:47 AM
Fair enough. It would be helpful if changing the chain could be investigated.  In the meantime I'll see if there's a polymorphic way of telling from Verse.Verb if the weapon is a ranged one.

Using Verb.verbProps.MeleeRange would get you all ranged verbs regardless of inheritance.
"The power of friendship destroyed the jellyfish."

Kori

Quote from: NoImageAvailable on September 16, 2017, 03:12:19 AM
Quote from: Kori on September 15, 2017, 01:04:57 AM
Do pack-versions of animals count as "new" animals?

No, it should be compatible. Unless it uses def overrides to make its changes, in which case just load CE lower in the load order and it should work.

Thank you! :)

falconne

Quote from: NoImageAvailable on September 16, 2017, 03:44:47 AM
Using Verb.verbProps.MeleeRange would get you all ranged verbs regardless of inheritance.

Good point, thanks.

Kori

I hope you don't mind if I'm asking another question about compatibility.  :D

I want to try the Children And Pregnancy mod https://ludeon.com/forums/index.php?topic=28747.0
and am getting this error:

[HugsLib][ERR] Failed to apply Harmony patches for HugsLib.Children_and_Pregnancy. Exception was: System.Exception: Wrong null argument: br
  at Harmony.ILCopying.MethodBodyReader.<FinalizeILCodes>b__17_4 (Harmony.CodeInstruction codeInstruction) [0x00000] in <filename unknown>:0
  at Harmony.CollectionExtensions.Do[CodeInstruction] (IEnumerable`1 sequence, System.Action`1 action) [0x00000] in <filename unknown>:0
  at Harmony.ILCopying.MethodBodyReader.FinalizeILCodes (System.Collections.Generic.List`1 transpilers, Label endLabel) [0x00000] in <filename unknown>:0
  at Harmony.ILCopying.MethodCopier.Emit (Label endLabel) [0x00000] in <filename unknown>:0
  at Harmony.MethodPatcher.CreatePatchedMethod (System.Reflection.MethodBase original, System.Collections.Generic.List`1 prefixes, System.Collections.Generic.List`1 postfixes, System.Collections.Generic.List`1 transpilers) [0x00000] in <filename unknown>:0
  at Harmony.PatchFunctions.UpdateWrapper (System.Reflection.MethodBase original, Harmony.PatchInfo patchInfo) [0x00000] in <filename unknown>:0
  at Harmony.PatchProcessor.Patch () [0x00000] in <filename unknown>:0
  at Harmony.HarmonyInstance.<PatchAll>b__6_0 (System.Type type) [0x00000] in <filename unknown>:0
  at Harmony.CollectionExtensions.Do[Type] (IEnumerable`1 sequence, System.Action`1 action) [0x00000] in <filename unknown>:0
  at Harmony.HarmonyInstance.PatchAll (System.Reflection.Assembly assembly) [0x00000] in <filename unknown>:0
  at HugsLib.ModBase.ApplyHarmonyPatches () [0x00000] in <filename unknown>:0


Do you think I can just ignore it or will something be broken, and what would be the optimal load order?
I already tried loading it before and after CE and the error is shown in both constellations.