mcpField
G
game-geometry-representation-choice

game-geometry-representation-choice

github.com/lvtd-llc开发158 次安装8 周前更新
代码仓库

关于 game-geometry-representation-choice

这项决策技能面向开发几何密集型游戏功能的开发者,帮助按操作需求选择几何表示方式,并规划转换边界、误差预算、属性处理和测试。

主要功能

  1. 01按操作选择表示方式
  2. 02比较网格、SDF、体素与曲线
  3. 03规划表示转换边界
  4. 04保留几何属性
  5. 05定义不变量与测试

适用场景

  1. 01选择可破坏地形的数据表示
  2. 02规划布尔或偏移操作
  3. 03设计平滑的相机或玩家路径
  4. 04制定网格与体素转换流程

安装

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

$npx skills add https://github.com/lvtd-llc/skills --skill game-geometry-representation-choice

安装后在 Claude Code 中输入/game-geometry-representation-choice确认已加载。

详细介绍

游戏几何表示方式选择

在编写几何处理密集型游戏代码前,请使用此技能。选择一种能让关键操作简单、可靠且足够快速的表示方式,然后有计划地确定转换边界。

主要来源:Oleksandr Kaleniuk 所著的《Geometry for Programmers》 (https://www.manning.com/books/geometry-for-programmers),经改编和转述,尤其是第 2 章和第 10 至 12 章。

核心工作流

  1. 首先明确操作:渲染、碰撞、拾取、偏移、变形、布尔运算、平滑运动、地形破坏、生成道具、编辑几何体或转换。
  2. 列出游戏已有的数据,以及最终需要的数据。包括纹理、法线、动画绑定、游戏玩法标签和 LOD。
  3. 选择最经济、最可靠地执行核心操作的工作表示方式。不要仅仅因为最终要渲染,就默认使用网格。
  4. 定义转换边界:输入表示方式、工作表示方式、输出表示方式、分辨率、可接受误差和属性传递方式。
  5. 为表示方式本身添加不变量和测试,而不仅仅检查最终视觉效果。
  6. 当操作组合发生变化时,重新评估选择。适合渲染的表示方式,可能并不适合编辑或碰撞。

表示方式指南

  • 渲染、GPU 管线、LOD、静态关卡几何体,以及在属性数据重要时近似光滑表面,使用三角网格。
  • 布尔组合、偏移、掏空、有机程序化形态、快速内外测试和可靠修复步骤,使用 SDF 或隐式场。
  • 可破坏地形、粗略占据状态、侵蚀/膨胀、降噪、泛洪填充、间隙检查,以及在共享网格上可靠执行类似布尔的操作,使用体素或图像蒙版。
  • 需要连续性的玩家路径、摄影机轨道、弹道轨迹、道路、河流、UI 曲线和动画控制,使用样条曲线或 Bezier 曲线。
  • 如果程序化物体由少量参数生成,例如旋转曲面、地形块、管道或轨道,使用参数曲面。
  • 平滑扭曲、影响图、风力/水流效果、程序化变化和非刚性变形,使用向量场或变形场。
  • 在一种表示方式负责交互、另一种负责渲染时,使用混合方案,例如体素雕刻后输出带网格 LOD 的结果。

决策规则

  • 如果操作属于布尔运算或类似偏移的操作,优先使用 SDF 或体素,而非三角网格,除非必须保留精确的网格拓扑。
  • 如果操作需要精确的纹理、法线、蒙皮或创作数据,请保留网格属性,或规划好转换后如何重新生成这些属性。
  • 如果系统需要平滑路径,请从曲线和参数化入手,而不是从采样点入手。
  • 如果游戏需要执行数千次重复的空间测试,请选择支持索引、局部性或预计算系数的表示方式。
  • 如果内存占用是主要限制,请优先使用网格或样条曲线等边界数据,而不是完整体素体积。
  • 如果可靠性是主要考虑因素,请优先使用网格、SDF 或带冗余回退的工作流,而不是单一且脆弱的网格算法。

输出检查清单

返回一份简短的表示方式说明:

  • 所选工作表示方式:
  • 现有输入表示方式:
  • 所需输出表示方式:
  • 得以简化的操作:
  • 变得更困难的操作:
  • 转换步骤:
  • 误差/分辨率预算:
  • 属性保留方案:
  • 退化或失败情况:
  • 最小化测试或调试视图:

常见错误

  • 从网格渲染,然后强行让所有游戏操作都在同一个网格上运行。
  • 在考虑 SDF 或体素工作流之前,就对任意三角形网格应用偏移或布尔运算。
  • 转换表示形式时,没有规划法线、UV、材质、游戏玩法标签、碰撞层或 LOD。
  • 在破坏了距离含义的操作之后,仍将仅表示符号的隐式函数视为真正的距离场。
  • 未证明内存和流式处理模型,就选择高分辨率网格。
  • 还没选择能让算法变得多余的表示形式,就开始优化算法实现。

评论

支持 Markdown