View Issue Details

IDProjectCategoryLast Update
0023611AI War 2Bug - GameplayNov 30, 2020 7:08 pm
ReporterParadoxSong Assigned ToBadgerBadger  
Status resolvedResolutionfixed 
Product Version2.129 No Shrooms For Ships 
Fixed in Version2.644 So Many Good Things All At Once 
Summary0023611: Nanocaust specifically disappear from the memory of the last Custom Start.
DescriptionThis bug has been standing since the deserialization changes, and was encountered (amongst many worse bugs) when I tried to exit the deserialization beta and return to the main branch. The game has now been reinstalled twice.

All other factions and faction settings are preserved, and the last launch of the game ("test") (Which may show up in the attached logs) specifically tested for this purpose. Errors ReportedByEngine is not included, since it's last entry was 4 months ago.

The factions were all default settings for the player and AI, with the Fallen Spire and Nanocaust added. A second test game was performed without the Fallen Spire, and the nanocaust still disappeared.


TagsNo tags attached.

Activities

Chris_McElligottPark

Aug 29, 2020 3:49 pm

administrator   ~0058257

Most likely we are stripping them out on "purpose" when it loads into the lobby, since we are probably seeing them as a beacon faction. For all of the many many factions that would be present as simply beacons, we have code that strips them out.

For all the others, it sounds like we are properly seeing "that was the real faction, not a beacon version."

For the nanocaust, given that was the first beacon faction, there may be a different variable or something along those lines. So we're probably thinking that it's a beacon faction that was activated, or something to that effect, and stripping it out.

Badger, can you look at the differences between the nanocaust and the others? I don't have enough familiarity to what you did with them to handle it easily, although I did write the auto-add and auto-remove beacon code (or maybe you wrote the auto-add, and I wrote the auto-remove? I don't remember. Auto-add got rewritten at least twice by two of us, I think, and I don't know whose is current now).

BadgerBadger

Sep 1, 2020 1:09 am

manager   ~0058327

Last edited: Sep 1, 2020 1:17 am

This affects nanocausts that must be awakened by the player (ie ImmediateInvasion is not set). The problem is that there's only one field (MustBeAwakenedByPlayer) that's doing double duty. It's applied to all beacon factions (marauders, devourer, nanocaust, etc) and also to each nanocaust that the player requests that isn't set to immediate invasion. During AddDiscoverableFactions() we try to check for all the Non-Player-Requested-Beacon-Factions and clear them out so they don't clutter up the lobby. However, since there's only the one variable then the "player requested but also a beacon faction" Nanocausts are also getting removed even though they should not be.

Proposed solution: add a new field for "MustBeAwakenedByPlayerAndWasRequested" to the ConfigurationForFaction object, set it appropriately, then factor that into AddDIscoverableFactions when we are removing factions that are discoverable but not requested.

As far as I can tell, this problem has existed ever since Discoverable factions were first added.

Since this is not connected to DLC2 I'm passing the buck back to you, Chris ;-)

ParadoxSong

Oct 6, 2020 4:04 pm

reporter   ~0059028

Anything I can provide to help this get addressed, short of learning the codebase? This one's getting to me!

BadgerBadger

Oct 7, 2020 2:24 pm

manager   ~0059068

I think you need to wait for chris on this one.

Chris_McElligottPark

Oct 7, 2020 3:29 pm

administrator   ~0059072

A question: is this basically happening because "it's a beacon faction, but set to immediate invasion?"

If that's the case, then I could just put a call to the faction that says something like "I'm going to remove you as being a beacon faction, so speak now if that's not right." And everything can normally just respond "go ahead." But if the nanocaust is there, and "immediate invasion" is set, then it says "actually no, I was requested."

I'm reluctant to add brand new fields to tackle this, just because then we have more things to keep in sync, and it won't work with existing game data. I'd really like to be able to ask the faction config itself, and have the faction config code tell me "I was asked to be here."

Sounds like the above might be the trigger for how to know the faction was asked to be there? Or am I off base?

BadgerBadger

Oct 7, 2020 4:22 pm

manager   ~0059073

If I recall correctly from when I looked at this, Immediate Invasion nanocaust doesn't have this problem. It's only nanocaust set to non-immediate invasion. The issue is that non-immediate invasion nanocaust looks to the game exactly like a normal beacon faction, since it is exactly that, just with a colour/intensity from the game lobby. There's currently no way to tell the difference. So I see two options.

The First option is to put another flag in the game to say "This was requested explicitly by the player", and the game can then avoid removing those factions. I think it needs to be on the ConfigurationForFaction object since that's the object manipulated by the game lobby, but I could be wrong. This is what I proposed earlier.

The Cecond option is that I'm not convinced that a non-immediate invasion nanocaust option needs to exist. We seed a beacon already, and you can change the colour/intensity in game before you activate the beacon (the reason the non-immediate-invasion option exists like this is because it predates the ability to change faction colour/intensity mid game). So we could just remove it, and leave players with either Immediate Invasion nanocaust (from game lobby) or a nanocaust from the beacon.

This option has the downside of making it impossible to have multiple nanocaust beacons in game.

Chris_McElligottPark

Oct 7, 2020 5:03 pm

administrator   ~0059076

Oh, okay, I see your point. Well, from this standpoint, then, I think that the new field is worth it. It can't help existing games, but should solve the problem for new stuff. We will just have to be careful not to rely ONLY on this new field, or old quickstarts will get borked. I'll name it in a way that makes that clear.

BadgerBadger

Nov 30, 2020 7:08 pm

manager   ~0059808

The Nanocaust can be set to invade at a random time during the game, or immediately. This replaces the old "Non-Immediate Nanocaust are seeded as beacons" paradigm.

If not explicitly requested, the nanocaust will appear in a beacon.

This change means the Nanocaust now works "correctly" in the game lobby.

Also you can request the nanocaust to appear on a player planet. This is a terrible idea unless they are your allies

Issue History

Date Modified Username Field Change
Aug 29, 2020 8:56 am ParadoxSong New Issue
Aug 29, 2020 3:47 pm Chris_McElligottPark Assigned To => BadgerBadger
Aug 29, 2020 3:47 pm Chris_McElligottPark Status new => assigned
Aug 29, 2020 3:49 pm Chris_McElligottPark Note Added: 0058257
Sep 1, 2020 1:09 am BadgerBadger Note Added: 0058327
Sep 1, 2020 1:09 am BadgerBadger Assigned To BadgerBadger => Chris_McElligottPark
Sep 1, 2020 1:09 am BadgerBadger Note Edited: 0058327
Sep 1, 2020 1:12 am BadgerBadger Note Edited: 0058327
Sep 1, 2020 1:12 am BadgerBadger Note Edited: 0058327
Sep 1, 2020 1:16 am BadgerBadger Note Edited: 0058327
Sep 1, 2020 1:17 am BadgerBadger Note Edited: 0058327
Oct 6, 2020 4:04 pm ParadoxSong Note Added: 0059028
Oct 7, 2020 2:24 pm BadgerBadger Note Added: 0059068
Oct 7, 2020 3:29 pm Chris_McElligottPark Note Added: 0059072
Oct 7, 2020 4:22 pm BadgerBadger Note Added: 0059073
Oct 7, 2020 5:03 pm Chris_McElligottPark Note Added: 0059076
Nov 30, 2020 7:08 pm BadgerBadger Assigned To Chris_McElligottPark => BadgerBadger
Nov 30, 2020 7:08 pm BadgerBadger Status assigned => resolved
Nov 30, 2020 7:08 pm BadgerBadger Resolution open => fixed
Nov 30, 2020 7:08 pm BadgerBadger Fixed in Version => 2.644 So Many Good Things All At Once
Nov 30, 2020 7:08 pm BadgerBadger Note Added: 0059808