第七下载:绿色软件放心下载

首页 > 游戏攻略 > 游戏资讯 > 详情

对游戏的策划和制作,“经验”真的有用吗?

作者:wangjing 来源:第七下载 更新:2022-04-28 17:46:45 阅读:

用手机看

编者按 我们需要把经验分“履历经验”和“实战经验”两块。求职过程中的“经验”往往是“履历经验”。但有时候即便你觉得自己实战经验足够,往往是因为履历不好看而导致求职失利,所以会造成一种“经验没什么用”的感觉,这并不奇怪。毕竟大部分人是无法从“实战经验”来鉴别求职人员到底合不合适的。

 

顾名思义,“履历经验”说的就是这个人参与过什么项目,至于具体在项目里做了什么、有多大作用这些都是含糊的。见过的人多了,你就会发现很多参与过顶尖项目的人往往会更有优势。

而“实战经验”,则是实实在在地完成了面对问题,克服问题,解决问题,归纳问题,总结方法这一整个过程的经验。在这个过程中,每一个环节都深入思考了,并且把问题洞察到一个深度,当有许许多多这样的实战经验之后,开始总结他们的中间的规律和解决之道,得出一套又一套在实战中有价值的方法。尽管这样的经验往往并不来自十分出名的游戏,甚至是还没有上线就挂掉的游戏(才有更多的这样的经验教训)。

 

实战经验的作用就是帮你判断一件事情到底能不能做,怎么做好。
 
这个问题的结论并不是非黑即白的,不是说不能做就真的做不了,很多不能做的事情,仅仅是因为环境和条件所约束,或者说如果不在乎资源,用笨办法也是可以做的,但是在当前的环境下不值得去尝试,所以就成了不能做。而除此之外,还有一些就是做一件事情会经历怎么样的坑,有什么办法去克服,并且曾经的方法未必适合现在的时候,还是得想办法去解决。但是解决之道,可能并不是一拍脑袋就有的,他得结合实战经验。
 
在游戏开发中,我们经常会遇到一些“看起来不起眼”的需求,但实际上背后蕴藏着极其深刻的功力要求,很多团队最后就做不好这些事情,甚至只能不断妥协。这妥协不仅仅是功能变化了,甚至制作工艺还变得非常复杂,最后吃力不讨好,做出来的东西也基本和预期不符。这些都是需要实战经验去分析判断和进一步落实的。
 
如上面所说,有时候并不是不能落实,而是环境之下找不到好的方法落实。所以如果相关人员一直是大公司经验,在这时很难发挥作用。因为大公司不缺资源,遇到困难最合理的做法是堆人力去解决,很多问题都不需要直接面对。
 
也有一些“一看就非常了不起”的东西,实际上都是昙花一现。这也是得用经验看破的。比如你在B站上一搜一大片demo,都是什么“用UE做一个完美无缺的动作游戏”,“用UE复刻怪物猎人”,这些东西看上去很好,作为一个demo确实不错。但是这些东西中的绝大多数这辈子都成不了正常游戏,除非他们之后再花几年完全从头开始做。这个事情可以类比成什么?比如我们要到一个寒冷的地方建立家园,这里几乎没有陆地,只有水,因为寒冷,所以水面上有一片厚厚的冰,于是有人用UE很快的在上面造了几个小屋,并且用光追装点得非常美丽,能住人,至少他自己住进去了,虽然房子很重,但是不足以压垮冰面。于是他们甚至还非常不屑的嘲笑我们这些破除冰面,深入水底,去除污泥,反复重建并稳固地基的人。
 
但是你觉得这样的小屋能造几幢不压垮冰面呢?当一个项目需要从几个小茅屋变成高楼嶙立的大城市的时候他,他面的对的考验还是你几百行if else能解决的嘛?还是你只要从10几个蓝图里面找到几千根线条里拉错的哪根吗?全然是不同的。
 
实战经验的作用,不是只有发现问题,最重要的还是解决问题,而且是从根基上解决。了解根基问题,需要的是实战经验,所以它是一个不断积累的过程——在使用中成长,在成长中积累,在积累中使用。
如果我要做一个动作游戏,类似MH那样的,技术上不是黑魂鬼泣之类的回合制游戏,因此他会面对被击飞、被击退等局面,这个局面你想象一下格斗游戏或者DNF之类标准动作游戏中连招的情况,当然,角色被击飞在游戏开发中必然不是只有玩家角色才会被击飞,理解这个问题,是最基本的功力了。然后在这个游戏的基础上加入跳跃功能、骑乘飞龙功能(可以骑在龙身上飞,飞着当然还能作战,还能一个抓钩飞到别的龙身上)、攀附在怪物身上的功能。请问做这个东西简单吗?
 

新手眼中的这个问题

 
  • 没什么了不起的,角色走路啥游戏没有呢?再来个跑步、再来个冲刺、再来个跑步中滑铲都没问题。
  • 然后能击飞、击退,你猴叔都说了DNF、KOF里面都有。
  • 骑乘,WOW这种2004年的游戏就有了, 就算能飞不说早就有空战游戏了,WOW到2007年(TBC)也能骑飞龙了,就算是抓钩飞到别的龙,2009年的WLK中就有,没什么了不起的。
  • 攀附在怪身上,不说知名的MH系列,就是不太知名的龙之信条,2012年的游戏,都有。
 
是不是?这些别的游戏都有的功能,有什么难的呢?明显就是你猴叔见识少才会觉得搞不定,人家都能做出来,你却说这玩意儿难搞?

我们先来看破这个问题的困境
单个来看,这些问题都不是问题,但是放在一起就矛盾重重了。
先看最基础的
首先我们看移动要跑步要跳要冲刺要XX,这个其实真不是问题,是不是,移动有啥问题?动作无非就是用Animator(Unity)、BlendSpace(UE4)就能搞定的事情。
但是这里已经埋下了2个炸弹:

第一个是——地形与阻挡问题:移动的核心问题在于阻挡,地形阻挡、单位阻挡等,单位阻挡中也包括了地形阻挡中的动态地形阻挡问题。而地形也未必是一成不变的平地,包括可以拖着你移动的石墩子、履带等都是有点花头的玩意儿。当然最核心的问题在于,什么是阻挡?菜鸟一听就好笑,阻挡可不就是把你挡住不让你走吗?——这是我猴叔一直说的“如果你把问题全用概括的方式说完,就没什么问题了”,试着拆开问题到最深处:
 
阻挡依赖的数据是什么?他应该属于角色吗?(亲爱的UE4?您的抽象对吗?)完全不应该,他是一个至少基于地图的信息对吧,然后我们怎么算阻挡?尤其是3D空间里——事实上绝大多数游戏的3D只是渲染是3D的,逻辑世界是2D的,甚至他们的跳跃动作飞空动作无非都是“类RootMotion”的方式实现的,包括MHR,爬山等都是简单的坐标系旋转来实现的,翔虫上天只是临时改变ZIndex,逻辑上他们都不会去做真的3D。而逻辑上能做真3D的那些飞行射击游戏,也逃避了很多细节问题——比如我们知道,手感好的时候,你角色面对墙壁按前进(带方向的那种)用程序化抽象就是,坐标(UE的XY,Unity的XZ)在被要求变化,这时候我贴着墙,应该是卡墙上不动,还是顺着墙壁滑动?要滑动,总不能黏在墙上,这手感谁都知道不好,那么问题来了,我走法线改变移动向量就能做到贴墙走了是不是,当然,简单的数学问题,但是这样算的结果是,我在斜坡上往下走会变快往上走会变慢——这很物理,但很不游戏,因为最后手感一定是稀巴烂的。因此游戏中的做法是XY一层,Z一层是最佳策略,但是Z一层在这里就带来了很多细节问题,比如我头顶顶到了斜着的天花板,该顺着天花板的斜面滑动吗?我的操作仅仅只是原地挑起,或者开着直升飞机笔直升空——“那直升飞机碰到天花板爆炸了不就完事儿了,问题解决了”。问题解决了吗?所以“伪Z”是看下来最没问题的解决方案了,但是这里留下了隐患。
 
第二个是——作为动作游戏,角色移动可能会有很多种动作对吧,我们不说远的,就说MH系列近几作,斩斧和盾斧必然如雷贯耳了吧,斩斧的大剑姿态走路和斧头形态一样吗?不一样,于是有人说,你可以用状态机吗?那我们游戏再来个要求,低血量的时候也不一样、中了某些buff(比如中毒)也不一样、踩到狗屎了也会不一样(这些不一样的情况不胜枚举)该如何?好吧,于是我猴叔的策略非常简单,咱们还是先考虑大家都能理解的状态机,我在进入走路状态的时候調一个脚本函数,脚本函数返回给我走路用的blendspace(UE4的天坑之一),或者blendtree的参数(因为unity的blendtree支持更多维度的参数,而不是ue就只能一个FVector还只有xy有效,blendspace1d就更别谈了),这大概是唯一的解决方案了,也就是把变化因素抛给脚本去执行,让策划能进一步定制。看起来问题是解决了,但是这里又埋下了隐患。
 
接着我们加上击飞
击飞无非就是让角色受到一个力,你就是不魔改UE,用他的Impluse或者Push什么的也能做到,是不是?问题是不是一听就很简单,即使有,也就是写个位移对吧?击飞中再次被击飞,无非也就是再追加一个力。
 
那么问题又来了:击飞中该用什么动画?比如我们称之为“硬直动画”,这个动画是有平衡性的对吧,我们做的是动作游戏,角色硬直时间跟挨打状况有明显的直接的关联。但是被击飞的飞行时间一定跟这个时间相等吗?如果飞行时间很多又怎么办?而且我们刚才说了需求,游戏里面有跳,那是不是必然有高地?我被击飞了上了高地怎么搞?做什么动作?然后如果我被击飞的时候受身了,受身中又被击飞了,然后依次循环是不是能跳到更高的地方?
 
当然这些并不难办,只要设计一个规则就行,但是什么时候设计呢?这会影响到工程的很多问题,比如你到项目最后做完了试玩一下才发现不对劲,这时候要调整,你至少得配参数是吧,上万个动作已经做完了,请把,挨个给配一下,尤其是当你用UE4的Montage的时候,你挨个打开配吧,那个配过那个没配过,不知道你有什么高招可以记住,但是我相信你们年轻人记忆力都不错。
 
再来是跳
知乎之前有一贴说的是为什么很多游戏不做跳,看了很多人说有bug什么的不好做,其实概括来说,确实如此,但是问题却并非那些答案那样。
 
我们回到这个需求从新看——如果有跳,是不是就有地形高低差?这时候2个问题就爆发了:
 
悬崖边是什么?
 
请问你如何告诉计算机程序?有人说了,我只要判断我脚下的是不是地面,不是地面就是悬崖,没毛病,所以我角色只要跳起来就掉悬崖了,是不是?我们游戏是有跳的,而且我们是一个动作游戏,动作游戏有些动作天然离地:
 
白衣妹子就是朱莉
 
朱莉这个动作,是天然离地的对吧,这时候她是不是始终“在悬崖上”了?那她该往下掉吗?仔细想想是不是问题就爆发了?
 
当然有人说我可以所有的动作都做RootMotion,这样角色不就始终贴地了吗?这样我岂不就能这么判定了吗?这正是为了解决一个问题产生另一个问题——那请问我游戏里想让角色“跳下悬崖”或者角色跳起来用的“不该飞出悬崖”的动作怎么解决?
 
“冲出悬崖”该如何?
 
好了,我们已经知道没有准确的逻辑判断出什么是“悬崖边”了,因此只能冲出悬崖对吧,好,那问题来了,不管是不是“只能冲出悬崖”,我们总要面对的——有些动作他就该冲出悬崖,但是冲出去以后呢?
 
就比如上面朱莉的这个动作,冲出悬崖以后,还应该继续保持这个姿势吗?怎么保持?或者不保持?持续多久?那我们再来看Terry的冲拳:

他如果冲出悬崖应该如何呢?
路线A\B\C?至少就算做RootMotion也不可能让美术考虑到要落入万丈深渊的情况,而且如果是万丈深渊做了rootMotion,那么在平地就会飞很久。如果你说保持其中某一段动画loop,那你想想他可以飞多远,一个非常简单的三角形求边长问题。
 
然后还有骑乘和攀附
如果简单想想,这无非只是一个Attach问题,但是真的这么简单吗?根本不是,且不说飞上龙身上的一段,假如我们是类似mhw一样,用勾爪抓住一个怪物,飞向怪物,然后攀附上去,那么是不是从程序逻辑来说,怪物也可以这样攀附到玩家身上,确切地说角色之间会有一个互相攀附,当我A抓钩抓住B飞过去的时候,B抓住了C要飞过去,C又抓住了A会发生什么?
 
然后我们定个规则当A抓住B的时候,B去抓C,就会导致A掉下来——但是问题来了,如果我们做一个好玩的任务,玩家要背一个婴儿逃离被怪物包围的村子,婴儿攀附在玩家角色身上,因为玩家挨打会导致一些部位甩下婴儿,因此引导婴儿在自己身上不同的位置(比如一会抱着一会背着)是一个玩家技巧,这设计很好玩对吧,结果背着婴儿,攀附到了一个小怪身上,婴儿掉下来了,咋处理?是不是非常搞笑?
 
当然我们可以不做这个任务,或者改变规则,被抓了就不能抓别人,抓住别人了也不会被抓,都可以补丁打补丁的解决问题,但是还有一个问题没能解决,比如我骑龙,攀附在龙头颈上,没问题吧。
骑龙作战是不是非常帅?毫无疑问,但是这时候我骑着龙飞进一个山洞,然后一直往上飞,骑士插进了山顶了,且不说摄像机有各种问题,这时候骑士因为各种原因要从龙身上下来,这个碰撞咋整?是不是,再一想,为什么WOW坐骑战斗不能召唤,并且召唤和停止骑乘都直接裆下完成就很有原因了是吧;而直升飞机直接向上撞到顶端会爆炸也就毫无疑问是个合理设计了。
 
说到这里还只是冰山一角
当你觉得很多功能非常简单,没什么技术含量的时候,往往只是因为你欠缺的是“实战经验”,无法做出准确的判断。这个“移动问题”实际上刚才说的只是冰山一角,如果一个团队能在3个月内实现好上面这些(而不是通过约束策划不允许设计这个不允许设计那个),那这个团队的技术实力可以算是顶尖的。所以你说“经验”有用吗?当然是有用的,而且作为老一代游戏人,我也会不断分享我的经验总结,这是老一代游戏人对于新一代游戏人的义务,只是我们这个行业在经济大潮和直播经济时代的摧残下,发生了严重的断代,以至于年青一代找不到好的经验。有用的“经验”指的是“实战经验”,一句话、一个道理、一段分析是否有价值,并不取决于说的人,而是取决于这句话、这个道理、这件事情本身。
?
热点推荐
?
赞助
?
网友跟帖吐槽
pl
返回顶部