Agent Skills
返回列表
🤖

程序化生成

AI Agent 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/procedural-gen-ann6。

技能介绍

为什么要用程序化生成

手写关卡和内容不仅重复劳动,还面临两个麻烦:无法复现和难以共享。如果用全局随机生成地图,某次生成的bug在下次运行时随机消失;玩家遇到好世界也没法把种子分享给朋友。程序化生成的核心是确定性——用同一个种子,无论何时运行,都能得到完全相同的世界。本技能帮你跳过踩坑,直接落地一套可复现的内容生成流程。

技能如何工作

本技能覆盖内容生成的全链路,核心能力包括:

  • 种子驱动的随机数:所有随机行为都通过同一个RandomNumberGenerator实例(Godot)或System.Random(Unity)完成,杜绝全局随机导致的不可复现问题。
  • 噪声生成地形:用fBm噪声生成高度图,给高程和湿度使用不同的种子,避免生物群落出现线性关联;详细的群落映射和岛屿塑形见references/noise.md。
  • 加权掉落表:用相对权重实现稀有度正确的物品选择,内置防连坏的"保底"机制,确保掉落分布符合预期。
  • BSP地牢布局:通过空间分区生成房间和走廊,附带连通性检查,避免出现孤立区域。

关键步骤

  1. 掌控随机性:创建一个种子随机数实例并传递给所有生成逻辑,永远不要在生成代码里调用全局随机。
  2. 匹配技术与内容:连续地形用噪声,离散房间用空间分区或智能体雕刻,稀有度结果用加权表。
  3. 先生成数据,再渲染:把生成结果写入int[][]或字典,与渲染逻辑完全解耦,方便后续调整。
  4. 验证后再交付:检查所有房间是否可达、出生点是否安全、出口是否有路径,拒绝或修复不合格的布局。
  5. 固定种子调参:每次只调整一个参数,然后扫描多个种子检查分布,而不是只看一张"幸运地图"。

适用边界

  • 不要用于渲染:把生成的网格绘制到引擎里,请搭配godot-tilemap或unity-tilemap-2d。
  • 不要用于AI寻路:在生成的地图上做AI路由,请使用game-ai技能。
  • 不要替代手工关卡:程序化生成和手工设计的关卡是互补关系,需要精细节奏的关卡请用level-design技能。
  • 避免常见陷阱:不要用全局随机、不要用相同种子生成多个噪声场、不要忽略连通性检查、不要给放置循环设置无上限。

参考文档

  • references/noise.md:octaves/lacunarity/gain、重分布、岛屿塑形、双轴生物群落查找、蓝噪声对象散布。
  • references/dungeon-generation.md:BSP、房间与走廊、随机游走洞穴、细胞自动机平滑、连通性验证、分布/保底表。

使用场景

  • 独立游戏开发者在开发roguelike游戏时,需要每次进入游戏生成不同的地下城地图,包含房间、走廊和宝箱
  • 开放世界游戏玩家想要生成可分享的世界地图,输入相同的种子就能回到同一个世界
  • 生存游戏玩家需要实现物品掉落系统,按设计稀有度正确掉落物品和装备,不要出现连续刷不出稀有装备
  • 沙盒游戏开发者在设计地形系统时,需要生成包含不同群落和地形的世界,固定种子生成高度图,群落间不出现线性关联

适合人员

  • 独立游戏开发者,正在开发roguelike或生存类游戏,需要快速搭建内容生成原型
  • 关卡策划,需要在手工关卡基础上补充随机地形或怪物配置,减少手工搭建工作量
  • 游戏引擎工程师,需要把确定性随机数和噪声模块集成到现有引擎中
  • mod作者,想给已有游戏制作随机生成mod,让玩家每次开局都有新体验