四国军棋:轻量级在线军棋网站

· · 科技·工程

TL;DR

四国军棋网站

背景

我们机房里人太多了军棋不够下了😭并且我在网上找了一圈,找不到能不用手机号登录的免费军棋网站,同时为了压榨我的 GPT,vibe-code 了这个项目。

最开始只是一个支持多人联机的军棋网页,后来陆续加上了账号、聊天、rating 系统、复盘,以及 bot。现在既可以和真人下,也可以和 bot 下,还可以观赏 bot 互殴。

项目地址:BitByBitG/siguo-junqi。

这是什么

一个基于 Node.js 和 Socket.IO 的四国军棋网页,打开浏览器就能玩,不需要安装客户端。

目前支持:

使用

网站地址:四国军棋。

注册账号并通过审核(如果审核慢可以联系我进行提醒)后,可以创建房间,也可以从首页进入别人创建的房间。房间有独立链接,可以直接发给朋友。

进入房间后选择方向落座,完成布阵并准备,由房主开始对局。不落座就是观战,正常观战看不到暗子的具体身份。

普通(Unrated)对局中,玩家离座后棋子会保留在原位,可以由其他人接替。Rated 对局的限制更严格,开局后不能换人,离开会按认输处理。

服务器重启后可以恢复已保存的房间。房间不会因为没人就自动关闭,需要房主或网站管理员手动关闭。

棋盘与对局

这个项目采用的是我平时习惯的铁路规则,可能与你玩过的版本有区别,建议开局前看一下首页的规则说明。

例如,中央保留九个铁路点,四角的弯道按连续直道处理;工兵可以沿铁路转弯,其他棋子沿规则允许的连续直道行进。两人或三人对局不能进入未参战方向的阵地。

下棋时可以右键对方的棋子,选择一个名称作为自己的猜测标记。这个标记只是辅助记忆,不代表系统确认了棋子的身份。

每次走子后,棋盘会显示白色轨迹。也可以看右侧的 log 得知上一步走了什么。

棋谱与复盘

对局开始后,服务器会记录开局阵型、走子、交战结果和棋盘变化。

结束后可以:

对局尚未结束时,不能通过复盘接口查看暗子。关闭房间后,服务器保存的该局棋谱也会删除,需要保留的话记得先下载。

自己写一个 BOT

BOT 使用独立的账号类型。登录 BOT 工作台后,可以粘贴 JavaScript 程序,由网站服务器运行;也可以自己运行程序,通过 HTTP API 提交操作。

可参考 API 文档

欢迎写自己的策略来试试。目前配套 BOT 还在调整,并不是很成熟,也没有经过严格的棋力评测。

聊天

首页和房间内都有聊天框,支持 Markdown、LaTeX 公式和图片链接,也支持 @用户名。浏览器允许通知、且用户打开提醒后,被提及时会收到通知。

聊天区域可以放大到整个浏览器窗口。当前只保留最近 80 条消息,不适合当作长期资料存档使用。

部署

代码在 GitHub 仓库,可以下载后自行部署。

安装项目所需的 Node.js 环境,在项目目录执行:

npm ci
npm start

默认使用 3000 端口。账号、BOT 程序和房间存档需要另外备份,更新代码时不要把这些数据一起删掉。具体配置可以参考仓库里的说明。

反馈

项目还在持续修改,可能会遇到一些没有考虑到的情况。如果发现问题,可以到 GitHub 提交 Issue,最好附上复现步骤、截图,以及当时是几人对局、有没有 BOT,方便定位。或者直接 QQ 跟我说也行。

QQ 交流群:630238775

欢迎来下棋、写 BOT。欢迎给项目点个 star 喵。欢迎给我买服务器喵。