beyond-all-reason / beyond-all-reason/RecoilEngine
Consider adding a way to talk to dediserver/autohost without replay trace
- 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
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