View Issue Details

IDProjectCategoryLast Update
0025455AI War 2Gameplay IssueAug 4, 2021 10:03 pm
ReporterBadgerBadger Assigned ToChris_McElligottPark  
Severityminor 
Status resolvedResolutionfixed 
Product VersionBeta 3.500 Data Integrity And Game Tech Upgrades 
Fixed in VersionBeta 3.503 Multiplayer Sound 
Summary0025455: MP client errors in most recent beta
DescriptionFrom the client
Lots of errors like these, with various systems and ship names
7/31/2021 7:57:11 PM 3.500 CLIENT Could not find EntitySystem with name of 'GraviticCannon' in parent 'AutocannonMinipod'. Are you missing a mod?
  at System.Environment.get_StackTrace () [0x00000] in <695d1cc93cca45069c528c15c9fdd749>:0
  at Arcen.Universal.ArcenDebugging.ArcenLog_InnerOnMainThreadOnly (System.String Message, Arcen.Universal.DebugLogDestination Destination, System.Boolean IncludeStackTrace, Arcen.Universal.Verbosity Verbosity, System.DateTime Timestamp) [0x00000] in <7c60d8758d89448f882ab477287609a2>:0
  at Arcen.Universal.ArcenDebugging.ArcenDebugLog (System.String Message, Arcen.Universal.Verbosity Verbosity) [0x00000] in <7c60d8758d89448f882ab477287609a2>:0
  at Arcen.AIW2.Core.EntitySystem.DeserializeInto (Arcen.AIW2.Core.EntitySystem resultOrNull, Arcen.AIW2.Core.GameEntity_Squad ParentEntity, Arcen.Universal.ArcenDeserializationBuffer Buffer, System.Boolean& WasAbleToFindType, System.Boolean IsLoadingTemplate) [0x00000] in <31d1309d96ce4061834d6a0a68883198>:0
  at Arcen.AIW2.Core.GameEntity_Squad.DeserializedIntoSelf (System.Int32 primaryKeyID, Arcen.AIW2.Core.GameEntityTypeData typeData, Arcen.AIW2.Core.Planet NewPlanet, Arcen.Universal.ArcenDeserializationBuffer Buffer, System.Boolean HideErrors, System.Boolean IsLoadingTemplate, Arcen.Universal.SerializationCommandType SerializationCmdType, Arcen.AIW2.Core.PlanetFaction NewPlanetFaction) [0x00000] in <31d1309d96ce4061834d6a0a68883198>:0
  at Arcen.AIW2.Core.GameEntity_Squad.FinishDeserializeFrom (System.Int32 primaryKeyID, Arcen.AIW2.Core.GameEntityTypeData typeData, Arcen.AIW2.Core.Planet Planet, Arcen.AIW2.Core.PlanetFaction Faction, Arcen.Universal.ArcenDeserializationBuffer Buffer, System.Boolean HideErrors, System.Boolean IsLoadingTemplate, Arcen.Universal.SerializationCommandType SerializationCmdType) [0x00000] in <31d1309d96ce4061834d6a0a68883198>:0
  at Arcen.AIW2.Core.GameEntity_Squad.DeserializeFromForNetworkSync (System.Int32 PrimaryKeyID, Arcen.AIW2.Core.Planet Planet, Arcen.AIW2.Core.PlanetFaction Faction, Arcen.AIW2.Core.GameEntityTypeData typeData, Arcen.Universal.ArcenDeserializationBuffer Buffer, System.Boolean HideErrors, Arcen.Universal.SerializationCommandType SerializationCmdType, System.Boolean& HadCatastrophicFail) [0x00000] in <31d1309d96ce4061834d6a0a68883198>:0


7/31/2021 8:33:31 PM 3.500 CLIENT DELAYED25: Exception in AI.DoOnAnyDeathLogic stage 0
System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
  at System.ThrowHelper.ThrowArgumentOutOfRangeException (System.ExceptionArgument argument, System.ExceptionResource resource) [0x00029] in <695d1cc93cca45069c528c15c9fdd749>:0
  at System.ThrowHelper.ThrowArgumentOutOfRangeException () [0x00000] in <695d1cc93cca45069c528c15c9fdd749>:0
  at Arcen.AIW2.External.ExoGalacticAttackManager.GetRandomHumanHomeCommandStation (Arcen.AIW2.Core.ArcenSimContext Context) [0x00023] in <a8a42ed105934a93936beb10c4b203db>:0
  at Arcen.AIW2.External.BaseAIFaction.DoOnAnyDeathLogic (Arcen.AIW2.Core.GameEntity_Squad entity, Arcen.AIW2.Core.DamageSource Damage, Arcen.AIW2.Core.EntitySystem FiringSystemOrNull, Arcen.AIW2.Core.ArcenSimContext Context) [0x00150] in <a8a42ed105934a93936beb10c4b203db>:0
  at System.Environment.get_StackTrace () [0x00000] in <695d1cc93cca45069c528c15c9fdd749>:0
  at Arcen.Universal.ArcenDebugging.ArcenDebugLog (System.String Message, Arcen.Universal.Verbosity Verbosity) [0x00000] in <7c60d8758d89448f882ab477287609a2>:0
  at Arcen.AIW2.External.BaseAIFaction.DoOnAnyDeathLogic (Arcen.AIW2.Core.GameEntity_Squad entity, Arcen.AIW2.Core.DamageSource Damage, Arcen.AIW2.Core.EntitySystem FiringSystemOrNull, Arcen.AIW2.Core.ArcenSimContext Context) [0x00000] in <a8a42ed105934a93936beb10c4b203db>:0
  at Arcen.AIW2.Core.Faction.Safe_DoOnAnyDeathLogic (Arcen.AIW2.Core.GameEntity_Squad entity, Arcen.AIW2.Core.DamageSource Damage, Arcen.AIW2.Core.EntitySystem FiringSystemOrNull, Arcen.AIW2.Core.ArcenSimContext Context) [0x00000] in <31d1309d96ce4061834d6a0a68883198>:0
  at Arcen.AIW2.External.BaseScenario.DoOnAnyDeathLogic_AfterFullDeathOrPartOfStackDeath (System.Boolean IsFromOnlyPartOfStackDying, Arcen.AIW2.Core.GameEntity_Squad entity, Arcen.AIW2.Core.DamageSource Damage, Arcen.AIW2.Core.EntitySystem FiringSystemOrNull, System.Int32 numExtraStacksKilled, Arcen.AIW2.Core.ArcenSimContext Context) [0x00000] in <a8a42ed105934a93936beb10c4b203db>:0
  at Arcen.AIW2.Core.GameEntity_Squad.DoOnAnyDeathInCombatLogic_AfterFullDeathOrPartOfStackDeath (System.Boolean IsFromOnlyPartOfStackDying, Arcen.AIW2.Core.DamageSource Damage, Arcen.AIW2.Core.EntitySystem FiringSystemOrNull, System.Int32 numStacksKilled, Arcen.AIW2.Core.ArcenSimContext Context) [0x00000] in <31d1309d96ce4061834d6a0a68883198>:0
  at Arcen.AIW2.Core.GameEntity_Squad.DoOnDeathInCombatLogic_OnlyAferFullStackDeath (Arcen.AIW2.Core.EntitySystem FiringSystemOrNull, Arcen.AIW2.Core.DamageSource Damage, System.Int32 numStacksKilled, Arcen.AIW2.Core.ArcenSimContext Context) [0x00000] in <31d1309d96ce4061834d6a0a68883198>:0
  at Arcen.AIW2.Core.GameEntity_Squad.DoOnDestructionLogic (System.Boolean PreventReversionToNeutral, Arcen.AIW2.Core.DamageSource Damage, Arcen.AIW2.Core.EntitySystem FiringSystemOrNull, System.Boolean wasAlive, System.Int32 numStacksKilled, Arcen.AIW2.Core.ArcenSimContext Context) [0x00000] in <31d1309d96ce4061834d6a0a68883198>:0
  at Arcen.AIW2.Core.GameEntity_Squad.TakeDamageDirectly (System.Int32 DamageAmount, Arcen.AIW2.Core.EntitySystem FiringSystemOrNull, Arcen.AIW2.Core.IShotHitSource ShotSourceThatHitOrNullOnlyUsedForKnockback, Arcen.AIW2.Core.DamageSource Damage, System.Boolean PreventReversionToNeutral, System.Boolean HonorFiniteHitCountAOE, System.Int32 MaxStacksAllowedToKill, System.Boolean OnlyDamageShieldNotHull, System.Int32& ActualDamageDone, System.Int32& DamageAbortCode, Arcen.AIW2.Core.ArcenSimContext Context, Arcen.Universal.ArcenCharacterBuffer traceBuffer) [0x00000] in <31d1309d96ce4061834d6a0a68883198>:0


7/31/2021 8:23:52 PM 3.500 CLIENT DELAYED22: CheckForShotAOEDetonation error at debugStage 2800: System.DivideByZeroException: Attempted to divide by zero.
  at Arcen.Universal.FInt.op_Division (Arcen.Universal.FInt one, System.Int32 divisor) [0x00001] in <7c60d8758d89448f882ab477287609a2>:0
  at Arcen.AIW2.External.EntitySimLogicImplementation.CheckForShotAOEDetonation (Arcen.AIW2.Core.IShotHitSource ShotHitNeverNull, Arcen.AIW2.Core.GameEntity_Squad TargetOrNull, Arcen.AIW2.Core.EntitySystem OriginSystemForShotOrNull, Arcen.AIW2.Core.ArcenSimContext Context) [0x00393] in <a8a42ed105934a93936beb10c4b203db>:0
7/31/2021 8:24:49 PM 3.500 CLIENT Updating missions for Murdoch command issues by The Empire add? True forOffense? True. Updating 2 missions.
7/31/2021 8:25:23 PM 3.500 CLIENT DELAYED23: Raid Engine 0001916 AI Sentinels on Gela is sending a wave against AI Sentinels

7/31/2021 8:18:19 PM 3.500 SINGLEP DELAYED21: Human DoFactionStepLogic_Stage1 error at debugStage 15500: System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
  at System.ThrowHelper.ThrowArgumentOutOfRangeException (System.ExceptionArgument argument, System.ExceptionResource resource) [0x00029] in <695d1cc93cca45069c528c15c9fdd749>:0
  at System.ThrowHelper.ThrowArgumentOutOfRangeException () [0x00000] in <695d1cc93cca45069c528c15c9fdd749>:0
  at Arcen.AIW2.Core.Planet.GetMaxGatheredHacking () [0x000a2] in <31d1309d96ce4061834d6a0a68883198>:0
  at Arcen.AIW2.Core.Planet.GetHackingLeftForHumans () [0x00001] in <31d1309d96ce4061834d6a0a68883198>:0
  at Arcen.AIW2.Core.Faction+<>c__DisplayClass256_1.<DoFactionStepLogic_Stage1_SingleThread>b__8 (Arcen.AIW2.Core.GameEntity_Squad producer) [0x00097] in <31d1309d96ce4061834d6a0a68883198>:0
  at Arcen.AIW2.Core.EntityCollection.DoForEntities (Arcen.AIW2.Core.EntityRollupType Rollup, Arcen.AIW2.Core.GameEntity_Squad+ProcessorDelegate Processor) [0x00068] in <31d1309d96ce4061834d6a0a68883198>:0
  at Arcen.AIW2.Core.Faction.DoForEntities (Arcen.AIW2.Core.EntityRollupType Rollup, Arcen.AIW2.Core.GameEntity_Squad+ProcessorDelegate Processor) [0x00033] in <31d1309d96ce4061834d6a0a68883198>:0
  at Arcen.AIW2.Core.Faction.DoFactionStepLogic_Stage1_SingleThread (Arcen.AIW2.Core.ArcenSimContext Context) [0x006d6] in <31d1309d96ce4061834d6a0a68883198>:0
TagsNo tags attached.

Relationships

related to 0025457 resolvedChris_McElligottPark MP Host issues in most recent beta 

Activities

Chris_McElligottPark

Aug 4, 2021 9:56 pm

administrator   ~0062592

The GraviticCanon thing and similar were fixed a couple of betas back.

The AI OnDeath logic bug is now fixed and then some:

* Sound effects now have a random seed passed into them for deterministic playback, rather than it being truly random.
** It's still random wherever the deterministic seed is calculated, but in multiplayer that means the host so everyone hears the same thing.

* A variety of methods that involve generating voice lines or doing other after-death stuff now only happens on the multiplayer host.
** This keeps the client from generating various kinds of errors from only having part of the data, and from playing (or missing) voice lines.

* There is now a SoundPropagation that gets specified for every sound effect. There are those that just play locally based on context (battle sounds, mainly), and then those that are played in a host-directed manner (aka voice lines, etc).
** This latter category is a new style of data for the host to pass to the client, but it's one of those things where the host will always calculate it correctly and the client often won't, so it's better to just pass it over.

* People have complained for some time that there could be odd delays in sound processing if there was a lot going on. With that in mind, we have converted the central collections that hold those sorts of things into concurrent collection types that work across threads better.
** It's entirely possible -- but not a definite thing -- that these were having some issues for some people as-described because of multiple threads queueing sounds at once and the non-threadsafe collections not handling it properly.

* Fixed a bug that has been present sinece (cough) April 8th, 2018 where some sound effects that were supposed to play in a delayed fashion would play REALLY delayed, or maybe not at all.
** The root of this was a boolean inversion. My first part of the code says "hey don't play this until at least half a second has passed, okay?" My second part of the code would reply "No problem. I'll play it only in the next half second, or never."
** This caused various forms of issues, but we don't use enough delayed sound effects for it to have been caught prior to now. I only found it today because I was rewriting the code to work with concurrent collections to try to bypass what I thought was the problem (likely it was PART of the problem).

* If you are suspicious that there is still a backlog building up, there is now a display in the escape menu down at the bottom of the memory profiling section that says "XX Queued Sounds"
** If that number is higher than 10, it will be in red as a warning. It should not stay at any large number for very long or something may be wrong.

* We have a new NetworkSoundPlaybackRequest that can handle delayed and immediate style requests, and which network hosts pass to clients as well as themselves.
** This is a case where we want the experience on the client and host to match as closely as possible, so if audio is dropping out the host will also know about it.
** We have various data that the server "fast blasts" to clients, so for this we are "omni blasting" to clients and the self.
** This is absolutely completely untested, but only affects multiplayer. We'll test it tomorrow hopefully, but since this is the beta branch you get first crack at it if you want.
*** If the AI ever taunts both the client and the host, you know it's working. Same if there's ever a warning about science exhausted at a planet on the client and host.

* Added a new IsValidForCondensedFormat() string extension, and are using it to check if the SFXItem name is valid for multiplayer use or not.
** Right now they all should be, but this keeps us from having nasty surprises.

* Split up the fast blast and omni blast code into their own files for easier organization.

* Added some handy overloads on our custom serializer to make it very slightly easier to use.

Chris_McElligottPark

Aug 4, 2021 10:00 pm

administrator   ~0062593

Really the nail in that second item:

* GetRandomHumanHomeCommandStation() will now return null if it has no entries to find, versus throwing an exception. This is relevant for post-loss in single player, and could be useful in general in the future in various ways.

Chris_McElligottPark

Aug 4, 2021 10:02 pm

administrator   ~0062594

"CheckForShotAOEDetonation error at debugStage 2800" no longer exists thanks to SirLimbo adding shot compression. If it's still broken, it's broken in a new way.

Chris_McElligottPark

Aug 4, 2021 10:03 pm

administrator   ~0062595

I also fixed GetMaxGatheredHacking() a release or so ago, so that's the last of them from this report!

Thanks!!

Issue History

Date Modified Username Field Change
Aug 1, 2021 8:18 pm BadgerBadger New Issue
Aug 1, 2021 8:18 pm BadgerBadger Status new => assigned
Aug 1, 2021 8:18 pm BadgerBadger Assigned To => Chris_McElligottPark
Aug 1, 2021 8:21 pm BadgerBadger Relationship added related to 0025457
Aug 4, 2021 9:56 pm Chris_McElligottPark Note Added: 0062592
Aug 4, 2021 10:00 pm Chris_McElligottPark Note Added: 0062593
Aug 4, 2021 10:02 pm Chris_McElligottPark Note Added: 0062594
Aug 4, 2021 10:03 pm Chris_McElligottPark Status assigned => resolved
Aug 4, 2021 10:03 pm Chris_McElligottPark Resolution open => fixed
Aug 4, 2021 10:03 pm Chris_McElligottPark Fixed in Version => Beta 3.503 Multiplayer Sound
Aug 4, 2021 10:03 pm Chris_McElligottPark Note Added: 0062595