beyond-all-reason / beyond-all-reason/RecoilEngine

Consider adding a way to talk to dediserver/autohost without replay trace

Open
#2,040 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
679
Forks
290
Avg merge
3d 2h
Merged PRs (30d)
40

Description

If you want to talk to the dedicated server you can whisper to playerID 255 (e.g. via `/wbynum`). This leaves a replay trace though, which can sometimes be undesirable for various reasons (e.g. for sending a moderation report; or when data is bulky such as mass stats collection and would bloat the file).

The current way to send such data is obtain some sort of indirect connection, which is a lot of extra steps with their own various problems:
```mermaid
graph LR

spring[player spring.exe] <--> lobby["`lobby client
e.g. chobby or external`"];
lobby <--> lobbyserver[lobby server];
lobbyserver <--> autohost[autohost, e.g. spads];
autohost <--> dedi[dedi spring.exe];
spring -- "`/wbynum 255
(goes to replay)`" ----> dedi;
spring -. "`proposed
(same behaviour except doesnt end up in replay)`".-> dedi;
spring <--> socket["`external connection
e.g. socket`"];
socket <--> autohost;
```

The request is to consider adding some way equivalent to `/wbynum 255` but that doesn't leave a replay trace.

Remarks:
* perhaps the easiest implementation would involve making a parallel copy of `/wbynum`, in which case dedi also gets the ability to respond, and players get the ability to talk secretly to each other. The latter may be undesirable (for similar reasons - becomes impossible to moderate) so it would be good if autohost had control over that (perhaps an entry in startscript that blocks secret communication where one party isn't dedi?).

Contributor guide

Open the contributing guide

Research direction

Start by tracing /wbynum 255 handling and how replay recording receives it, then inspect the autohost and startscript communication boundary. Done means a supported dedicated-server path that does not enter replays, with clear control over whether player-to-player secret communication is allowed.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
backend-api-design, networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.