mcpField
L
layer-environments

layer-environments

github.com/layerai其他70 次安装今天更新
代码仓库

关于 layer-environments

layer-environments 是面向 Layer 的环境美术技能,涵盖游戏场景概念图、视差背景、天空盒和生成式世界。它指导游戏美术人员安排场景深度、保持玩法区域清晰,并导出分层背景。

主要功能

  1. 01规划场景深度与清晰玩法区
  2. 02将场景拆分为视差图层
  3. 03导出 Godot、Unity 或 JSON 格式
  4. 04创建等距柱状天空盒
  5. 05生成并完成世界草稿

适用场景

  1. 01设计清晰易读的平台游戏背景
  2. 02为引擎准备循环视差场景
  3. 03创建 360 度全景天空图
  4. 04完成世界生成前迭代草稿

安装

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

$npx skills add https://github.com/layerai/skills --skill layer-environments

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

详细介绍

环境

概述

环境是玩家透过它观看的艺术,而不是观看的对象。它必须呈现纵深,在游戏玩法背后衬托场景而不与之争抢注意力;对于视差背景,还要拆分成以不同速度移动、且仍能对齐的图层。

生成机制(模型发现、估算门槛、上传、轮询)在 layer 技能中;提示词设计在 layer-image 中。角色和道具在 layer-game-assets 中,等距和六边形图块在 layer-tilesets 中,平铺表面在 layer-textures 中。

如果你没有这里提到的某项相关技能,请让用户安装它(npx skills add layerai/skills --skill <name>);如果没有人值守,请根据工具架构继续操作,并指出这一缺失。

快速参考

交付内容方法
环境概念图使用 text_to_image;说明相机高度和景深层级
视差背景生成一个场景,然后对 inpainting 或 erase_object 模型使用 parallax 运行 execute_forge
面向游戏引擎的视差效果对拆分的输出使用 export_parallax,引擎选择 GODOT、UNITY 或 JSON
360 天空盒使用 use_case: "create_skybox" 和 projection: "EQUIRECTANGULAR"
世界场景使用 use_case: "text_to_world" 或 "image_to_world";如果模型支持,则使用 draft: true 迭代

环境概念图

说明相机高度和景深层级,因为它们决定背景能否衬托游戏玩法。注明美术所属的层级:前景剪影、可游玩中景带、远景背景。角色站立的位置应刻意降低对比度和饱和度。生成的游戏背景最常见的问题,就是细节太繁杂,导致角色难以辨认。

视差:一个场景,按景深拆分

不要逐个生成视差图层。分开生成的结果不会共享地平线、光线或消失点,而且 export_parallax 会拒绝这些结果:它只接受视差拆分的输出。

拆分需要运行一次 execute_forge,将完成的场景设为 init_image,并在通过 list_base_models 找到且 filter.use_case: "inpainting" 或 "erase_object" 的模型上设置 parallax。该模型会补全每个较近图层遮挡的内容。如果没有提供提示词,修复模型会被要求延续景物,通常这正合你意。

parallax 包含三个字段:

  • layers:2 到 6,默认为 5。
  • cuts:切分位置,按由远及近的顺序排列,取值介于 0 到 1 之间,数量比 layers 少一个。 省略此项时,会在场景自身景深的间隙处切分,这是最合适的默认设置。
  • loop:每个图层从左到右重复,并对每张图的接缝进行修补。

输出是一个分层 PSD,最远的图层位于底部,并记录每层的滚动速度。将其 file_id 传给 export_parallax 并指定引擎:GODOT 会为 Godot 4.3 或更高版本写入 Parallax2D 场景,UNITY 会写入精灵图及其 .meta 文件和包含滚动系数的 parallax.json,JSON 会为任何引擎写入图像和 parallax.json。每个图层的尺寸都与背景完整尺寸一致,因此放置在同一位置时能够对齐。导出不消耗 Creative Units。

一次拆分会按除最近图层外的每个图层计费,运行一次模型;loop 则会为每张图增加一次修补操作。做决定前,请使用运行时将获得的全部输入(包括 parallax)进行估算。

为分层做好场景构图

分层只能分开场景中已有区分的部分。提示源图时请注意:

  • 侧视镜头、宽画幅。 横版卷轴背景采用横向构图;选择模型时筛选 landscape_16_9。
  • 深度层次分明,彼此之间留有空隙:天空、远景、中景、近景。一棵从近处延伸到远山的树会被从中切开。
  • 保持游戏玩法区域简洁。 角色站立处的对比度要低;细节放在远景层,并让前景剪影保持稀疏。
  • 循环背景中不要有独特地标。 单独一座城堡会每隔一个屏幕宽度重复出现。

天空盒

天空盒是 2:1 的等距柱状全景图,左右边缘相接,极点经过调整后不会变形。查找带有 filter.use_case: "create_skybox" 的模型,并传入 projection: "EQUIRECTANGULAR"。不要同时设置 tileability;该投影已实现无缝衔接。将 width 和 height 留空,即可使用模型最大的 2:1 预设;也可以使用 get_base_model 列出的预设。提示天空和地平线,而不是主体:任何被构图为焦点的内容都会被拉伸到极点。

世界

世界属于独立模态,可通过 filter.use_case: "text_to_world" 或 "image_to_world" 查找。如果 get_base_model 显示 capabilities.draft,就用 draft: true 生成低成本草稿并反复调整,只完成最终选定的草稿:调用 execute_forge,将 base_model_id 设为草稿的 draft.completion_base_model_id,设置 batch_size: 1,并将草稿的 file_id 作为类型为 draft_world 的引导文件,不提供提示词。完成后的世界会保留草稿场景,价格固定,且只能完成一次。先检查 draft.status:已 EXPIRED 的草稿必须重新生成。

示例

“为我们的 Godot 平台游戏制作一张由四层组成、可循环的森林背景。”

  1. 调用 list_base_models,设置 filter.use_case: "text_to_image" 和 filter.capabilities: {landscape_16_9: true}(一个布尔值对象)。使用第一个结果。
  2. 提示源图:“2D 平台游戏背景的朦胧松林侧视图,宽幅横向构图。由清晰分隔的空间组成的四个深度层次:浅色天空、远处的蓝色山脉、中景松树树干,以及沿底边分布的稀疏深色蕨类前景。角色奔跑的中间区域对比度低,使用柔和的绿色。不要建筑物,也不要单独的地标。”估价后,使用 batch_size: 4 执行,并按 poll_interval_seconds 轮询,选出一张。
  3. 调用 list_base_models,设置 filter.use_case: "inpainting"。使用第一个结果。
  4. 调用 estimate_forge_price,指定该模型,将选中场景的 file_id 作为 init_image,设置 batch_size: 1,不提供提示词,并设置 parallax: {layers: 4, loop: true}。估价会同时计算逐层运行和循环修复的费用。若价格超过 20 CU,请显示价格并等待用户明确同意。
  5. 使用相同输入调用 execute_forge;按 poll_interval_seconds 轮询。报告任何质量下降的参考图组。
  6. 调用 export_parallax,传入 PSD 的 file_id、engine: "GODOT" 和 name。提供 zip 链接,并引导用户查看其中的 README。

常见错误

  • 分别运行生成来制作每个视差层。它们无法对齐,且 export_parallax 会拒绝这些文件。
  • 在普通生成模型上执行分层,而不是使用 inpainting 或 erase_object 模型。
  • 源场景中有一个物体横跨多个深度层,导致分层时被切成两半。
  • 传入的 cuts 数量不正确:它始终比 layers 少一个。
  • 游戏玩法区域杂乱且对比度过高,角色与背景难以区分。
  • 循环背景中有独特地标。
  • 为天空盒设置 tileability,或将焦点主体安排在会被拉伸到极点的位置。
  • 使用新提示词完成世界草稿,或完成已过期的草稿。

评论

支持 Markdown