mcpField
G
game-assets

game-assets

github.com/hungify创意与媒体016 次安装1 周前更新
代码仓库

关于 game-assets

game-assets 是用于设计和集成游戏美术资源的技能,重点是代码生成的像素艺术及精灵资源流程。它引导游戏开发者规划资源、实现动画,并检查构建和碰撞设置。

主要功能

  1. 01审查游戏实体和引擎配置
  2. 02规划精灵、帧数和调色板
  3. 03通过二维数组生成像素艺术
  4. 04将精灵和动画集成到实体
  5. 05检查物理尺寸对齐和构建结果

适用场景

  1. 01用精灵替换几何图形占位资源
  2. 02创建像素风角色、敌人和道具
  3. 03添加平铺像素风背景与装饰
  4. 04验证精灵动画和碰撞尺寸

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/hungify/playables-skills --skill game-assets

安装后在 Claude Code 中输入/game-assets确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

character-pipeline.md
integration-patterns.md
pixel-renderer.md
sprite-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)
微小(拾取物、投射物)8x8324x24px4%
小型(物品、收集品)12x12336x36px7%
中型(敌人、障碍物)16x16348x48px9%
大型(Boss、载具)24x24 或 32x32372-96px13-18%
个性角色(有名字的角色)32x484128x192px35%

角色驱动型游戏(以有名字的角色、个性角色或吉祥物为主角的游戏):使用个性角色原型。主角应占据屏幕的主要位置(约占画布高度的 35%)。采用夸张的比例——大头(占精灵高度的 60% 以上)、夸张的五官和紧凑的身体——让角色在任何尺寸下都充满个性。在 Constants.js 中调整 PLAYER.WIDTH 和 PLAYER.HEIGHT 以匹配。

用像素艺术替换几何图形时,渲染后的精灵尺寸应与 Constants.js 中实体的 WIDTH/HEIGHT 相符。如果 Constants 中的数值对于这种美术风格来说太小,就增大它们——精灵和物理碰撞体的尺寸应保持一致。

流程

调用后,请按以下流程操作:

步骤 1:审查游戏
  • 阅读 package.json,确定使用的引擎
  • 阅读 src/core/Constants.js,了解实体类型、颜色和尺寸
  • 阅读所有实体文件,查找 generateTexture() 或 fillCircle 调用
  • 列出当前使用几何图形的所有实体
步骤 2:规划精灵和背景

列出计划制作的精灵:

实体类型网格帧数描述
玩家人形16x164(待机 + 行走)金发披风战士
蝙蝠飞行16x162(翅膀上扬/下垂)红眼紫蝙蝠
僵尸地面16x162(蹒跚行走)双臂前伸的绿皮僵尸
XP 宝石物品8x81(静态 + 上下浮动补间)金色菱形
地面瓦片16x163 个变体带有不同斑点的深色土地
墓碑装饰8x121带十字架的石碑
骨头装饰8x61散落的骨堆

选择适合游戏主题的调色板。

步骤 3:实现
  1. 创建 src/core/PixelRenderer.js,实现 renderPixelArt() 和 renderSpriteSheet()
  2. 创建 src/sprites/palette.js,定义选用的调色板
  3. 在 src/sprites/ 中创建精灵数据文件,每种实体类别一个文件
  4. 创建 src/sprites/tiles.js,定义背景瓦片变体和装饰元素
  5. 更新实体构造函数,使用 renderPixelArt() / renderSpriteSheet() 代替 fillCircle() + generateTexture()
  6. 创建或更新背景系统,平铺像素艺术地面并散布装饰元素
  7. 在适当情况下添加动画(行走循环、振翅)
  8. 确认物理碰撞体仍然对齐(如果精灵尺寸有变化,请调整 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)

评论

支持 Markdown