从零跑通 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 管理版本并切到对应版本。
一次性准备工作按顺序做四件事:
- 克隆仓库(只需做一次):
git clone https://gitcode.com/GitHub_Trending/po/pokemonAutoChess cd pokemonAutoChess把代码拉下来,后面所有命令都在仓库根目录执行。
- 安装依赖:
npm install装完依赖它还会自动执行postinstall:拉取音乐文件、装好 assetpack 打包器的依赖,所以这一步比一般项目慢一些,属于正常现象。
- 确认音乐资源已就位(
npm install已自动处理,单独跑一遍只是保险):
npm run download-music把游戏音乐文件下载到app/public/src/assets/musics,没有它进游戏后是静音的。
- 打包游戏资源:
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 控制台完成:
- 新建一个项目(例如
pokemon-auto-chess-test),然后注册一个 Web 应用; - 在「Configure SDK」区域拿到一段 web 配置;
- 在 项目设置 → 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),仅供参考