-
Who's Online 6 Members, 2 Anonymous, 169 Guests (See full list)
-
Topics
-
Posts
-
By victorcrimea · Posted
Hey everyone, I've been working on a dedicated server for 0 A.D. and it's reached a point where I'd love to get some community feedback on it. The idea came from two problems that have bugged me (and probably many of you) for a while: players who can't host games and players rage-quitting rated games. What it does (implemented and working): Game hosting - players connect to the dedicated server instead of directly to each other. No more NAT headaches. If you have ipv4, you can play. Lobby integration - the server connects to the lobby and games appear in the game list like any regular hosted game. Player rejoin - If you disconnect (crash, or intentionally), you can rejoin the game in progress. The server keeps the session alive. Rejoining with AI still not supported. Automatic controller assignment - the first player to connect becomes the game controller. Unlimited observers - no cap on how many people can watch a game in progress. Server-authoritative pause - In rated games, the server controls pause functionality rather than leaving it up to players. No more abuse of the pause button to stall or tilt your opponent. Every player has a total budget of 3 minutes. It used both for pause time and disconnected time. Rage-quit detection. When a player disconnects from a rated game without resigning, the server posts a public message in the lobby chat. It won't stop anyone from quitting, but at least there's a visible record. I hope this can be integrated with existing lobby bots. The server supports following operating modes depending on how you want to integrate with the lobby: - no lobby, for direct IP connection. - single lobby account - use your own credentials to host advertise the game in the lobby. The problem is that you won't see your own game. TBD - multiple lobby account - server can use a pool of lobby accounts. In this case it can host as many games as number of accounts provided. At the moment this is against TOS, to use multiple user accounts. so this mode is a proof of concept only. Technical details for the curious The server is written in Rust. It's a network-only relay, it coordinates packet forwarding between clients but doesn't run the game simulation itself. The actual gameplay still uses pyrogenesis's existing lockstep networking model. the server just sits in the middle instead of one player acting as host. Code is here: https://gitea.wildfiregames.com/victorcrimea/0ad/src/branch/feature/dedicated-server/server What I'm looking for: I'd love to hear from real players what features are especially valuable to you? Would you use this? Any concerns about the approach, reliability, trust, anything really. -
By AlexHerbert · Posted
That is just beautiful. Also possible a minimalist version (for non-technical players) I am using this for the moment, but clearly no the same. -
By clems4ever · Posted
OK so I managed to install the 0.28 version somehow and it runs fine :-) Sorry for all the trouble, you can close the topic. -
By clems4ever · Posted
I see this which is unfortunately another (probably unrelated to 0ad) error: [binfmt_dispatcher] Using FEX with muvm No IPv6 nameserver available for NDP/DHCPv6 Using default interface naming scheme 'v258'. Error: No suitable fusermount binary found on the $PATH fuse: failed to open /dev/fuse: Permission denied Cannot mount AppImage, please check your FUSE setup. You might still be able to extract the contents of this AppImage if you run it with the --appimage-extract option. See https://github.com/AppImage/AppImageKit/wiki/FUSE for more information open dir error: No such file or directory "/usr/bin/FEXInterpreter" process exited with status code: 127 I will try to investigate how to fix these issues -
Oh, right you're one version behind, probably fedora hasn't updated the package yet. Regarding the issue you're encountering it might look like something hasn"t been tested properly on aarch64, which isn't a common platform on our Linux userbase ... Could you try a recent appimage see if it's fixed in R28 ?
-
