跳到正文
钢铁浪潮

多人游戏服务器

一条命令安装钢铁浪潮专用服务器,添加 TLS,并了解它的工作方式。

钢铁浪潮的多人游戏运行在专用的权威服务器上:服务器模拟对局和 AI,浏览器发送经验证的指令,并接收按各自阵营战争迷雾过滤后的快照。没有玩家主机,客户端也无法操作其他阵营的单位。

安装

支持:基于 systemd 的 x86-64 与 ARM64 Linux。

curl -fsSL https://rts.rene.wang/setup.sh | sudo sh

安装程序会创建一个无特权的 steel-tide 服务,生成主机密钥和加入码,并打印两个链接:

Host:    http://203.0.113.20:28785/#host=…
Players: http://203.0.113.20:28785/#join=…

在机器防火墙和云服务商处放行入站 TCP 端口 28785。服务器自带完整的浏览器客户端,玩家只需要链接。重新运行安装程序会更新可执行文件和客户端,但不会替换密钥或检查点。保留存档和密钥的卸载方式:

curl -fsSL https://rts.rene.wang/uninstall.sh | sudo sh

TLS

没有 TLS 时,https:// 页面上的浏览器会拒绝打开明文 ws:// 连接,因此玩家必须被跳转到服务器自己的地址,并失去原站点下保存的存档和设置。有了证书,客户端可以从玩家所在的任何地方以 wss:// 直接连接。

把一个 DNS 名称指向这台机器(AAAAA 记录,不要经过代理),确保 TCP 80 可用于证书验证,然后:

curl -fsSL https://rts.rene.wang/setup.sh | sudo sh -s -- --domain play.example.com --email you@example.com

证书来自 Let's Encrypt,由 certbot 的定时器续期;续期后部署钩子会重启服务。--port 443 可以得到不带端口的链接。在明文服务器前放一个终止 TLS 的反向代理同样可行:把 WebSocket 升级请求转发到游戏端口即可。

大厅与存档

  • 一台服务器承载一个大厅或一场进行中的对局。
  • 四个阵营位;每个可设为人类、AI 或关闭,并可分别设置 AI 难度和队伍。
  • 新对局提供与本地遭遇战相同的地图、金属、迷雾和人口选项。
  • 房主可以上传任何有效的 .steel-tide-save 文件;存档中的阵营可以在人类与 AI 之间重新分配,但不能删除。在本地的载入存档界面使用下载按钮即可导出。
  • 服务器在对局开始时以及每 60 秒游戏时间写入一次原子检查点。

运行方式

  • 服务器以固定 30 Hz 模拟;快照每三个 tick 发送一次(10 Hz),经可见性过滤并压缩。
  • 客户端在最近两个位置之间插值。
  • 游戏速度固定为 1×;只有房主可以暂停。
  • 浏览器保存一个不透明的每服务器重连令牌,回来时可以重新认领自己的阵营。
  • 客户端与服务器必须使用相同的协议版本。

限制

服务器强制执行身份验证、消息与指令速率限制、指令归属、目标可见性、地图边界、已知定义 ID,以及 8 MB 的消息上限。上传的存档还会额外限制地图尺寸、阵营数、实体数和弹药数。匹配、NAT 穿透、中继、观战和聊天不在当前版本范围内。