赞
踩
给 AI 打工,2小时开发一款3D小游戏可行么?
源码下载地址见文末!
最近,科技发展是日新月异......
如果说 Stable Diffusion 和 Mid Journey 只是卷死了美术,我们还在庆幸研发不能被替代。
那么 3 月份出来的 GPT4 就让我感到危机了!
那么很多同学就说,大不了我当 UI 崽,让 GPT4 给我写 Shader 么?对此,我同时持怀疑和焦虑。
本文从实践出发从程序、Shader、美术、到音乐均由 AIGC,二喵全程负责当 UI 崽,来探索 AI 的上限和下限,缓解焦虑。
写在前面
老习惯,先做思维导图,确定要做哪些内容?游戏玩法是 AI 熟悉的贪吃蛇,这次要升级到 3D 贪吃蛇并加入新玩法和复杂地形。
为啥要先写思维导图呢,因为功能点比较多,中间改来改去怕影响GPT4的上下文。同时功能也会尽量拆开,避免相互干扰。
01 代码功能开发
第一次沟通,GPT4 的 API 还停留在 Cocos 3.3 版本,这次是使用 3.7.2 最新版本开发,先粘贴第一个需求,居然没有报错!
然后运行就翻车了!
初始化直接报错,我发现直接空指针报错,检查后发现是 _moveDirection 蛇的方向向量为空(猜猜为什么跑不起来?)
经过沟通后,小 G 很快修复了问题。
运行一切正常。
然而加入水果的逻辑,第3次运行,发现蛇的方向错乱,作为1个老UI崽,很快意识到是蛇头的坐标被污染了,这时候已经开始打退堂鼓了,不会每次都需要我修改吧?
于是我开始 CPU 小 G,在接下来的 5 个功能点上,一切正常。
小 G 和我的配合也渐入佳境
大概花了 50 分钟把全部的游戏逻辑写完了一切正常。
02 小结如下
在这次对话中,我们一起完成了一个基本的 3D 贪吃蛇游戏。您提出了一些问题和需求,我对代码进行了修改和补充。以下是您提出的修改和补充要求:
添加使用键盘 WASD 控制蛇移动的逻辑。
修正 _moveDirection 没有初始值的问题。
添加吃到水果后蛇身增长的逻辑,水果在地图上随机出现。
修改 _checkCollision 方法中不应使用 this._snakeHead.position.subtract 的问题。
添加游戏边界逻辑,超过边界游戏会重新开始。
在地图上添加一个坤坤,碰到坤坤后游戏会重新开始。
碰到水果后,坤坤的位置会随机改变。
吃到水果后有 30% 几率生成一个大西瓜,吃到大西瓜会增加 3 个长度。
吃到水果后有 10% 几率生成一个响雷果实,吃到响雷果实会增加速度 20% 并增长 2 个长度。
要求提供 randomRange 方法。
添加地图上每隔 10-20s 会随机生成一个缓慢果实,吃到缓慢果实会减速 20% 并减少 1 节身体。
优化生成特殊水果的逻辑,判断之前的节点是否存在,如果存在则重新设置位置,而不是重新生成。
添加上下左右四个按钮,按钮按下可以控制蛇的移动。
在电脑上运行时隐藏按钮,在手机上运行时显示按钮。
使用 touch down 的方式控制按钮。
添加一个 label 计分板,显示蛇身子的长度,每次增加和减少时会变化计分板。
添加一个 暂停 按钮,每次点击可以切换暂停和继续。
重新输出完整的代码,添加中英文注释。
添加摄像机跟随蛇头移动的脚本。
修改摄像机脚本中获取蛇头节点的问题。
添加摄像机阻尼,让摄像机跟随更平滑。
下面到了比较难地形的部分,这里新开了一个对话。
这里需要小 G 在 terrain 上随机生成植物,跑起来是没问题的,但的生成的位置明显偏了一半的位置
不断提醒小G
快速修复
再拿这个写好的方法和之前对话沟通,给蛇头和物体生成逻辑也加上,一切顺利!
程序部分就这样有惊无险的完成了。
03 Shader 环节
接下来到了Shader了,心理是一阵炸裂,因为3.3 的API比较老,先从最简单的 Blinn-Phong 开始。
VS 部分写了一半我就炸了
这个信息太老了
反复修改先把 VS 解决
FS 部分先忽略 API,这个光照模型没考虑摄像机的观察位置。
然后各种向量计算问题,各种 API 和 Global 变量问题
经过了1个小时的折腾(中间换了2次对话,太曲折了,目前还是建议大家参考为主)...... 总算在 3.7.2 跑起来了
接下来是写 1 个草的风吹效果,也是很常见的效果,还好做了心理准备,这里 GPT4 上来就把 Chunk 漏了。
为了面子,小 G 快速去 Github 抄了1个。
跑起来又出了问题!!
这里其实也不怪小 G,用的是 2.x 的 API。
我们改成在透视的矩阵变换之前添加效果,这时候就可以看到风吹草动的效果了。
最后设置 ok 开启 instancing 保证性能!
04 音乐
https://mubert.com/
音乐就不需要AIGC添加脚本了,直接使用引擎的AudioSource 组件, 音乐使用的是mubert
关键词 fun happy snake
05 天空盒
AI天空盒:https://skybox.blockadelabs.com/
也是 prompts + blockadelabs 生成,关键词 Fantasy, Forest, Lake
06 图片
AI绘图:https://www.midjourney.com/
prompts:snake eating an apple, cyberpunk , in the space, hyper-realistic, surreal, fantasy, cinematic, extremly detail, 3D, manipulation, VFX, vivid background, cool --q 2 --v 5 -
Icons
写在最后
目前GPT 的数据库比较老,在 Shader 上遇到了很多问题,然后无论如何,用2个小时时间,搞定一个小游戏还是很香。
最关键的是不用怎么动脑,CPU AI输出就好了。
总结:
每次Prompts 需要要控制在2-3个,方便回馈和修复,比如一次把需求全部沟通完,如果报错,可能自己和AI都比较难定位;
需要的内容版本信息和语言信息要明确,比如版本是 Cocos 3.3 (GTP4 2021 知道的最新的版本), 避免使用更老的API;语言需要要求是TS (不然可能抄到JS版本);Shader 要求尽量参考 Webgl,语法是 Yaml;
发现问题要尽可能详细的反馈,AI 会学习这个问题;
尽量在一个对话中沟通一个大的需求,保持上下文连贯;
调整好心态,是 AI 在干活,你是老板,咖啡 Youtube 配鸭脖,发现 AI 有问题,CPU 就好了,他改不好继续改,没事儿看看他打字;
复盘,这个很重要让AI每次输出完复盘下,也观察下这次 Prompts 能否更精简,那些沟通是不必要的。
比如有时候过度沟通,AI反而开始摆烂。
调整心态,态度要好一点 ( 调整好态度后,果然注释全了,开始也以为是 Prompts 里加了仔细,结果不尽然,OpenAI 会判断是否对AI带有恶意,过度 CPU 可能会导致对话提前终止)。
最后是游戏体验链接和源码下载地址,欢迎关注作者公众号!
H5体验链接:
http://learncocos.com/aigcsnake/
源码下载地址:
https://store.cocos.com/app/detail/4775
孙二喵公众号:
往期精彩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。