Unity 技术总监杨栋在 Unite2017 大会上的游戏原型快速开发实践分享

2024-07-30
来源:网络整理

本文是技术总监杨东在本次大会上的分享。

关于

该大会是由游戏开发者联盟举办的全球开发者大会,已有10年历史,已成为游戏行业及VR/AR行业最权威、最具影响力的盛会。

今天的主题是游戏原型快速开发实践。我的主题和前面的同事稍有不同,他们会讲一些非常技术性和数学公式,非常实用。我主要想讲一下我以前做过的一个项目。这个项目好像是在实验室里做的,我尝试了很多东西,用了很多工具。我觉得把这个项目分享给大家会很有帮助。

我目前负责我们大中华区讲师团队,后面会跟大家简单介绍一下我们的团队,这个就到最后了。另外一个业务就是跟第三方平台合作,比如小米,我们有小米平台的支持,小米平台对于国内的开发者来说是一个非常好的游戏发布平台。我们做的包括2017.1要发布的平台,都是直接在安卓平台下的。

1.为什么要制作游戏原型?

当然在座的各位大部分都是游戏开发者,可能你们已经在一定程度上完成了游戏的制作甚至是自己完成了整个流程,正如你们所知道的,制作游戏原型其实对于我们游戏设计来说是一个非常重要的流程,因为你们知道在一款游戏上面我们不可能花很多的时间和精力,可能策划也好,老板也好,想要做一个这种类型的游戏,我们就必须要做一些原型,包括找出我们需要用到什么样的技术,需要什么样的玩法,需要什么样的游戏,这样的玩法才是有吸引力的,我想给大家提供一些这方面的内容。当然游戏原型开发的形式有很多种,有时候可能你有一个想法,用纸和笔就可以把游戏原型实现出来,当然游戏原型是可玩的,你可以直接修改里面的素材,实现自己不同的想法。

第一点当然是验证技术的可行性,包括你要用的引擎,你要用的技术,包括AI,你可以直接做一个简易版。第二点就是测试核心玩法。大家知道,你玩游戏,一个游戏一定要有一个核心玩法,这个才是真正吸引玩家来玩你的游戏的。如果只是纸上谈兵,是没有办法做任何测试的,所以游戏原型可以支持你做小规模的测试,无论是内部还是外部。第三点就是,你可以从一堆原型中挑出最好的玩法和原型。大家知道,这种游戏每年都有,去年我们同事就参加了,很有意思,48小时之内就做出了一个可以玩的游戏。我们来看一个具体的例子,大家知道,现在最火的游戏是GDC,其实它最初的原型是这样的,音频是日文的,我就不放出来了,之前是2D的,但是这是3D的最终场景。 它可以用很简单的2D游戏来快速实验自己的数值设计和AI,而不需要花费很多的精力和时间去把具体的3D模型做出来。

再比如我们非常熟悉的它最受欢迎的游戏,目前有四款游戏,但是利润非常高,其实有一款游戏,在制作之前,他们制作了十个原型,他们淘汰了十个原型中的七个,留下三个。然后他们做了试运行,试运行过程中又淘汰了两个,最后留下了这款游戏。想要得到一款高质量的游戏,玩家可以继续玩,经济效益巨大的话,就可以制作游戏原型。

2. 游戏开发制作团队

其次我们很多游戏公司可能有好几种类型的工作人员,首先需要策划,然后有程序员,美工,可能还有音乐专业的人,最后可能还有一个老板,他可能只管商业方面的事情,他其实并不会开发代码,但是他知道市场需要什么,或者他很有钱。OK,人那么多,谁来做这个游戏原型呢?理论上任何人都可以做游戏原型,只需要会用工具就可以了。当然游戏策划可能想法最多,他知道自己设计的系统是什么,玩法是什么,价值观是什么,关卡是什么,他可以和我们的程序员以及我们的美工,音乐专业的人,当然还有我们的老板,大家一起合作把原型做出来。因为如果一个工具好用,比如说他熟悉了,他就可以拿来用,让程序员和美工跟他一起干。因为策划一个游戏最重要的能力,并不是他的想法有多新颖,或者有多少。 其实说到底还是沟通能力。程序员、美工、老板,这些人都有自己的想法。如果他沟通能力强,能把自己的想法传达给这些人,让大家形成合力,这是最好不过的了。游戏的想法大家都知道。在座的几百个人,每个人可能都有几十个很奇怪的想法,但是你怎么去传达,怎么让大家配合你去完成。

3. 如何制作这个游戏原型

现在我们知道了谁可能是做这件事的人,以及我们如何制作游戏原型。首先,就像我前面提到的,我们可以用纸和笔,这很简单,很快。但是你的沟通效率可能没有那么高。因为人们可能不理解你的想法。当然,第二个是一个偷懒的想法,有很多模板。像FPS,你可以使用它们。这是一种快速制作原型的方法,当然成本也不太高。但大多数情况下,我们可能是程序员,我们有现成的代码和素材,我们可以使用它们来快速制作出原型。这种方法就是我接下来要讲的,我以前做过这种原型方法。

我主要想说一下实际的项目分析,其实这个项目是我和另外三个朋友在去年三月份我加入之前就开始做的,也就是一年前,我们几个人花了大概一个月的时间,利用业余时间做的,因为他们也在别的公司上班,他们也有这个想法,想要做这个故事,他们是美术设计感比较强的人,所以就做了一个,他们还给我一个视频,想要我利用这个工具来实现视频里的主要功能,我给大家放一个视频,给大家看一下他们要做什么。

(播放视频)。

这是我们的第一稿,第一版,一个非常粗糙的角色设计。而这个是角色设计的最终版本。这是他们做的第一个视频,效果是什么样的。包括这个应该是第二个版本中的第二个场景。这是他们在最终版本中想要实现的效果。当然,我们最终实现的并不完全和这个一样,但我们想研究技术可行性,以及可以用什么方法快速实现效果。制作这些角色,做这些动画六连击。我稍后会详细向大家解释。

这个技术游戏原型的目标其实是我朋友的团队实现的,其实从编辑器上操作起来比较困难,他们想尝试用它来开发这个2D游戏,他们想要实现的具体功能我都列在这里了。第一个是背景视差滚动功能,这个当然比较简单,我会讲解一下怎么做。然后就是导入素材的问题。第三个是主角的连击操作,这个怎么实现。第四就是找一个合适的系统,做一些简单的AI。第五就是触屏的滑动操作,这个可以让你拥有更高的灵活性。然后就是解决物体在合适的时机碰撞的问题。正确的位置的问题就出现了,你需要在合适的时机打出你的打击效果,这其实是需要一些工作量的,我会讲解一下怎么解决。最后一个是粒子效果,这个比较简单,用一些素材就可以了。

能简单说一下每个功能点是怎么解决的吗?比如说视差滚动,我们2D平台有,官方项目里面有现成的脚本,直接找地方放上相机和相关背景就可以了。然后只要关联那些层层的背景素材就可以了。因为有现成的东西,所以不用自己花时间去写。如果你想证明自己的技术,没问题,自己写一个就可以了。

第二点是解决素材导入的问题,我找到了一个GAF Pro插件,在对比和看了用户的反馈之后,决定用这个,还给团队写了封信,问他们有没有关于性能的具体问题,最后决定用这个工具。

小米开发文档_小米开发程序怎么打开文件_小米开发程序打开文件错误

第三点就是主角的连招操作。一开始我们想写一堆代码来控制这些触摸屏,其实我想要实现的效果就是我按住按钮,每次点击间隔0.3毫秒,如果下次点击超过0.3毫秒我就回到待机模式,逻辑很简单,虽然这个逻辑很简单,但是你要打出一个六招连招,我相信代码肯定能写出来的。但是当时我选择用它来做这个连招操作。

它的动作非常多,你可以看到这一长串的列表,你得照样写代码,去对应每一个动作。但是好处就是都写好了,你只要把节点关联起来就行了。这就是快速开发的好处。还有就是如果你找到一个相关的动作,它有一个按钮,然后安装其他几个文件。它有一个动作搜索引擎,可以直接把开发者贡献的脚本调出来。放在这里,你就可以搜索出来,直接导入使用。当然,所有这些代码都是开源的。

我使用这个插件来实现触屏操作,5,只是通过一个简单的脚本,我来解释一下它是怎么跟它交互的。还有一个问题就是要解决这个碰撞体在正确的时间出现在正确的位置的问题。大家知道,我刚才展示的动画有点难解释,我就直接打开项目,在这个项目中,假设我把所有的素材都导入了,背景也设置好了,那么我可以做六连击然后击倒,或者我只有一个操作,或者我可以用一个大招或者跳跃。像这种操作,首先看我挡他的球的时候,我要知道我是不是打中了他的肚子,但是他的肚子在什么位置,我不知道。它只是一个图,不像3D,只是一个长方形的图。所以一个解决方案就是跟美工商量一下,就是你攻击他的时候,我要知道这一拳是在什么时候打出来的。比如说我们来看这个主角,它的插件导入之后,你可以调整你的帧数。 比如说我打拳的时候是这样的,在这个地方,我可以在这个点放一个,如果我遇到僵尸的话,这个动画要播放,如果只是在这里加了不管,往往会打到敌人了,效果一直播放,这不是我们想要的。所以我们就跟美术讨论了一下,做了不同攻击时期的节点。当拳头挥出去的时候,这个地方就是攻击判断点,我知道他的手是这样生成的,在这个地方,我们可以给它加一个视线,这个视线可以做到,当你进入的时候,它什么时候进入我们就知道了。如果它停留在那个动作,我们也知道。如果它结束了,我们也知道。其实这个很简单,当我们进入这个动画节点的时候,我们就张开拳头,当然这个方法比较原始,但是能行,可能你们有更好的办法,但是这个方法可以解决问题,如果我想到这个,我就把它关掉。这样,碰撞体只有在我需要的时候才会生效。

回到PPT,这是我们刚刚做的脚本,粒子效果很简单,就用了里面的一些材质,刚才讲的具体开发步骤就是我想要实现的,接下来具体步骤是怎么样的,包括把材质导入到连接里,我给大家演示一下怎么做。

首先我们的素材都在里面,比如说我们主角的素材我拿出来,我们设计师设计的时候,把所有的动画都做出来了,然后里面有很多东西,非常直观,然后调整起来也方便。比如说我被打的时候不要这个动作,我要延迟0.5秒,我直接改就可以了,然后修改之后会发给我,然后放到引擎里面,主角就可以E出来了。比如说我随便放到一个文件夹里面,我们打开GAF,它会生成两个文件,你可以在这里预览这些动画,确保跟你文件夹里面的一模一样。它声称是一个Zip文件,里面有两个文件,里面有主角的动画,哪个动画应该用哪些图片,怎么放,位置信息。然后还有一个图片,这个就不是很好了。 它没有考虑到手脚分离的问题,导致转换器在转换的时候会切掉很多东西。我给大家看一个更好的例子,就是另外一个角色。怪物角色就是一个更好的例子,比如我把它导出来,如果你给这个角色,动画是一样的,它可以显示所有的动画,但是它的纹理会很小,因为它的手脚是分开的,所以纹理很小。但是实际上它的效果并不比英雄差。所以就看你的设计师是怎么设计的了,可能主角在设计的时候并没有想那么多,只是按照自己的想法去做了,到了怪物的时候才想到要把这些肢体分开。

有了这两个文件,其实很简单,比如我在里面找一个文件夹,然后我直接把这两个文件放在这里面,然后导入进去,导入之后,它里面会有一个素材,你可以看到它里面有很多的属性,有很多的按钮,你要做的就是生成一个可以用的东西,它会把你所有的数据,包括这个,包括你想要的动作,这些动作怎么触发。你可以把一个动作分成几个动作,你可以把它分开,这样比较整齐。当然这个例子看起来比较干净,不是很乱,一目了然。但是有一个不好的例子,我给大家看一下我们的怪物,其实它并不是那么好的例子。其实像这样一个节点,你可以导入它去做连击,我们可以看到FSM是怎么做的。你可以看到我在我的主角下面放了几个脚本,一堆的FSM,这个是什么意思呢?就是说我要给这个角色,我要控制他的角色,包括他的跑动,他的攻击。 ,包括被击中的状态。比如说这个用到了这些节点,看上去很复杂,但是其实它的逻辑很简单。因为我要做一个六击的连击,那么首先我要看是否需要做一个动画过渡,其次我要确定它已经到达角色待命的状态了。看看它是不是在第一拳的时候,如果不是的话,确定它已经回到第一拳的时候了。这些判断其实就是判断它是否已经回到了原来的状态了。包括我用来判断它是否被点击的脚本。这个是一招,二招,三招。当然这个看上去很复杂,但是实际上从开发的角度来讲,比如说你写一个代码,我不喜欢你打出的招式之间间隔很大,或者那个招式的间隔太大了。其实代码是要靠程序员去修改这个参数的。比如说你的策划师就可以用这个,所以调整起来很简单。 对程序员来说可能有点鄙视,但是对于规划人员来说却非常友好,而且它是你制作快速原型的非常好的工具。

我稍微说一下我们的脚本。其实它就像一个空壳,里面调用的都是。如果你没有编程经验,或者你不想用它,因为我自己就是一个程序员,所以这样写比较容易。保持简单。如果你看 PPT,应该已经涵盖了所有内容。我想说的我已经涵盖了大部分。

最后,我要给大家展示一下控制碰撞测试、具体逻辑、角色移动的C#脚本,它们是用来做交互的,我画了一张图来展示它们之间的具体关系,大家可以在这里看,最左边的脚本其实也可以供大家使用,它们之间的关系如下。另外,因为我们的讲师团队经常会发布一些教程,所以我们的活动会直接发布在我们的官方微博上。我们在三月份开始了中国技术路演,我们的三位讲师已经访问了深圳、厦门、广州、香港等八个城市。四月份,我们去了西安、北京、成都和重庆。我们还会去更多的城市做这些技术演讲。这些活动都是免费的,欢迎大家参加!

今日推荐

添加编辑微信,享受双重福利

1.加入GAD程序员交流基地

获取行业领先资讯并观看专家直播

2.直接获取60G专属程序库,地址在小编的朋友圈

包含腾讯内部分享、文章教程、视频教程等完整资料

↓长按添加编辑GAD苏苏↓

分享