☰
从零跑通 Pokemon Auto Chess:本地部署完整指南
2026/10/23 7:28:19 网站建设 项目流程

从零跑通 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 是一款粉丝制作的免费多人自动象棋游戏,全部逻辑用 TypeScript 写成。你只需要一个 MongoDB 和一个 Firebase 账号,就能在本地把它跑起来。这篇文章带你走完「环境准备 → 配置 → 启动 → 验收」全流程,照着做大约二十分钟可以开玩。

启动之前:环境准备与资源下载 🛠️

跑这个游戏的前置成本不高,但有几个坑要提前避开——尤其是 Node 版本。项目package.json里声明了node >= 24.19.0,版本太旧会直接报错,建议用 nvm 管理版本并切到对应版本。

一次性准备工作按顺序做四件事:

  1. 克隆仓库(只需做一次):
git clone https://gitcode.com/GitHub_Trending/po/pokemonAutoChess cd pokemonAutoChess

把代码拉下来,后面所有命令都在仓库根目录执行。

  1. 安装依赖:
npm install

装完依赖它还会自动执行postinstall:拉取音乐文件、装好 assetpack 打包器的依赖,所以这一步比一般项目慢一些,属于正常现象。

  1. 确认音乐资源已就位(npm install已自动处理,单独跑一遍只是保险):
npm run download-music

把游戏音乐文件下载到app/public/src/assets/musics,没有它进游戏后是静音的。

  1. 打包游戏资源:
npm run assetpack

它把public/src/assets下的素材打包到app/public/dist/client/assets,浏览器最终加载的就是打包产物。这一步跳过,页面里会出现一堆缺图。

做完这四步,机器上就只剩「配置 + 启动」两件事了。

按编号跑起来:三步完成配置与启动

接下来是三件真正的事:连数据库、配认证、起服务。所有凭证都写在仓库根目录的.env文件里,先新建一个空的.env,边做边填。

第 1 步:连上 MongoDB,数据库连接串怎么配

目标:让服务器有地方存玩家数据和对战记录。

游戏用 MongoDB 存数据,云端免费的 MongoDB Atlas(选 M0 免费档即可)或本地自建都行:

无论哪种方式,都要建好一个名为dev的数据库、一个空的botv2集合,然后拿到连接 URI,填进.env:

# 本地 Mongo 示例;云端 Atlas 则是 mongodb+srv://用户名:密码@集群地址/dev 形式 MONGO_URI=mongodb://localhost:27017/dev

加分项:想让大厅里有机器人陪练,用 MongoDB Compass 把 机器人数据 导入空的botv2集合即可。

怎么确认成功:用 Compass 或 shell 连上 URI,能看到dev库和botv2集合,这一步就算过了。

第 2 步:创建 Firebase 项目并补齐凭证 🔑

目标:让玩家能注册账号、登录游戏。

Firebase 在这里只干一件事:认证。操作分三段,全部在 Firebase 控制台完成:

  1. 新建一个项目(例如pokemon-auto-chess-test),然后注册一个 Web 应用;
  2. 在「Configure SDK」区域拿到一段 web 配置;
  3. 在 项目设置 → Service accounts 里生成一个私钥 JSON。

把这些值填进.env(<...>处换成你项目里的真实值):

# 来自 "Configure SDK" 区域的 web 配置 FIREBASE_API_KEY=<firebase_api_key> FIREBASE_AUTH_DOMAIN=<firebase_auth_domain> FIREBASE_PROJECT_ID=<firebase_project_id> FIREBASE_STORAGE_BUCKET=<firebase_storage_bucket> FIREBASE_MESSAGING_SENDER_ID=<firebase_messaging_sender_id> FIREBASE_APP_ID=<firebase_app_id> # 来自 Service accounts 生成的私钥 JSON FIREBASE_CLIENT_EMAIL=<client_email> FIREBASE_PRIVATE_KEY=<private_key>

注意两点:私钥 JSON 里的换行要保留原样;登录方式里只勾选 email/password 和 anonymous 即可,别的不用开。

怎么确认成功:.env里 8 个FIREBASE_*键全部有值,且没有尖括号残留。

第 3 步:启动开发服务器

目标:把游戏真正跑起来。

npm run dev

这条命令会并行拉起两个进程:esbuild 编译前端 + tsx 以 watch 模式运行后端(app/index.ts),改代码能热更新,适合边调边看。

怎么判断项目跑通了 ✅

启动后盯两个地方:

  • 终端日志:看到类似⚔️ Listening on http://localhost:9000、create lobby、init lobby cron jobs的输出,说明服务已监听端口并成功创建了大厅房间;
  • 浏览器:打开http://localhost:9000/,能正常渲染出游戏登录页,用一个新邮箱注册并登录,然后进入大厅看到lobby房间列表(房间类型定义在 app/app.config.ts 的rooms配置里)。

注册成功本身就是一次完整的端到端验收:前端 → Colyseus 房间 → MongoDB 写入用户记录,链路全通。如果页面打不开,先回查MONGO_URI是否连得上;如果注册报错,多半是 Firebase 的登录方式没勾对。

跑通之后:上线部署与日常开发贴士 🚀

本地跑通只是开始,后面这几个知识点能让你少走不少弯路:

生产构建与启动开发服务器没做优化,正式上线前先npm run build(构建产物在app/public/dist/server),再npm run start运行编译后的入口。

Docker 部署更省事docker/README.md 给了容器化方案:docker compose up -d会同时拉起 Mongo 和游戏服务,数据库不用自己装,你只需要配好 Firebase,然后看http://localhost:9000即可。

云端托管deployment/README.md 覆盖了 Render、Heroku、Koyeb 等平台的完整部署流程,环境变量清单和本地.env一致;平台部署时记得把公网域名加进 Firebase 认证白名单。

素材改了要重新打包每次改动public/src/assets里的资源后,重新跑一次npm run assetpack;而宝可梦或协同(synergy)数据的预计算结果存放在 app/models/precomputed,改这类配置数据后要重新生成预计算数据,否则客户端看到的数值是旧的。

代码风格与工具链项目用 Biome 做格式化和 lint(配置在 biome.json),常用命令:npm run lint、npm run format、npm run check。推荐 VSCode 装 Biome 扩展,保存时自动格式化。

给自己开管理员权限想完全控制本地环境,可在数据库的user_metadata集合里把自己那条记录的role改成ADMIN,就能使用/bot-admin等管理页面。

可选环境变量.env还支持DISCORD_SERVER(展示你的社区 Discord 邀请)和MIN_HUMAN_PLAYERS(控制房间最少真人玩家数)等调参项,按需添加。

从一台笔记本上的npm run dev到对外署一个完整的 Pokemon Auto Chess 服务器,路径都是通的——本地跑通后,对照 README 和部署文档挑一个方案上线就行。祝开黑愉快。

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询