Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[MODULES/CONCEPTS] Research if it could be possible to use the Steam API for creating peer-to-peer connections for multiplayer #40

Open
TheRedDaemon opened this issue Nov 27, 2022 · 2 comments

Comments

@TheRedDaemon
Copy link
Collaborator

TheRedDaemon commented Nov 27, 2022

This may come a bit out of nowhere and depend heavily on the network system of SHC, but the idea to add Steam-Features to a game not initially providing them is nothing new.
At least, there is THIS mod for the video game "Sekiro: Shadows Die Twice", which adds multiplayer to a game not providing it.
The interesting part here is, that joining and connecting to people via peer-to-peer seems to be provided through the Steam API, since it adds, for example, the action to join the game of a friend using the Steam friends list.
It might be possible to provide similar features for SHC.

That being said, while there is an OpenSource SDK, the documentation says that features requiring the Steam Network need the official SDK and partner status.
In turn it might be crucial to check if we could reach out to the people who created the Sekiro mod or others to get information about what is possible and what is not, before a lot of time goes into something not worthwhile.
For example, the OpenSource Version may be useless for us, because we actually need to use the official APIs of steam.
Therefore the approach would need to be different, because we might need to query the APIs during runtime (assuming Steamworks is loaded into the process), because linking to it during the build might not be possible without official files.
There is also the possiblity that someone becoming a Steam Partner might be enough to get us the needed files and access, but this may also come with requirements and rights issues.

All of that being said, this feature would then only be usable by Steam users.
However, it remains to be seen if having an account and starting SHC over Steam would be enough, of if one would need to own specifically the Steam version (if it works at all).
I remember I once read some people wanted to implement another solution for SHC. So if this should be true (because I do not know), maybe supporting them should be preferred to this, even if a Steam based solution would be very convenient today.

@gynt
Copy link
Collaborator

gynt commented Nov 28, 2022

There is a DirectPlay dll project out there (here) that we could use as a dll replacement technique similar to dgvoodoo.

But what is wrong with GameRanger that makes a new multiplayer system required? (just putting the question out there, we need an answer to this or people will not use the Steam version over the GameRanger version)

@TheRedDaemon
Copy link
Collaborator Author

TheRedDaemon commented Nov 28, 2022

I lurk in some of the SHC discords and it sometimes seemed that there was a wish for another solution or for example some kind of dedicated Game Ranger like solution. But this may also be me getting the wrong idea from some messages. I think there are also sometimes connection issues etc. There is also the fact that you require another account + another program for it. Ok for people who want to play MP in general and need match-making, but not really convenient for some friends that want to play together. That kinda summerizes my hope for the Steam API: that it becomes convinient for people who own the Steam Version to also use Steam to intialize MP. The main thing would be establishing connections and making it work. If we would manage to use Steams Network or its protocols, maybe we could even get a bit better connection. But the later woukd be a bonus.

I think the ideal case would be another choice for MP in the game (#39), where you either can join via friends list or host a game that provides the option to invite people. This feels like concepts that could be possible. Match-making/overviews etc. feels like stuff that would require a server, which would definitly be out of scope for this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants