多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

做像素游戏,Aseprite 为什么几乎是标配

做像素游戏,Aseprite 为什么几乎是标配 摘要Aseprite 是一款专为像素画和逐帧动画设计的编辑器C 编写GitHub 上已有近 4 万 Star。它不只是画图软件图层与帧分离的时间轴、像素级专用笔刷、精灵表导出、命令行和 Lua 脚本几乎覆盖了独立游戏美术从绘制到进引擎的整条流水线。对想做 2D 游戏的开发者来说它是少数能直接嵌进自动化构建流程的美术工具。它是什么Aseprite 的定位很直接Animated sprite editor pixel art tool支持 Windows、macOS、Linux。最早由 David Capello 开发现在由 Igara Studio 和社区贡献者维护最近一次发布是 v1.3.18.6。先说清楚授权这点常被误解它是源码公开但不是开源协议。源码和官方二进制都受 EULA 约束条款里写明你可以为个人用途编译和修改源码或者为了提交贡献去改但不能把软件分发给第三方。想省事的话直接买官方编译好的版本想折腾自己拉源码编译也完全合规只是别再转发安装包。核心优势1. 图层和帧是两个独立概念很多通用绘图软件做动画是把每一帧当成一个图层。Aseprite 把图层和帧拆成时间轴的两个维度角色的身体、武器、特效各占一层每层跨多帧改一层不会碰坏另一层。同时支持实时预览和洋葱皮边画边看动起来是什么样。2. 像素画专用工具README 里列出的几项都是为像素画量身做的Pixel Perfect 手绘模式自动去掉斜线拐角处多余的像素Shading 着色墨水沿调色板明暗阶梯上色自定义笔刷、描边、宽像素对称绘制、平铺模式适合画地砖和重复纹理颜色模式支持 RGBA、索引色最多 256 色调色板、灰度索引色模式对游戏尤其有用换一张调色板就能给同一个角色做出换色皮肤不用重画。3. 导出就是为引擎准备的可以把动画导出成精灵表、GIF或者 PNG 序列也支持 FLC、FLI、JPG、BMP、PCX、TGA 等格式。4. 能脚本化、能进构建流程内置命令行接口另有 Lua 脚本能力。这意味着美术改完.aseprite源文件构建脚本可以自动导出成引擎能直接读的素材而不是靠人手工点导出。面向人群独立游戏开发者一个人包办程序和美术需要一个上手快、产出直接可用的像素工具像素风 2D 游戏团队美术和程序之间需要稳定、可自动化的素材交接Game Jam 参赛者几个小时内要出角色和动画时间轴加洋葱皮能省很多时间想学像素画的新手专用工具比通用软件更容易画出干净的线条不太适合的场景做高分辨率手绘风、3D 贴图或者只想要一个完全免费的开源软件。快速上手从 .aseprite 到游戏引擎最典型的用法是把动画导出为一张精灵表加一份描述数据。用命令行一条命令搞定aseprite-bhero.aseprite\--sheethero.png\--datahero.json\--formatjson-array\--sheet-type packed\--list-tags几个参数的含义-b批处理模式不打开界面执行完直接退出--sheet输出合并后的精灵表图片--data加--format json-array输出每一帧的位置、尺寸、时长用数组形式方便各类引擎和框架解析--sheet-type packed把各帧紧凑排布到一张图里减少空白--list-tags和--data一起用时把时间轴上标记的动画片段名比如 idle、run、attack写进 JSON 的meta字段在 Aseprite 里给不同的帧区间打上标签导出后的数据里就带着这些片段名程序里可以直接按名字播放动画不用再手写第几帧到第几帧是跑步这种魔法数字。引擎侧的支持也不少Unity 有官方的 2D Aseprite Importer 包需要 Unity 2021.3.15 及以上版本可以直接导入.aseprite源文件Godot 有社区插件能把动画导入为引擎自己的动画资源其他引擎和框架大多可以读上面的 JSON 加精灵表。进阶用法Lua 脚本和 CI 集成用 Lua 写一个小脚本批量检查素材。比如列出一个文件里所有动画标签和对应的帧范围localsprapp.spritefor_,taginipairs(spr.tags)doprint(tag.name,tag.fromFrame.frameNumber,tag.toFrame.frameNumber)end保存为list-tags.lua后用命令行执行aseprite-bhero.aseprite--scriptlist-tags.lua注意参数顺序Aseprite 按从左到右的顺序处理命令行参数素材文件要写在--script前面脚本运行时app.sprite才指向这个文件反过来写脚本里拿到的会是 nil。把这类脚本和上面的导出命令放进项目的构建脚本里美术提交.aseprite文件之后素材自动重新导出程序拿到的永远是最新版本。如果团队用持续集成导出这一步也可以挂在流水线上跑。如果想自己从源码编译官方提供了build.shmacOS、Linux和build.cmdWindows两个自动化脚本。流程是gitclone--recursivehttps://github.com/aseprite/aseprite.gitcdasepritebashbuild.sh编译依赖 CMake、Ninja以及 Aseprite 专用分支的 Skia 库脚本会按屏幕提示一步步引导。再次提醒自行编译的产物只限个人使用。我的看法做 2D 像素游戏真正耗时间的往往不是画而是画完之后怎么变成游戏里能用的东西。Aseprite 的价值就在这一段时间轴管理动画、标签标记片段、一行命令导出数据、脚本接进构建流程。工具本身不贵换来的是美术和程序之间少掉大量的手工搬运。如果你正在做或者打算做一个像素风游戏不妨先拿它画一个会走路的小角色再走一遍导出到引擎的完整流程。项目地址github.com/aseprite/aseprite
返回列表