news 2026/10/23 2:21:19

从一张 PNG 到可上场的宝可梦:一条流水线看懂 pokemonAutoChess 的纹理打包

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从一张 PNG 到可上场的宝可梦:一条流水线看懂 pokemonAutoChess 的纹理打包

从一张 PNG 到可上场的宝可梦:一条流水线看懂 pokemonAutoChess 的纹理打包

【免费下载链接】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

pokemonAutoChess 是一款粉丝制作的开源宝可梦自走棋游戏,本文用仓库里自带的精灵处理脚本讲清楚:原始动画素材是怎么被切成帧、重新打包、再变成游戏能直接加载的纹理资源的。

手工摆资源为什么扛不住

给游戏新增一只宝可梦,远不是放一张 PNG 那么简单。每只角色都要有站立、走路、攻击、受击等好几套动作,每套又是几十帧动画,且每一帧的持续时间要单独记录。手工处理时对齐稍有偏差,帧序就会乱掉;要是再算上闪光形态,工作量直接翻倍。这正是仓库里那条自动化流水线要解决的痛点。

一次看懂这条流水线

它本质是 edit/add-pokemon.ts 里的一段 TypeScript 编排逻辑:输入是 SpriteCollab 仓库(存放社区绘画原始素材的仓库),读取其中每只宝可梦的 AnimData.xml 动画配置和帧图长条,拆分、处理颜色后重新打包,产出游戏直接消费的纹理表(把几十个小帧拼进一张大图,减少加载次数)和配套的 JSON 元数据。

输入、中间过程与产出

脚本运行后先问两个问题:SpriteCollab 的本地路径、要处理的宝可梦 4 位索引。索引留空就是处理全图鉴,README 里注明可能需要数小时,不建议第一次尝试。

确认之后,SpriteSheetProcessor会先加载已计算过的 durations/delays 数据避免重复劳动,再按 XML 里的 FrameWidth/FrameHeight 把每张帧图切到split/目录,按"索引/闪光/动作/贴图类型"分层存放。阴影帧会做额外的颜色通道清理,把纯红、纯蓝像素转成透明黑。

切帧完成后交给 TexturePacker,参数包括--pack-mode Good、--texture-format png8、--format phaser,产出单张 PNG8 纹理表加 Phaser 格式 JSON。随后脚本删掉 JSON 的 meta 字段和空格做精简,把.png/.json移入app/public/src/assets/pokemons/,肖像移入 portraits 目录,并把时长数据同步到app/types/delays.json等位置。最后解析 SpriteCollab 的 tracker.json,更新每只宝可梦可用的情感肖像表和创作者署名文件,至此一次完整的入库结束。

跨平台与依赖的坑在哪

  • 系统差异藏在命令名里:Windows 调TexturePacker.exe,Mac/Linux 调TexturePacker,脚本按process.platform自动选择,但 TexturePacker 的命令行版必须先装好并加入 PATH。
  • 路径输入支持/与\混用,~会被展开为主目录;路径不存在时脚本会直接退出,所以先确认路径再跑。
  • 写入目标包括sheets/、split/和app/子目录,运行账号需要项目目录的写权限。
  • 依赖缺失先在项目根目录跑npm install。个别动画缺失不会中断流程,会记入日志,缺失清单最终汇总到sheets/missing.txt,方便补资源时对照。

源码地图

  • edit/add-pokemon.ts — 主脚本,含SpriteSheetProcessor类与整个编排流程
  • edit/README.md — 用法、依赖与排错说明
  • edit/assetpack/ — AssetPack 工具链配置(CLI fork 与插件补丁)

动手跑一下

克隆仓库后在项目根目录执行:

git clone https://gitcode.com/GitHub_Trending/po/pokemonAutoChess cd pokemonAutoChess && npm install npm run add-pokemon

按提示输入 SpriteCollab 路径和索引(如0001),终端会依次打印 Step 1/5 到 Step 5/5 的日志;成功后 assets 目录多出一对0001.png与0001.json,说明这只宝可梦已经能进入游戏了 🎮

这套流水线把"画图的人"和"跑游戏的人"解耦:贡献者只管产出素材,切帧、打包、署名记录全部交给脚本。想参与的话,可以从补画 SpriteCollab 的缺失帧入手,也可以直接给这个仓库的脚本与配置提改进建议。

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/23 2:21:02

Linux crontab 定时任务与权限管理实战指南

做后端开发或者运维的同学,几乎都遇到过这样的场景:凌晨三点写好的数据库备份脚本,第二天早上发现根本没执行;或者明明crontab -l能看到任务,/var/spool/cron里的文件也在,可日志里就是没有半点运行痕迹。排…

作者头像 李华
网站建设 2026/10/23 2:20:57

ohmyzsh 主题选型完整指南:3 分钟选定提示符与避坑清单

ohmyzsh 主题选型完整指南:3 分钟选定提示符与避坑清单 【免费下载链接】ohmyzsh 🙃 A delightful community-driven (with 2,500 contributors) framework for managing your zsh configuration. Includes 300 optional plugins (rails, git, macOS, hu…

作者头像 李华
网站建设 2026/10/23 2:20:45

基于Django与爬虫的二手房屋信息采集系统设计实现

看到这个题目,正在准备毕设的朋友应该能get到它的体量。名字虽然长,但拆开看其实非常典型——一套以 Django 为骨架、网络爬虫为数据来源、二手房屋二手房屋信息采集系统为核心的 Web 应用。这类题目在毕业设计里几乎年年都有类似版本,但真正…

作者头像 李华
网站建设 2026/10/23 2:20:40

C++ set与multiset底层红黑树原理及核心API实战详解

1. 从红黑树说起:set 到底是什么先给你交个底:C STL 里的 set 和 multiset,底层就是一棵红黑树。很多人学 set 的时候只记 API,背完insert、erase、find就觉得自己会了,结果一遇到自定义类型、迭代器失效、性能瓶颈就懵…

作者头像 李华
网站建设 2026/10/23 2:19:15

3 步用 Arduino 读取电池 BMS 信息:open-battery-information 新手教程

3 步用 Arduino 读取电池 BMS 信息:open-battery-information 新手教程 【免费下载链接】open-battery-information 项目地址: https://gitcode.com/GitHub_Trending/op/open-battery-information open-battery-information 是一个用 Arduino 读取电池 BMS …

作者头像 李华