关于 scenario-game-assets
scenario-game-assets 是使用 Scenario 公共目录创作和处理游戏美术资源的技能,面向游戏项目。内容涵盖按资源类型查找模型、生成、清理、保持一致性及导出。
主要功能
- 01按游戏资源类型查找模型
- 02生成精灵图、图标和地块
- 03移除背景并放大图像
- 04清理像素艺术
- 05将资源导出为 PNG
适用场景
- 01制作透明背景的 RPG 道具图标
- 02构建地形图块集和过渡图块
- 03为游戏 UI 准备美术变体
- 04为游戏引擎导出生成资源
MCP 相关
使用 `scenario` 技能中说明的 Scenario MCP 连接和生成流程,引导客户端推荐模型、检查模式、生成内容并导出资源。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ scenario-labs/ skills --skill scenario-game-assets安装后在 Claude Code 中输入/scenario-game-assets确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
isometric-templates.jsonisometric-templates.mdREADME.mdscripts/build_isometric_templates.py详细介绍
Scenario 游戏素材
概览
Scenario 的公开目录提供针对各类素材(精灵、图标、道具、图块集、等距场景、像素艺术、概念艺术)专门训练的模型,以及用于移除背景、放大和清理像素的工具。按素材类型查找,检查架构,生成、后处理并导出。由单个角色的动画帧组成、且每个单元格为一帧的图集,以及任何行走循环、循环动画或 GIF,都属于 scenario-sprite-animation。连接方式和核心工作流:请参阅 scenario 技能。如果此处提及的同级技能未包含在可用技能中,请让用户安装(npx skills add scenario-labs/skills --skill <name>);若需无人值守地继续,请根据工具架构操作,并指出这一缺失。
快速参考
| 任务 | 调用 |
|---|---|
| 按素材类型查找模型 | 使用 recommend,以用户自己的措辞描述素材需求(精灵、游戏图标、图块集、等距场景、像素艺术);只有已知成员名称时才使用 search |
| 检查输入 | model_schema_get(始终在 model_run 之前调用) |
| 生成 | model_run(dry_run=true 可为批次估价;在并发上限内分批使用 wait=false,并重新启动被 429 拒绝的任务),然后调用 jobs_wait |
| 透明背景 | 先通过 recommend 查找原生支持 Alpha 通道的生成器;否则对素材使用背景移除工具 |
| 放大或增强 | 通过 recommend 查找放大工具(有 2x 到 16x 的工具) |
| 像素艺术清理 | 通过 recommend 查找清理工具(网格吸附、调色板缩减) |
| 视差背景平面 | 使用图层工具拆分绘制好的背景(recommend,capability: "img2img"),或每次运行生成一个平面;参见“视差背景” |
| 为游戏引擎导出 | 使用 asset_download,并设置 format="png" |
示例:透明药水图标集
请求:“为 RPG 物品栏制作 4 个风格统一、背景透明的药水图标。”
- 使用用户自己的措辞作为
prompt调用recommend,然后根据next_step选择模型(见scenario); 各团队的目录不同,因此不要硬编码模型 ID。在运行任何操作之前就确定透明度:优先选择其recommend条目或架构声明支持输出 alpha 通道的成员,因为它能在源头生成透明图标,无需为每个图标额外付费移除背景;其他选择一律视为不透明。 - 调用
model_schema_get,并设置 model_id=""。留意提示词字段、尺寸字段和任何样本数量参数。 - 调用
model_run,参数为 parameters={"prompt": "health potion, corked glass bottle, glowing red liquid, bold outline, centered, plain background"}(纯色背景便于后续移除;原生 alpha 模型则只需要主体,绝不要写上 transparent)。架构中的样本数量参数会用同一条提示词为同一物品生成多个变体;不同物品需要分开运行,只更改物品名称(“mana potion”“stamina potion”),固定措辞模板。先用dry_run=true估价(一次试运行只计算一项;批量时需相乘),然后设置wait=false启动。 - 调用
jobs_wait,并设置 job_ids=[""](最多 32 个 ID,一次调用即可处理整个批次);如果超时,则用返回的pending_job_ids再次调用,不要再次运行model_run。然后调用asset_display检查结果,每次传入一个asset_id。 - 仅当选择了不透明模型时才处理透明度:调用
recommend查找背景移除工具(编写时为 Photoroom、Pixelcut、851 Labs),对选中的工具调用model_schema_get,然后调用model_run,并将其图像字段设为生成的资源 ID。 - 可选:放大保留的图像(调用
recommend查找放大工具,并一如既往地调用model_schema_get;放大工具支持 2x 至 8x 及更高倍率)。 - 调用
asset_download,设置 asset_id 和 format="png"(PNG 会保留 alpha 通道)。跟随重定向:curl -L -o potion.png "<url>"。
保持风格一致
- 先采用成本较低的方法:整个批次复用一个
seed,并在架构提供相应选项时关闭模型的提示词扩展标记;扩展器会分别改写每条提示词,从而破坏固定模板。 - 参考图像:使用
upload_asset上传艺术指导图像,然后将资源 ID(不要使用本地路径)传给模型的图像或参考参数。 asset_describe可提取可复用的风格描述(此操作计费;在parameters中设置dry_run: true可估算费用)。使用scenario_tools_search查找该工具;根据其permission选择用于估算和运行的执行器(见scenario)。- 使用
search,并设置 target="assets" 和 images={like: ["asset_..."]},即可查找风格符合目标的现有资源。 - 若要固定项目风格,可使用项目自己的美术作品训练自定义 LoRA(参见
scenario-model-training技能);训练后的模型使用相同的生成流程。
准备一组变体的参考图
将一个已批准的组件重新设计成一组变体(按钮、面板、弹出框底板、图标系列)时,问题往往出在参考图,而不是提示词上:模型会把合成到对象上的所有内容都当作对象本身。
- 裁剪到对象自身的边界。 透明留白会被视为构图的一部分:每次运行的缩放和偏移都会漂移,因此精灵图测量代码得到的边界框也会不同。裁掉透明区域,生成后再补回固定画布。如果模型支持的宽高比不包含源图的宽高比,每次运行的宽高比也会漂移;对于 UI 组件,应在补回留白前,使用支持九宫格的缩放方式进行调整(拉伸中间区域,保持角和文字不失真)。
- 生成前移除烘焙效果。 参考图中的投影、外发光或斜面效果会被视为轮廓,生成结果中这些效果会变厚、重复出现,或与对象融合。输入扁平图像,并在引擎中重新应用效果,这样效果仍可调整。若要生成与带阴影的源图匹配的最终 PNG,应按 alpha 提取源图的效果图层(在透明源图中,阴影是半透明的,对象是不透明的,但对象的抗锯齿边缘也是半透明的:将不透明蒙版膨胀 1 到 2 px,把其外部的半透明像素作为阴影,并保留对象边缘),再将其合成到每个输出图像下方。
- 说明哪些部分具有功能性。 九宫格面板需要可拉伸的中间区域和固定的角;扩散模型并不理解这些区别。在提示词中说明这一约束,然后检查是否符合要求。
- 一个对象,纯色背景,不要场景。 参考图中有多个对象时,它们可能会被重新组合成混合对象。
- 检查所有透明输出的 alpha 边缘。 移除阴影后会留下半透明的边缘;原生 alpha 模型可能会在对象周围生成大片半透明光晕。这两者在有色 UI 背景上都会呈现光晕。也要检查内部 alpha:原生 alpha 模型可能会将某个物品的透明表面(空玻璃杯)设为 alpha 0,同时把下一个物品绘制为不透明,导致这组素材在引擎槽位中的表现不一致。
通过测量而非目测来验证这组素材:在接受批量结果之前,比较每个输出图像与源图的 alpha 边界框。
等距瓦片与蒙版填充
先选网格,再选风格。2:1 菱形是常见的游戏投影;投影六边形则采用不同的占地形状。一组图块应共用一种投影、放置锚点、光照方向和阴影侧。瓦片的地面占地范围不等于完整精灵轮廓:树木和建筑会高出地面,也可能与后方瓦片重叠。切勿用地面蒙版裁切高耸物体。扩大批量制作前,先检查一张小型拼接地图的接缝、路径连接、遮挡和视觉质量;仅有干净的 Alpha 边界并不足以验收。
使用等距模板指南选择中性地面或板块参考,并区分地面、侧面和物体区域。JSON 清单记录了这些区域的几何信息、文件名和源哈希值。模板构建器由维护者或需要本地几何信息的 Agent 运行,可生成 PNG 和清单。它只生成几何模板,不会生成完整的游戏美术资源。几何参考应与已批准的风格参考分开;中性几何不应强行规定调色板或多面体风格。通过 scenario 技能的共享资源生命周期解析已上传的资源并发布新版本;仅当本地输入没有可访问的匹配资源时,才上传这些输入。
公开目录中有专门的等距图块成员。根据用户的图块需求调用 recommend,然后调用 model_schema_get。查看参考图、蒙版、种子和强度字段,不要假设这些字段一定存在,也不要假设低强度就能保留几何形状;不同模型的约定各不相同。固定相机和光照描述,只改变主体。只有在支持时才重复使用种子。如果模型在参考图一致的情况下仍偏离投影或光照,请使用 scenario-consistency,然后再考虑对已批准的图块进行 scenario-model-training。
对于地面填充或明确限制在特定形状内的内容,请使用带蒙版的 img2img。如果专用模型没有蒙版字段,请根据 capability: "img2img" 和蒙版需求再次调用 recommend。从 model_schema_get 中读取蒙版极性及任何必需的基础图像字段(scenario-image 涵盖特定模型的约定)。模板区域图像内部为白色;根据模型约定调整,包括在需要时添加 Alpha。基础画布的尺寸和位置必须与蒙版一致;已批准的风格参考不能替代基础画布。如果画布是不透明的,编辑时应保留其背景:同时要求输出透明图像与保护画布的约束相矛盾。之后再提取透明度。地形使用地面区域,树木或建筑使用较高的物体区域;后者是编辑空间,绝不能用作最终轮廓蒙版。
先制作一个瓦片。测量编辑区域以外相对于源画布的变化,并检查结果。对于有意限定范围的地面填充,超出蒙版几像素可通过蒙版裁切;如果偏移范围较大,则应在重试前诊断蒙版极性、基础画布和已使用的参考图。对于较高的精灵,应通过原生 Alpha 或背景移除保留物体轮廓,并单独验证地面锚点。确定性的地面蒙版无法修正错误的相机视角或糟糕的构图。
“低多边形”风格与低多边形网格是两种不同的交付成果。前者是图像模型中的一种 2D 风格描述。后者属于 scenario-3d:图像转 3D 模型选择项(recommend,capability: "img23d")是否提供多边形数量目标或拓扑选项,应从 model_schema_get 中读取,绝不能自行假设;如果两者都没有,则应使用单独的重拓扑工具(通过 recommend 和 capability: "3d23d" 查找,并会单独计费)在之后降低多边形数量。无论采用哪种方式,输入图像都应采用平面着色、轮廓清晰且背景简单,以便几何结构清晰可辨。
地形图块集与过渡
俯视视角的地形集是一份与引擎之间的布局契约:每种边缘和角落情况都必须存在,并与相邻图块拼接。使用用户的描述调用 recommend,并包含图块尺寸(例如“32x32 俯视视角图块集,草地到泥土的过渡”),然后调用 model_schema_get。创作时,像素图块集成员有一个 style 枚举:根据单个地形提示词生成完整图块集、双地形过渡模式(第二种地形使用 extraPrompt 或 extraImage),以及单个图块、变体和物件模式。其 width 和 height 表示单个图块的尺寸,而非图集尺寸;这些参数和模式都会影响价格,因此请先调用 dry_run。它承诺生成的是简单的 Wang 图块集,而非由 47 个图块组成的 blob 布局:请根据引擎的自动拼接规则映射图块,并在引擎的图块编辑器中使用下载的图集绘制一张小型测试地图,在生成更多地形前检查拼接效果。
视差背景
视差背景是由多个深度平面组成的图层堆栈,引擎以不同速度滚动这些平面:最底层是不透明的天空或远景平面,其上是两三个带透明空隙的抠图平面,后方的平面会透过这些空隙显现。生成这种图层堆栈有两种途径;在一次生成提示词中写入“图层”或“视差”,两者都得不到,只会返回一张由堆叠图层组成的单图;对于经过特定风格训练的模型,则会返回一张把多个图层绘制在一起的图像。
- 拆分已有的绘制背景。 图层提取是一个竞争激烈的领域(Scenario 自带的工具与第三方拆分工具相互竞争),因此请根据用户的原话(“将此背景拆分为用于视差的深度平面”),使用
recommend和capability: "img2img",然后对选出的工具调用model_schema_get。在创作阶段,专用工具需要separationInstruction、拆分规则(不是场景描述,例如“从前到后分为四个平面:前景灌木、近处树木、远处山丘、天空”)、会影响价格的maxLayers上限,以及用于填补每次裁切所留空洞的修补选项,后者也会影响价格。工具会返回抠图和重建后的背景(最远处的平面),每个各为一个资源,因此请用asset_display逐个检查。若从视口尺寸的绘画中裁切平面,其宽度也只有视口那么宽;而滚动平面需要在摄像机两侧都留出延伸部分。画布扩展工具会重绘不透明图像,填满抠图的透明空隙,因此请在拆分前加宽绘画(使用recommend和capability: "img2img",并说明扩展需求;按所需的最大滚动范围调整绘画尺寸,所有拆分后的平面都会沿用该宽度),或者对近处平面采用第二种途径。 - 每次运行生成一个平面。 固定摄像机、地平线、光照方向和调色板描述词,然后只改变平面内容:天空和远景平面生成普通的不透明图像;每个较近的平面都生成为抠图(使用原生支持 alpha 的生成器,或先生成普通底色图像,再进行上述移除处理;切勿在扩散模型的提示词中使用“透明”一词)。明确说明平面不得包含哪些内容(“无地面、无天空”),避免平面内容重复;并按视口尺寸加上完整的水平滚动偏移范围来调整每个平面的尺寸。偏移越大,需要留出的延伸部分越多;循环滚动则要求边缘无缝衔接。
导出前检查图层堆栈:model_scenario-compose-image(固定的第一方 ID,Scenario 唯一的确定性图像合成器,因此重新发现它只会得到同样的结果)会将平面作为 layers 接收,每个图层包含 source(资源 ID)和按深度顺序排列的 zIndex;同时指定 canvasMode: "custom"、数值型 canvasWidth 和 canvasHeight,以及 backgroundColor: "transparent"。使用摄像机视口尺寸,保留每个平面的源尺寸,并调整共享画布的位置,使延伸部分落在视口两侧之外。如果延伸部分覆盖了每个平面的偏移范围,等宽的拆分平面也适用。再合成一张预览图,将近处平面在可用的延伸范围内沿 x 轴移动几个百分点(使用百分比字符串),即可预览引擎将产生的视差偏移;接缝、重叠的地平线或抠图边缘的光晕都能在这里、引擎处理之前发现。检查实际 alpha 值,而不只是缩略图。若图层堆栈有抠图接缝、缺失的景物,或重建背景中残留前景物体,请予以拒绝:平面移动时会暴露这些重复内容。在用户预算范围内,调整拆分或修补设置,或改用每次运行生成一个平面的途径;否则请报告预览失败,不要将其称为可供引擎使用的图层集。对每个验收的平面调用 asset_download,并设置 format="png"(远景平面也要如此,以确保整套图层使用相同格式),为它们标记深度顺序;滚动速度和循环处理留给引擎完成。
常见错误
- 在扩散模型的提示词中要求“透明背景”:输出仍是不透明的。之后使用移除工具抠掉背景,或选择原生支持 alpha 通道的模型。
- 导出 JPG 精灵图:JPG 没有 alpha 通道;请保留
format="png"。 - 发布带有网格外像素或杂乱配色的 AI 像素艺术:使用像素清理工具进行后处理(通过
recommend查找),以吸附到网格并限制调色板。 - 跳过
model_schema_get:专用模型(像素艺术系列)仅支持 txt2img,并有自己的字段;通用参数会被拒绝。 - 要求一次生成“视差背景的各图层”:只会返回一张图;深度平面需要从完成的画作中拆分,或每个平面分别运行一次(参见“视差背景”)。
- 手动拼接图块集:图块集成员会生成边缘和角落情况;针对纹理的升频工具能保留图块拼接效果。
- 只采样一次带文字的素材:同一套配方可能能渲染出一个词,却无法渲染另一个词(文字会变成深色浮雕效果,而非参考图中的字体)。每次运行生成多个样本(架构中的样本数量参数),并在调色板偏移时在提示词中指定精确的十六进制颜色。