mcpField
P
procedural-generation

procedural-generation

github.com/alphaonedev开发47 次安装
代码仓库

关于 procedural-generation

procedural-generation 是面向游戏开发者的 OpenClaw 技能,可用算法生成地形与关卡。它支持种子控制以复现结果,并可导出供游戏项目使用的数据。

主要功能

  1. 01通过噪声函数生成 2D/3D 地形
  2. 02基于规则生成关卡
  3. 03使用自定义种子复现结果
  4. 04多线程生成
  5. 05导出 JSON 和 PNG

适用场景

  1. 01为游戏世界创建多样地形
  2. 02生成洞穴和地牢
  3. 03通过命令行快速制作关卡原型
  4. 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。

配置格式: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(用于集成钩子)。

评论

支持 Markdown