ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Pokemon Auto Chess 实战指南:从零搭建并运行你的宝可梦自走棋服务器

Pokemon Auto Chess 实战指南:从零搭建并运行你的宝可梦自走棋服务器

Pokemon Auto Chess 实战指南:从零搭建并运行你的宝可梦自走棋服务器

【免费下载链接】pokemonAutoChessPokemon Auto Chess Game. Made by fans for fans. Open source, non profit. All rights to the Pokemon Company.项目地址: https://gitcode.com/GitHub_Trending/po/pokemonAutoChess

Pokemon Auto Chess 是一款开源、非营利的宝可梦题材自走棋游戏,由粉丝基于 The Pokemon Company 的 IP 制作,提供实时多人对战大厅、机器人陪练、ELO 天梯、战报与 Meta 数据等完整功能。这篇指南适合想本地跑通源码、部署自己的服务器、或基于它二次开发的玩家与开发者,帮你避开安装、配置与部署中最常踩的坑。

项目定位:这是一套什么规模的自走棋代码

它不是纯前端 Demo,而是一套可独立部署的完整游戏服务,主要构成如下:

  • 实时对战:基于 Colyseus 的房间模型,app/rooms/下定义了lobby(大厅)、preparation(备战)、game(对战)、after-game(结算)四类房间。
  • 战斗内容:app/core/abilities/收录了数百个招式实现,另有bot-logic.ts(AI 决策)、elo.ts(天梯分)、board.ts(棋盘)等模块。
  • 数据与账号:用 MongoDB 存玩家资料与战绩,用 Firebase 做登录认证,多进程时经 Redis 做房间分发。
  • 运营功能:app/services/提供排行榜、定时任务、Twitch 直播数据、Meta 统计等服务。

上面这张是游戏内置的外景地图贴图集,app/core/design.ts的initTilemap按地图名加载对应场景,前端通过/tilemap/:map接口取用。

如何安装并运行:快速开始步骤

先确认环境需要 Node.js ≥ 24.19.0(推荐用 nvm 管理版本)。然后克隆仓库并执行依赖与素材打包:

git clone https://gitcode.com/GitHub_Trending/po/pokemonAutoChess cd pokemonAutoChess npm install npm run download-music npm run assetpack npm run dev

npm run dev启动后,游戏运行在本机http://localhost:9000/。

启动前还要配置两个外部依赖:

  1. MongoDB:本地装或云托管均可,创建数据库dev,其中建一个空集合botv2。想要机器人陪练,就在 MongoDB Compass 里把db-commands/botv2.json导入该集合。
  2. Firebase:建一个 Web App 并拿到 SDK 配置;登录方式只保留邮件/密码与匿名;再到 Project settings → Service accounts 生成管理员私钥。

把这些写进仓库根目录的.env,例如MONGO_URI=mongodb://localhost:27017/dev,以及FIREBASE_API_KEY、FIREBASE_CLIENT_EMAIL、FIREBASE_PRIVATE_KEY等字段。

想拥有完整权限,可在 MongoDB 的usermetadatas集合里把你自己账号的role改为ADMIN。

核心能力拆解:对战与 AI 如何协作

对战主循环在app/core/里:pokemon-entity.ts承载场上单位,attacking-state.ts、moving-state.ts、idle-state.ts描述不同行为状态,招式则一个个独立成文件放在app/core/abilities/。

这张是单个宝可梦的多帧动画精灵表(编号 0484),前端用 Phaser 4 按帧播放出攻击、移动等动作。

机器人陪练由app/core/bot-logic.ts与bot-manager.ts驱动,数据存在botv2集合里。你可以从前端/bot-builder页面提交自己的阵容,再由管理员在/bot-admin审批。

服务端入口是app/index.ts,它负责拉起 Colyseus 服务、创建大厅房间、每分钟检查大厅是否存活(挂了自动重建)、每 10 分钟刷新排行榜、每分钟拉取 Twitch 直播状态。多进程部署时,app.config.ts会按进程号分配端口并用 Redis 做房间选主,大厅只在第一个进程创建。

配置、部署与运行要点清单

本地开发用npm run dev足够;要上线则先构建再启动:

npm run build npm run start

生产部署要点:

  • 环境分支:master是开发分支,prod对应线上正式版本,部署时按需用哪个分支。
  • 容器化:根目录docker-compose.yaml自带mongo与app两个服务,app暴露 9000 端口,MongoDB 连接串经变量注入;Dockerfile用 node:24.19.0-alpine 三阶段构建。
  • 多机部署:ecosystem.config.js配好 pm2,用npm run setup-live与npm run deploy-live批量部署,npm run start以 fork 模式按 CPU 核数起多进程。
  • PaaS 部署:deployment/README.md给出了 Render、Heroku、Koyeb 的方案,核心是把.env里的变量填到平台的环境变量里。

常见问题与排错

  • 素材不显示或assetpack构建失败:在 Heroku、Render 等平台该任务有时会失败。解决办法是本地先跑npm run build,把生成的dist目录提交到仓库,并临时去掉package.json里 build 命令中的 assetpack。
  • 改了素材没生效:素材从public/src/assets打包到public/dist/client/assets,每次改动都要重跑npm run assetpack。
  • 改了宝可梦或协同数据没变化:这些是预计算数据,存在app/models/precomputed/,修改后要跑npm run precompute。
  • 大厅进不去:服务端有checkLobby定时任务,每分钟检测,两次重试失败后自动重建 lobby 房间,先看日志确认进程是否存活。
  • Koyeb 报 Node 版本问题:它的 buildpack 不一定带 LTS,可在 fork 里去掉package.json的engines字段再部署。

进阶方向:从跑通到二次开发

  • 加新宝可梦:edit/add-pokemon.ts提供npm run add-pokemon入口,改完记得重新 precompute 和 assetpack。
  • 数据导出与校验:gen/csv-export.ts可导出 CSV,gen/check-labels.ts校验标签,方便批量核对。
  • 数据库脚本:db-commands/按版本号归档了历次数据迁移脚本,改库前可参考同类写法。
  • 社区服务器:community-servers.md列出了玩家自建的服务器;部署自己的实例前先读deployment/README.md里的法律声明——宝可梦 IP 版权归 The Pokemon Company 所有,请勿用于商业项目。

【免费下载链接】pokemonAutoChessPokemon Auto Chess Game. Made by fans for fans. Open source, non profit. All rights to the Pokemon Company.项目地址: https://gitcode.com/GitHub_Trending/po/pokemonAutoChess

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进