社区供稿 | Hugging Face AI 开源游戏竞赛参与过程纪录

2023/08/08 18:00
阅读数 98
AI总结

记录一个零代码基础零游戏开发经验的个人参赛者,通过和 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:财富模拟器(模仿之前大火的人生重启模拟器) https://chat.openai.com/share/01429a15-f8c0-43eb-b183-9efe1353899e

Demo2:猫语训练师 https://chat.openai.com/share/80e7fc95-42e2-4102-86a7-a7b84980e5d5

Demo3:健康管理师 https://chat.openai.com/share/718a0a62-e3fc-4218-9d06-755eced5d332

说实话这三个方向我还都不是很满意,总感觉差点意思。

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}`
        },
        bodyJSON.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 小时(并没有)的奋战,与成功提交擦肩而过!

参赛感受

过程反思

  1. 开始的时候应该对项目做一个整体上的时间规划,然后严格按照时间规划走,这样就不至于第二天傍晚才正式开始制作游戏
  2. 应该测试一下黑客松官网的提交功能,或者先提交一版,后面再修改,不至于失去评审资格
  3. 可以找一些外援,毕竟又是零基础,又是单兵作战,还是大大超出能力范围了

一点收获

  1. 在做几个 Demo 的过程中,写了有史以来最长的 ChatGPT Prompt,最终实现的效果都还不错,算是 解锁了「Prompter」的身份
  2. 从编程零基础到了解 Python、JavaScript 等编程语言,到了解 HTML、CSS 的结构,到使用 Visual Studio Code、JSFiddle 等平台,到最后使用编程语言写出一款应用(虽然严格意义上不算是一款游戏), 解锁了「AI 程序员」的身份
  3. 真正从零到一体验了制作游戏的过程,过程中了解了 Unity、Construct 3、Godot 等开发引擎,还顺带了解了 Flash 闪客的历史,相信不远的未来可以 解锁「AI 游戏开发者」的身份

游戏体验

游戏代码和效果演示可以从「夸克网盘」下载 https://pan.quark.cn/s/99462c0a6cd6

后续行动

  1. 重点优化画面和故事设定,营造悬疑的氛围,增强游戏性和代入感
  2. 目前还没有实现生成图片功能,后面接入 SD ,因为梦想实现的那个画面很重要
  3. 优化对话和 Prompt 设定,减少回答的错误率。同时尝试接入其他的开源 LLM

对未来的想象

  1. 感受下来,目前完全倚靠 LUI,能创作的游戏类型还非常有限。后面还是需要学习 Unity
  2. 通过 ChatGPT 生成游戏代码的过程还是高度不可控,像是抽盲盒,可能还需要等待 LLM 的 ControlNet 的到来。而且因为无法理解图片,或许要等到 GPT5 出来之后,实现了多模态,整个开发的过程才会更加顺畅和高效。
  3. 实践是最好的学习。相信未来会有更多完全没有基础的人,只是怀着对游戏的热爱,就可以成为创作者,在创作中和游戏发生更深的关系。

最后感言

这次黑客松的参赛主题是「Expanding」,我在 ChatGPT 的陪伴下,度过了一个充实又美妙的周末。完成了能力的 Expanding,身份的 Expanding,和自我体验的 Expanding。仿佛我就是主人公,在 48 小时的游戏里演绎了一小段人生。



本文转载自
社区供稿,内容不代表官方立场。
原文作者:Anders
本文原文:
https://chatgpt5.notion.site/Huggingface-Game-Jam-fd4c4044274b4f9598d2d7894304c779
如果你有好的文章希望通过我们的平台分享给更多人,请通过这个链接与我们联系: 

https://hf.link/tougao

本文分享自微信公众号 - Hugging Face(gh_504339124f0f)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
AI总结
返回顶部
顶部