思考自动生成的游戏逻辑如何适配各大游戏引擎

林一二2024年05月13日 01:52

游戏数据和Schema是比较容易跨平台的,但 JS 的游戏系统在别的游戏引擎里需要通过普洱TS这样的JS运行时执行,实现与其它玩法系统的交互需要写很多API绑定。如果直接用 TS ECS引擎,则需要拼凑出商业引擎包含的其它很多系统,完成很多客户度打包和运行适配,很麻烦。

所以需要自己包装一个中间层,然后适配它和各引擎,并在这一层尽可能利用引擎的现有功能,简化gameplay的写法。尽可能用编译型语言通过FFI接入,减小抽象的损耗。

考虑到大部分玩家其实不想学习太多玩法,imessage-2024-03-16184312951,可以先用DSL或自定义的中间层开发少量玩法,AI只需要拼凑和生成胶水代码,甚至快速换皮换剧本文案即可。

更复杂的逻辑生成需要让AI理解需求到数据结构(component)的对应,以及这些component对应的概念在世界常识图谱中的相关节点,才能生成正确操作更新它们的System。

不确定这个中间层和各引擎的适配好不好做?这就像LLVM适配各编译目标一样。如果能用一个专门用于理解需求的语言模型去梳理需求,在用生成各引擎代码的语言模型去生成代码是否可以做到端到端?这样就把工程问题转化为数据制备和标注问题。

有像操作语义一样描述游戏需求的中间语言吗,应该没有,因为图灵完备的话就和编程语言无异了,而且用伪代码也无法描述各引擎不同的写法和接口。很多时候Gameplay并不是纯算法,他需要引擎本身的功能,比如对象啊,物理啊,事件等等,功能上就得取各个引擎的交集,会受一些限制,尤其是 UE 和 Unity 处理这些的方式都不一样。先简单封装一套 UE5 的接口(相当于参考 UE 的接口设计),然后封装成几套模板比如 FPS、Gelgame、战棋什么的,然后再想办法适配 react 、 cocos、unity 什么的,基于我的写法让工程师写各种变体,去训练 AI,然后AI 就会写这个简单的中间层了,相比为 UE5 等各写要简单。

相当于做了一个 Gameplay 中间件,类似 audiokinetic 等中间件。

反正做不到的话,关注检索插件、写胶水、换皮、写buff就好了,商业游戏没那么多新玩法需要写。

待调研

游戏循环放在原生层,是否制约了脚本层只能提供回调函数,无法动态注册新的系统。

脚本层的写法,需要多调研几个引擎,摸清接入方法。

动态数据付费创意工坊线上线下分类项目

Undefined widget 'supertag-form'

Code
游戏数据和Schema是比较容易跨平台的,但 JS 的游戏系统在别的游戏引擎里需要通过[ext[普洱TS|https://github.com/Tencent/puerts]]这样的JS运行时执行,实现与其它玩法系统的交互需要写很多API绑定。如果直接用 TS ECS引擎,则需要拼凑出商业引擎包含的其它很多系统,完成很多客户度打包和运行适配,很麻烦。

所以需要自己包装一个中间层,然后适配它和各引擎,并在这一层尽可能利用引擎的现有功能,简化gameplay的写法。尽可能用编译型语言通过FFI接入,减小抽象的损耗。

考虑到大部分玩家其实不想学习太多玩法,[[imessage-2024-03-16184312951]],可以先用DSL或自定义的中间层开发少量玩法,AI只需要拼凑和生成胶水代码,甚至快速换皮换剧本文案即可。

更复杂的逻辑生成需要让AI理解需求到数据结构(component)的对应,以及这些component对应的概念在世界常识图谱中的相关节点,才能生成正确操作更新它们的System。

不确定这个中间层和各引擎的适配好不好做?这就像LLVM适配各编译目标一样。如果能用一个专门用于理解需求的语言模型去梳理需求,在用生成各引擎代码的语言模型去生成代码是否可以做到端到端?这样就把工程问题转化为数据制备和标注问题。

有像操作语义一样描述游戏需求的中间语言吗,应该没有,因为图灵完备的话就和编程语言无异了,而且用伪代码也无法描述各引擎不同的写法和接口。很多时候Gameplay并不是纯算法,他需要引擎本身的功能,比如对象啊,物理啊,事件等等,功能上就得取各个引擎的交集,会受一些限制,尤其是 UE 和 Unity 处理这些的方式都不一样。先简单封装一套 UE5 的接口(相当于参考 UE 的接口设计),然后封装成几套模板比如 FPS、Gelgame、战棋什么的,然后再想办法适配 react 、 cocos、unity 什么的,基于我的写法让工程师写各种变体,去训练 AI,然后AI 就会写这个简单的中间层了,相比为 UE5 等各写要简单。

相当于做了一个 Gameplay 中间件,类似 audiokinetic 等中间件。

反正做不到的话,关注检索插件、写胶水、换皮、写buff就好了,商业游戏没那么多新玩法需要写。

!! 待调研

游戏循环放在原生层,是否制约了脚本层只能提供回调函数,无法动态注册新的系统。

脚本层的写法,需要多调研几个引擎,摸清接入方法。