记录一个零代码基础零游戏开发经验的个人参赛者,通过和 ChatGPT 的对话,一步步向前冒险和探索,最终完成自我 Expanding 的 48 小时。
DAY 1
参赛背景
去年底和 Hugging Face 有一次小小的合作,举办了一场 AIGC 绘画主题的工作坊,自己也参加了官方组织的 DreamBooth 微调比赛,获得了不错的名次。所以体验很好,后续也一直有看blog的文章,关注新举办的比赛。很可惜错过了三个月前的 Jax Diffusers,这次的 Game Jam,虽然自己没有一点相关经验,但还是想挑战一把,看看在 ChatGPT 的帮助下,能往前走多远。
08:00 准备开动
今天是黑客松开始的第一天,参赛主题是凌晨一点公布。本想五点早起,一觉睡过头到七点。洗漱完,点进官网看到主题:Expanding。
关于比赛的信息,参见 全球开源 AI 游戏开发挑战赛,只等你来!
08:30 解读主题
虽然和预想的一样,主题应该是自由度很高的设定。不过还是对游戏的方向不是很确定,于是让 ChatGPT 帮忙解读了一下,并发到活动群里和大家分享。
09:00 方向探索
纠结了一阵,回到参加这次黑客松的初心,一来和自己工作关系不大,二来也不图奖金回报,还得拿出周末两天宝贵的时间,那就一定得享受过程。如何享受过程?很简单,探索的游戏内容一定要是自己感兴趣的。于是开始漫长的脑暴。
12:00 寻找灵感
经过上午的脑暴,还是没有出现一个画面,即我的游戏长什么样。可能是我平时玩游戏太少,所以我决定去找找灵感,毕竟模仿是最好的学习和实践。
我在 itch.io 平台上体验了三款游戏,按照评分排序玩的分别是 Adventures With Anxiety! 、We Become What We Behold 、Sort the Court!。
有点惊艳,游戏体验也很好,也收获了一些灵感。我希望我的游戏也是简单的,有内涵的,而不是追求华丽的画面。甚至可以没有图像只有文字。
13:00 初步方向
由于我的游戏经验比较匮乏,没见过足够多好的设计,想要纯靠游戏性取胜会非常困难。或许我可以换个思路,主打游戏化。也就是把游戏和个体的真实需求做结合。
而个体的需求无非就是饮食起居、健康、学习和娱乐等。
饮食:可以做一个「今天吃什么」的小游戏,或者推荐每天健康的膳食。
起居:可以做一个辅助早起工具,比如「早起做什么」
教育:可以做一个「背单词学外语」的工具,有点像小时候玩的青蛙过河背单词。
14:00 资料学习
有了初步方向后,我感觉都可以简单尝试下,可能在做的过程中能完全确定下来。
现在我还需要快速学习开发游戏的一些技能,通过和 ChatGPT 的对话,它推荐我先选择合适的游戏引擎,这里当然首推大名鼎鼎的 Unity。但我下载安装了 Unity,发现还需要手机号验证,不然无法使用 Unity Hub,我不太喜欢手机号验证,而且这次参加黑客松还有一个想法,就是希望尽量用「自然语言」告诉机器我想做的事情,因为 LUI (Language User Interface) 是我向往的未来。但如果借助 Unity,我必须使用它的语言,即图形界面,虽然高效和强大,但无法实践我的活动目标。
15:00 确定工具
经过一番思想建设,我决定进行一个更轻量化的尝试,放弃 Unity,直接用 HTML5 写一个网页游戏。我突然想到,或许可以先把历史上经典的游戏复现一遍,感受一下 AI 创作游戏的能力,这样就会有直观的体感。
于是写了贪吃蛇、扫雷和打飞机:
20:00 继续学习
我感觉直接用 HTML 还是可行的。而且我能直接用自然语言(日常已经习惯了语音输入),通过 ChatGPT 就能生成前端语言,而 JavaScript 的自由度又非常高,能力也很强大和全面,某种程度上已经实现了软件创造的 LUI!
我决定睡前再看一些学习资料,首先把 Hugging Face 之前的 5 天开发农场游戏系列 看了一遍。
DAY 2
08:00 开始制作
经过了前一天的学习和思考,我比较倾向做一款纯文字冒险的游戏,那这款游戏的素材就会包含文字故事、一些必要图片和音频。而文字又是 ChatGPT 比较擅长的部分,完全可以通过提示词生成文字故事的主题部分。于是白天我探索了多个版本的 demo。
Demo1:财富模拟器(模仿之前大火的人生重启模拟器)
Demo2:猫语训练师
Demo3:健康管理师
说实话这三个方向我还都不是很满意,总感觉差点意思。
14:00 灵感乍现
突然想起前几天做了一个心愿实验,这个实验很简单,就是说出自己的心愿和障碍,心愿就有可能实现。这个实验很有意思,那有没有可能将它做成一个游戏?
了解更多游戏背景
https://www.youtube.com/watch?v=H2rG4Dg6xyI
因为是游戏,我想加入一个场景化的设定,比如和未来平行宇宙的自己对话。
17:00 开始编程
我感觉效果还不错,那就决定是它了!
讲真,两天的黑客松,第二天的傍晚才完全定下来方向也是没谁了。
那就快速开动,我梳理了一下,晚上的时候可能需要做三个版本。
V1:在前段页面中接入 ChatGPT,实现我上述的文字功能,无图片无声音,有代码文件
V2:用开源的人工智能工具,生成图片和声音,添加进游戏里面
V3:适当调整交互,修改和润色页面,上线发布
18:00 V1 进行中
说实话,第一步就遇到了很大的困难,我完全不知道如何把 ChatGPT 接入进来。因为 ChatGPT 是 22 年才发布的,但它的信息只更新到 21 年 9 月,所以它是不知道如何接入和调用自己的(当然借助 Plugin 插件和后面几天全面放开的代码解释器或许能实现)。然后想到一个思路,把网上搜到的一些教程内容直接投喂让它学习,看看它能不能在接入 GPT-3 的基础上举一反三,经过了一个小时软磨硬泡,终于成功了!
async function ask(question) {
const API_KEY = '保密';
const model = 'gpt-3.5-turbo';
const response = await fetch('https://api.openai.com/v1/chat/completions', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${API_KEY}`
},
body: JSON.stringify({
model,
messages: conversationHistory
})
});
const data = await response.json();
return data;
}
20:00 V2 进行中
实现了基本的功能后,我需要加入图片和音频素材。
这时我想起在 2015 年玩过的一个经典游戏「lifeline」,它的页面和设定就完全是我想要的。
但是 ChatGPT 无法理解我想要什么页面,我只能让它试着描述一下,然后把描述的内容返回给它,生成相应的页面。
最终呈现的效果大概30-40分吧,勉强能用。然后调整了一些样式,比如字体颜色等。
然后还添加了背景音乐,用 Hugging Face Space 里的 MusicGen 生成。
22:00 最后冲刺
最后三个小时就是不断地和 ChatGPT 聊,不断地修改页面,中间也会间歇性的发呆,因为已经到达我平时的睡点了,困得不行。因为参赛要求是英文,所以还把里面的 Prompt 设定和中文内容全部改成了英文。
我简单用语言描述一下这个游戏,我给它取名为「Game Expanding」:
🖱️ 理想的交互流程大概是这样的:
用户打开游戏,会代入到一个场景,比方说在自己的书房发现一个对讲机。这个对讲机不像是地球的产物,反而像是外星来的。
打开对讲机,原来来自平行宇宙穿越而来的自己(这里有点像瑞克和莫蒂的剧情设定);
于是开始对话,对方会让自己聊聊心愿;当说出心愿后,对方会说在未来的某一年,我的心愿已经实现了,然后会给出画面的描述(这里接入 Stable Diffusion 来生成一副画面);
最后会告诉我是如何克服一个个障碍,最终实现心愿。
00:50 项目提交
还剩 10 分钟。于是开始填写项目提交页面,包括游戏的封面、介绍等。00:59 的时候,填写完所有资料,点击了上传,心满意足觉得又一次可以读秒踩点,突然弹出让我验证注册邮箱!
我寻思着前几天不是刚验证过吗,手贱刷新了一下,于是
终于,经过了 48 小时(并没有)的奋战,与成功提交擦肩而过!
参赛感受
过程反思
-
开始的时候应该对项目做一个整体上的时间规划,然后严格按照时间规划走,这样就不至于第二天傍晚才正式开始制作游戏 -
应该测试一下黑客松官网的提交功能,或者先提交一版,后面再修改,不至于失去评审资格 -
可以找一些外援,毕竟又是零基础,又是单兵作战,还是大大超出能力范围了
一点收获
-
在做几个 Demo 的过程中,写了有史以来最长的 ChatGPT Prompt,最终实现的效果都还不错,算是 解锁了「Prompter」的身份 -
从编程零基础到了解 Python、JavaScript 等编程语言,到了解 HTML、CSS 的结构,到使用 Visual Studio Code、JSFiddle 等平台,到最后使用编程语言写出一款应用(虽然严格意义上不算是一款游戏), 解锁了「AI 程序员」的身份 -
真正从零到一体验了制作游戏的过程,过程中了解了 Unity、Construct 3、Godot 等开发引擎,还顺带了解了 Flash 闪客的历史,相信不远的未来可以 解锁「AI 游戏开发者」的身份
游戏体验
游戏代码和效果演示可以从「夸克网盘」下载
后续行动
-
重点优化画面和故事设定,营造悬疑的氛围,增强游戏性和代入感 -
目前还没有实现生成图片功能,后面接入 SD ,因为梦想实现的那个画面很重要 -
优化对话和 Prompt 设定,减少回答的错误率。同时尝试接入其他的开源 LLM
对未来的想象
-
感受下来,目前完全倚靠 LUI,能创作的游戏类型还非常有限。后面还是需要学习 Unity -
通过 ChatGPT 生成游戏代码的过程还是高度不可控,像是抽盲盒,可能还需要等待 LLM 的 ControlNet 的到来。而且因为无法理解图片,或许要等到 GPT5 出来之后,实现了多模态,整个开发的过程才会更加顺畅和高效。 -
实践是最好的学习。相信未来会有更多完全没有基础的人,只是怀着对游戏的热爱,就可以成为创作者,在创作中和游戏发生更深的关系。
最后感言
这次黑客松的参赛主题是「Expanding」,我在 ChatGPT 的陪伴下,度过了一个充实又美妙的周末。完成了能力的 Expanding,身份的 Expanding,和自我体验的 Expanding。仿佛我就是主人公,在 48 小时的游戏里演绎了一小段人生。
本文转载自 社区供稿,内容不代表官方立场。
https://chatgpt5.notion.site/Huggingface-Game-Jam-fd4c4044274b4f9598d2d7894304c779
https://hf.link/tougao
本文分享自微信公众号 - Hugging Face(gh_504339124f0f)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。