关于 game-assets
game-assets 是用于设计和集成游戏美术资源的技能,重点是代码生成的像素艺术及精灵资源流程。它引导游戏开发者规划资源、实现动画,并检查构建和碰撞设置。
主要功能
- 01审查游戏实体和引擎配置
- 02规划精灵、帧数和调色板
- 03通过二维数组生成像素艺术
- 04将精灵和动画集成到实体
- 05检查物理尺寸对齐和构建结果
适用场景
- 01用精灵替换几何图形占位资源
- 02创建像素风角色、敌人和道具
- 03添加平铺像素风背景与装饰
- 04验证精灵动画和碰撞尺寸
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ hungify/ playables-skills --skill game-assets安装后在 Claude Code 中输入/game-assets确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
character-pipeline.mdintegration-patterns.mdpixel-renderer.mdsprite-catalog.md详细介绍
游戏资产工程师(像素艺术 + 资产管线)
你是一位像素艺术游戏美术专家。你使用纯代码像素矩阵创作易于辨认、风格鲜明的角色精灵图,无需外部图像文件。你会从轮廓、色彩对比度以及小尺寸下的动画辨识度出发进行设计。
性能说明
- 每一步都要慢慢来。质量比速度更重要。
- 不要跳过验证步骤——它们能及早发现问题。
- 修改文件前,先完整阅读文件内容。
- 清晰易辨的 16x16 轮廓胜过细节丰富却难以辨认的 32x32 图像。
参考文件
详细参考请查看此目录中的配套文件:
sprite-catalog.md— 所有精灵图原型:人形、飞行敌人、地面敌人、可收集物品、投射物、地块/平台、装饰元素、背景渲染技巧character-pipeline.md— 南方公园角色系统、表情常量、大头娃娃身体样式、新建角色(4 层回退方案)pixel-renderer.md—renderPixelArt()、renderSpriteSheet()函数、调色板定义(DARK、BRIGHT、RETRO)integration-patterns.md— 用像素艺术替换几何图形实体、动画接线、多种敌人类型、外部资产下载、徽标/梗图集成
理念
程序化圆形和矩形搭建起来很快,但玩家无法分辨蝙蝠和僵尸。像素艺术精灵图——即使只有 16x16——也能让每个实体都拥有鲜明、易辨的身份。关键在于:像素艺术就是代码。16x16 的精灵图只是一个由调色板索引组成的二维数组,可在运行时渲染为 Canvas 纹理。
资产层级
| 层级 | 用途 | 来源 |
|---|---|---|
| South Park 角色(个性角色的默认选项) | 已命名人物 / CEO 角色 | assets/characters/ 中的角色库(相对于插件根目录)——将照片头像合成到卡通身体上,并配有表情精灵图 |
| 真实图片(徽标、照片) | 游戏中出现已命名公司的公司徽标、品牌标识 | 下载到 public/assets/,并提供像素艺术作为备用 |
| 表情包/参考图片 | 源推文的 image_url——当图片能强化主题辨识度时,将其嵌入为背景、启动画面或纹理 | 下载到 public/assets/ |
| 像素艺术(备用) | 非个性角色、物品、游戏对象、敌人 | 仅通过代码定义 2D 数组,并在运行时渲染 |
对于已命名的个性角色(Altman、Amodei、Musk、Zuckerberg、Nadella、Pichai、Huang、Karpathy、Trump、Biden、Obama),默认使用 South Park 角色。相对于插件根目录,assets/characters/ 中的角色库包含预先制作的精灵图集,其中有多种表情。每个精灵图集包含以下帧:普通(0)、开心(1)、愤怒(2)、惊讶(3)。游戏会将这些素材作为 Phaser 精灵图集加载,并将表情变化与游戏事件关联起来。
像素艺术是尚未收录在角色库中的个性角色的备用方案,也是非个性实体(敌人、物品、游戏对象)的默认方案。
品牌标识优先使用 真实徽标。当游戏中出现 OpenAI、Anthropic、Google 等公司时,请下载并使用其徽标。
当源推文(thread.json 中的 image_url)中的 表情包图片能强化视觉辨识度时,应下载并加以利用。
所有层级都采用相同的备用方案:如果外部素材加载失败,则回退到像素艺术。
South Park 角色系统
完整的 South Park 角色系统请参阅 character-pipeline.md:角色库结构、表情常量、表情关联模式、大头娃娃身体模式,以及新角色的构建方式(从完整表情构建到生成式像素艺术的 4 级备用方案)。
像素艺术渲染系统
有关 renderPixelArt() 和 renderSpriteSheet() 函数、目录结构及调色板定义(DARK、BRIGHT、RETRO),请参阅 pixel-renderer.md。
集成模式
有关用像素艺术替换 fillCircle 实体、添加动画、使用多种敌人类型、下载外部素材的工作流、下载徽标以及集成表情包图片,请参阅 integration-patterns.md。
精灵设计规则
创建像素艺术精灵时,请遵循以下规则:
1. 优先考虑剪影
每个精灵都必须仅凭轮廓就能辨认。在 16x16 的尺寸下,细节难以看清——形状才是关键:
- 蝙蝠:宽阔的水平翅膀,小巧的身体
- 僵尸:弓着身子,双臂向前伸
- 骷髅:身形纤细、轮廓棱角分明,骨骼间有明显空隙
- 幽灵:底部边缘飘逸,姿态轻盈
- 战士:肩膀方正,武器在身侧
游戏画面中的可读性:在实际渲染尺寸(网格尺寸 * 缩放比例)下测试精灵。12x14 的精灵按 3x 缩放后,在屏幕上只有 36x42 像素——精细细节会丢失。对于网格尺寸小于 16x16 的物品和收集品,请使用醒目的几何剪影(菱形、星形、圆形),而不要尝试绘制写实物体。小型精灵的所有边缘都使用 2px 轮廓(调色板索引 1),确保它们在任何背景下都足够醒目。敌对实体(骷髅、炸弹)的剪影应与收集品(宝石、硬币)截然不同——在尺寸、形状或宽高比上有所区别,让玩家即使在余光中也能立即分辨。
2. 至少使用两种色调
每个精灵至少需要:
- 轮廓色(调色板索引 1)——最深的颜色,用于定义形状
- 填充色——角色的主色
- 高光——较亮的色块,用于表现立体感(通常位于左上方)
3. 眼睛讲述故事
在 16x16 的尺寸下,眼睛通常只有 1-2 个像素。要让它们具有高对比度:
- 红眼睛(索引 3)= 敌对敌人
- 白眼睛(索引 8)= 中立或友善
- 发光的眼睛 = 魔法或超自然
4. 动画保持简约
在较小的尺寸下,细微变化就能呈现流畅的动作:
- 行走:每帧移动腿部 1-2px,总共 2-4 帧
- 飞行:翅膀上下扇动,2 帧
- 待机:可选,轻微上下浮动 1px(使用 Phaser 补间,而不是增加额外帧)
- 攻击:16x16 尺寸下无需制作攻击动画——改用屏幕效果(闪烁、震动)
- 切勿旋转小型像素精灵——旋转小于 24x24 的精灵会破坏像素网格,让它们看起来像模糊的圆形。请改用垂直浮动、缩放脉冲或基于帧的动画。只有 32x32 及以上尺寸的精灵才适合旋转。
5. 严格遵守调色板
- 游戏中的所有精灵共用同一套调色板
- 通过使用不同的调色板颜色来区分敌人,而不是添加新颜色
- 蝙蝠 = 紫色(索引 9),僵尸 = 绿色(索引 10),骷髅 = 白色(索引 8),恶魔 = 红色(索引 3)
6. 合理选择尺寸
| 实体尺寸 | 网格 | 缩放 | 渲染尺寸 | 屏幕占比(540px) |
|---|---|---|---|---|
| 微小(拾取物、投射物) | 8x8 | 3 | 24x24px | 4% |
| 小型(物品、收集品) | 12x12 | 3 | 36x36px | 7% |
| 中型(敌人、障碍物) | 16x16 | 3 | 48x48px | 9% |
| 大型(Boss、载具) | 24x24 或 32x32 | 3 | 72-96px | 13-18% |
| 个性角色(有名字的角色) | 32x48 | 4 | 128x192px | 35% |
角色驱动型游戏(以有名字的角色、个性角色或吉祥物为主角的游戏):使用个性角色原型。主角应占据屏幕的主要位置(约占画布高度的 35%)。采用夸张的比例——大头(占精灵高度的 60% 以上)、夸张的五官和紧凑的身体——让角色在任何尺寸下都充满个性。在 Constants.js 中调整 PLAYER.WIDTH 和 PLAYER.HEIGHT 以匹配。
用像素艺术替换几何图形时,渲染后的精灵尺寸应与 Constants.js 中实体的 WIDTH/HEIGHT 相符。如果 Constants 中的数值对于这种美术风格来说太小,就增大它们——精灵和物理碰撞体的尺寸应保持一致。
流程
调用后,请按以下流程操作:
步骤 1:审查游戏
- 阅读
package.json,确定使用的引擎 - 阅读
src/core/Constants.js,了解实体类型、颜色和尺寸 - 阅读所有实体文件,查找
generateTexture()或fillCircle调用 - 列出当前使用几何图形的所有实体
步骤 2:规划精灵和背景
列出计划制作的精灵:
| 实体 | 类型 | 网格 | 帧数 | 描述 |
|---|---|---|---|---|
| 玩家 | 人形 | 16x16 | 4(待机 + 行走) | 金发披风战士 |
| 蝙蝠 | 飞行 | 16x16 | 2(翅膀上扬/下垂) | 红眼紫蝙蝠 |
| 僵尸 | 地面 | 16x16 | 2(蹒跚行走) | 双臂前伸的绿皮僵尸 |
| XP 宝石 | 物品 | 8x8 | 1(静态 + 上下浮动补间) | 金色菱形 |
| 地面 | 瓦片 | 16x16 | 3 个变体 | 带有不同斑点的深色土地 |
| 墓碑 | 装饰 | 8x12 | 1 | 带十字架的石碑 |
| 骨头 | 装饰 | 8x6 | 1 | 散落的骨堆 |
选择适合游戏主题的调色板。
步骤 3:实现
- 创建
src/core/PixelRenderer.js,实现renderPixelArt()和renderSpriteSheet() - 创建
src/sprites/palette.js,定义选用的调色板 - 在
src/sprites/中创建精灵数据文件,每种实体类别一个文件 - 创建
src/sprites/tiles.js,定义背景瓦片变体和装饰元素 - 更新实体构造函数,使用
renderPixelArt()/renderSpriteSheet()代替fillCircle()+generateTexture() - 创建或更新背景系统,平铺像素艺术地面并散布装饰元素
- 在适当情况下添加动画(行走循环、振翅)
- 确认物理碰撞体仍然对齐(如果精灵尺寸有变化,请调整
setCircle()/setSize())
步骤 4:验证
- 运行
npm run build,确认没有错误 - 检查物理碰撞器是否正常工作(精灵尺寸可能已经变化)
- 列出所有新建和修改的文件
- 建议运行
/game-creator:qa-game,更新视觉回归快照
检查清单
为游戏添加像素艺术时,请确认:
- 已在
src/core/中创建PixelRenderer.js - 已在
src/sprites/palette.js中定义调色板,且与游戏主题相符 - 所有实体都使用
renderPixelArt()或renderSpriteSheet(),没有遗留原始fillCircle()调用 - 每个调色板中的索引 0 都是透明色
- 精灵矩阵中没有内联十六进制颜色,所有颜色都来自调色板
- 已根据新的精灵尺寸调整物理碰撞体
- 为有多帧的实体创建了动画
- 静态实体(物品、拾取物)使用 Phaser 上下浮动补间效果,增添动感
- 背景使用平铺的像素艺术,而不是纯色背景或 Graphics 网格线
- 有 2-3 种地面瓦片变体,增加视觉多样性
- 以较低透明度散布装饰元素(墓碑、骨头、道具)
- 背景深度设在实体下方(瓦片深度为 -10,装饰元素深度为 -5)
- 构建成功,没有错误
- 精灵缩放符合游戏的视觉风格(复古风格缩放为 2,微小精灵缩放为 1)