We're sunsetting PodQuest on 2025-07-28. Thank you for your support!
Export Podcast Subscriptions
cover of episode 我找到了一位“有才华”的画家,想跟他从0开始,做一个游戏出来,名字叫《齐天大圣》

我找到了一位“有才华”的画家,想跟他从0开始,做一个游戏出来,名字叫《齐天大圣》

2024/12/20
logo of podcast 软件那些事儿

软件那些事儿

AI Deep Dive AI Insights AI Chapters Transcript
People
栋哥
Topics
栋哥:与画家合作,利用AI辅助开发一款名为《齐天大圣》的2D游戏。游戏灵感源于《黑神话:悟空》和《塞尔达传说》,主角为孙悟空。开发过程中,栋哥充分利用MarsCode等AI工具辅助代码编写,但仍需程序员编写大量代码,并对AI生成的代码进行修改和优化,以确保代码质量和性能。AI主要用于辅助生成代码框架和部分功能代码,但对于复杂的逻辑和性能优化,仍需程序员手动完成。游戏美术资源由画家绘制,而非AI生成。栋哥认为,AI是辅助工具,而非完全替代程序员,程序员仍然需要具备编程能力,并能够理解代码的运行机制。虽然AI可以提高开发效率,但它也存在局限性,例如生成的代码质量不高,需要程序员进行修改和调整。栋哥在开发过程中,也尝试使用多线程技术模拟3D效果,提升游戏画面表现。

Deep Dive

Key Insights

为什么选择《齐天大圣》作为游戏的名字?

游戏的主人公是孙悟空,这个名字与主题紧密相关,且具有文化象征意义。

画家在游戏开发中扮演了什么角色?

画家负责美术设计,包括背景图的绘制,而程序员则负责代码实现和游戏引擎的开发。

为什么选择孙悟空作为游戏的主角?

孙悟空是中国文化中的经典角色,具有广泛的认知度和吸引力,适合作为游戏的主角。

游戏开发中使用了哪些技术或工具?

使用了Java语言和2D游戏引擎,以及AI工具MaskCode来辅助编程。

AI在游戏开发中的作用是什么?

AI主要用于代码生成和辅助编程,但生成的代码通常需要手动调整和优化。

程序员如何看待AI在编程中的作用?

程序员认为AI是一个有用的帮手,但编程本身的乐趣和手动调整代码的过程仍然不可替代。

游戏开发中遇到了哪些技术挑战?

挑战包括实现复杂的背景效果和确保代码的精细控制,尤其是避免AI生成的不理想代码。

游戏的美术设计是如何完成的?

美术设计完全由画家手动绘制,AI目前还无法生成复杂的游戏美术资源。

游戏开发的目标是什么?

目标是制作一个能够留下深刻印象的游戏,结合画家和程序员的创意与技术。

Chapters
本期节目介绍了博主与一位画家合作开发游戏《齐天大圣》的过程。从最初的想法,到利用AI工具辅助编程,以及对AI在编程中的作用和局限性的思考,都进行了深入探讨。
  • 与画家合作开发游戏《齐天大圣》
  • 利用AI工具辅助编程,代码完成率约30%-40%
  • 探讨AI在编程中的作用和局限性,认为AI是辅助工具而非完全替代

Shownotes Transcript

大家好这一期呢是没有访谈按道理说是要有访谈的但是这几天我实在是没空剪这个电台啊已经录好了实在是没空剪而且我本来一直是要给这些听众给这个嘉宾要审核一下万一人家在电台里说了什么不该说的我至少应该剪出来是吧我觉得这是比较合理的但是我实在是没有时间所以呢这一期呢我就呃

录一个自己做的事情也算是给自己做个广告我跟画家就是电台采访第一期那个家伙然后做了一个游戏我们准备把他的名字叫做齐天大圣

他画家呢他结束访谈的时候不就说了吗是吧那个美术生嘛然后肯定是不像是我这种老实巴交的程序员他有三多嘛是吧想法多女朋友多然后游戏玩的也多我呢只是写代码比较多我跟他访谈之后啊然后后来不是出了这个黑神话悟空吗黑神黑神话这个游戏然后呢我就想哎好像是跟我想的我也买了哈嗯

然后我也玩通关了但是呢我又觉得好像是要是我能做一个类似于实现我想法的游戏就更好了是吧所以呢就在我不是有个论坛吗然后然后就就一直谈这个黑神话他就在画家呢就在论坛里写了一个对中国游戏的一些思考是吧其中也提到了这个黑神话但还提到过很多了

在那个帖子里我就留言我说要不我们一起做一个游戏吧他当时喜欢的风格是那个八方旅人那样的我不知道大家有没有玩过这个八方旅人但是呢我更加倾向于做一个更简单一点的但八方旅人看起来也不是很难但是八方旅人实在是太考验这个化工了嘛但是我更喜欢做一个类似于就是塞尔达传说

那样的游戏但是呢这个游戏的主人公是孙悟空哈然后实现我们想想实现的一些功能我之前不是写过一本书吗就是用加瓦哈用加我写了四本书我不是说要卖电子版吗第一本书是呃加瓦语言第二本书我就说要做一个游戏吗呃那个电子书上的那个游戏实际上是我做的那个玛里奥玛里奥然后就是说模仿一下玛里奥但是

我想想如果我万一出名了这个马里奥这个任天堂肯定不太好搞是吧当时我就在想要做什么后来我想想要不要搞个悟空啊但我也不会画画哎既然这样的话我可以稍微的替换一下哈内容也是差不多的我准备就是把这个马里奥替换成孙悟空然后再再发布因为这个画家跟我打关子的话咱不怕他是吧

单身电脑的话就比较怕它了然后在那个电子书里在我写的那个原来马里娃的电子书里实际上我就是做了一个什么做了一个 2D 游戏的引擎就是做游戏引擎的

其实呢把那些代码改一下改一下实际上再做一个 2D 的游戏应该是不成什么问题的我当时就是这个想法我就跟画家讨论我们并不是讨论技术上的问题只是在讨论应该怎么进行但就是这种东西讨论起来是没头的后来正好这个豆包就是叫 Mascode 那边举办一个活动活动的内容呢就是说你可以借助这个 Mascode 来写代码我就参加了一下

我就写代码的时候实际上我也是经常与这个大元模型对话但是我是古老一点的程序员嘛不像现在现在不是大家都会说我一行代码都不写但是呢我实际上还是写代码但是我还是尽量与他交流然后呢我大概利用的这个代码率可能是 40%或者 30%因为我写的会比较多然后有时候我会觉得 MaskCode 或者是类似于这种大元模型写的是不是很好

因为参加了这个活动嘛所以呢我就用视频的方式要记录一下怎么去使用 MaskCode 然后来讲一下我做了什么东西然后我就把它再上传到 B 站的这个视频上现在我已经上传了一期了最后一点感慨呢是说我前面也刚刚讲过就很多人都说嘛人工智能肯定是要取代程序员嘛基于这种理论的话很多人都是录什么视频录那种我一行代码也不写然后呢就让 AI 来完成一个软件

但是完成的软件都是相对来说比较简单的比如说你给我整个探测所或者是俄罗斯方块或者是一些不记单词的这种

就是说你自己写也会很快写出来的这些代码嘛这种软件嘛但是你实际上很难说我一号代码也不写然后实现一个类似于马里奥这样的是比较难的所以呢我觉得程序员还是需要会写一点代码的但我是认可 AI 就是在编程上的巨大作用但是我仍然会觉得编程本身它就很有趣尤其对我这种人来说我觉得

编程很有趣然后我觉得下项题也很有趣包括踢球也很有趣但是你说你不让我下题你说现在 AI 都已经可以代替下题了但是我仍然觉得下题很有趣编程也是这个样子包括足球也是这样我喜欢踢足球你说你这个现在你看那个机器人踢足球也许在某一天会变得非常非常厉害但是我仍然能从中获得快乐就踢球的时候我本身就很快乐嘛

编程也是这个样子我本身是觉得编程比较有趣我一点都不希望说我这样说一句话然后你把它给我整出来我自己整出来的同时我就觉得它已经很有趣了我更倾向于是说编程的 AI 成为我的一个帮手帮我少打一点字比如说我要做我会告诉他你给我生成一个线程然后处理一些什么东西然后他帮我生成了这个线程而不是

而不是说一些很宽泛的事情说哦或者你插一根电极到我的脑子里是吧然后这个游戏就出来了嘛你想什么他就可以做出来但是我觉得我也尝试这个做有人说你画一个这个嗯

突进用户界面它就可以生成实际上是不可能的实际上是非常非常难至少我是觉得非常难而且目前的 AI 还没有达到说与我心心相通的一个水平吧至少是马斯克那边的这个电极好像是还处于成功或者不成功之间吧将来也许会成功然后会插到我们脑子里你就可以编成了是吧想什么所想即所得但是它起点还是剥夺了一些乐趣是吧

我在实现的时候因为也是参加这个活动所以我就说 Masko 的还可以我说的还可以是什么我们经常会去比较的话尤其对我这种老派一点的成员就是我来自于完全是自己写代码或者是到 Stack Overflow 上去搜一下然后再运行现在的情况是你就是描述一下然后再运行

我在用它做实现的时候我发现了这个 AI 还是有很多的局限它确实给你一个可以运行的代码

但是呢写的非常粗糙并且也不是我喜欢的那个样子比如说我要做现成的话我要不停的告诉他我说哥们啊你你不要不要给我实现一个不要用继承的方法来做现成你为什么因为这个加把重啊他只有一个可以继承的你你继承了现成的话我以后再继承怎么办我要控制他我我就是要用一个接口他说好的然后他再实现的话又给你整成了这个整成了继承是吧所以

有时候你要给他解释为什么你不要再给我用这个继承了什么他是好的然后他就真的是会用一个实现一个 runable 这样的接口但是待等到改的时候他又忘了这件事情了或者等到后天或者大会天他还忘了这件事情那他又给你用继承再生成一个有时候就觉得哎呀非常的非常的累是吧他就是可以跑你说会怎么样子呢我也不知道

不太清楚但是我确实不习惯于他这样去实现嘛所以有时候很多的代码我都是他生成之后稍微改一下包括你每秒钟跑 60 帧啊或者是什么他确实会比较省力的做出他的一个版本但这个版本实际上是非常不好的人类也很容易就做出这个版本了比如说我们

现在电脑实在太快了嘛你很难说我要保持在 60 帧尤其是做 2D 来说它给你跑个 120 帧或者 240 帧都是非常非常有可能的超过了这个硬件的一个硬件的一个标准比如说我们这个显示器高刷也好好像跑不了那么多嘛但是由于现在这个电脑实在太快了哈

我试了好几个 AI 包括这个 MaskCode 啊他都会给你一个超简单的就是说你不刷 60 帧吗我就把它一秒钟然后分成 60 帧然后呢期间用一个非常非常简单的算法然后比如说我就让你睡一下嘛因为我知道你很快反正呢我就睡这么多然后就可以但实际上这是非常取巧的一个方式嘛我就不是很喜欢这种补全的方式作为一个老派的程序员我是经常就是

尽量自己写吧这种地方让它生成个大概然后呢尽量自己写包括背景也是这个样子背景的话因为我画家是画的一个背景图嘛有几层然后呢我又想实现一下看起来像 3D 的样子大家有空可以去看一下看一下这个视频的样子吧

然后你通过背景图如果加载其实电脑就很这个 Masko 的这种它就很容易给你加载上你就有背景图但是我希望是更复杂一点比如说我希望它有一点点我把背景有两个线程去写然后写两次我让它移动的速度不一样当你前面的人在移动的话精灵在移动的话

因为它两层背景两个线层在写背景然后把它速度移动的实际上是不同的话你就会觉得有一点点 3D 效果其实它不是 3D 的但是是有一点 3D 的效果所以我就是说也是对自己的要求也是我写书的时候会解释一下这个原理我不希望就是说就这样跟他说一下然后他生成一大堆代码然后你这样一运行就跑

因为越来越大的话我怕它控制不住啊但是我也相信那个网上讲的是我一行代码都不写嗯也可以运行但是呢我相信

对程序员来说你还是稍微的懂一点也许不用懂得那么精通你至少知道大概的一个机制大概的一个机制怎么去做所以我最后从美工上来说我们是完全是画不是我们画家自己画这个是不存在说完全是 AI 生成的这个 AI 很难去生成这种分针土跑起来的这种它很难去生成

其次一點的話是我

我是用的 AI 是比较多的这个 Maskord 是比较多的对对他来说还是用的比较少所以呢我们就尽量的去做这样一件事情吧就是我将来可能会在他画的时候我会不停的推进这件事情不只是参加这个活动然后我们尽量的做出一个自己心目中也许可以可以留下一点点什么东西的一个游戏吧

好嘞这一期呢我就简短的介绍一下我做的这个事情因为我们要举行一个比赛嘛所以你如果看公众号的话你可以复制一下这个链接然后帮我们去投一票因为实在是 22 号就结束了嘛如果你是 22 号才收听的还可以如果你是 23 号收听的就已经没法投票了是吧每天可以投一票好嘞非常感谢大家再见