NokiMo
Yui
Yui

patreon


[Update] Dark Souls 2: Seamless Co-op - Stability improvements and initial synchronisation

Hi everyone

Development and testing continues on seamless co-op for Dark Souls II. In this post I'll discuss what I've been working on this past week.

Player Respawning

In a previous post I briefly detailed the work and functionality of respawning players in the mod.

In other seamless co-op mods, connected players remains persistent throughout the game play session - When remote players and "respawn" they usually just get teleported back to the bonfire and have their character death flags reset and health regenerated.

Dark Souls II is, of course, special and there is no intrinsic function for respawning a dead character that I could find. Enemies that do come back to life infinitely usually do so through the EnemyGeneratorCtrl class which can freely create and delete enemy character instances without too much overhead.

As a result of this I had to make a workaround where a new character is created every time a remote player dies. This worked.. kind of - however in the event of a full session, one or more players dying could cause issues where the old character instance was still lingering afterwards for a few seconds, causing the newly generated character instance to get ignored.

I have rewritten the network player character manager of seamless co-op to instead queue requests for respawning players, flag the death or warping instance to be unloaded and then once certain conditions are met (e.g. fully loaded, no obstructions, old instance deleted, etc.) the new character instance will be created. This appears to have fixed the occasional freeze and crash which was also happening every so often during play testing.

Players still do the summon in animation when they respawn (will be removed)

Initial character & placement synchronisation

A difficult part of any seamless mod development is preservation of enemy states upon a player reloading.

In Dark Souls II specifically, you might notice that save & quitting the game preserves all enemies exactly where they were - in contrast to the other games where you can often get out of a difficult situation by quitting to the title menu to reset their position.

This is a functionality provided by MapSnapDataManager which is a game class which, as it's name suggests, takes a snapshot of the map you're in (and some adjacent maps depending on where you are). 52 bytes of data regarding each enemy in the area is taken, and upon reloading this information will be used to place the enemies back where they were when you quit to the menu.

When you join a host world, basic information about enemies are sent to the connecting player including:

Your own game's MapSnapDataManager is disabled as a guest player, and you rely solely on the information provided by the host. Where this gets difficult is when either you die in a different map to the host or the host themselves dies.

To fix this, I have entirely disabled resetting of MapSnapDataManager upon dying, meaning that if you die the enemies will remain in their exact position / dead state as if nothing had happened.

This is necessary for seamless development however it will undoubtably make the game much easier as it's possible to just throw yourself carelessly at the enemies over and over again without any worry of them coming back if you die -- This is why I originally added rot and afflictions on death in the other seamless mods to encourage players to use the bonfire and reset the world or accumulate debuffs.

Testing continues

The initial play testing continues. Both minor and severe bugs are being identified and fixed along the way.

Testing is going about as well as expected

As always - thank you for your patience and a huge thank you to all of my supporters <3

Let me know if there are any suggestions for the debuffs / rot acquired on death. This will be a toggle similar to the other mods.

Take care

~ Yui

[Update] Dark Souls 2: Seamless Co-op - Stability improvements and initial synchronisation

Comments

will you still be able to open the shrine of winter with 1 mil soul memory or is it completely gone?

Enki

hi yui! im producing a dark souls stream for ludwig w your co op mods. would love to chat if you can :D disc is @__liza

Liza Wagner

I can test your beta whenever you want buddy lmk if you need tester.. really lookin forward to playin this with friends :D

Anthony

When it comes to rots, i've played with them off for the other seamless mods you made, and DS2 already has the lowering max hp through hallowing, so if including rots again I guess maybe lowering soul acquisition as one? Assuming you're removing soul-memory it shouldn't cause too many issues outside of just regular playthroughs (and encourage people to sit at bonfires). I don't remember the other 3 you had for Elden Ring rots, but that's my 2 cents for those 2 types of downsides. Glancing at other comments, Agility (ADP) reduction would be interesting, I don't think brutal but annoying enough to convince someone to go sit at a grace. Also with enemies permanently dying after so many kills (unless in covenant of champions) i'm curious how that is handled as you mentioned here with players not respawning enemies being an issue. (if one player is in said covenant while the other isn't) because it also makes areas be the next new game cycle of difficulty while in it (if memory serves me right?). Also sorry if you already answered this or if this falls under a simple solution that eludes me. As always thank you for your hard work on this and I look forward to more progress on this.

ThatGuyCole


Related Creators