文档

摸鱼棋乐 开发文档

这个项目是什么

摸鱼棋乐(仓库 jinghui/moyu-qile)是象棋 / 五子棋 / 军棋(陆战棋翻棋)三合一的网页棋类游戏,定位"益智 · 摸鱼 · 小憩":浏览器打开即玩,手机/平板/电脑通用,也可以一条 Docker 命令跑在自己的 NAS 上。游戏本体为纯 Node.js 自研、MIT 开源,无账号无遥测;在此之上叠加了 8 大 AI 扩展功能(AI 教练、走法点评、每日一题、棋风画像、自适应难度、战绩海报、军棋记牌推理、对手嘴炮等),并且模型 Key 只存浏览器、不上传服务器。

技术栈与架构

仓库结构

路径 说明
server.js HTTP 静态服务 + WS 房间 + REST 接口
app/index.html 单页应用(三个游戏视图)
app/about.html 使用说明页
app/css/style.css 样式(含移动端竖屏适配)
app/js/chess.js / chessAI.js 象棋规则引擎与搜索 AI
app/js/gomoku.js 五子棋引擎 + 评分 AI
app/js/junqi.js 军棋翻棋引擎
app/js/*_client.js 三个游戏的界面逻辑 + 存档钩子(GAMEHOOKS)
app/js/common.js 公共 UI:工具栏/存档/排行/倒计时/离开守卫/AI 教练
data/ 运行时数据(存档、战绩、配置),gitignore
tests/ Node 单元测试(无测试框架,直接 node 运行)
fpk/ 飞牛 NAS 应用商店打包工程(moyu-qile.fpk)+ 截图 + FnDepot 分发
Dockerfile / package.json 容器构建与依赖声明

本地开发环境

# 本地直跑(不用 Docker)
npm install
node server.js        # 端口可用 PORT 环境变量覆盖,默认 7025

# 运行测试(各测试文件独立执行)
node tests/engine.test.js      # 引擎回归
node tests/chess_state.test.js # 象棋局面序列化往返(存档正确性)
node tests/jq_rules.test.js    # 军棋规则(行营/大本营/铁路/山界)
node tests/jq_camp.test.js     # 军棋入营与营内免疫
node tests/jq_shown.test.js    # 军棋翻开状态同步

配置项说明

配置键 位置 含义
PORT 环境变量 HTTP/WS 端口,默认 7025
saveDir data/config.json(可在界面「💾 存档 → ⚙ 存档路径」修改) 存档目录,默认 <数据卷>/saves,换目录自动迁移
模型 Base URL / Key / 模型名 浏览器 localStorage(⚙ 模型设置) AI 教练与扩展功能的 OpenAI 兼容接口配置,不填不影响对局

服务端接口:/api/rank(战绩排行)、/api/save(存档)、/api/config(路径配置)、/api/fs、/api/ai-hint(AI 提示接口)。

构建与发布

# 源码构建镜像
git clone https://gitea.88531.cn/jinghui/moyu-qile.git
cd moyu-qile
docker build -t moyu-qile:latest .

docker run -d --name moyu-qile --restart unless-stopped \
  -p 7025:7025 \
  -v "$PWD/data:/app/data" \
  moyu-qile:latest

公开镜像渠道:gitea.88531.cn/jinghui/moyu-qile:latest 与固定版本 tag(如 :1.0.0),国内直连、匿名可拉(Docker Hub 渠道已下线;ghcr.io/personal82555/moyu-qile 因 GitHub 账号临时暂停暂不可拉)。局域网可用直连地址加速。飞牛 NAS 另有 fpk/moyu-qile/moyu-qile.fpk 安装包(appcenter-cli install-fpk moyu-qile.fpk 离线直装,或经 FnDepot 社区商店安装)。

二次开发要点

相关链接