Blog / 想法与取舍
从魔法世界到对象与规则:一次没有继续的想法
从 AI 组合魔法技能,想到材料、连接和共享状态,最后回到编辑器与仿真系统。记下这次想法如何展开,以及我为什么决定不继续做。
文章目录7 节
这次想法的起点,是一个魔法世界。
我想象的魔法有材料、有形状,也有一个形成的过程:碎光沿着圆环排列,几层法阵反向旋转,再把其中一部分收束成光幕。换一个结构、改变运动和作用的顺序,会不会就得到另一种技能?
如果把这个过程交给 AI,它能不能根据一句描述,把技能内部的东西组合出来?
沿着这个问题,我从游戏技能想到材料模拟,又想到共享状态和世界编辑器。想法的范围逐渐变大,实现方式却越来越熟悉。最后,我决定不继续推进这个项目,先把这段思考留下来。
这是一份讨论与取舍的记录。我没有实现这套新系统,也没有通过实验得出它无用或不可行的结论。
先想组合一个技能
一开始,我关心的是技能怎样形成。
比如“三层法阵,外环的碎光聚成一道向前推进的光幕”。这里可以拆出空间上的排列、层与层的关系、旋转方向,以及不同阶段之间的转换。AI 需要决定这些部分怎样组织;程序把它们画出来,再把构造过程保存下来。
保存之后,施放技能就可以直接执行这份结果。构造技能和使用技能因此能够分开讨论。
我也一度考虑过:是否需要一个专项小模型,让性能较弱的电脑也能使用?但越往下想,越觉得这还不是眼前最需要解决的问题。后来我把模型大小和部署优化暂时放下,先考虑用在线大模型写构造代码,看看这个应用场景本身能提供什么。
从好看的魔法,想到会发生作用的材料
光幕可以只是画面里的效果。我又想往前走一步:让组成技能的东西参与世界的运行。
设想用水形成一面冰墙,需要先把水维持在墙的形状,再让它经历冷却和凝固。形状能否维持、材料够不够、凝固之后能否支撑自身,都需要规则来计算。只给一个物体取名叫“冰墙”,还没有说明这些过程。
这个例子把注意力从技能移到了材料上。同样的塑形操作,作用于水、木头和铁,应该面对不同的条件和结果。
接着,连接也变得重要。我想到用木头、铁和胶水做一面盾:木头可以加工,铁可以变形,零件之间可以用榫卯、胶接或焊接形成连接。组合完成后,各个零件、连接位置和材料状态仍然存在,后续才能继续拆解、修改和受到作用。
在这样的设想里,一面盾只是其中一个组合。相同的材料和操作,也可以被用来构造门、桥或容器。
此时,我想做的已经逐渐变成一个仿真探索:提供一套对象和规则,让人或 AI 组合零件,再观察它们如何共同运行。游戏可以是应用方向之一,但这个探索本身不必先做成游戏。
用代码看,这些东西是什么
想象里的世界很大,落到代码里,可以先从一个普通对象开始:
物体:几何、位置、组成材料
材料状态:温度、形变、相态
连接:接在哪、怎样接、当前是什么状态
操作:切割、连接、加热、移动
然而,填上属性只完成了描述。
写下“硬度很高”,程序仍然需要规定受力后怎样处理;写下“能够融化”,也需要规定材料在什么条件下变化,以及变化会影响哪些行为。大量属性不会自动长成一个能运行的世界。
还会有一些状态需要共享。几个对象可能接触同一个物体,也可能处在同一片受热区域中。一个零件断开,可能改变其他零件的支撑关系;一种材料发生变化,也可能影响连接状态。分别更新对象时,必须知道它们引用的是不是同一份事实,以及这些变化如何传递。
想到这里,我开始觉得:这些工作和正常的编辑器、对象系统与仿真运行时,究竟有多大区别?
世界编辑器负责表达和修改对象;仿真规则推进它们的状态;AI 根据人的意图,生成或修改构造过程。换成这组描述后,原先看起来陌生的“构建一个魔法世界”,有了更熟悉的技术位置。
AI 的位置逐渐清楚了
在这套分工里,AI 可以帮助我组织材料、结构和操作顺序,也可以根据要求修改其中一部分。规则是否允许、结构怎样变化,仍然需要由执行系统计算。
例如,我说“保留盾面,只改握把的连接”,值得关心的是:AI 能否保留原有结构,只改对应的部分?保存之后,能否继续加载、修改和执行?
这些问题很具体,也可能有价值。但它们已经把研究重点带到了生成、编辑和执行之间的配合。给整套东西加上“世界”或“魔法”的名字,并没有省去其中的工作。
整理这次讨论时,可以用几个相邻实践帮助定位这些问题:
- Noita 允许玩家用法术改变材料环境,官方介绍包含像素材质及简化的化学、电学和热学反应。1
- The Powder Toy 提供材料、液体、气体和电子元件,让玩家结合气压、热量、重力等模拟能力构造复杂装置。2
- Text2CAD 研究从自然语言生成参数化 CAD 建模序列,为“把描述变成构造操作”提供了一个具体的研究例子。3
它们覆盖的是相邻问题,不能据此断言我的完整设想已经被实现。其中,建模序列的生成也不等于材料反应或结构可靠性已经得到验证。
对我来说,这些参考更有用的作用,是让问题变得准确:我还需要补上哪一段?这一段又为什么值得单独做?
为什么决定停在这里
想到这里,我发现,这套设想最后还是回到了对象、属性、共享状态和编辑操作。AI 负责组织这些操作,但系统本身与普通编辑器已经没有我起初想象的那么大区别。
“构建一个世界”把这些工作放在了一起。材料种类、连接方式、状态变化、交互界面,都能继续往下展开;但把它们拆开之后,我最初感觉很特别的那部分,也变得熟悉了。
因此,这次我决定不再继续,把讨论过程记下来。
这里的取舍只针对这一次构思。AI 辅助构造、可编辑的仿真世界、基于规则的魔法系统,仍然各自有值得研究的问题。这次停下来,也没有替它们得出一个普遍结论。
留下来的是问题
这趟思考留下了一个我以后还会用到的问题:
把世界观、演示效果和宏大的名字拿开之后,我希望这个系统多提供哪一种具体能力?
下一次再遇到类似想法,我可以先回答它,再决定要不要做。
我也愿意在 Blog 里保留这样的记录。一个想法怎样吸引我、怎样被拆开、在哪一步失去了继续投入的理由,这些过程同样能说明我在思考什么。以后有了新的场景或更明确的问题,也能从这里接着想,而不必重新经历一遍同样的发散。
参考文献 / References
-
Nolla Games. Noita 官方网站。这里引用的是官方对材料与简化模拟的介绍,不将其理解为完整现实物理模拟。 ↩
-
The Powder Toy. The Powder Toy 官方网站。这里引用的是其材料与模拟能力,不据此推导 AI 编排或工程仿真的可靠性。 ↩
-
Khan et al. 2024. Text2CAD: Generating Sequential CAD Models from Beginner-to-Expert Level Text Prompts, v1。论文讨论文本到参数化 CAD 建模序列,不是对本文构想的实现证明。 ↩