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

Public custom game browser & custom external server registration API #13

Open
stevefan1999-personal opened this issue Aug 1, 2020 · 1 comment

Comments

@stevefan1999-personal
Copy link

Is your feature request related to a problem? Please describe.
It's possible that some game servers are opened by external GSSPs (game server service providers) rather than managed by the game company itself to let people run semi-custom dedicated server with specific game mode(s) and meta, like Role-playing servers, trade servers and retake servers (or in general mini-games). These server have deep connection from the community around the game itself and is clearly not standardized, and so not going to be provided by the game company.

These are also matches, to be specific custom matches, but is currently not quite manageable by OpenMatch according to my interpretations to the design details, which heavily relied on game company spanning its game servers with static game modes across the world.

We also need to expose how to search for these servers via common string based tags and filter by player count, password protected, match status, etc...because no one should search for all the servers at once and then filter it locally.

It is also great to implement it that we can mix managed & external (but may not be custom) game server for player who wants a quick match.

Describe the solution you'd like
Create an external server registration API for an external server registrar that wants to add their server to the game list, that requires authentication token.

Each authenticated and not banned external server registrar can create/destroy external server registration token and make external server registration bound request.

Each external server will communicate to OpenMatch by supplying a correct external server registration token at game server ready state at a specified heartbeat interval (normally, 30s, should not do it as one-time), then OpenMatch will bound the external server registration, then mark them as queryable in the system. In addition, it should have the least priority in Evaluator evaluation because there can be bad external services and so the quality cannot be controlled (such as health check failures, reported for inconsistency).

OpenMatch will expose a new searcher service (should it be implemented as REST or GraphQL API) that a player (or from a public browser) can query all the external game server information. The searcher service are supposed to be caching from the match system records and be load-balanced because there could be a lot of people using it.

External monitors (such as game company itself) can revoke an external server API authentication token, such as if they detected some bad behaviors by spying on the GSSP.

If a GSSP is banned, then all of its related resources & descendants will be deleted immediately. Indirectly it will not be queryable in the searcher again, and if possible kick all the players under the name of the GSSP or the external game servers will be forced to shutdown. This implies the ban is non-reversible and so being a one-time action; if the bad actor turns good, the token will have to be recreated.

Describe alternatives you've considered
Just do all the things myself with an external database and with custom microservices that OpenMatch will not have any possible hand in this...isolating match-matching and external server searching is probably a good idea because the matchmaking idea is inherently not liberal enough to accept other servers besides its own, i.e. xenophobic in nature.

Additional context
Explanation for mixing managed & external game server: in Left 4 Dead 2 it's possible your match will go to a non-Valve managed server but they still use the Valve's set of rules for game modes, this is also known as Vanilla/Official server. Players can receive in-game items or EXPs to play on these vanilla external server, and of course will not get it if you go beyond their rules and has to be searched manually.

Prior art for external server query: https://developer.valvesoftware.com/wiki/Master_Server_Query_Protocol

Arma 3 master server

The external server registration token idea is also taken from Valve for their GSLT, though GSLT had a infamous back story that some of these CSGO community servers are breaking some rules so as to monitor them, Valve introduced GSLT to ban bad server hosts ever from creating a server again.

I think it is very good to manage in this way and ban bad GSSPs too if they are breaking TOS and this is how the banning idea came out.

@syntxerror
Copy link
Contributor

This is a great idea but likely won't be implemented as part of Open Match core functionalities. I believe it would be interesting to work on this as part of the ecosystem repo so I will transfer this issue there

@syntxerror syntxerror transferred this issue from googleforgames/open-match Mar 22, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants