关于 procedural-generation
procedural-generation 是面向游戏开发者的 OpenClaw 技能,可用算法生成地形与关卡。它支持种子控制以复现结果,并可导出供游戏项目使用的数据。
主要功能
- 01通过噪声函数生成 2D/3D 地形
- 02基于规则生成关卡
- 03使用自定义种子复现结果
- 04多线程生成
- 05导出 JSON 和 PNG
适用场景
- 01为游戏世界创建多样地形
- 02生成洞穴和地牢
- 03通过命令行快速制作关卡原型
- 04导出高度图或网格数据
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill procedural-generation安装后在 Claude Code 中输入/procedural-generation确认已加载。
详细介绍
用途
此技能可让 OpenClaw 通过 Perlin 噪声和基于规则的系统等算法,以编程方式生成游戏内容,例如地形和关卡,从而减少手动设计工作。
使用时机
当游戏中的动态内容对多样性要求较高时,请使用此技能,例如 Roguelike 中的程序化世界或无限跑酷游戏;也可在资源受限的项目中,用于优化可重玩性和资源效率。
核心功能
- 通过噪声函数(例如 Perlin、Simplex)生成 2D/3D 地形,并提供缩放、倍频程和持久度等参数。
- 使用基于规则的算法创建关卡,例如用元胞自动机生成洞穴,或用二叉空间分割生成地牢。
- 支持自定义种子值以生成可复现的结果,并可与 Unity 或 Godot 等游戏引擎集成。
- 支持多线程生成,提升实时应用的性能。
- 将结果导出为网格数据的 JSON 或高度图的 PNG 等格式。
使用模式
始终使用种子初始化以确保一致性;使用命令行快速制作原型,使用 API 进行集成。提供确切的参数,避免使用默认值。
示例 1:为游戏世界生成 Perlin 地形:
- CLI 命令:
openclaw generate terrain --noise perlin --seed 42 --width 256 --height 256 --output terrain.json - 代码示例(Python):
import openclaw; terrain_data = openclaw.api.generate_terrain({'noise': 'perlin', 'seed': 42, 'width': 256})
示例 2:使用规则创建程序化关卡:
- CLI 命令:
openclaw generate level --rules '{"min_rooms": 5, "max_rooms": 10}' --seed 123 --output level.yaml - 代码示例(JavaScript):
const openclaw = require('openclaw'); const level = openclaw.api.generate_level({rules: {min_rooms: 5}, seed: 123});
按照这些模式链接命令,例如先生成再验证:openclaw generate terrain ... && openclaw validate output.json。
常用命令/API
使用 OpenClaw CLI 或 REST API;通过 $OPENCLAW_API_KEY 环境变量进行身份验证。
-
CLI 命令:
openclaw generate terrain [flags]:参数包括--noise [type](例如 perlin)、--seed [int]、--scale [float];例如:openclaw generate terrain --noise perlin --seed 42。openclaw generate level [flags]:参数包括--rules [JSON string];例如:openclaw generate level --rules '{"type": "dungeon"}'。openclaw validate [file]:检查生成的输出;例如:openclaw validate terrain.json --check integrity。
-
API 端点:
- POST /api/procedural/generate:请求体为 JSON,例如
{"type": "terrain", "params": {"noise": "perlin", "seed": 42}};需要设置请求头Authorization: Bearer $OPENCLAW_API_KEY。 - GET /api/procedural/status:查询任务状态;例如使用身份验证请求头调用
GET /api/procedural/status?job_id=123。
- POST /api/procedural/generate:请求体为 JSON,例如
配置格式:API 请求体使用 JSON,例如 {"noise": "perlin", "octaves": 4};CLI 则通过参数或文件传入,例如 --config config.json,其中 config.json 的内容为 {"seed": 42}。
集成说明
调用前,请在环境中设置 $OPENCLAW_API_KEY;通过导入 OpenClaw SDK 并调用异步函数,将其集成到游戏循环中。对于 Unity,请使用 C# 封装器:OpenClawAPI.GenerateTerrain(new Dictionary<string, object> { {"noise", "perlin"} });。在 Godot 中,将其接入脚本:var result = OpenClaw.generate_level({"rules": {"min_rooms": 5}})。确保通过 SDK 配置启用错误日志记录,例如将 openclaw.config.log_level = 'debug'。
错误处理
始终使用 try-catch 块包装 API/CLI 调用;检查无效参数或网络问题等常见错误。
- 对于 CLI:解析 stdout 中的错误,例如,如果
--noise无效,则会返回 "Error: Unknown noise type";使用脚本处理:if [ $? -ne 0 ]; then echo "Generation failed"; fi。 - 对于 API:捕获 HTTP 错误,例如,在 Python 中:
try: response = openclaw.api.generate_terrain({...}) except openclaw.APIError as e: print(e.code) # e.g., 400 for bad request。 - 特定情况:如果 seed 不是整数,API 会返回 422;请先验证输入,例如,
if not isinstance(seed, int): raise ValueError("Seed must be an integer")。 - 对于暂时性错误,请使用重试:在代码中,
for attempt in range(3): try: openclaw.api.generate(...) except: time.sleep(1)。
图关系
- 相关内容:level-design(共享游戏开发集群,可用于组合关卡构建)、asset-creation(使用生成的内容作为输入)。
- 依赖项:noise-libraries(用于底层噪声函数)、game-engines(用于集成钩子)。