简短版本:我用Rust和Bevy构建了一个叫做stellar breach的游戏,使用的是antigravity工具,并且还能够及时地玩这个游戏并且有趣。现在steam游戏的预览版已经上线:https://store.steampowered.com/app/4527640/Stellar_Breach/

https://www.reddit.com/r/gamedev/comments/1sq1zy5/i_built_a_game_in_rust_and_bevy_using_antigravity/

大家好,

我花了几个月的时间来构建stellar breach,该游戏是2.5D的空间roguelite冒险游戏,里面有个名叫比纳比的熊和他的AI伙伴C.A.T。这个项目算是比较有挑战性的,但主要是因为gemini flash工具写出了主要的代码。这个游戏完全都是用Rust编写的,使用Bevy引擎和Avian3D物理引擎。

在更多的信息之前,我想说说我对开发的体验。 AI工程中,有一个概念叫做“基座化”,它的实践是将模型的响应固定到一个具体可靠的参考来源上。基座化对于避免幻觉是一个最佳解决方案,迫使模型在原始输入上生成大部分的文本。 我找到google的网站提供了一个好的概述:https://docs.cloud.google.com/vertex-ai/generative-ai/docs/grounding/overview

基座化是一个有趣的领域,但最终还是要看输出的百分比来自输入的百分比,而不是模型自身的权重。为了体现这一点,我想向你们展示一个我在构建stellar breach的过程中经常遇到的场景:在bevy 0.15中,despawn_recursive是一个函数,但是在bevy 0.18中就不再是一个函数了,而是没有despawn_recursive了。 Without Grounding I would have a choice between building using 0.15 which lacks features that I wanted, or building using 0.18 and having to fine tune a model to be better at writing Bevy 0.18 code, with proper grounding I could simply continue using Gemini Flash。

我将这个概念应用到了我的代码base中。我称之为grounded development。主要是通过要求llm实现一个特定的架构,并且提供输入到prompt中的样例代码作为参考。

例如,当我需要构建游戏的叙述UI,我不会要求llm写一个支持分支对话和2个小游戏的接口,而是告诉它一段关于bevy 0.18 UI文档的连接,提供一个列表关于关键的接口元素,包括键盘导航、圆角、对比度以及一个参考的存在文件中关于游戏对话的metadata。

基座化的一个好处是它在使用的时候会越来越好。随着功能实现起来的越来越多,模型会越来越多地依赖已有的代码而不是使用web搜索功能。更好的部分是输入prompt的功能能够实现而不是如何实现。

最大的赢利点并不是就是能够更快地编写代码,而是在能够有足够的空间和精力来玩自己的游戏而不是燃烧在错误和语法上的精力。它让我有一颗能动的思考脑,是可以去尝试多种解决问题的方法。同时,给我时间设计好游戏关卡,写出自己的着色器,和沉迷在blender中的使用边框以及倒边的功能来制作科幻风格。

目前我的游戏暂时只有一个预览版本,预计还要到8月份才会有一版正式的发布。这个过程对我来说是深受欢迎的,并且我确信是没有antigravity和gemini flash的帮助下,也不会完成这个项目。