Insprill / Insprill/dv-multiplayer

Server browser

Open
#10 1 comment 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
C#
Stars
45
Forks
39
PR merge metrics
No merged PRs in 30d

Description

Along with being able to manually join servers via an IP, port, and password, there should also be a server browser where players can find servers to play on. In the host settings, there should be an option to list your server in the browser, so people can opt out if they'd like.

We'll create a basic REST API for the backend to ensure compatibility between Steam and Oculus users. This will be written in 🦀RUUUUUUUUUUUUUUUST🦀using [Actix](https://actix.rs/). Servers will be stored only in memory, so there's no need for a database or any persistent data storage. When a server comes online, it'll send a POST request to the API containing its IP, port, whether it's password protected, and the current/max player count. Every minute the server will send the same POST request to the API to update the data and signify that it's still online. If a request isn't received from a server for over two minutes, it will be removed from the list. When a server shuts down or the owner removes it from the server browser, it'll send another request to the API to remove it from the list immediately.

There will be an advanced config option to specify the URL the server browser API is reachable at, so anyone can host their own instance if need be.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reviewing the existing server-join flow and host settings, then trace where a configurable browser API endpoint would integrate. Done means a Rust/Actix REST service and client integration support listing, periodic updates, expiry and immediate removal, password metadata, player counts, and a configurable endpoint for Steam and Oculus users.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp, rust
Domain
backend-api-design, game-dev, networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.