Master server broadcasting for any game
To connect to Broadcast with your application, check the Releases page and download either:
- net6.0 (if your application is .NET Standard compatible)
- net471 (if your application is .NET Framework 4.X compatible, like Unity is).
Put the two libraries (BroadcastClient and BroadcastShared) in /Plugins
Before using the client, you have to instantiate it.
var client = new BroadcastClient(
string broadcastServerAddress,
string nameOfYourGame,
bool allowOnlyIPV4
)
Notes :
- If you choose to allow IPV6 (by setting
allowOnlyIPV4
tofalse
), DNS resolution may be extremly slow due to a Microsoft bug. - The client does not connect to the server upon construction. It will try establishing a connection when contacting the server. That connection is managed by the BroadcastClient - in case of connection loss, it will reconnect automatically when needed.
I want to | Function | Returns | Info |
---|---|---|---|
Get the list of lobbies for my game | client.GetCachedLobbyList() | Read-only list of object | Returns the local list, does not connect to the server. Use FetchLobbies to update that list. |
Fetch the list of lobbies from the server | client.FetchLobbies(Query customQuery=null) | Task<List<Lobby>> |
|
Create a new lobby | client.CreateLobby(...) | The lobby you just created, but with an ID delivered by the server | |
Update information for my lobby | client.UpdateLobby( object) | Nothing | |
Kill my lobby and remove it from Broadcast | client.DestroyLobby(uint lobbyID) | Nothing | |
Requests the host to hole-punch me. | client.PunchLobby(uint lobbyID) | Nothing | Only works if the lobby uses ETransportProtocol.UDP |
Download a binary from the /Releases section according to what you have
- winx86 for Windows 32 bit
- winx64 for Windows 64 bit
- linux-x64 for Linux 64 bit, any distro
- linux-arm for Linux ARM, like Raspbian
Unzip and run Broadcast
(.exe). This should work out of the box.
- Broadcast runs on port 1000{
a
} wherea
is the Broadcast version. Example: Broadcast v6 runs on port 10006. - Lobby that hasn't sent trace of life in the past 30 seconds are cleaned up and destroyed from the server
- Broadcast uses the major version number (X) to signal compatibility break. Minor version number and revision number (Y and Z) are usually quality of life improvements or bugfixes, but no protocol change.
- Broadcast returns maximum 200 lobbies when queried
- Broadcast does not implement hole punching: it only implements a message "requesting" a punch from the client to the host. The actual punching implementation is left to the application.