XaiJu
Yui
Yui

patreon


[Update] Dark Souls 2: Seamless Co-op - Bonfire interactions

Hi everyone!

I finished my exam on Wednesday this week. So now I am available to dedicate more time to the Dark Souls 2 seamless co-op project.

In this post I'm just going to discuss a few more development points in the mod.

Bonfires

I've spent the past few hours today working bonfires into seamless co-op.

As I expected, whereas enabling bonfire use in the other games was easy and required only 2 patches to the game's code, this game had to be a little bit different (and more interesting)...

Similar to the other seamless co-op projects, resting at a bonfire to cause a world reset (i.e respawning enemies and objects) is host based and works two ways depending on who has touched the bonfire:

Dark Souls II handles the "EventBonfireManager" and "EventWindowManager" separately, and both of these classes have their own conditions for whether or not they can be accessed. Once I'd enabled bonfire use online, I had to then activate event window manager - acting as the bonfire menu - as well. In addition to this, several background checks run to see if your session status changes which will kick you out of the menu.

Rather than deal with this fully, I rewrote a large chunk of the bonfire interactions with online activity in mind. The hours I'd spent reverse engineering these two classes made it relatively straightforward to implement and now I'm happy to say that it's working as intended.

I'm still undecided on how to handle separated players - I'm torn between allowing bonfire resting but kicking player's out of any boss fog, or just disabling bonfires when someone is in a boss fight.

I'm happy to mention that bonfires are basically fully working now in multiplayer, and as with all of the previous seamless co-op mods you will receive the items necessary for multiplayer when you sit at a bonfire.

Boss fights

Co-operative play in the Souls games centers heavily around the primary objective being to help a host out to a boss fight, defeat the boss, and then return to your world with some kind of reward.

As seamless re-designs a lot of multiplayer elements and mechanics, you can of course join any player at any point in the game whether they have cleared the boss or not.

Defeating a boss will usually send a player home. In seamless co-op, I ran into a small issue of a timer being set once a boss was defeated (around 60 seconds or so), and then disconnecting all phantoms regardless of join type once that timer was complete.

Finding where that timer was and disabling it was a bit annoying, but in doing so I've found a large switch statement which I've attached a lot of network debugging to.

This part is also complete, you should be able to clear and progress through the game past bosses with no issues.

Respawning players

Dark Souls II has no method by which a player can naturally respawn inside a session without disconnecting and rejoining.

In the other seamless mods, I was able to make use of utility functions designed for the "brawl" game mode in the arena. There is built-in methods by which players can die and respawn without disconnecting and have their network player instances preserved and flags reset.

In seamless co-op for other games, I have a method named "Rapid Re-Entry Helper" by which players who have died can stay in an online session and can still observe events that have happened between their death and respawn (i.e. killing an enemy whilst a dead player is in a loading screen).

I've already made significant progress is respawning players and world objects, but now I just have to put it into practice. I'll have to rework this helper so that it works with Dark Souls II (whereas I could literally just copy-paste it from Elden Ring -> Dark Souls III -> Dark Souls: Remastered).

I've still got a bit of work to go on getting this fully working, but I'm fairly confident I'll have it working by the end of the week.

I'll post another update relatively soon now that progress is speeding up on the mod

As always, thank you for your kind words and support <3

~ Yui

[Update] Dark Souls 2: Seamless Co-op - Bonfire interactions

Comments

Yui, where are you? Where new posts?😭😭😭

Игорь Ротарь

Thank you for your hard work! You have helped me delve into a game series I have always been interested in but has always been somewhat daunting for me. Best of luck on DS2!

Erroneous

Just want to say thank you for all your hard work. I've been able to enjoy all of these games in ways I never thought possible all thanks to the time and effort you have invested. I look forward to playing through DS2 with some of my closest friends without all of the janky PvE mechanics that FromSoft has used over the years.

Jerry Lee Kitt

thanks for all your hardwork. me and my friends are playing through all seamless co-op mods as we speak

Rorb


More Creators