游戏关卡生成器的演进:大型语言模型如何开启抽象化

30 八月 20268 视图

研究人员在整程序层面应用了进化搜索:大语言模型为四款游戏创建并改进Python生成器。新的CAD机制将成功的原语整合到公共模块中,这显著提升了每个测试场景中的最终适应度。

游戏关卡生成器的演进:大型语言模型如何开启抽象化

游戏世界生成:为什么关卡正在让位于生成器

通常,说到游戏内容的自动生成,人们会想到一个神经网络来绘制或组装单个关卡。但有一种更激进的方法:让语言模型不写关卡本身,而是写程序,由这些程序来生成关卡。这种转变看起来很小,但实际上改变了整个优化方式:不再需要遍历无穷无尽的地图变体,而是可以让算法本身进化——从而获得具有所需属性的整个关卡家族。

代码发生变异的进化

在一项刚被IEEE游戏会议(IEEE Conference on Games 2026)接收发表的新研究中,作者在四款经典游戏中验证了这一想法:《推箱子》、《塞尔达》、《Dangerous Dave》和《Lode Runner》。每次进化运行都代表一个用Python编写的完整关卡生成器,而变异和交叉算子的角色由大型语言模型扮演。也就是说,不是单个地图,而是完整的程序在代际之间发生变化。这使得搜索可以在程序化生成器的空间中进行,而不是在具体产物的空间中进行——从而找到能同时泛化到多个关卡的解决方案。

然而,这种方法有一个弱点:程序会迅速膨胀,有用的代码片段会淹没在随机的变更中。为了解决这个问题,作者提出了一种名为**持续抽象发现(Continual Abstraction Discovery, CAD)**的机制。

CAD如何帮助进化

CAD的思路是,在进化过程中,从高适应度的程序中提取出成功的原语,并将它们放入一个单独的辅助模块中。这个模块成为后续世代的共享“库”。这样,有用的模式就不会被重新发现,也不会被变异抹去——它们会被积累下来并继续使用。

为了了解其效果,研究人员设计了一个2×2矩阵实验:比较了有CAD和无CAD的运行,以及有固定领域API和无固定领域API的运行。总共进行了160次完整的进化运行,实验的每个单元格中至少有十次运行,每次运行50代。这是一个相当扎实的统计基础,足以支撑结论。

抽象确实有效

结果非常明确:在所有八项比较中,CAD都提高了平均最终最佳适应度——涵盖全部四款游戏和两种API变体。同时,进化过程中创建的“库”被大多数后来的程序积极使用。有趣的是,无论游戏和运行条件如何,CAD都反复重新发现相同的工具:关卡有效性检查、可达性检查和结构原语。这表明,这些抽象并非特定任务的偶然产物,而是游戏内容生成的基本构建块。

这对实践意味着什么

从实践的角度来看,这些发现支持一个简单的观点:如果我们希望语言模型创建好的程序化生成器,不仅需要鼓励“好”的程序,还需要给进化一种积累知识的方式。CAD正是做到了这一点——它将进化搜索转变为一个逐步构建自身领域的过程。模型不再每次都从零开始,而是学习先前找到的解决方案,并形成可靠的积木。

当然,在经典2D游戏上的实验只是一个开始。但如果这种方法能够扩展,我们可能会看到能够创造整个类型或意想不到的游戏机制的生成器。到那时,关卡进化将最终从内容的遍历转变为思想的进化——用程序语言书写的思想。

常问问题

游戏关卡生成器的演进:大型语言模型如何开启抽象化