多人游戏服务器
一条命令安装钢铁浪潮专用服务器,添加 TLS,并了解它的工作方式。
多人游戏有三种方式:从游戏内的列表加入公开服务器、自建服务器,或从应用内架设局域网对局。
加入官服
多人游戏 ▸ 浏览列出公开服务器:《钢铁浪潮》官方运营的,以及游戏的朋友们为它运营的。选一个服务器即可以你的指挥官名称进入它的大厅,无需加入码和密钥:公开服务器两者都不要。首次打开“多人游戏”时会先问你的指挥官名称(会先随机给你一个,也可以自己填),之后随时可在设置 ▸ 常规中修改。这里会遇到陌生人,所以在没有人持有房主密钥的时候,公开房间会自行维持秩序:
- 服务器启用内容过滤时(默认开启),聊天会在中转时过滤;在公开房间,会被过滤器触及的消息根本不会发出,发送者会收到提示,第三次则被移出半小时。会被过滤器触及的名字在门口就会被拒绝。
- 任何就座玩家都可以在玩家列表某一行的三点菜单,或点击聊天中的名字,选择投票移出。除被投票者外的就座玩家过半数同意即通过(且至少两人,所以 1v1 无法把赢家投出去);被投出者半小时内无法再加入。
- 已就座但未准备、三分钟内一言不发、且有已准备的玩家在等待的人,会被移到观众席,好让房间开局。
- 屏蔽与举报:屏蔽只在你的设备上隐藏该玩家的聊天;举报会把发生了什么连同最近的聊天记录一起发给服务器管理员,由其事后查看。被举报的玩家不会当场受到任何处理。
服务器列表来自本站的 steelti.de/servers.json。网络协议版本不兼容的房间会显示为灰色并提示更新;不同游戏版本只要协议一致,仍可一起游玩。
自建服务器
支持:基于 systemd 的 x86-64 与 ARM64 Linux。
curl -fsSL https://steelti.de/setup.sh | bash
安装程序会创建一个无特权的 steel-tide 服务,生成主机密钥和加入码,并打印地址、主机密钥和加入码。玩家在游戏的多人游戏 ▸ 加入中填写连接信息,或在命令行客户端使用 steel connect。
在机器防火墙和云服务商处放行入站 TCP 端口 28785。服务器只是一个可执行文件,不自带游戏:各应用带有自己的客户端,浏览器则在 play.steelti.de 游玩。重新运行安装程序会更新可执行文件,但不会替换密钥或检查点。
绑定域名
裸 IP 服务器只有应用能连接。浏览器拒绝从 https:// 页面打开未加密的连接,所以用浏览器的玩家只能通过 wss:// 加入有证书的服务器。有了证书,安装程序还会打印两个指向 play.steelti.de、已填好服务器地址的链接:一个给房主,一个给玩家。
把一个 DNS 名称指向这台机器(A 或 AAAA 记录,不要经过代理),确保 TCP 80 可用于证书验证,然后:
curl -fsSL https://steelti.de/setup.sh | bash -s -- --domain play.example.com --email you@example.com
证书来自 Let's Encrypt,由 certbot 的定时器续期;续期后部署钩子会重启服务。--port 443 可以得到不带端口的链接。在明文服务器前放一个终止 TLS 的反向代理同样可行:把 WebSocket 升级请求转发到游戏端口即可。
安装程序接受 --no-filter 关闭内容过滤,或 --filter 重新开启;更新时不传这两个参数会保留原设置。也可在 server.env 中设置 STEEL_TIDE_FILTER=0 或 1,修改后重启服务。过滤涵盖名字、聊天、链接与公开地图文本。关闭后不再累计过滤违规次数,投票、屏蔽、举报与管理员处理仍然可用。
大厅与存档
- 一台服务器承载一个大厅或一场进行中的对局。
- 新对局提供与本地征服对局相同的地图、金属、迷雾和人口选项。
- 房主不必在线。没有房主在线时,入座最久的玩家成为代理房主(玩家列表中会标注):由他们选择地图与规则、设置席位、开始对局、暂停以及让所有人返回大厅。房主一上线便重新接管。管理控制台、上传与下载存档以及对局记录始终属于持有主机密钥的房主。
- 对局结束后,若参赛玩家全部离开,或结果出现五分钟后仍无人按下返回大厅,服务器会自动让所有人返回大厅;进行中的对局若五分钟内没有任何玩家在线,也同样处理。对局进行中加入的人会直接以观战者身份观看——房主也一样,房主可以在暂停菜单里结束对局并让所有人返回大厅——大厅恢复后会重新排队等待席位。
- 房主可以上传任何有效的
.steel-tide-save文件;存档中的阵营可以在人类与 AI 之间重新分配,但不能删除。在本地的载入存档界面使用下载按钮即可导出。 - 服务器在对局开始时以及每 60 秒游戏时间写入一次原子检查点。
模组房间
房主或代理房主可在大厅标题栏齿轮 → 模组中选择已安装的模组。每位玩家都需要安装所要求的模组,标识与版本必须完全一致。缺少的仓库模组可以在加入提示中安装,再重新连接;其他模组须自行安装。上传模组存档前先为房间选好相应模组,载入存档后房间的模组列表固定。安装与制作方法见模组。
运营公开房间,以及多个房间
给朋友用的服务器有加入码,房主也在场。--public 架设的是另一种:没有加入码,欢迎陌生人,且上述秩序规则在你不在时生效。--name 给它起“浏览”页上显示的名字,--rooms N 在一台机器上运行多个房间(一个服务器就是一个大厅或一场对局),端口依次递增,共用同一套密钥和证书:
curl -fsSL https://steelti.de/setup.sh | bash -s -- --domain play.example.com --public --name "Harbour" --rooms 3
在机器的 shell 里,可以使用与游戏内房主控制台相同的命令:
steel-tide-server admin players # 房间里有谁,来自哪里
steel-tide-server admin kick Bob
steel-tide-server admin ban Bob 60 # 封禁一小时;不写分钟数则永久
steel-tide-server admin bans
steel-tide-server admin reports # 玩家的举报,附带前后的聊天记录
steel-tide-server admin say 五分钟后重启
steel-tide-server admin --room 2 players
以 root 运行时,它会从安装程序写入的 server.env 读取密钥;help 列出全部命令。公开房间和其他服务器没有区别,你可以把它列在自己的网站上或把地址交给朋友;游戏内的列表是我们的。
卸载
保留存档和密钥的卸载方式:
curl -fsSL https://steelti.de/uninstall.sh | bash
局域网
桌面版和移动版应用无需单独的服务器即可架设对局:多人游戏 ▸ 架设,填一个名称、一个可选的加入码,然后开始架设。对局会在本地网络中广播自己,同一 Wi-Fi 下的其他应用副本会在多人游戏 ▸ 浏览页的“局域网”一节(公开服务器之上)中列出它:点一下即可加入;手动输入的话,用大厅中显示的地址。
用浏览器的玩家无法加入应用主持的游戏,此外,手机切到后台后对局会暂停,直到应用回到前台。
最后编辑