[Update] Dark Souls 2: Seamless Co-op - Player Frame Updates and Bonfire Mechanics
Hi everyone
Development of the mod continues. I plan on releasing a mod announcement video in the next week - not a release video - but just explaining some more information about the mod and it's timeline.
I've made a few advances in the last few days which I'll write more about below:
Player frame updates
Player frame updates refer to the act of updating the player's position and current animation on other player's game clients.
In other games, this is set at 30fps, which means that if you're running your game at 60fps then you can expect to send out an update about your player character every other frame. I usually left it at this in the other seamless co-op mods because there really is no need to do faster updates - with the only exception being Elden Ring where players can move fast enough on their horse to cause some choppy movement on other player's screens.
In Dark Souls II the update rate is a 15fps, you might notice this in the way that players seem a bit floaty when they move because, at 60fps, the game is only receiving an update about the player's location every 4 frames.
As a test, I updated this to 60fps and this made a noticeable impact on the way that the other player's seemed to move on my screen. Overall it does require more data to be sent over the network however this is negligible and I think it's a worthwhile tradeoff for the movement of other players to seem a bit more natural
Bonfire Mechanics
To recap - information regarding bonfires is stored in the game in a strange way. As from a previous post, in the EventBonfireManager class:
There is a list of bonfires (77 in the vanilla game)
The bonfire ID is a 2-byte value, followed by a single byte relating to specific bonfire info
The zeroth bit is whether the bonfire has been lit or not
The remaining bits represent the 'level' of the bonfire (how many bonfire ascetics you have used on it
The next byte following this is the same as the above, but relating to the multiplayer
After this, a pointer containing some more general information - for example whether you can use it to burn bonfire ascetics / the flag ID representing which boss is the 'master' of the bonfire, etc
Using bonfire ascetics will increase the bonfire 'level'. These can be used in multiplayer in seamless (by the host only) and will behave as they should by reloading the specific area into a "NG+" like state as many times as you wish. There will also be a message in seamless alerting players to the increase in area difficulty.
When the game loads the enemies in the area, it will find the associated bonfire linked to that enemy and check the level of the bonfire to see if the enemy needs to be scaled up. The scaling is capped at NG+7.
Bonfire warping - as of testing - is still individual meaning players can teleport freely rather than relying on the host to warp everyone. This may change in the future but for now I have added a message to warping which lets others know where someone has warped to.
Bugfixes
I'm also (continuing) to fix vanilla bugs that players may come across in both the normal game and seamless. This evening I fixed the issue where a certain spider boss could remain alive even after both of their heads were removed.
There is a list of BossParts inside the BossActionCtrl class belonging to the CharacterCtrl instance of the boss. There's a maximum of 4 "parts" a boss can have, and they have their individual health pools.
This specific boss has 2 boss parts (the 2 heads) which have a combined health that exceeds the maximum boss health pool. That being said, it has been known to happen that the heads can sometimes take more damage that the boss or the boss can be healed without the heads being healed as well which will result in an immortal boss and a huge waste of time and effort.
This was also a bug in the initial release of Elden Ring: Nightreign which has this boss included.
In seamless co-op, removing both of the heads will instantly kill the boss regardless of how much HP it has left.
I'll inevitably have to fix more issues as the testing is ongoing.
Expect a video on my YouTube channel to go through some of the details of the mod and explain a bit of how the development of the mod is going some time in the next week.
As always - thank you for your patience and a huge thank you to all of my supporters <3
Take care,
Yui