View Issue Details

IDProjectCategoryLast Update
0024090AI War 2Bug - GameplayNov 11, 2020 4:17 pm
Reportercrawlers Assigned ToChris_McElligottPark  
Severityminor 
Status resolvedResolutionfixed 
Product Version2.629 Ship Cap Hotfix 
Fixed in Version2.630 Arbitrary Icon Inclusion And Weapon Exclusion 
Summary0024090: Mugger frigate has brawler weapon
DescriptionCheck the fleet in Trory, there are 2 muggers there with a brawler weapon. In case it matters, this is for the host in a multiplayer game.
TagsNo tags attached.

Relationships

related to 0024099 resolvedChris_McElligottPark HRS produce Anti-Everyone-Zombies with some of their Ships 

Activities

crawlers

Nov 10, 2020 4:54 pm

reporter  

_2_mugger.save (666,429 bytes)
_2_mugger.savemet (85 bytes)

Ovalcircle

Nov 11, 2020 1:42 am

reporter   ~0059547

A similar situation has been reported on Steam

https://steamcommunity.com/app/573410/discussions/1/2981907749279609020/

Chris_McElligottPark

Nov 11, 2020 9:55 am

administrator   ~0059548

Okay... working through the mugger example with the two on Orford...
11/11/2020 9:37:46 AM Mugger_BallisticCannon from parent Mugger
LimitedOuterXml:<system name="BallisticCannon" display_name="Point Defense" category="Weapon" firing_timing="OnlyInRange" damage_per_shot="400" range="Normal2" shot_speed="Normal" rate_of_fire="High" fires_salvos_sequentially="false" shots_per_salvo="8" shot_type_data="ArmorPiercingShell"></system>
11/11/2020 9:37:46 AM Found existing entry!Mugger_FusionBomb for parent Mugger
Parent: <entity name="Mugger" copy_from="AssaultFrigate" display_name="Mugger Frigate" description="Durable and slow Frigate that has a zombifying Fusion Bomb weapon." hull_points="262500" shield_points="127500" metal_cost="240000" energy_consumption="25000" speed="BelowAverage1" cost_for_ai_to_purchase="1500"><fleet_membership name="UnusualMix" ship_cap_group="Frigate" weight="100" min="1" max="1" /><fleet_membership name="SturdyOffensiveMix" ship_cap_group="Frigate" weight="100" min="1" max="1" /><fleet_membership name="ZombificationMix" ship_cap_group="Frigate" weight="100" min="1" max="1" /><fleet_membership name="ZombificationAntiCounterMix" ship_cap_group="Frigate" weight="100" min="1" max="1" /><fleet_membership name="AddedToFleet" ship_cap_group="Frigate" weight="10" min="1" max="1" /><ai_ship_group_membership name="MuggerParasiticFusionBomber" weight="25" /><ai_ship_group_membership name="ZombifyingStrikecraftAndFrigates" weight="25" /><system name="FusionBomb" damage_per_shot="1700" added_target_evaluator="ZombifyAsPrimary"><death_effect_damage type="Zombification" tier_name="Mugger" /></system></entity>
Child: <system name="FusionBomb" damage_per_shot="1700" added_target_evaluator="ZombifyAsPrimary"><death_effect_damage type="Zombification" tier_name="Mugger" /></system>
11/11/2020 9:37:46 AM Mugger_FusionBomb from parent Mugger
LimitedOuterXml:<system name="FusionBomb" damage_per_shot="1700" added_target_evaluator="ZombifyAsPrimary"><death_effect_damage type="Zombification" tier_name="Mugger" /></system>

Chris_McElligottPark

Nov 11, 2020 9:56 am

administrator   ~0059549

The attached is what I see.

It has the point defense from the parent AssaultFrigate.
And then it has had its fusion bombs altered on itself.
It has all of the combined stuff from both, which was I thought what it was supposed to do.
Were systems previously working differently?
This is not a general xml parsing error. It may be that it's a side effect of me correcting a prior error.
But Puffin is noting that looks correct. This doesn't seem to be the Brawler weapon. Is someone else seeing something different?
unknown.png (213,679 bytes)   
unknown.png (213,679 bytes)   

Chris_McElligottPark

Nov 11, 2020 10:07 am

administrator   ~0059550

Oh, nevermind, I can verify it now.
It's a sometimes-thinig.
Same save:
unknown-2.png (166,567 bytes)   
unknown-2.png (166,567 bytes)   

Chris_McElligottPark

Nov 11, 2020 10:10 am

administrator   ~0059551

11/11/2020 10:05:40 AM Mugger_BallisticCannon from parent Mugger
LimitedOuterXml:<system name="BallisticCannon" display_name="Point Defense" category="Weapon" firing_timing="OnlyInRange" damage_per_shot="400" range="Normal2" shot_speed="Normal" rate_of_fire="High" fires_salvos_sequentially="false" shots_per_salvo="8" shot_type_data="ArmorPiercingShell"></system>
11/11/2020 10:05:40 AM Found existing entry!CloakedMugger_FusionBomb for parent CloakedMugger
Parent: <entity name="CloakedMugger" copy_from="AssaultFrigate" display_name="Cloaked Mugger Frigate" description="Durable and slow Frigate that has a zombifying Fusion Bomb weapon and cloaking." hull_points="175000" shield_points="85000" metal_cost="240000" energy_consumption="25000" speed="BelowAverage1" albedo="0.7"><fleet_membership name="CloakedMix" ship_cap_group="Frigate" weight="100" min="1" max="1" /><fleet_membership name="AddedToFleet" ship_cap_group="Frigate" weight="10" min="1" max="1" /><system name="Cloaker" display_name="Cloaking Device" category="Passive" cloaking_points="2000" cloaking_points_added_per_mark="1000" cloaking_percent_loss_from_firing="0.5"></system><system name="FusionBomb" damage_per_shot="1700" added_target_evaluator="ZombifyAsPrimary"><death_effect_damage type="Zombification" tier_name="Mugger" /></system></entity>
Child: <system name="FusionBomb" damage_per_shot="1700" added_target_evaluator="ZombifyAsPrimary"><death_effect_damage type="Zombification" tier_name="Mugger" /></system>
The imported xml looks correct still.

Chris_McElligottPark

Nov 11, 2020 10:12 am

administrator   ~0059552

Okay, I know what this is -- this is a casualty of the multithreaded parsing of GameEntityTypeData, and the fact that it is the one entity that reaches across table types (to EntittSystemTypeData) during that process. I've always hated that design, but it was never really a problem until the multithreading. Frankly I'm a bit shocked that we've not had this sort of error before now. I simply need to decouple how these things are created and discovered and the problem should go away.

Chris_McElligottPark

Nov 11, 2020 12:58 pm

administrator   ~0059555

Okay, lots of work and this does NOT fix it yet for some reason:

* Added a new ArcenNonTableUniqueStringList class, which we can now use for keeping lists of arbitrary string that we want to serialize.
** We're going to be using this for entity systems.

* EntitySystemTypeDataTable has been removed, and EntitySystemTypeData no longer inherits from ArcenDynamicTableRow.
** This was really old logic, and is the one instance in the codebase of us really not using dynamic table rows properly.
** The result was slow during startup, in the best of times, and more recently it has been actually scrambling up the data for systems between different ships! That latter part may be new in the last few builds, or it might just be more common. Either way, this has needed a shift for a while.
** The EntitySystemTypeData no longer has an InternalName, but instead has InternalName_Original (which is just the raw xml name like FusionBomb), and then an InternalName_Longer (which is the entity type appended in front of it, like "Mugger_FusionBomb").
** The new serialization for these by index uses the shorter name, which just makes savegames a bit smaller. But it doesn't really matter what is used in the longer-term effect, because these are no longer stored in one central lookup. They are now properly full sub-entities of the GameEntityType.

* With this change, shockingly, we have still NOT solved the issue of things like Mugger frigates sometimes getting Brawler weapons. So that's going to need even more investigation.
** This overall change is still worthwhile, as it shrinks future savegames a bit (not ones from prior versions saved in the new build, though), and it also makes loading the initial game program a bit faster and less prone to potential issues... despite still having this particular issue.

TechSY730

Nov 11, 2020 1:20 pm

reporter   ~0059556

For what it is worth, Automated Sentinel Gunboat Drones are not getting an infinite range weapon like the Base Sentinel does. I'm pretty sure they used to.

Chris_McElligottPark

Nov 11, 2020 4:08 pm

administrator   ~0059562

Thank you for this report! It was super frustrating, but incredibly useful to have someone find it so fast. :)

* Fixed a very peculiar issue that only affected a couple of unit in the prior version (in the main game and DLC, anyhow -- more may have been affected in mods) where if there was a unit that had its systems altered on a child, and there were then other co-children, the other children would sometimes get those altered stats and sometimes not. Normally it should just pass to grandchildren and so forth, not to siblings.
** Essentially, the way that we handle partial records is normally very explicit (is_partial_record="true"). And in fact, when we have a partial record like that, we WANT for it to inject itself into any other descendants later.
** But in the case of entity systems, we have this kind of implicit "child partial record" system going on, where you just name the same system in the child as you had in the parent, and make some changes, and those changes then keep going in that lineage.
** What we do NOT want to have happen is the siblings to also pick up those changes, which is what was sometimes happening here because of the funky way that we handle systems and systems alone in the game.
** From looking at the raw data, without mods in play this mostly just affected muggers and brawlers, and a few spider turrets. Most everything else was already consistent properly. But if you play with mods on, you may have seen a lot of other chaos happening beyond these particular ones.

Chris_McElligottPark

Nov 11, 2020 4:17 pm

administrator   ~0059564

@TechSY730, regarding the Automated Sentinel Gunboat Drones, I'm not sure what the deal would be there. If those are part of a mod, then anything is possible. With added siblings, which many of the mods have, you get more and more issues. If that's still an issue in the next version, then a savegame with it being wrong would be useful, in a different ticket. It's not a current-xml-parsing problem. At best it's probably a was-broken-before thing that accidentally worked, if it's not working after this fix.

Issue History

Date Modified Username Field Change
Nov 10, 2020 4:54 pm crawlers New Issue
Nov 10, 2020 4:54 pm crawlers File Added: _2_mugger.save
Nov 10, 2020 4:54 pm crawlers File Added: _2_mugger.savemet
Nov 10, 2020 5:30 pm Chris_McElligottPark Assigned To => Chris_McElligottPark
Nov 10, 2020 5:30 pm Chris_McElligottPark Status new => assigned
Nov 11, 2020 1:42 am Ovalcircle Note Added: 0059547
Nov 11, 2020 9:55 am Chris_McElligottPark Note Added: 0059548
Nov 11, 2020 9:56 am Chris_McElligottPark File Added: unknown.png
Nov 11, 2020 9:56 am Chris_McElligottPark Note Added: 0059549
Nov 11, 2020 10:07 am Chris_McElligottPark File Added: unknown-2.png
Nov 11, 2020 10:07 am Chris_McElligottPark Note Added: 0059550
Nov 11, 2020 10:10 am Chris_McElligottPark Note Added: 0059551
Nov 11, 2020 10:12 am Chris_McElligottPark Note Added: 0059552
Nov 11, 2020 12:58 pm Chris_McElligottPark Note Added: 0059555
Nov 11, 2020 1:20 pm TechSY730 Note Added: 0059556
Nov 11, 2020 3:38 pm BadgerBadger Relationship added related to 0024099
Nov 11, 2020 4:08 pm Chris_McElligottPark Status assigned => resolved
Nov 11, 2020 4:08 pm Chris_McElligottPark Resolution open => fixed
Nov 11, 2020 4:08 pm Chris_McElligottPark Fixed in Version => 2.630 Arbitrary Icon Inclusion And Weapon Exclusion
Nov 11, 2020 4:08 pm Chris_McElligottPark Note Added: 0059562
Nov 11, 2020 4:17 pm Chris_McElligottPark Note Added: 0059564