TLeonardUK / ds3os

Dark Souls - Open Server
MIT License
692 stars 113 forks source link

[Enhancement] Creating a True Co op Mode #2

Closed Jeyyu closed 2 years ago

Jeyyu commented 2 years ago

Feature:

-Disabling the boss needs to be alive area check for summoning

-Enable all area Co op (except maybe fire-link shrine)

-Once a co op player dies, instead of disconnecting he will re-spawn after some period of time(interval can be set) and will not leave the Host world

-disable need for ember to summon


This is just an example of how this could work, I cannot say for sure if these settings are reachable without client modification.

Maybe something like a True Invasion mode can also be accomplished with similar features.

TLeonardUK commented 2 years ago

A lot of these need work on the client unfortunately and are more in the realm of mods.

The summoning works basically by the user creating a sign on the server, the server distributing the sign to other users, and then passing a message back to the origin user if another player tries to interact with it.

When the user enters an area that doesn't support coop they tell the server to remove their summon sign. The server also can't "force" a summon as the client does validation that its expecting a summon and rejects the summon if its not.

I'm not super familiar with whats in the regulation file, but that is potentially the biggest avenue for changes like this,. Having the server distribute a modified regulation file that contains whatever client param changes are wanted.

Unfortunately distributing the (modified) regulation file also treads in very tenuous territory as it opens up the project to distributing copyrighted content, which will lead to a probably-justified DMCA.

What I think is probably best is to have the user installs mods as per normal and have the launcher post which mods the user is using to the server, onces the client connects they are only matched with similar players.

FluffyRopeBunny commented 2 years ago

A lot of these need work on the client unfortunately and are more in the realm of mods.

The summoning works basically by the user creating a sign on the server, the server distributing the sign to other users, and then passing a message back to the origin user if another player tries to interact with it.

When the user enters an area that doesn't support coop they tell the server to remove their summon sign. The server also can't "force" a summon as the client does validation that its expecting a summon and rejects the summon if its not.

I'm not super familiar with whats in the regulation file, but that is potentially the biggest avenue for changes like this,. Having the server distribute a modified regulation file that contains whatever client param changes are wanted.

Unfortunately distributing the (modified) regulation file also treads in very tenuous territory as it opens up the project to distributing copyrighted content, which will lead to a probably-justified DMCA.

What I think is probably best is to have the user installs mods as per normal and have the launcher post which mods the user is using to the server, onces the client connects they are only matched with similar players.

ik this is pretty old but would it be possible that if a phantom dies, they just get teleported to a bonfire? maybug if they reach like 1hp they tp to the spot they were summoned and lose al teh souls they earned? same can be done with host?

Grammernatzi commented 2 years ago

A lot of these need work on the client unfortunately and are more in the realm of mods. The summoning works basically by the user creating a sign on the server, the server distributing the sign to other users, and then passing a message back to the origin user if another player tries to interact with it. When the user enters an area that doesn't support coop they tell the server to remove their summon sign. The server also can't "force" a summon as the client does validation that its expecting a summon and rejects the summon if its not. I'm not super familiar with whats in the regulation file, but that is potentially the biggest avenue for changes like this,. Having the server distribute a modified regulation file that contains whatever client param changes are wanted. Unfortunately distributing the (modified) regulation file also treads in very tenuous territory as it opens up the project to distributing copyrighted content, which will lead to a probably-justified DMCA. What I think is probably best is to have the user installs mods as per normal and have the launcher post which mods the user is using to the server, onces the client connects they are only matched with similar players.

ik this is pretty old but would it be possible that if a phantom dies, they just get teleported to a bonfire? maybug if they reach like 1hp they tp to the spot they were summoned and lose al teh souls they earned? same can be done with host?

I feel like that's something that would have to be done in a client side mod. I doubt it could be done on the server side.

SirGouki commented 2 years ago

Everything about multiplayer summoning that would allow any of this to happen would require client mods, as the server only controls displaying the signs, and the matchmaking aspects of multiplayer. The way I understand it, is that the game only shows you the lowest latency direct connection available signs first, then the lowest latency signs that can connect over the relay servers (which I'm sure is steams relay servers, but FromSoftware could also have their own in place).

I know that DS Remastered, SotFS and DS3 still use local connections as priority as once you get passed the Title screen handshake with the DS servers, you can force lan only connections with some trickery (it is a pain in the rear to accomplish, and I've only gotten it to work once with SotFS). DS Remastered uses a modified version of the DS3 multiplayer code, but DS2 and SotFS use a different version entirely.

Doing any of whats been suggested here is entirely in the realm of client side modifications, of which everyone trying to use it would require the exact same modifications to be made to their games; and if we had that we wouldn't need something like DS3 OpenServer at all, as even the server authorization aspect would be skippable at that point and we could pretty much completely remove the checks for "is the game connected to an official server" for multiplayer. So unfortunately, as much as some of us would like to see a DS1, 2, and 3 with full co-op and LAN only support, until someone some how gets an entire source dump, or reverse engineers the authorization and matchmaking servers and does some modding via what we already have, we will likely never see these things come to pass.

TLeonardUK commented 2 years ago

Closing this.

I have some vague ideas about moving some of the loader code into a client-injected-dll and also having server-configurable options for things like this. When I'm closer to working on that I'll open some feature tickets for it.

ItsZman2006 commented 1 year ago

I know this is an old issue but if you're looking for the ability to summon anywhere theres a mod on nexus that can do it :D

Edit: Lemme be more specific It does the following:

  1. Summon anywhere
  2. Auto embering
  3. Limited multiplayer barriers