Godot: Integrate Open Match

Created on 11 Sep 2018  路  4Comments  路  Source: godotengine/godot

Godot version:
Godot 3.2+

Issue description:
Now that Google and Unity are announcing a formal FOSS matchmaking API under Apache 2.0, I'm thinking we should probably try to integrate it (once it's more complete).

Not necessarily saying for Godot's next version, but just making an Issue here for discussion purposes / progress report if someone starts working on it.

WDYT?

archived feature proposal network

Most helpful comment

On a technical feasibility side since that program is written in golang it'd probably be at best a native plugin.

However, these types of services tend to be hidden behind rest services called by the hosted servers and not directly in A) c++ godot code B) godot servers at all.

One is expected to use the front end api.

The Frontend API is a server application that implements the gRPC service defined in api/protobuf-spec/frontend.proto. At the most basic level, it expects clients to connect and send:

A unique ID for the group of players (the group can contain any number of players, including only one).
A json blob containing all player-related data you want to use in your matchmaking function.
The client is expected to maintain a connection, waiting for an update from the API that contains the details required to connect to a dedicated game server instance (an 'assignment'). There are also basic functions for removing an ID from the matchmaking pool or an existing match.

All 4 comments

On a technical feasibility side since that program is written in golang it'd probably be at best a native plugin.

However, these types of services tend to be hidden behind rest services called by the hosted servers and not directly in A) c++ godot code B) godot servers at all.

One is expected to use the front end api.

The Frontend API is a server application that implements the gRPC service defined in api/protobuf-spec/frontend.proto. At the most basic level, it expects clients to connect and send:

A unique ID for the group of players (the group can contain any number of players, including only one).
A json blob containing all player-related data you want to use in your matchmaking function.
The client is expected to maintain a connection, waiting for an update from the API that contains the details required to connect to a dedicated game server instance (an 'assignment'). There are also basic functions for removing an ID from the matchmaking pool or an existing match.

@fire Ah, I hadn't caught the Go-lang aspect before making the Issue. That's interesting. And in that case, creating an implementation of the frontend API to meet Open Match's expectations would be more of a plugin domain anyway. Well, good to know.

Not sure if there's anything more to this Issue (or what aspects of Open Match support could be supplemented with a Godot plugin).

Having looked into it a little, I agree that you would probably just build your own API server in front of it like the example client, and offer a HTTP (or TCP) endpoint for your game, which you could then connect to using the already available tools in Godot.

So I don't think there is any integration that needs to be done on our side. Somebody could provide such an API server implementation and a matching Godot GDScript example as open source of course for ease of use, but that is Asset Lib / Plugin territory :)

I'll close this for now, as there is nothing to do on this for the core Godot Engine.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

ndee85 picture ndee85  路  3Comments

RebelliousX picture RebelliousX  路  3Comments

testman42 picture testman42  路  3Comments

nunodonato picture nunodonato  路  3Comments

bojidar-bg picture bojidar-bg  路  3Comments