老菜喵

V1

2023/03/31阅读:19主题:默认主题

给AI打工,2小时开发一款3D小游戏可行么?

给AI打工,2小时开发一款3D小游戏可行么?

体验链接:http://learncocos.com/aigcsnake/

商店地址:https://store.cocos.com/app/detail/4775

**小游戏地址(新版本还在审核): **

最近科技发展是日新月异。。

如果说 Stable Diffusion和Mid Journey只是卷死了美术,我们还在庆幸研发不能被替代。

那么3月份出来的GPT4 就让我感到危机了!!。。

那么很多同学就说,大不了我当UI崽,让GPT4给我写Shader么,对此,我同时持怀疑和焦虑。

本文从实践出发,从程序,Shader,美术,到音乐均由AIGC,二喵全程负责当UI崽,来探索AI的上限和下限,缓解焦虑。

写在前面

老习惯,先做思维导图,确定要做那些内容,游戏玩法是AI熟悉的贪吃蛇,这次要升级到3D贪吃蛇并加入新玩法和复杂地形。

为啥要先写思维导图呢,因为功能点比较多,中间改来改去怕影响GPT4的上下文。同时功能也会尽量拆开,避免相互干扰。

1.0 代码功能开发

第一次沟通

GPT4的API还停留在Cocos 3.3版本,这次是使用3.7.2 最新版本开发,先粘贴第一个需求,居然没有报错!

然后运行就翻车了!初始化直接报错,我发现直接空指针报错,检查后发现是_moveDirection 蛇的方向向量为空(猜猜为什么跑不起来?)

经过沟通后,小G很快修复了问题

运行一切正常。

然而加入水果的逻辑,第3次运行,发现蛇的方向错乱,作为1个老UI崽,很快意识到是蛇头的坐标被污染了,这时候已经开始打退堂鼓了,不会每次都需要我修改吧?

于是我开始CPU小G,在接下来的5个功能点上,一切正常。

小G和我的配合也渐入佳境

大概花了50分钟把全部的游戏逻辑写完了一切正常。

总结如下

在这次对话中,我们一起完成了一个基本的 3D 贪吃蛇游戏。您提出了一些问题和需求,我对代码进行了修改和补充。以下是您提出的修改和补充要求:

  1. 添加使用键盘 WASD 控制蛇移动的逻辑。

  2. 修正 _moveDirection 没有初始值的问题。

  3. 添加吃到水果后蛇身增长的逻辑,水果在地图上随机出现。

  4. 修改 _checkCollision 方法中不应使用 this._snakeHead.position.subtract 的问题。

  5. 添加游戏边界逻辑,超过边界游戏会重新开始。

  6. 在地图上添加一个坤坤,碰到坤坤后游戏会重新开始。

  7. 碰到水果后,坤坤的位置会随机改变。

  8. 吃到水果后有 30% 几率生成一个大西瓜,吃到大西瓜会增加 3 个长度。

  9. 吃到水果后有 10% 几率生成一个响雷果实,吃到响雷果实会增加速度 20% 并增长 2 个长度。

  10. 要求提供 randomRange 方法。

  11. 添加地图上每隔 10-20s 会随机生成一个缓慢果实,吃到缓慢果实会减速 20% 并减少 1 节身体。

  12. 优化生成特殊水果的逻辑,判断之前的节点是否存在,如果存在则重新设置位置,而不是重新生成。

  13. 添加上下左右四个按钮,按钮按下可以控制蛇的移动。

  14. 在电脑上运行时隐藏按钮,在手机上运行时显示按钮。

  15. 使用 touch down 的方式控制按钮。

  16. 添加一个 label 计分板,显示蛇身子的长度,每次增加和减少时会变化计分板。

  17. 添加一个 暂停 按钮,每次点击可以切换暂停和继续。

  18. 重新输出完整的代码,添加中英文注释。

  19. 添加摄像机跟随蛇头移动的脚本。

  20. 修改摄像机脚本中获取蛇头节点的问题。

  21. 添加摄像机阻尼,让摄像机跟随更平滑。

下面到了比较难地形的部分,这里新开了一个对话

这里需要小G在terrain上随机生成植物,跑起来是没问题的,但的生成的位置明显偏了一半的位置

不断提醒小G

快速修复

再拿这个写好的方法和之前对话沟通,

给蛇头和物体生成逻辑也加上,一切顺利!

程序部分就这样有惊无险的完成了。

2.0 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 保证性能!

3.0 音乐

https://mubert.com/

音乐就不需要AIGC添加脚本了,直接使用引擎的AudioSource 组件, 音乐使用的是mubert

关键词 fun happy snake

4.0 天空盒 https://skybox.blockadelabs.com/

也是prompts+blockadelabs生成,关键词 Fantasy, Forest, Lake

5.0 图片

https://www.midjourney.com/ 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输出就好了。

总结:

  1. 每次Prompts 需要要控制在2-3个,方便回馈和修复,比如一次把需求全部沟通完,如果报错,可能自己和AI都比较难定位
  2. 需要的内容版本信息和语言信息要明确,比如版本是Cocos 3.3 (GTP4 2021 知道的最新的版本), 避免使用更老的API;语言需要要求是TS (不然可能抄到JS版本);Shader 要求尽量参考Webgl,语法是Yaml
  3. 发现问题要尽可能详细的反馈,AI会学习这个问题
  4. 尽量在一个对话中沟通一个大的需求,保持上下文连贯
  5. 调整好心态,是AI在干活,你是老板,咖啡 Youtube 配鸭脖,发现AI有问题,CPU就好了,他改不好继续改,没事儿看看他打字
  6. 复盘,这个很重要让AI每次输出完复盘下,也观察下这次Prompts能否更精简,那些沟通是不必要的

比如有时候过度沟通,AI反而开始摆烂

调整心态,态度要好一点 ( 调整好态度后,果然注释全了,开始也以为是 Prompts里加了仔细,结果不尽然,OpenAI会判断是否对AI带有恶意,过度CPU可能会导致对话提前终止)

分类:

人工智能

标签:

人工智能

作者介绍

老菜喵
V1