第十九章 克苏鲁神话
本专栏是着重于讨论“开发一款游戏需要怎样的能力”,以及“如何学习开发游戏所需的所有技能”。欢迎来到知乎专栏的第二篇文章。在开始讨论我们的两个主题之前,我认为非常有必要让初学者了解一下:一个游戏是如何被设计和开发完成的。
温馨提示:本文共28900字,包括50张配图,40段视频,建议先收藏再阅读。为了保证阅读体验,建议在桌面浏览器环境下阅读。
我在知乎回答“想要自己做一款游戏,需要学习哪些知识”下面简单列举了四个能力,分别是:程序、设计、美术、音乐。但是碍于篇幅限制,我并没有详细展开来说明每一项能力具体是如何发挥作用,以及发挥作用的形式和功效。如果在学习之前,我们对即将学习的东西一无所知的话,会导致学习中产生不小的迷茫感:不知道为何而学,不知道学了有什么作用,不知道该学习到什么程度。带着这样的迷茫去学习,会导致学习效率低下,容易受挫,甚至会在达到一定程度后动摇自己理想,怀疑自己的学习能力是否有问题。作为以“引导自学游戏开发”为使命的一个专栏,我认为非常有必要解除初学者对于游戏开发的朦胧认识。这也是自学游戏开发专栏第二篇文章的意义之所在,让初学者了解:
一个常规的游戏开发团队有哪些人,每个人具备怎样的能力
一个游戏从最初构想到最终完成开发,会经过一个怎样的过程团队中的每个人在游戏开发过程中的什么时间,发挥了怎样的作用
在了解完以上三个问题以后,我们会对自己的情况做一个判断,根据自己的情况,再对未来的方向做一个规划。比如说,你是一个喜欢画画的人,想从事游戏相关的美术工作,那么你就应该知道不同的美术工作在游戏开发流程的哪一步需要画什么样的东西做什么样的美术资源,设计师和技术人员拿到你做的美术资源又会加以怎样的修改和使用,你在后面的学习中应该着重练习哪方面的技术和能力;再比如说,你想成为像我一样技能覆盖面比较广,各个方面都知道一点的开发者,那么你应该如何去组织你的技能,在众多的技能中考虑到你的性格和你的特长,你更喜欢亲自做哪一项工作内容,应该选取哪个作为核心能力,如果今后不做独立开发而是进游戏公司工作,你会站在哪个位置工作?在阅读完本篇的正文后,你会开始思考这些问题,并尽快找到一个大致的答案。
预先了解我们即将从事的工作,预先概览我们即将学习的知识,这件事对于引导我们前进有重大的意义。为了完成这个环节,我从第一篇文章发布后到现在一直都在筹备此事。要让任何一个从没接触过游戏开发的人,在一篇文章的篇幅内了解整个游戏开发的全过程,这件事情真的是非常难。我认为真正要做好这件事情,需要一个纪录片的工作量。要完整地记录下一个游戏从设计师的头脑中转换到电脑中的过程,然后展现给别人。我本人的搜索能力有限,到目前为止并没有找到一个非常理想的此类纪录片,但是在知乎问题“有哪些介绍游戏开发过程的纪录片或视频?”下面,@indleavez的回答中有非常多零零散散的相关纪录片。在后文中,我会适当地引用其中一些视频片段以及YouTube上的相关视频来辅助讲解。下面正文开始。
一、游戏开发团队的人员配置
一个常规的游戏开发团队有哪些人?我们先过目几张图:
下图是一个国内很常规的MMORPG开发人员配置图。
↓是几个国外游戏开发团队的人员配置图。
大家把每个头衔看一遍就行了,不用去记忆。从名字当中,或许大家都能猜到某些岗位是干什么的,有些猜不到也没关系,我正要去一一讲解。为了方便阐述,我自己做了一张人员配置图,融合了以上的实战配置和我自己对于游戏开发的理解。下图:
阅读指南:
矩形代表“岗位”、平行四边形代表“工作内容”。
红色:代表设计能力;蓝色:代表计算机编程能力;绿色:代表美术能力;
颜色明度:代表专业性要求;颜色灰度:代表综合能力要求。
因为我非常反感国内把GameDesigner叫作“游戏策划”的翻译,还有一些其他岗位翻译不准确或是在中文语境中遭到了贬低,所以这张表我特地全部使用了英文名词。每个名词旁边有小小的中文注解,放大到100%即可看清。
首先一个标配游戏团队中有三大Director:CreativeDirector、TechnicalDirector、ArtDirector。说土鳖点就是:主策、主程、主美。很多新人以为CreativeDirector就是游戏团队中最大的BOSS,可以拍板说话。但其实三大Director上面还有Producer,在公司里Producer上面还有CEO,CEO上面还有BoardofDirectors。
在国外的话,CreativeDirector享有更高的权利,他来决定游戏往哪个方向设计和制作,Director决定采用的技术方案,制定游戏特需的功能和系统,Director负责领导制作游戏所需的美术资源,保证游戏画面的美观性和统一性。Producer更多的是提供三大Director需要的资源和帮助,并保证游戏项目的正常推进和最终发售。当然了,有的制作人本身也担任创意总监的职责,比如说小岛秀夫、席德梅尔。
在国内的话,基本情况就是一层压一层,逐级给压力。最上面的投资人想赚快钱,给CEO压力,要求其多长时间内实现多少盈利;CEO把压力分担给制作人,要求其多长时间内必须完工,上线后的ARPPU最好要达到多少;制作人菊花一紧,从身体下面拿出棒子去敲主策的头:“上头要求又提高了,你这个武器合成的系统,把坑给我开到要玩家花20人民币才能填满。”主策老王顶着一头包跟跑腿刚回来的执行策划小王说:“你去把升级武器用的所有材料的价格乘个2。”“好。”小王把软中华和剩下的35块钱放到主策桌上,然后跑到主程电脑椅旁蹲下扒着他肩膀:“张哥,上次拜托你们优先查的那个武器合成系统的BUG怎么样了,我现在要改数值能不能起作用?”老张pia一下把小王打翻在地:“别来烦我,今天美术老赵那边给的模型放进引擎里法线一个都不对,我正在愁这事儿呢!”小王懂事地爬起来地回到座位,一只手指在屏幕的EXCEL表上游走,另一只手在键盘托里握着手机,继续开心消消乐的第652关。差不多到吃中饭的时候,小王跑到主策位置上:“老大,我去跟程序那边搞了一上午,武器系统那BUG他们还没修好,我现在还改不了数值啊~”“要你有什么用!给我去买份羊杂汤回来!劳资亲自去找他们说去!…………对了加个蛋!”
段子讲得很有讽刺意味,可能有点过了头,大家看个开心就好。下面我将把人员配置图的每一个角色/工作带到游戏开发流程中去讲解。
游戏开发流程
在人员配置图中还有很多其他的角色,我将在游戏开发流程中逐个说明他们的作用。现在建议大家把人员配置图打开放在屏幕的一边,然后把下面这张开发流程图打开放在另一边,下图:
这是一个游戏开发流程的理想模型。我将按阶段来逐一讲解。
1、立项阶段:
一个游戏项目是如何开始的?一般有三种打开方式:
1.1、始于市场
一般一个大点的公司都会有市场部,也有专门的市场调查公司,他们的日常就包括收集市场数据、分析数据。市场部的人在完成一次调查之后,会得出一些结论。他们把这些结论交至项目部,Producer拿到数据分析,会决定下一个项目应该做什么样的游戏。然后Producer再把决策告诉游戏设计师,让他们来着手开始设计相应的游戏产品。
比如说:经市场部研究分析,今年三国题材的游戏,不论游戏玩法类型如何,都比相同类型的游戏拥有更多的下载量,预测明年三国题材将会保持这项优势;今年传统TOP-DON类型的MOBA游戏,总活跃玩家数比去年有轻微下降,但是FPS和TPS类型的MOBA游戏有明显的增量,预测后面几年MOBA游戏市场大流将会从细分类型TOP-DON转向FPS。公司里正闲着想做下一个项目的制作人老李拿到这些数据:“噢!那我们就来做一个三国题材的FPS+MOBA游戏吧!稳赚不赔,就这么定了!”然后老李就找到御用主策老王:“你看我们之前那个项目能不能换个皮变成一个三国题材的FPS+MOBA游戏,或者说你重新设计一个?”这是Market->Producer->CreativeDirector模式。
1.2、始于大佬
我这里说的大佬一般指那些煤老板啊,房地产老板啊,搞赌博网站的老板啊,做互联网其他领域搞得比较风生水起的各种老板啊,反正就是从来没有接触过游戏行业有钱有人的老板。他们看到游戏行业赚钱快,忍不住也插一脚进来,扔一笔钱招个团队组个公司,做个游戏吧,什么都行,赚钱多的那种。
事情是这样的,有一天他关掉37玩大天使之剑的网页,抽着闷烟突发奇想:马勒割鸡,那些搞游戏的做这么个辣鸡玩意儿动不动月流水上亿?劳资怎么不去搞一个呢?雾草,就是了,我也搞他妈一个,就不信在自己的游戏里还干不过排行榜第一名那个“熊爸傲哥”。于是他就打电话给二把手:“强子,给我他妈的招个游戏开发团队,对,劳资要做个游戏,就做个37玩大天使之剑那样的!”后来?后来策划老王、程序老张、美术老赵把这个煤老板的钱分摊拿去交各自的房子首付了,项目糊弄几下,上线前几天一起离职,组队去了另一家公司,老李的手下。
1.3、始于游戏设计师
曾经有一个少年,他从小学时就一直玩游戏,一直玩到高考玩脱。考了个三本。在大二的某一天,他突发奇想:“诶!如果把这个想法做成一个游戏,简直太绝了!前无古人啊,一定敲好玩!估计小赚个一两亿没问题,嗯~”于是他找到下铺商学院的小李,跟他激动地分享了一下这个想法。小李一脸凝重地点着头:“好像还行,不如这样吧,先去网上搜搜看到底有没有这个类型的游戏嘛?或者说看看会玩这种游戏的玩家大概有多少?他们会花钱买嘛?……”时光荏苒,十年过去了,在落地窗前站了许久的老王,突然浮现出异样的笑容,屁颠屁颠地跑到老李的办公室:“老李我跟你说,我刚刚想到一个绝妙点子,是这样的……老李一脸凝重的点了点头:“好像还行,不如这样吧,我让市场部那边做个调查,看看你说的这个创意有大市场,要达到收支平衡最多能投入多少资金。”
我写这个段子并没有半点讽刺的意思,只是反映了一下大多数人的情况。实际上,我们少年都是这么过来的。这个叫做CreativeDirector->Producer->Market。
1.4、补充
以上三种呢,只是游戏行业比较常见的开启项目的方式。一般来说,大的公司更喜欢炒冷饭,把他们现有的IP拿来立项开发续作,这样能保证游戏的销量相对稳定,降低风险。这种方式可以归类于1.1,因为他们是在确定市场的基础上来立项开发的。至于1.2,前几年在国内可谓遍地都是,有钱人都想进来赚个快钱,捞一把是一把。后来做游戏的人中出现了BadGuy,不靠游戏销量赚钱,而是想赚投资人的热钱,游戏都不好好做了。一堆一堆的垃圾出现在市场上,垃圾中的战斗机没有玩家买单,于是投资人的热钱尽数打水漂,全都变成的那些开发者的个人工资,一分都收不回。中套的投资人多了,知道游戏这个行业已经捞不到好了,于是现在1.2的情况越来越少。相应的是,国内游戏行业的资本寒冬来临,越来越少的投资人愿意来投游戏开发团队了。1.3的情况应该是最理想的,无论是在小型团队还是大公司,我都倾向于一个创新游戏的立项之初是来自设计师的想法。因为玩法是一个游戏的核心,是游戏与电影以及其他艺术形式得以区分的关键因素。对了,1.3中的少年即小王。相信许多正在看这篇文章的少年都有过小王相似的想法,这是好事。但是我鼓励每一个想自称游戏设计师的少年,在有一个想法后,把它置放一年,期间去读一读游戏设计相关的书,反复构思、打磨、验证你的那个想法。关于一个游戏创意的想法又能从何而来,我在我自己的设计方法论中有系统的理论分析,但现在不是和盘托出的时候。在此我们就假设我们通过某种思考已经得到了一个游戏创意的想法。老王:“我有一个想法,老李,给我几个人让我们来验证它吧!”
2、原型阶段
当一个游戏项目成立之后,并不是就会顺水推舟地做下去,一直到上线发售。事实上很多游戏项目会在开发中的各个阶段遭到关闭。关闭的原因很多种,包括资金断裂、成员分歧、发现这个游戏并不好玩。我们知道一个游戏立项之初,基本都有一个想法。但是除了设计师本人,其他人都不知道这个想法到底好不好玩,值不值得做,可能设计师本人也并不知道。虽然设计师可以写出洋洋洒洒的几万字的设计文档,但是从文字上我们也很难能透彻理解其中的精妙之处,就像我们难以用文字来真正了解一份佳肴吃起来是什么味道。但是当厨师把一堆食材塞到我们嘴里的时候我们就知道了。原型阶段就是一个检验游戏玩法和开发可行性的阶段。在这个阶段,设计师要向技术负责人阐释清楚游戏的玩法框架,游戏中存在的各个系统。技术总监会仔细聆听并斟酌设计师想法,在聆听的时候他的心理活动大概是这样的:他说的这个资源系统,我们上一个游戏的应该可以搬过来套用;这个建造系统,好像和比较像,回头找找看有没有开源的方案;等等,国界线可以让玩家来的动态划分?这个设定似乎要求地图的无缝切换功能,这会导致开发难度和服务器性能要求上升,等会儿要提出来看看能不能避免这个设计;乳摇是什么鬼?劳资没接触过这种技术,又要研究新东西了……
图中CreativeDirector就是游戏的首席设计师。最初,他带着TechnicalDesigner跟TechnicalDirector开会,大致讲解游戏的玩法框架,让技术总监心里有个数,下去要研究下哪些新的技术方案。其中TechDesigner的作用就是负责协调设计和技术的矛盾之处:帮助技术总监处理掉那些技术上根本不可能实现的设计,优化那些会带来技术压力的设计;帮助创意总监在删减掉一些设计后,补充其他廉价的设计来保障游戏系统的完整性。所以想要成为设计师的人,必须要了解到掌握编程能力的重要性。一个不懂程序的设计师,往往会天马行空设计出那些根本不能实现的东西,或是坚持要实现一些对计算机性能消耗很高的设定。在立项之初,还没决定采用什么作为玩家的同伴时,本来想过用人,但是设计师们考虑到人的行为十分复杂,要用AI做到逼近自然很难,于是才把目光移到了动物身上。他们观察了猫猫狗狗等各种动物,最后设计出Trico这么个生物。
这是一个很好的例子,他们避免了一个研发的上大坑,但是当时他们不知道一堆羽毛的拟真表现对计算机性能消耗很大,就算是在现在的PS4PRO上也只有30FPS的表现。如果说十年前上田文人就知道这些的话,我相信现在的Trico可能就不会有这么多毛了。
在CreativeDirector和TechDirector会带着其他的GameDesigners把经过修剪的玩法框架填充完整,把每一个系统细节设计出来,编写成案。在这个过程中,Designers的思考过程可以大致参考下面这个视频。不过要注意这是游戏已经开发完成后设计们说的话,大家可以自行脑补成他们正在游戏设计的前期讨论如何设计:
幕后传奇f=23134891amp;spm=a2hzp.8253876.0.0
这时这群设计师已经知道这个游戏怎么玩了。为了检验他们的想法是否好玩,之后的一段时间内他们会和Programmers一起把这个游戏做出来。是的,整个游戏做出来,就在原型阶段。只不过哈哈哈,他们做出来的游戏原型差不多长成这个样子:
这些设计师和技术人员坐在一起开发出来的东西确实一个个都是igners和Programmers会创建一堆Box来替代游戏中的任何物体,或者用游戏引擎自带的预设物体来充数。画面中仅有的一点特殊美术资源,也许是TechnicalArtist顺手做的。这是TechArtist参与原型阶段的附赠作用,他在此阶段更主要的任务是预先制定美术资源的输出规范,做好美术与技术之间的接口。一个配备了Designers、Programmers、TechArtist的小组,在几个月或者一两年的时间里一翻折腾,基本上实现了游戏所有的玩法、系统和功能,甚至技术细节,做出上面那种玩意儿。终于可以邀请一堆人坐在一起来玩这个游戏了,但是得忽略掉画面因素,纯粹地体验游戏性带来的乐趣。这是检验设计师创意的重要环节。现在,我代表Ravenfield的制作者SteelRaven7邀请你,来试玩这款Prototype级别的游戏:Ravenfield没有华丽的画面,没有精致的音效,被剥得赤身裸体的玩法能否给电脑前的试玩者带来乐趣?还是休息室茶几上的可乐和薯片更吸引他?如果这个丑陋的游戏能够让每一个试验者玩得放不下手,那么它毫无疑问通过了原型测试。但是,往往来试玩的大胖子们会点着头认真地说:“嗯……我喜欢你们这个游戏,如果它完成得更好的话。对了我能把零食带走吗?”
Again,本篇文章着重于讨论开发流程,故在此不深入探究设计与迭代的话题。假设大胖子真的被我们的游戏原型所吸引,让我们来吃掉他的可乐和薯片,然后愉快地进入下一个阶段:Alpha阶段。
3、Alpha阶段
我们的玩法已经得到了验证,我们的功能已经得到了实现。但是之前的这些,只能算是pre-production。现在,真正的游戏开发,才刚刚开始。在Alpha阶段,我们最重要的工作就是给有趣的核心玩法,包装上一层美丽的外表。不仅仅是视觉上的,还有很多其他东西。所有的这些事情,从HighLevelDesign开始。
3.1、HighLevelDesign
我翻译为:宏观设计。这项工作,主要是为游戏架构一个可信的世界。我们喜欢把负责这项工作的游戏设计师称作:世界架构师。世界架构师会考虑到游戏的特性、需求,以此为基础设计一个虚拟世界。完全的世界架构,以我的经验为参考,会从“世界法则”开始,然后设计出时间、空间,再之后是自然,最后是文明和历史。当然,我们往往不会从零开始架构,而是借鉴一个现成的世界,从中间的某一层切断,保留高层,自行设计低层。就像的世界观,改造于D及之后的内容。从现实世界的历史层进行了切断,设计了从2011年之后发生的势力冲突。从……对不起这个游戏没有进行这项设计工作。在进行世界架构的时候,设计师会充分地考虑游戏的需要,然后才是调动他们对于世界的经验认识和丰富的想象力。在完成设计工作后,他们能回答像下面这样的问题:
这个世界的最高法则是什么?这个法则如何运行?
龙族是在什么时间,什么地点,以什么样的方式诞生的?他们有什么特点?红龙和黑龙分化的原因是什么?如果自然界中的树木隐藏着比人类更高的智慧,这个世界将会怎样?什么树木是森林的中枢神经?人类是在什么时间,如何发现这一事实的?在那之后人类文明和森林文明是如何相处的?如果美索不达米亚人在赫剃人进攻之前就掌握了冶铁技术,历史将会怎样?假设古巴比伦王国中有三大势力,他们是怎样形成的?如果在一个双星系统的星球中存在文明,他们会是什么样子?如果人类和他们接触会发生什么?
看到这些问题的时候,你是什么感觉?欢迎在评论中发言。一个合格的世界架构师,拿到上面任何一个问题,都能够在1秒之内开始回答,并且能够保持叙述20分钟不停口。中间你问他任何问题,他都能够响应你的引导把细节阐述得厘厘入微,并且,在即将完成回答之时,他能够在逻辑上把之前叙述的离散的内容全部联结在一起。世界架构师熟悉天文、地理、政治、哲学、历史、文明、生物、社会,他最重要的技能是:能够一本正经地具有逻辑地胡说八道。
在HighLevelDesign进到中后期,ArtDirector会进入到世界架构师的团队,他会搞清楚那些人的脑子现在都装了些什么。然后会用速涂的方式,来尝试着用画面表现那些人想出来的世界,并与他们确认。随后,ArtDirector就会开始初次设定游戏世界的画面风格,制定绘画规范。
来看看的世界架构师在工作时想了些什么,视频中也可以看到艺术家为他所画的部分东西:
幕后传奇f=23134891amp;spm=a2hzp.8253876.0.0
与此同时,技术组会开始着手游戏代码优化或重构的工作。在原型阶段,为了快速实现功能,程序上可能会存在大量的不合理和BUG。好一点的情况是对代码行进优化,补足残缺的功能,修复BUG。差一点的情况就是重新编写整个游戏、使用一个新的引擎或者重新开发一个适合的引擎。技术人员们也会开发一些能够提高工作效率的小工具,向开发组中任何需要人提供服务。
3.2、StoryDesignConceptDesign
经过HighLevelDesign的工作,我们有了一个世界。现在,我们要向这个世界中添加一点有趣的东西:故事。故事的核心:某人,在某时某地,做了某事。剧作家们,非常擅长塑造一个角色形象,也能够描绘出精彩的故事场景,制造出具有张力的故事情节。因此往往由职业编剧来负责此事。相对于世界架构师,编剧们在完成工作后会知道更具体的一些事情:
猎空的父母分别叫什么?来自哪里?什么血型?如何相识?生猎空的那天是哪个医生负责接生?他在猎空的手臂上注入了什么?这与她后来加入守望先锋组织有什么联系?伊利丹和玛法里奥在幼年时关系如何?他们第一次发生矛盾是什么情况?伊利丹在被囚禁的时候对他的哥哥怒吼了什么?伊利丹所心爱的人与玛法里奥又是什么关系?维京人把过冬的粮食储藏在了什么地方?他们又把从日本商船上劫掠来的货物堆在哪里?黑石军团从什么地方入侵了他们的家园?黑石军团战盾上的纹理是什么样?有什么意义?
为游戏设计故事不是写。在StroyTelling类型的游戏中,玩家们要控制故事中的角色,和其他具有性格的人物互动,要走进编剧们想象中的街道和战场,改变故事发展的进度或顺序。玩家会从任何角度观察游戏中的人和场景,因此我们必须在视觉上还原编剧们的创作。我们要确切地知道艾米长什么样,她窗外的花园是什么样,她父亲送给她的飞行滑板又长什么样。因此我们需要ConceptArtist,来为每一个人,每一个物品,每个一场景设计概念原型。这个概念原型不一定是一张很完整的美术作品,但是任何一个看到它的人,都能够拍着设计师的肩膀说:“我get到了这个感觉。”为了完成这项工作,为了得到一个合适的人物形象或道具模型,ConceptArtist可能会绘制几十份概念稿,最后从中挑选出一个。现在,我们来欣赏一下概念设计师的创作过程:
来自艺术家CamSykes的“霍比特人-索恩橡木盾战士”概念设计过程;
来自艺术家Sycra的飞船概念设计过程;
来自教育网站的场景概念设计过程;
为了把握感觉,概念设计师们会大量地创造原型。最后大部分都会舍弃掉,只筛选出最好的一两个,然后为其绘制出线稿。过程请参考下面:
来自国内漫画家黄嘉伟的阴阳师-酒吞童子的创作过程;
也许大家观看后会比较激动,“原来游戏角色是特么这么设计出来的!?教练,我想去学做游戏。”但是我必须在此适时地泼上一盆冷水:游戏领域中任何表面上看起来优雅而轻松有趣的工作,背后都需要大量繁重地练习和学习。就比如设计一个酒吞童子,表面上只是画几根线,但背后至少需要知道的东西有:线稿的绘画技巧、形式美法则、透视原理、人体结构、服装设计、日本传统文化等等。这几样最基础的东西,必须像血一样流淌在你的身体里,才能够进行畅快的设计。下文中每一个岗位和工作,都同样需要掌握庞杂的知识和技能,有的是制作上的技术细节,有的是艺术上的原理法则。在此指出,后文不再赘述。
工作提交:故事设计完成后会得到一个剧本,其中包含了许多故事发展线,人物介绍,战役介绍;概念设计完成后,会得到一些概念线稿,如下:
3.3StroyboardDesignEvironmentDesign
当我们的世界有了故事以后,我们并不是要把剧本寄给玩家,让他们知道这个世界中的每一件事。我们要有选择性地,把一些故事,展现给玩家。如果是硬Gameplay类型的游戏,设计师们会选择用非常隐弊的方式,把故事藏在游戏中。比如说、,如果我们只玩游戏而不看周边,那么我们只能从游戏中角色的对话听出一些往事。那些被精心设计的对话,让玩家知道他们生活在一个真实可信的世界中;而像、那样泛泛之谈的人物语音,便让人有一种虚假的戏剧感。如果你的游戏是StoryTelling类型的游戏,那么向玩家交代故事剧情就是游戏设计中的重要工作。预先制作一个Storyboard是值得推荐的做法。在电影和动画中,Stroyboard的设计是一个核心工作,它几乎决定了整个影片80%的内容,观众将严格按照故事板的顺序,把每一个画面看完。在游戏设计领域,故事板是众多元素中的一个。它在StroyTelling类型的游戏中,对于剧情的发展做一个预览作用。Storyboard会交代:玩家在不同进度时,必然会经过的场景和必然会经历的事件。由于玩家的视角,受控于玩家自己,所以我们不再逐一考虑取景构图、镜头运动和蒙太奇,只需要记录场景、行动路线与必然事件。
当我们考虑场景时,需要艺术家把相应的场景画出来。这就是做EnviromentDesign工作的第一个目的。在创作场景时,艺术家会听编剧们描述场景,同时也会参考概念设计师确定的视觉风格,然后快速绘画。其绘画过程可以参考,如下:
来自艺术家CamSykes的戈壁城场景绘画过程;
当场景图得到确定之后,艺术家会对它进行下一步刻画,使其中的物件明确,以指导将来LevelDesign的工作。一个细致的游戏场景是如何绘制的,请参考:
来自艺术家TitusLunter的游戏场景设计过程;
工作提交:艺术家们会提交游戏场景原画,如下:
游戏设计师会提交故事板,其中包含了行动路线和事件。用我过去的工作来做例子吧,要献丑了,这张图是我给执行策划交代任务时随手做的:
我当时为这张新手村地图设计Stroyboard。包括单个任务设计、任务流程、剧情安排、行动路线设计、NPC/怪物分布设计。需要考虑的东西也很多,比如:玩家进入场景后看到的第一屏是怎样的,第一个任务如何预热玩家/调动兴趣,怎么安排基础操作教学,第几分钟大概到什么地点什么任务,什么时间安排具有挑战性的事件,用什么物品来为大的奖励做铺垫,如何行动即不重复又能游览全部场景等等。
3.4CharacterDesign
在经过概念设计的工作之后,我们会拿到一些概念设计线稿,其中包含许多角色。CharacterDesign这项工作就是在那些角色线稿的基础上继续设计,完成服装配色、材质表现等其他工作。其工作过程请参考:
来自艺术家AlexGp的角色绘画过程;
有时,一些重要的角色,为了在后面的建模时得到更好的比例和结构表现,艺术家们会为他们绘制三视图,如下:
来自网站的角色三视图绘制过程;
这些工作一般会交给美术组中的juniorartist去完成,因为相对于概念设计,这一步要求更多的体力劳动,较少的设计能力。而那些才华横溢的seniorartist,他们会去画一些美术宣传画,像这样的:
来自艺术家LOP的SaberLily绘画过程;
工作提交:这一步工作,最重要的是得到人物/道具设定图,包括各个角度,如下:
美术组再有富余力量的话,会绘制角色宣传图:
这样的图,对于游戏开发的工作,没有实质的作用,但是It‘scool.
3.5Modelling
当我们的CharacterDesign工作完成以后,会得到准确的角色、道具设定,但是那些资源都无法在我们的游戏里使用。真正的游戏资源制作,是从建模开始。首先,为重要物体建模,需要用到前面制作的三视图,来锚定外形和结构,设计师是这么用的:
来自模型师SoepantoKurniaan的汽车ShelbyGT500建模过程;
来自模型师Antic的Q版房子建模过程;
有时,有些不重要的物体是没有三视图的,这就要求模型师能够仅根据一张图就制作出模型:
来自团队DrunkenLizardGames的枪械M4A1建模过程;
我也做过这样的建模练习,当时拿到这样一张图:
只有这样一张图,别无参考,结构不明确或不合理的地方需要自己进行二次设计,所以,这要求模型师也需要具备结构设计的能力。当时懒懒散散地做用了三个工作日完成了这个模型:
刚刚在三个演示中,使用的软件分别是Zbrush、3DsMax、Blender。在此我想指出一个新手误区:不要纠结于软件的选择,我们什么都会用。值得一提的是,如果做生物角色的话,一般我们会喜欢从Zbrush开始:
来自艺术家MaksymHaydar的女性角色雕刻过程;
来自艺术家andahK的龙-雕刻过程;
工作提交:一般来说,我们的Modelling工作结束后,会得到干净的素模,如下:
3.6TextureMaterial
模型,是一个游戏物体的血肉躯体。贴图,是一个游戏物体的表皮肌肤。得到模型后,我们紧接着就为其绘制表面的纹理/材质贴图。过程请参考:
来自艺术家SedatAciklar的角色兰戈雕刻绘画过程;
来自艺术家JoshRobinson的忍者神龟贴图绘制过程;
下面展示另一种我们常用的贴图制作方法-映射:
来自艺术家UArtsy的面部贴图映射制作过程;
下面展示器械的材质制作过程:
来自Quixel官方的枪械贴图制作过程;
来自艺术家Aldi的Jeep汽车贴图绘制过程;
工作提交:在经过贴图前几天我也做了的小练习,可以在左臂上看到我女朋友的名字。
除了为特定的模型制作材质贴图外,我们还需要制作许多通用的材质,包括但不限于:自然建筑等等,可以参考如下:Substance材质库。这些通用材质将在游戏场景搭建时发挥重要作用。
3.7SkeletonRig
经过Modelling,我们能够得到“静态”的游戏模型。有些像斧头、铁桶这样的小东西贴上材质贴图就能够直接放到游戏里用了。但是人物、怪兽这样会动的物体,我们还需要为其制作动作动画。Skeleton、Rig,是制作动作动画的前置工作,仅和模型有关,和材质贴图没关系,所以可以一边做材质一边做骨骼绑定。我们知道现实中生物体的运动,基本上就是骨骼的运动。在CG领域,我们借鉴了大自然的设计。我们也有骨骼,用来驱使模型运动。我们要为人物模型创建人体骨骼、为恐龙创建恐龙骨骼,然后把骨骼绑定到模型上。
动作师在为角色设计动作的时候,是直接在骨骼的层面上设计动作。
一个绑定师对于他所操作对象,如果是脊椎动物的话,那么他会熟悉这种动物的真实骨骼。并且他会知道的肌肉与骨骼的附着关系、运动中肌肉的伸缩扭转状态等。前段时间美国梦工厂的艺术总监魏照平老先生路过我们这儿,我问到他,现在动画界最缺的人才是哪些。他的回答中就掷地有声地指出了“骨骼绑定”。
由于绑定骨骼这个过程并不具备什么观赏性,就不用视频展示了。
3.8Animate
我们拿到一个绑定好骨骼的模型,会为它设计动作片段。这时可能材质贴图也已经制作好了,这样的话可以边做动作边观察最终效果。过程可以参考如下:
来自IKinemaAction的骨骼动画制作过程;
除了上面展示的技术,在一些常规写实类游戏中,我们还喜欢用运动捕捉系统来设计动作:
来自Tomasliu的光学运动捕捉系统;
上面这个是一个国内团队在12年做的展示,虽然看起来比较lo,但是展示很直观。我目测他们这套设备价格在四五万元左右。下面来看看另一种小团队比较能承受的廉价系统:
来自Snappers的惯性运动捕捉系统;
在视频中大家能看出来,这个动作动画比上面那个要自然多了。但是理论上,光学运动捕捉系统的精确度要比惯性运动捕捉系统高一些,这也是为什么在影视领域大家都用光学运动捕捉系统。不过一个模型动作的自然度也需要考虑到骨骼、绑定等因素,比如TomasLiu他们的模型,很明显只是简单绑定了一下骨骼,手部都没有绑定;但是Snappers的模型由于有标准的骨骼绑定,即使用的惯性运动捕捉系统,看起来依旧很自然。所以在3.7节中,我们说到绑定非常重要,大家可以直观感受到。这套惯性运动捕捉设备只需要一万元左右就能拿下,并且使用也很方便。
刚刚展示了两个肢体运动捕捉的案例,下面来看一下面部表情捕捉。这是很早很早以前的光学运动捕捉系统,可以看出对于表情的还原非常精确,惯性运动捕捉系统是做不到这一点的。还需要展示的是,动作动画的重定向。前面说过了,动作师在是骨骼的层面上工作,而不是模型。因此,我们做出的动作动画,可以使用在不同的模型上:面部表情捕捉-重定向。这能够大大减少我们的工作量。
工作提交:作动师完成工作以后会得到大量的动作动画片段,包括但不限于:走、跑、蹲、跳、攻击、防御、受伤、死亡……动作动画片段展示-剑盾战士。配上材质贴图,大概是这个样子:动作动画片段展示_士兵;再看一个的动作吧:刺客信条动作动画展示
3.9GUIDesignOtherArtork
实际上我将略过这一环节。因为我认为游戏中最好的UI,就是没有UI。但这将是游戏发展的一个趋势,我看到许多大厂小厂都在加入这条道路,去UI化:只在最必要的地方,用干扰力最小的方式,给予玩家最需要提示。把屏幕空间,还给游戏世界,我们不需要那么多文字与图标。讲到这里,Alpha阶段的美术工作已经走过一遍。我们可以把必要的GUI,和前面做的所有3D美术资源提交给游戏设计师。在这个过程中,TechnicalArtist将发挥一个重要的作用:他将编写Shader脚本,der也是一种美术资源——der告诉电脑如何用特有的一种方法去绘制物体。
比如在上面这幅对比图中,整个场景使用了完全相同的模型、材质贴图,并且处于同一个时间状态,但是因为使用了不同的Shader,最后得到的效果也完全不同。通过Shader,我们可以让一个非常写实的物体,变成卡通风格、水墨风格、像素风格,可以让它变成半透明,或是只有一个剪影。可以大致参考:
来自GarethStockell的Shader效果对比。
Shader的制作,属于编程工作,并且需要具有计算机图形学知识背景。那个以为做美术工作就是画画的少年,你有什么想法吗?
如果没有,那我们就进入声音制作的环节咯。
3.10AudioMusic
制作游戏不仅需要画面,还需要声音。声音包括:音效、音乐、配音。
3.10.1、音效制作。包括开枪的声音、汽车的声音、脚踩在木板阁楼上的声音、释放技能的声音、点击游戏菜单的声音。最基本的制作方法是实录,比如为了制作真实的枪声,去军营里实录了所有武器的声音。还有一种方法是拟音,这是更为经济实用的方案,用这两个视频来了解一下拟音艺术吧:拟音师忽悠女盆友、奇妙的工作:拟音师。我们做游戏的其实很少有成立专门的拟音组,去制作专门的音效,这在AAA级的StroyTelling游戏制作组中可能会有。我们更喜欢的是使用商业音效库,里面包含了许多现成的音效,像这样:
另外,我们还会用声音合成器去制作一些现实中并不存在的声音,比如说传送门的开启声。
3.10.2、音乐制作。专业术语是:编曲。编曲过程可以参考下面的视频,考虑到没接触过编曲的人可能看不懂,稍作解释:视频中音乐家CarolKay一个人用MID键盘,先后编写了:大镲、大鼓、日本太鼓、小鼓、小号、长号、大号、吊镲、小提琴、大提琴、贝低提琴、贝斯、竖琴、铜钹、格洛克、吟唱、长笛、定音鼓、钢琴、法国号等乐器的音轨:游戏配乐编曲过程。现在的游戏音乐,甚至其他流行乐、交响乐什么的都是这么编写出来的。一般是先在软件里编好,然后为了追求音质后期再找交响乐团实录。想要编写优秀的音乐,乐理是基础知识,然后需要去熟悉了解不同的乐器不同的音色。编曲和乐器演奏是两回事,但是具备多种乐器演奏能力是最好的。补一句,在传统的音乐编曲上,制作游戏音乐往往还需要考虑超长时间的loop循环,让人听一天也不会腻的单曲循环。还有需要程序控制的动态地音乐节奏切换、和弦进行切换、混响效果器切换,以适应游戏中的事件状态。所以游戏配乐会有一些不同。
3.10.3、配音。为NPC配音,为过场动画配音,为游戏角色的语音包配音。这个工作很好理解,现在不仅在StroyTelling游戏中很重要,在Gameplay游戏中也越来越重要,想一想、,打着打着莱因哈特会来一句:“护盾快撑不住啦!”;小美会说:“嗨呀~好气呀~”。但是做这份工作的人群,在国内的生存状态并不理想。我认为需要给予他们更多的关注,看这两个视频了解一吧:“替”声世界之生存现状;走进“替”声世界:夏磊_演讲。
声音资源制作和美术资源制作就到这里,这些资源统统都会交回到游戏设计师的手里。他们在游戏引擎中把这些资源整合到一起,来完成真正的游戏制作工作。
3.11LevelDesign
在GameDesign方面,我们刚刚讲到了StroyboardDesign。经过这项工作,我们设计了玩家的游戏流程。在这之后,我们需要进行进一步的设计:在游戏流程中的具体细节。就像我展示出的我曾经的工作内容一样,我们会去考虑玩家在流程中的每一步的感受,会去设计我们想要给他带去的体验。这就是Storyboard之后的GameplayDesign的工作意义。与原型阶段的GameplayDesign有一些区别。这更像是做Pre-ExperienceDesign。
经过二次GameplayDesign,经过美术和声音资源制作工作,我们已经得到了制作一个世界所需的所有资源。在这个基础上,我们可以开始进行LevelDesign我认为可以分成两层:1、关卡设计;2、场景搭建。在我的语境中,关卡设计是一种游戏性设计,会去考虑玩家的行动路径、决策方案,会考虑战斗掩体的布置、地势高低的布置等元素。这项设计工作与它前置的GameplayDesign密不可分。
场景搭建呢,是一份艺术工作,目的是在游戏引擎中还原场景原画师所设计的游戏场景。其过程可以参考如下:
来自LevelDesigner-Maverick的快速游戏场景搭建-森林铁路以及快速游戏场景搭建-村庄;
来自LevelDesigner-Kaanztüzün的快速游戏场景搭建-城市;
上面三个是Unreal4的场景搭建,下面放一个Unity的:
来自LevelDesigner-Maverick的快速游戏场景搭建-入海口;
这些都是自由的游戏场景搭建,实际工作中,房屋的位置、街道的转折、物体的摆放,都已经由关卡制作的过程预先制定了。在关卡制作中,设计师们用各种简陋的方体来代替物品,定制关卡中所有碰撞体积的位置:
左图是艾兴瓦尔德的关卡设计示意图,右图是完成场景搭建后的效果。完成场景搭建后,我们的游戏基本就拥有了华丽的外表。还记得原型阶段给大家展示的截图吗,来看一下它们对应Alpha阶段的截图对比:
真是激动人心的时刻啊,我们的游戏完成了脱茧蜕变,完成了华丽丽的升级!但是我们要知道,这背后是许多艺术家、设计师挥汗如雨的辛勤工作。他们可能经历过灵感的匮乏,经历过方向的迷失,经历过未曾预知的错误,经历过拍桌叫板的争吵,经历过委屈与绝望,经历过一年又一年纷飞的雪。看着这些伟大的游戏的画面,鬼知道在这背后我们经历了什么。
3.12ExperienceDesign
游戏还没有结束。我们要做最后一次设计工作。我称之为体验设计。体验设计,需要去考虑玩家从点开游戏的桌面图标开始,进入游戏看到的第一个画面,第一个菜单,听到的第一个声音,一直到玩家正式进入游戏场景,开始的第一个事件,收到的一个奖励,一直到玩家第一次保存并关闭游戏,下一次再进入游戏,遇到的最大的挑战,最紧张的时刻,最刻骨铭心的体验,一直到玩家人生中最后一次关闭游戏,把它永久地留在硬盘的某个角落,在这之中会经历的一切。这项工作会整合所有的游戏资源,去整体设计玩家的游戏体验。就像旅行体验设计师会做的那样。
在许多游戏的制作成员名单中,可能并不会看到ExperienceDesigner这个词。因为体验设计,是一个团队的工作,整个团队的工作。每一个环节都会为最终的体验负责。当然,我建议由熟知产品设计的游戏设计师来领导完成此事。
到此,游戏已经完成了Alpha阶段,也意味着游戏完成了全部的开发工作。
4、Beta阶段
Beta阶段的主要工作,就是对游戏进行测试与迭代。QualityAssurance团队会进入制作组,对游戏进行全方位的验收。他们会去测试游戏中的每一个按键,每一个功能,找出任何出现异常的地方,然后报告给Directors,让他们去修复和完善。同时他们也会再一次检验游戏的玩法。但愿他们不会在这时提出否定的意见。否则制作人会崩溃的。暴雪曾因为QA测试无法通过,最后放弃了已经开发了7年之久的,ChrisMetzen,曾主持过、、、开发工作的暴雪副总裁,崩溃了。在顶着巨大的心理压力,收拾残局,制作完后,他选择了离开暴雪,离开游戏界。这是为什么,我们需要有原型阶段,我们要在原型阶段检验游戏的玩法,对待复杂玩法的游戏,我们都小心翼翼。同时我也致敬暴雪,他们宁愿割掉自身的血肉,也不愿给玩家一个无聊的游戏。
好了,我致敬的方式是放两个EA的游戏视频……pia!
还记你在原型阶段下载下来玩的那个Ravenfield吗?想知道它在完成Alpha和Beta阶段之后是什么样子吗?请参照:联机对战实录;官方联机演示。
结语
到这里,整个游戏开发流程已经讲完了。谢谢你能够耐心地一直看到这里。,这个流程是我根据古今中外的实际项目和自己的理解总结出来的理想模型。它可能并不匹配任何一个市面上游戏的开发流程,也可能不匹配小团队独立游戏的开发流程。但我尽可能的把各类游戏开发中需要的工作都整合了进来,让大家看到一个全面的工作介绍。有些工作,在你们的游戏中可能不需要出现,比如就不需要HighLevelDesign,或者你们开发2D游戏就不需要Modelling及之后的工作。甚至有的开发团队不采用这样的瀑布流开发模式,而是采用敏捷开发模式,这都没有问题。只是我个人倾向于采用完整的这套开发流程来制作游戏。
希望在阅读完本篇文章后,你已经对游戏开发的流程有了一个大致的了解。至少在设计和美术上,你已经心里有数。在分享美术部分的时候,因为这是看得见的部分,所以我高兴能够用视频和图片的形式来辅助讲解。虽然收集和筛选这些素材花费了我巨大的时间,但是能起到一定的帮助那我便觉得值得。设计部分能够展示的相对较少一点,程序部分就更少了,几乎没有。这也是因为程序部分即便是用视频图片还是用文字,都无法充分地展现其精髓。如果直接拿程序代码出来,绝大部分人又根本无法看懂。但是不用过于担心对于程序知识的欠缺,因为在本专栏正式引导新人自学游戏开发的第一部分,我们就会从编程开始。然后逐个地,把每一个工作内容,文中和视频中展示的每一项技术,每一个知识模块都学一遍。只要你学有余力,就可以跟着我把游戏开发的所需的所有技能都学一遍,成为一个全能游戏设计师。在了解所有流程的基础上,如果你仍旧只是对某一部分感兴趣,那么你大可规划好你自己的职业定位,就像开篇所述的那样,然后针对性地学习,并深入钻研。
扩展阅读:
欧美3A游戏公司的游戏设计与制作——jiayangyang
北美游戏业入行门道和从业体验——AvatarYe
想要自己做一款游戏,需要学习哪些知识?——窦月汐
这里是知乎专栏第二篇文章:。我是窦月汐。如果你是第一次看到本专栏,建议你跳转到自学游戏开发--关于本专栏进行了解。如果这篇文章和本专栏对你所帮助,希望你在看到其他游戏人需要帮助时也能把本专栏推荐给他,向每一个游戏人致敬。
我公开了我的一个兴趣交流群,群号为:474891082。
是时候尝试解决这个终极问题了。
玩游戏很浪费时间但为什么那么多人沉迷其中?
玩游戏是浪费时间吗?
玩游戏真的浪费时间吗?
为什么很多人觉得玩游戏浪费时间?
我想打游戏,但觉得那很浪费时间,怎么办?
知乎上这类的问题多得都可以谱上曲子唱出来了。
那天看到@延静斋孙回答:
人活一辈子最终都要死,到底干什么事不是浪费时间呢?
看得我也是一笑,
瞎说什么大实话呢。
这么说话吓到小朋友多不好呀。
实话就要慢慢说。
1
“XX是不是浪费时间”通常对应着“XX有没有用”这样的问题。
玩游戏有没有用?
看艺术有没有用?
上知乎有没有用?
通识教育有没有用?
撸管有没有用?
...
而一般的回答都从有啊有啊有用啊出发,
艺术可以陶冶情操,可以装逼,可以让你与更多人谈笑风生;
游戏其中有很多的历史、地理内容,可以丰富你的知识;
游戏还可以锻炼你的手眼协调能力,提高智力;
但是其实这都不过只是拿一些附带的次生品来强行回答罢了。
何不就大方地承认:
玩游戏没有用!
卵用都没有。
2
所谓“没有用”,指的通常就是其要达成的目标没有意义。
很简单,
比如你把一堆书从书架上拿到地上再拿回去;
比如说你和朋友约定看谁可以单脚站得久;
比如你捧着自己的大脸对着窗外发呆;
...
在一般人眼中,它们当然比不上:
参加一次劳动,
参加一次实习,
努力工作,
认真刷GPA,
等等。
因为前者并不能有什么“成果”,
而后者这些“有用的东西”总是更有收益。
如果困难的活动如此美好,必定是指向某种目标:挑战是目标的达成。
但是问题在于,
如果目标本身是好的,那么追求过程的重要性就会被忽略;
一旦成功了,这个活动也只是被赋予工具性价值,或被视为好的手段。
这种生活需求层面的价值会妨碍我们注意到这件事本身所具备的价值。
我们可能会忘记本该在和朋友游戏过程中的欢声笑语;
我们可能会忘记看书过程中宁静的灯光和纸张的触感;
我们可能会太执着于追求生活的富足而忘记了自己当下就正在活着;
所以,
当某件事目标没什么用的时候,做这件事的选择就会让其本身的价值凸显出来。
那么,是否存在完全没有用的东西?
是否存在一种完全没有“生活需求层面”目标的事物呢?
好让我们可以专心着眼于事情本身的价值呢?
有,那就是游戏。
在游戏中再清楚不过了,游戏的目标不具有内在价值。
RogerCaillois在开篇就说:
Ilévoqueuneactivitésanscontrainte,maisaussisansconséquencepourlavieré‘opposeausérieuxdecelle-cietsevoitainsiqualifiéffet,lejeuneproduitrien:stessentiellementstérile.
游戏是一个没有强制性,但是同样于现实生活没有任何结果的活动。它与严肃相反,被视为“无聊的”...实际上,游戏什么都不产出,没有好处也没有作品。它就是完全无用的。
哲学家ThomasHurka也在一书的导读中提到过:
游戏的前游戏目标,比如跑过跑道,把高尔夫球放洞里,这些东西本身都是微不足道的。
对于游戏,目标理应是不重要的,
这种“不重要”正是游戏的价值所在。
所以就很清楚了,
就如对于现代电子游戏,得到某些游戏内的数值,达到某个段位,拿到某些五星御魂,刷刷到多少多少级这些目标其实根本就是微不足道。而废寝忘食,醒悟过来后发现这些目标对现实没有任何价值。
明知道其实微不足道,但是我们却依旧去追求,这样的原因很多。
最基础的原因就是大脑其实分不清楚现实的奖励与虚拟的奖励,虚拟和现实的奖励对于人类7万岁的大脑来说是一样的;而游戏中的奖励大部分都是被设计好的,简单而廉价。
不管我们是如何沉迷的,我想说的是:
我们错了。
这种对待游戏的方式是本末倒置的,
错把游戏的目标当做游戏的目的只能不断地扼杀游戏的乐趣,
因为这时候的你将游戏当成了工作。
3
再让我解构一层吧。
为什么我们会认为“事情一定要有结果”或者“事情的结果才重要呢?”
演化心理学提供的观点是:
即使到现在,我们的大脑和心灵依旧是以狩猎和采集的生活方式在思维,这个世界还牢牢地在我们的脑袋中。就像即使现在甜食如此泛滥,我们还是如甜食稀缺的石器时代时的人们一样,保留着想要大口吃下高热量食物的某种欲望。
即使在这个并不会轻易饿死的、生物性贫穷已经得到基本解决的环境中,我们依旧保留着一种渴望不断囤积,不断工作得到积累的思维,当然这一种思维也有可能是在农业革命后养成的。
用式的文化人类学视角来看:
所谓形塑我们价值观的、让我们觉得有用、无用的衡量标准的不过是文化罢了:
资本主义发展带来的资本主义伦理与消费主义,
帝国崩溃后形成的新型民族主义价值,
...
林林总总。
这并不是谎言,而是一场想象,
而这种想象塑造了我们的价值观,我们的欲望,
我们在文化之中生活、呼吸、感受着悲喜,
这是不可避免的。
在这样无对错或绝对价值的文化中:
我们对生活所赋予的任何意义,其实都只是错觉,本质上都完全相同,没有高下之分。所谓的快乐很可能就是“让个人对意义的错觉和现行的集体错觉达成同步而已。”
所以我们不需要用大众文化的价值观去衡量“玩游戏”这一件事情的价值与否,我们只需要自己认为有意义就足够了。更何况如今的消费主义让我们这群Steam剁手党也生发出一种庞大的群体文化,并且不断发展,在这样的文化之中,社群和意义皆有。
在某种意义上,
真正热爱游戏的人,往往是最不功利的人,
也往往是最不会为各种功利主义的考量所影响的人,
他们是自由的人。
4
所以可以下结论了。
玩游戏是不是浪费时间?
这取决于你。
如果你玩游戏的时候:
认为游戏内的目标是最重要的,并且始终被其牵着鼻子走,那么你在浪费时间。
如果你觉得游戏对你没有意义,那么你在浪费时间。
5
所以,
我们应该怎样对待游戏并且保持一个良好的游戏态度呢?
首先,认识到游戏就是无用的。
游戏的价值只在其过程,所以只需要尽情地享受游戏的过程就好。
不要因为多巴胺或者是某些廉价的反馈而沉迷,
也不要因为游戏目标很诱人而被目标所牵引,走向工作式的劳动过程。
其次,认识到自己玩游戏是自我的选择。
玩游戏并不是对于现实的逃避,
并不是对自己反馈系统的妥协,
玩游戏就是自我自由自愿的选择
只要你觉得游戏之于自己,现在比其他东西有意义,那么现在就去玩就好了。
6
在这个社会中,密密麻麻的人挤着嚷着,寻找着自己的价值和意义,
常有人自大地宣扬自己的价值并且用其衡量他人,
形成各种社会的“主流价值”,
让那些本来有自己价值的人们都开始质疑自己,
甚至不得不为此伪装或者强行改变。
但是人都是要死的,
对于不走向佛教的我们,
用自己能找到意义的方式
活过,笑过,哭过就好,
就让你的悲喜自然地绽放和舒展。
参考书目:
1.尤瓦尔·赫拉利:北京:中信出版社,2014年。
2.伯尔纳德·舒兹:臺北:心靈工坊文化,2016年。
Caillois:Lesjeuxetleshommes,Gallimard,folioessais,1967.
4.题图来自,自己截的。
5.本来之前的文末有一首诗,想想删了。但是还是列出名字:byRupertBrooke杨宪益译这个答案末尾可见
参考文章::
劝君莫再谈“游戏”
如何挽救沉迷守望屁股的玩家
写在卸载之前
游戏与人文
个人主页:@叶默哲
想法创意都有了,就差一个程序员了?有没有想过:也许你配不上一个程序员。
成为一个独立游戏开发者,我认为他自己首先应该成为半名程序员。
这里是知乎专栏,在上一篇文章中,我们已经概览了一个大型游戏的开发过程。但是由于程序方面的内容不便可视化展示,所以那篇文章主要是展示了设计和美术制作流程。现在我们需要来讲一讲的程序方面的事情。首先,我们需要认识到:
1、掌握编程技能的重要性
如果你想成为一个独立游戏开发者,不会编程几乎是不可能的事情。就像一个厨师不会用刀案锅铲。“电子游戏”是一个什么?我们这里不谈玩法设计,它的物理本质就可以说是一个计算机应用程序。开发游戏其实就是开发一个程序。而开发程序的过程,我们把它叫作编程。只有学会了编程、掌握了一款游戏引擎,我们才会真正明白:游戏,作为一款软件来说它的本质是怎样的,它是如何运作的。你不知道汽车是如何工作的,你就制造不出一辆车。了解程序,就是了解游戏在电脑上工作的原理。掌握这些知识,不单单是程序员的立身之本,也应该是每一位游戏设计者的基本素养。再者,如果你从未接触过游戏开发,现在开始学习任何其他游戏开发知识,你是不可能在两个月之内自己动手制作出一款可玩的游戏的。但是,你学习编程与游戏引擎的使用,你便能做到。群友真实经历,@小小故事汇在我的引导下从职业厨师开始学做游戏,经历两个月的学习之后已经能够独立做出“飞机大战”那样可玩的小游戏了。你若学习美术、或是“设计”,这都不可能实现。这是编程的强大之处。
作为一个专职的“游戏设计师”,并不是只会拍脑袋出主意就行了。我认为一个合格的“游戏设计师”至少应当能够编写逻辑脚本,把自己设想的主意用代码实现出来,不要把任何细小的事情都塞到专业程序员的待办事项里。职业的程序员会为设计师提供底层的服务,让设计师不用操心计算机底层的事务,只要把精力放在游戏逻辑本身上。事实上,现在各大游戏引擎的设计思路都是如此,比如UnrealEngine4强大的Blueprint系统和CryENGINE推出的Flograph和Schematyc系统,都是为设计师们服务的,让他们不用敲任何代码就能编写出基本的游戏逻辑。为了让设计师们能够自己动手丰衣足食,程序员们已经做出了许多努力,想成为设计师的你,有什么理由不学习一下基础编程呢?千万不要想:程序的事情就交给专业的人来做吧。“我”就不需要学了。这种人,就是那种常常说“就差一个程序员了”的人;这种人,也常常是那种只会空想,给团队制造试错成本的那种人。因为他们不懂程序,但要让别人来为他的想法买单。他们不知道他们临时冒出的一个“好主意”可能要让一整个团队忙活好几个月。所以,我建议,每一个想要成为游戏设计师的朋友,都接触学习一下编程。
你只是想静静地画图,做一个安静的美术人员?如果你只是想平静地度过这一辈子,顺便在游戏制作领域出一些力,贡献一些艺术力量,那么你只需要专注于升华自己的艺术上限就好了。如果你想对这个领域搞点事情,比如说优化一下美术资源的制作流程,提升游戏画面的行业标准,那么你就不能只是会用Photoshop画画图、用3Dsmax建建模,你需要知道Photoshop这款软件是怎么被开发出来的,它的每种图层混合模式采用了什么算法,这些算法用代码如何实现,如果我要扩展它的调色盘功能应该从哪里开始编写。一个能回答这些问题的艺术家,和一个只会用PS画画的艺术家,对于工具的理解是完全不同的。而前者,更有可能推动整个数字绘画领域向前步进。为什么那些艺术创作软件都出自于国外的开发者呢?开发一款艺术创作软件,不仅需要专业的程序员,更需要具备编程素养的艺术家们来领导。而我国的艺术从业者们,有几个具备扎实的编程能力?而往往一说到这些,那些“大师”们就会开始贬低工具的重要性,转而强调艺术本身。从“从艺动机”层面,许多选择艺考的人其实就是因为文化成绩太差;从思想层面,几乎少有艺术家会想去改进他们所用的工具。如果你不是这样的人,如果你想要成为一个推动数字艺术领域进步的人,有机会的话,你就应当认真了解一下计算机的世界。另外,回到游戏美术本身,一个游戏最终如何展现你画的图、你做的模型,这完全是由渲染管线和Shader脚本来控制的,这些都是代码写出来的。所以你认为游戏美术只是画画?那只是其中的一个小环节。当然了,说这些只是希望你能对游戏美术具备更多的认识。至于初学,我还是不会给你徒增痛苦让你去学编程的。别紧张,从窗户上下来吧朋友。
包括做音乐也是,现在编曲软件之强大,无不是具备音乐素养的程序员们的功劳。奥巴马说每一个现代人都应该学一下编程,不是随便说说的。写到这里,我希望每一位读者都已经在心里提升了掌握编程能力的重要性。
在后文中,我们开始来认识一下计算机与编程的世界,再之后是编程与游戏制作的关系,最后是编程学习路径。我会力图让每一个高中生看到下面的文字时也能够理解我在说什么,你不用具备什么前置知识,嗑着瓜子顺序看下去便好。
2、计算机与编程的世界
是先学C还是C#?还是JAVA?还是Python?还是Unity?还是OpenGL?首先你都知道这些是什么吗?每一个想学游戏编程的人都经历过这样的问题:入门编程语言该学什么?我在知乎问答想要自己做一款游戏,需要学习哪些知识?中明确说明了先学C#再学Unity。但是仍然有无数人私信问我到底该先学C还是C#。这不是因为他们没有认真看我的回答,而是他们不知道为什么要这样安排,以及很多其他前辈建议他们要先学这样或那样。道听途说,只言片语的回答是解决不了大家心中的困惑的,因此在本篇文章中我想为大家介绍一下计算机和编程语言的世界,这可能会花费一些功夫,因为从来没有人能够在一篇文章的篇幅内完整地介绍整个计算机的世界。我也只能尽力尝试,让大家了解那些语言各是什么,之间是什么关系。在此章节完成之后,我再会解释我们学习安排是如何设置的。
请注意,我现在要开始装逼了:这件事情如果要溯源的话最早可以追溯到亚里士多德开创出“逻辑学”;19世纪的乔治·布尔在此基础上发展出“数理逻辑”;20世纪克劳德·艾尔伍德·香农在“数理逻辑”基础上发展出“逻辑电路”。“逻辑电路”就包括了我们高中所学的:继电器、与门、或门、非门、异或门等等。利用这些工具,我们就能够制造出会计算加法、减法的逻辑电路。我们得到了会计算的逻辑电路,又经历了一系列的升级和优化,那么现在我们的计算机是如何运作的呢?首先可以分为两个层,一层是CPU作为常识我们知道,计算机只认识0和1,那么我们就来看一下它是如何运用0和1来工作的。
汇编:
请注意为了方便讲解我就自己创造例子了,可能和实际情况有出入,但是更容易帮助理解。先看一下这一行代码:
000000010000110000001010
看不懂?普通人类当然看不懂,但是机器看得懂,而且机器就只能看懂这种形式的信息。这个叫做机器语言,也是二进制码。二进制码是构成如今计算机世界的基础,我们电脑里的任何文件、应用程序归根结底的都是以二进制码的形式存在的。比如:我们常常能够在电脑的文件夹里看到这样一个文件夹:
这其中“Bin”就是单词“Binary”的缩写,意思是二进制文件。打开bin文件夹,xe和.dll文件。对于我们来说,.exe就是一个应用程序嘛,比如说:xe、xe。
大家难道没有好奇过:为什么应用程序的的后缀是“exe”呢?原因:“exe”是英文词组“ExecutableFile”的缩写,意思就是可执行文件。“可执行文件”的意思是:可以被CPU执行的文件。我们前面说过,CPU只能执行0101001这样的指令。所以“可执行文件”其实就是这种指令的集合,也就是是一堆二进制码“0000111101010011001001100000111101010011……”。所以它才会常常被放在bin文件夹里。
我们玩的每一个游戏,它们的本质都是这样的二进制文件。所以编写一个游戏,其实最终最本质就是编写出这样的文件:0101010101110010101010101001010101……可是……
我知道这也太特么为难人了!鬼看得懂这些01是什么意思啊!但没有办法,现代的计算机只能识别这种简单的机器语言。为了让这些机器语言更容易被我们人类所理解,先驱们发明了汇编语言。但其实汇编语言很简单,有了汇编,我就能跟你解释前面的0011是怎么回事了。再来看之前的那行代码:
000000010000110000001010
请注意这不是一串随便瞎写的0和1,它是有规律的!你们看,以八个0或1为一组,每组中间有个空格。这其中,每一组我们叫做一个“字节”,每一个0或者1,我们叫做一个“比特”。第一个字节:00000001,假设我们规定,它代表一个命令:加法。我们再规定,如果CPU遇到“加法”命令,它就把后面两个字节相加,把结果存到前一个字节所在的地方。于是我们的CPU就能够计算加法了。规则是给它这三个数:
第一个是表示加法命令的“00000001”,第二个A和第三个B是两个加数,每次都不同,所以我用x表示那些比特位。同样的道理我们能够制定出减法命令、乘法命令、复制命令等等。比如复制命令:我们规定“00001111”代表复制命令,如果CPU遇到“00001111”,它就把后面第二个字节的数据,复制到后面第一个字节的数据所表示的位置上。于是我们就有了复制数据的功能了。
这些功能,都是CPU中的逻辑电路为我们提供的,我们只需要发送规定好的指令便能使用这些功能。注意,指令的本质是一串0和1代表的信息,但是我们很难去记忆和区分00010011和01001101这样的数字,所以我们就用“ADD”代表00000001,用“COPY”代表00001111。Add和Copy在英文里本来就是加和复制的意思,这就很好记。而“ADD”、“COPY”等这些指令集合起来就形成了汇编语言。它实际上就是把机器语言直译成了英文单词。一般CPU认识的指令不多,就那么十几个。所以汇编语言中的指令一一对应也不多,大致分为三种:
数据传输类:复制、加载、存储……算数/逻辑类:布尔运算、加法运算、自加运算……控制类:转移、停止……
就这么几个指令能干啥?你别说,我还真有办法能让你亲自见证一下,就这么几个指令,可以让CPU干些什么事。首先,下载这个小游戏。然后开始玩吧。我已经让群友们验证过了,不管有没有学过编程都可以玩几下。而游戏的主体内容,其实就是以一种有趣的方式在写汇编代码。在过关这个游戏之后,你会发现你自己用这几个最简单的指令,让计算机实现了一些简单的功能,诸如:比较两个数字的大小、判断一个数字的正负、让计算机数数、用加法实现了乘法运算、从一组数中找到最小的数……如果你在游戏里过五关斩六将实现了这些功能,那么你就相当于解决了上个世纪计算机科学早期那些先驱们所面对的问题。给自己一个奖励吧,点击文章末尾的“赏”就会看到编程学习大礼包!额,你说你没有通关?没关系,最后几关是比较难,而且这个游戏只是为了让你体验一下汇编编程的感觉。
现在你会发现,汇编语言其实没有多复杂,而且比起那些0011的代码,真是太好识别了。但是那还不够,比如我要计算一个:
X=Y*Z++P-2
这个自然的表达式人人都能看懂吧?但是用汇编语言写出来就不那么好看了:
MovX,Y
MulY,Z
DivQ,10.5
AddY,Q
SubP,2
AddY,P
一眼看上去不知道是在干嘛。而且汇编语言也不够“自然”,比如我要做一个赋值操作:
X=Y;
上面这种写法很自然,我们在学数学的时候就是这么写的,但是在汇编语言中它是这么写的:
MovX,Y
直译就是:把Y移动到X的存储位置。再比如:
ifx
这几行命令,我们用自然语言就能读懂它在干嘛:比较两个数的大小,然后把大的数赋值给小的数。用汇编语言写就是这样:
CmpX,Y
JLELessCase
JmpSkipCase
LessCase:
MovX,Y
SkipCase:
MovY,X
用自然语言写很简单的三行命令,用汇编写就需要这么多行才能实现。
还记得当初我们为什么需要汇编吗?因为机器只能识别0和1构成的指令,但是那种数字指令对我们人类来说很难识别和记忆,所以我们用英文单词来一一对应那些数字指令,那些英文单词构成的指令集合就成为了汇编语言。新的知识点:当我们写出汇编代码后,在真正交给CPU运行之前,我们得把汇编代码翻译成机器码,因为CPU只认识0和1构成的机器语言。。
先驱们尝试把汇编语言简化的过程中,想到:既然要翻译,那么我们能不能创造一种更简洁的语言,然后把它翻译成相对复杂的汇编呢?就像把文言文翻译成语素成分更复杂的现代文。
“私见张良,具告以事“———翻译为———>“私下会见张良,把事情详细地告诉了他“
从这个想法出发,C语言诞生了。
C语言
你们看,汇编语言多复杂,因为它和机器硬件实现的指令一一对应,所以光改造它而不改造机器指令的话毫无意义。所以我们不如创造一种新的语言,然后把它翻译成汇编吧!语言有许多强大的优点。但是在此,我想让新手知道的是:函数。
函数是什么?当我们在写代码的时候,可以想象为我们写的每一行都是一个指令。我们写十几行指令来实现一个乘法运算,用二十几行写一个排序操作。程序猿是世界上最懒的物种,他们不想每次要做乘法时都写十几行代码。能不能用一行指令代表十几行指令?就像:
指令集A和指令集B所描述的就是完全同样的事情。但是A用了7个指令,B用了5个指令。如果你要在这件事件上偷懒,你是愿意以A的形式还是B的形式来写这个指令集呢。我不知道你的选择是什么,但是作为世界上最懒的物种来说,程序猿在编程的时候,能少写一行就不会多写,能少敲一个字母就绝对不会敲两个。所以在碰到上面这个问题时,采用B的写法无疑。那么如何实现呢?假设指令集A中的每条指令都是计算机能够识别的指令,指令集B中的第3条“把大象装进冰箱”是计算机不能识别的,是我们自己虚构的。但是我们要使用这条指令,因为它对于我们来说很省事。现在很简单,只要规定:我们每次写“把大象装进冰箱”这条虚构指令,就自动把它翻译成“打开冰箱、把大象塞进去、关上冰箱”这三条原生指令。翻译过程不用担心,前人们已经写好了各种翻译器能够现实这种效果。
那么,上面我们虚构出来的那条指令:把大象装进冰箱。其实就是我们所谓的函数!下面展示的是在C语言中创建一个函数的形式。
把大象装进冰箱
下次想干这件事件的时候,就只要写一句:把大象装进冰箱。括号里写哪头大象,就装哪头。那么把大象装进冰箱就是一个函数。
有了函数这个东西,世界上任何复杂的任务都可以被拆分成最简单的单个任务。当我们学C语言的时候,一定要把函数的用法学好。我认为这也是新手学习C语言的主要任务。
更高级的编程语言
按照学院派的编程学习路线,计算机专业基本都是先学C语言,然后学C++,,然后学C#/Java/Python/JS....,然后回去再学汇编呀、电路呀什么的。想必大家都熟悉这套方案。
其实学习一个东西,从根源开始了解接触,从底层学到顶层是一个自然的遵循逻辑的学习方式。在计算机世界中,如果说从真正的根源开始学的话,估计真得从逻辑电路开始了,然后学到汇编语言,再学到C语言,再学C++。但是为什么学院们都选择从C语言开始呢?一是因为相比起汇编语言,C语言更能够学以致用,使用起来更方便;二是因为,现在许多流行的编程语言,比如C++、JAVA、C#、Python都是类C语言的,首先是语法上都是仿照C语言的风格来设计的,其次它们的一些技术原理是建立在C语言的基础之上的。它们之间的关系就好比“汉语”与“北京话”、“四川话”、“重庆话”、“广东话”之间的关系,其中C语言就是汉语。所以C语言作为广大语言的根基,把它当做入门编程语言来学习是没有问题的。再以它为中心,向高层语言和底层原理来扩展学习,往往计算机专业的同学到大三就能把整个计算机体系打通。
编程语言发展史
刚刚我们才讲到了C语言。并且说了游戏领域中比较重要的几种语言与C语言的关系。从这张图中我们应该能够更清晰看到这几种语言的发展脉络。每一种新的语言诞生,都摒弃了一些前者的弊病,加入了自己优秀的特性。但无论怎样,每一次编程语言的发展和进步都是在前人的基础之上进行改良和创造,很少有几个语言是凌空出世的。正因为这样,所以编程语言之间的差别,并不是天差地别。并不是我选择了学习JAVA,就意味着放弃了C#;也并不是我如果不先学C语言,我就学不懂C++。编程语言之间都是触类旁通的,只要先掌握了其中一种,那么其他的语言就能很快掌握。
再看一眼上面的图,接下来我来讲讲C、C++和C#、Java、JS、Python的关系。
C++
首先经过我们上面一顿瞎BB,已经知道了C语言是怎么来的,而且知道了C语言的语法比较接近我们的自然语言,语言写的代码,在被CPU运行之前,需要翻译成汇编代码,再翻译成机器码。我们对这个设计很满意,使用了好多年。后来在使用中,特别是开发一些大型项目,比如用C语言开发一个计算机操作系统时,发现有问题处理起来很麻烦,先辈就对C语言进行了改进。有一次改进后新增了一个叫“类”的功能,这个功能很牛逼,导致那个版本的C语言直接脱胎换骨。这种与众不同的牛逼需要在名字上体现出来,所以他们学习iPhone的起名策略,在名字后面加了个“Plus”。“CPlus”=“C+”。一个不够,那就两个“CPlusPlus”=“C++”。所以!C++是C的升级版,多了一个核心功能:类。语法没有变,本质的东西没有变,还需要被翻译成汇编,然后翻译成机器码,再交给CPU执行。所以学校里安排先学C语言,再学C++,其实这种说法是有点狗屎的,就好像是说:我们先学习“浮水”,再学习“游泳”。本来我们学习游泳的过程中就会学习浮水,但是就要把学习“浮水”先说一遍,让人误解为这是两个差别很大的东西。所以懂了吗?我再说明白一点:学习C++就是学习一个高级版本的C语言,学C++的过程中,就会先把C语言的那些东西学到。所以不存在:如果不学C语言打基础,就学不好C++。如果再有人问这个问题,就把这一章节贴到他脸上去。
另外补充:C++从C发展出来后,C语言也没有闲着,自己还是在不断发展,比如后来发展出了Objective-C。严格意义上来说,“学习C语言”和“学习C++”确实是不一样的,因为要去研究它们不同的语言特性。但是!对于没有学过任何编程的初学者来说,最开始就是学习个语法认识几个关键字而已,根本到不了研究语言特性的程度,所以两者说法对他们来说几乎没啥差别。
C#
我们知道现在CPU厂商Inter和AMD两方对峙,操作系统是indos、MacOS和Android三足鼎立。可是你们知道上世纪八九时年代,计算机市场是繁花绽放,各种各样的硬件、操作系统充斥在硅谷整条小吃街。那个年代的码农,随手写一个程序,并不是写完就能到处用的啊。就算现在也不是啊。原因很多,可能CPU不一样,操作系统不一样....那怎么办?先辈们想到了一个胆大包天的方法:我写一个软件,这个软件去模拟CPU硬件,然后再写其他的程序,把这些程序编译成这个虚拟CPU能够执行的机器码,然后让虚拟CPU去执行程序。
这样,只要所有的电脑都提前装好我这个虚拟CPU软件,那么其他那些杂七杂八的软件统统都在我上面可以运行了!完美解决跨平台问题。
有了这个想法之后,先辈们就开始动手去写这个牛逼哄哄的虚拟CPU软件了。他们用C语言或C++来写这种后来被称作“虚拟机”的软件。这种事情都能干得出来,他们就顺便又为自己的“虚拟机”发明了专门的编写程序的语言。Java语言对应JVM,C#语言对应.NETFramork,Python对应PythonVirtualMachine......
看到这里,聪明的你已经看破了真相,原来C#、Java、Python编写的程序都不是直接交给真正的CPU运行的,而是交给了一个模拟CPU的软件运行的!把我们的程序交给了另一个程序来运行!把我们的程序交给了另一个程序运行!明白吗,为什么那些程序猿都说C#没有C++快。因为C#写的程序交给了C++写的一个程序来运行!Java写的程序也交给了C++写的程序来运行!Python写的程序也交给了C++写的程序来运行!再重复一遍就疯了……
到现在为止,我们解开了一个新手十大困惑之一:为什么C++比其他语言更快。现在我们还在章节“计算机与编程的世界”中,接下来,我们要聊一聊那几种高级语言的不同点,以帮助我们搞清楚新手十大困惑之首:我应该选哪个语言开始学编程!
不同高级语言使用感受
这么说吧,当年我才大二的时候,只学过C++。从没有专门学过一天其他语言。在那个背景下,我能够用C#在Unity写小游戏,我还用Java在AndroidStudio里写过一个贪吃蛇。我可是一天的C#和Java都没学过。为什么我能做到呢?因为主流编程语言的语法基本都一毛一样,根本就不用怎么学啊。那种差别就像东北话和天津话的差别一样,大家都是从汉语出来的,谁听不懂啊。为了证明几种语言语法上真的很像,我写了一段伪代码,并翻译成不同语言版本,请找不同:
看,这三份代码是在干同样一件事情,是用三种语言所写的。除了第6行比较特殊,其他部分你们能看出什么区别吗?是不是真的很像?如果掌握了其中一中语法,另外两种有什么难的呢?无非就是注意一些细节不同点。总有些人问第一个编程语言学什么,我通常回答“都行都行”,看看上面这张图,我不是瞎说的啊,对于学习些基本语法,了解基本概念,先学哪个真的都行。如果把我们学做游戏比喻成学做饭,语言呐、环境呐这些东西,就可以看做是厨具厨房。学做饭的时候,重要的是学习菜肴怎么做,烹饪方法心得,厨具工具的用法是基本的也是次要的。我们随便选个厨房开始学做饭,一旦学会了,那么在另一个陌生的厨房里难道就做不出饭菜了吗?不会的。就算是另一个厨房,就算那个厨房里的锅、碗、灶、铲奇形怪状从未见过,习惯习惯也不影响我们做饭呀,因为工具毕竟还是那些,变其形式而不变其本质。
那么在这种情况下,我们应该选那个语言开始学习呢?总要有一个选择。这个选择就是C#。为什么是C#呢?说一个很简单的理由,因为Unity是用C#写代码。而Unity是我最推荐新手学习的游戏引擎。所以学了C#就直接去用Unity咯。如果有人问:“我想用Unreal4或CryENGINE,我能不能从C++开始学呢?”当然可以呀。你掌握了C++之后,如果又转变想法想用Unity来开发,也能很快上手。但是我不推荐这样,因为C++细节非常多,更繁琐一点。学起来没有C#轻松。而Unreal4和CryENGINE呢,用起来也更麻烦一点,也不建议新手拿这两个引擎来考验自己的自信心。
下次继续……
作者并非职业程序猿,也不是计算机科班出生,若文中有任何错误,望先辈们在留言中指出,以帮助我修正文章、传播正确有用的知识。
扩展阅读:
1.
那么,下一节再见。
这里是知乎专栏第三篇文章:。我是窦月汐。如果你是第一次看到本专栏,建议你跳转到自学游戏开发--关于本专栏进行了解。如果这篇文章和本专栏对你所帮助,希望你在看到其他游戏人需要帮助时也能把本专栏推荐给他,向每一个游戏人致敬。
我公开了我的一个兴趣交流群,群号为:474891082。
明确两点:
1.游戏开发只是借助了电脑和图形学,没有这两个,一样可以开发游戏。
2.图形学是为了在电脑里模拟物体而形成的一门研究领域。
目前,游戏公司偏重于成熟稳定的框架,这样更有利于快速开发游戏,毕竟根本是为了赚钱。只有很少一部分大公司需要自己去搞游戏引擎,只有当开发或者定制游戏引擎的时候,才会用到一点图形学的知识,不过总的来说,游戏只用到了很少一部分图形学知识。更多的图形学知识,会用于建模/电影之类的。如果你感兴趣于游戏,那么图形学会让你走的更远,不过短期来看并没有什么卵用,不如踏踏实实把一款游戏引擎用好,这样游戏公司大部分的工作才适合你。
上面全是废话,下面才是我想说的:
首先,无论外部环境如何艰难,作为一个有志于游戏开发的程序员,你都不该自暴自弃,学习更高深的东西,有百利而无一害。同时,作为社会人,你需要提供高质量的服务,这是你应该承担的责任。下面主要是针对对游戏开发和图形学有兴趣,却不知如何下手的同学的一些小小的建议。
--------------------------------------游戏工程---------------------------------------------
在中国,游戏在很大程度上是服务业,不是制造业。一款游戏更多的是内容驱动,程序员反而成了辅助,为游戏的实现而提供技术方案。
其次,1.游戏顾名思义是为了娱乐而制定的一套规则,它的可玩性高于一切。可玩性是游戏施加给玩家的挑战组合,一个游戏如果能让玩家觉得有无限的可能性,那么就说明这个游戏可玩性比较高。一个规则可能很简单,但是当多个规则组合起来,就会产生不可预测的结果,这就是游戏的魅力。MoreisDifferent。可以试试用编程来玩玩生命游戏。还有一个梗,如果计算机在一个游戏中无法战胜玩家,那么就说明这个游戏有很高的可玩性。2.游戏是一场赌博,比如游戏中的生物,如果它们的属性都千篇一律,是不是很无聊,而如果仅仅是加入了一点随机,会让玩家感觉这个游戏更真实,更有想玩的冲动。计算机的出现,让游戏开发变得更加学科化,因为计算机可以代替人脑来执行规则。这意味着,作为程序员,你就是秩序的象征,你就是上帝。建议:
0.如果只想写游戏逻辑,只用熟悉框架,熟悉语言。客户端框架推荐unity3d,unreal4,cocos2d,这些框架都有完整的工具链,可以让你快速上手,同时社区也比较火热,不用担心遇到问题没地方问。服务端不太了解,每个公司都有自己的服务端引擎吧,我比较看好一款叫kbengine的开源引擎和云风大哥的skynet,希望朋友们可以推荐一下还有哪些开源的游戏网络引擎对初学者比较友好。
1.如果觉得引擎不符合你的要求,你想自己定制,做一个引擎geek。那么ogre是个很好的选择。另外,龚大大的klayGE很优秀,我喜欢龚大大这样的人0.0。
2.如果想本科毕业后从事更为核心的设计。学好线代/信号系统/数学分析/概率统计很重要,然后去找一些图形学初期的论文看看,主要是理解别人的意思。线代不用说了,游戏中的各种变换都依赖于线代提供的数学工具。信号系统提供的思路,如何从不同的基来表达信号,很大程度会改变你的世界观,对,世界观,然后游戏中的pre/postprocess很多用到信号系统。数学分析,会培养你的数学演绎能力,这点在数学建模,特别是游戏这样一个理想国里,是非常有用的。概率统计,AI不能多说。
3.大学期间,如果想开发游戏证明自己,绝对不要要求太高。如果你能找到一个美工同学,那么跟他/她一起成长再好不过。千万别因为想自己做一款游戏而走偏了方向。我就因为想做游戏而自学了建模,在youtube上下载了将近200G的blender教程,到最后,可以做一些基本的物体,调一些动作,做一些纹理,而且全是用一个鼠标完成,至今不会用数字板。这些工作你可以投入一些时间,但是这些时间你可以用来做更有意义的事情,比如成为一个编程高手。
4.可以考虑实现一个软渲染器,很多人推荐,虽然我没去做过,不过应该收益蛮大。它可以让你对渲染的本质有所理解,同时增加你的代码掌控力。推荐,理解核心即可。
5.电子游戏开发,需要各方面学科的能力,c++/directx。这句话我想说三遍。
edev/stackover,希望你常去看看。
7.记得把你作品保留下来,然后不断对它迭代,如何把它保留下来是门学问,我就因为太关注于本身能力的修炼而忽略了这个。大四之前写过的代码和硬盘因为一杯咖啡全送进了回收站Forever。如果你是一个有心的人,那么找一份游戏相关的工作完全不是问题。
8.紧接着上面的一点。学会使用github,自己写个博客。很重要,不要嫌麻烦。血泪教训。
9.说到图形学与游戏的关系。不得不谈到一个人,也是我最崇拜的一个人。3D游戏引擎之父-johncarmack。关于他的逸闻趣事有许多。最出名的是那个开根号的magicnumber,0x5f3759df,让游戏中最常用的函数快了4倍!也是那本让我对图形学和游戏开发更加神往。
10.上面说了点工程方面的,更多是围绕游戏领域。然而在图形学这个领域中,有许多细小的分支更值得关注。具体的一些见硕鼠酱的答案。我的答案会更偏向于保守经典的领域。
-------------------------------图形学--------------------------------------
图形学还是交给大牛们介绍比较好,不过作为入门,我挑了几个经典有趣核心的方面说说。
sic中的DeformableBody。这是我比较喜欢的一个子领域。它主要是研究物体的物理性质,如何模拟物体的受压形变及其恢复过程。比如一个植物,你将它折弯,松开,它会摆动,如何在计算机中表示这些摆动呢?有两个可选方案,sSpringSystem.是将物体受压运动看成由很多小弹簧共同震动产生的。我记得我刚读大学的时候就拜读了MiloYip大神在麻辣马中关于头发的建模,那篇文章算是DBody的一个入门吧。2.有限元方法。
刚加入知乎,如果稍微有点帮助,希望读者给个赞。
接下来不断的迭代这个答案,希望把一个问题回答得完美一点。
不断的迭代是个很有意思的事情,我都不想去干正事了,特别是有许多朋友给的赞,让我很开心~
本文作者:@Loki——不吐槽会死星人,喜欢一个人玩游戏,半个AVG死忠。
我认为,人的思维缺乏将已知事物联系起来的能力,这是世上最仁慈的事了。
人类居住在幽暗的海洋中一个名为无知的小岛上。
这海洋浩淼无垠、蕴藏无穷秘密。但我们并不应该航行过远,探究太深。
——洛夫克拉夫特
这是制作组RedFishGame官网上关于这款游戏的介绍。
也许光凭这段引自克苏鲁神话之父的言论,以及RedFishGame这个新兴的小团队,很难看出有何出彩的地方。
但是要是加上制作团队CottonGame以及,熟悉国内独立游戏圈的人应该就会明白。
这款风格神似的新作,是CottonGame正在打造的第二款作品。
从极度类似的风格来看,也许我们可以把它当作的续作,虽然两款游戏并没有内容上的交集。
目前正在做最后的收尾测试,计划在6月份正式发布,上周他们还将它带到了摩点网、Kickstarter、Indiegogo等众筹平台。
有趣君参与了众筹,秘密打入了众筹粉丝群,并跟这款游戏的制作人聊了聊。
在摩点网上,的众筹发起者是小棉花,在国内独立游戏圈还算知名,他是CottonGame的创始者,也是的制作人。
获得的诸多荣誉让人们记住了他,然而棉花自己创作独立游戏的故事其实更像是一场大冒险。
棉花出生于1975年,国内独立游戏人提起他都说是一位友善有爱的大叔。
但他本人比较反感别人叫他大叔,我称呼他棉花大叔的时候,他反应比较大,说不要叫大叔。
我说我在听他IndieAce的分享演讲,他问是不是又老又丑。我又说我听的是音频版本,他连呼还好还好。
我还找到了十年前他参加插画设计大赛拿奖时候的照片,简直年轻帅小伙一枚,不过当时他却称自己“算是个老人家了”。
在QQ资料上他填的是19岁,从心态和表现上看确实比我年轻好几岁。
1997年棉花毕业于吉林东北电力大学,专业是电力相关,毕业后获得了能源国企的“金饭碗”。
但醉心于绘画的他最终还是选择了艺术这条不归路,工作之余他依旧坚持绘画创作,自己画画卖画甚至办过画展。
搞艺术的都知道,说这是条不归路并不是调侃,一段时间之后四处碰壁的棉花开始寻找新出路。
新世纪开始,电脑及互联网开始在国内兴起,棉花凭借着绘画功底开始自学Flash动画和三维动画制作。
他跟朋友一起成立了“二极管工作室”,主打制作Flash游戏,这可以说是国内最早制作游戏的一批人了。
这里有个很好玩的插曲,在我加入众筹粉丝群的时候,群里有玩家分享了棉花十多年前制作的Flash游戏。
没想到这些封装成可执行文件的Flash小游戏这么多年后还可以玩,我试玩了和两款游戏。
更准确的说其实是“炸鱼”,一个小孩在岸边丢炸弹炸鱼,丢出去的距离根据你点击鼠标左键的长短控制,需要很好的手感才能在一分钟内炸死所有鱼。
则是类似前几年很流行的“大家来找茬”,左右两幅画在限定时间内点出所有不同之处。
这些Flash游戏虽然已经初步具备游戏元素,而且十多年后来看也不算差。
但Flash游戏总归是小打小闹,只懂美术的他明显将游戏做成了插画集,他们也很难弄出其它更深入的类型。
随后他们给一家娱乐网站开发了数十款Flash游戏,谁知道几个月后该网站弹尽粮绝后关闭了,他和哥哥决定自己掏钱开发休闲网游。
游戏做了三年,但没有经验的他们难以最终成型,卖掉这款半成品之后他们转而承接美术外包为继。
直至2009年,这家小公司终于淹没在高涨的商业浪潮中,棉花又过起了之前卖画的生活。
卖插画、卖油画、卖国画,出版绘本、工具书籍,还做了许多明信片、公仔,甚至去丽江画旅游地图。
按他的说法就是“骗骗文艺青年,挣点零花钱”。
很多人可能无法想象这样的生活,但棉花还是坚持了好几年,而且对于游戏他并没有死心。
2011年他接触到了游戏制作工具GameMaker,两个月后鼓捣出了,一款类似的游戏。
在IndieAce的分享演讲中,他多次调侃说制作游戏只是因为很想赚钱,想赚很多钱。
但真正有人想把买下来卖到国外去的时候,他又犹豫了,他不想卖。
他说这算不上好游戏,也得到了很多朋友善意的批评,他没想到这款游戏能够挣到钱。
然后他又开始制作一款名叫的游戏,因为当时的国际时政就是卡扎菲被反对派打死,算是蹭个热点。
他拉上了网上认识的一位程序员,借鉴了一些其它游戏的玩法,制作了这款游戏。
本来这只是一款恶搞鬼畜作品,但后来棉花发现国内有不少厂商盗版了他的游戏,本来没发布的游戏却原封不动被别人发布了,甚至游戏一些关卡还打着他的英文名Cotton。
后来他才搞清楚,原来这游戏被那个一起合作的程序员卖掉了,卖了一万块而且没有告知他。
这件事闹大之后,棉花并没有追究这位程序伙伴的罪过,他说不想毁了这位年轻小伙的前程。
甚至之后,他还开启了的制作,不过最终这款游戏也不了了之,只在某些小游戏平台简单试了试。
经过这些磨练之后,棉花觉得总是这样不了了之不行,还是要认认真真打造一款作品。
然后他开始了一款叫的筹备,画了很多场景概念图,并将它推上了国内最早的众筹平台。
这时候的众筹在国外都是新兴模式,Kickstarter游戏众筹最早的神话也才开始,棉花不说国内第一人吧,但确实够早。
不过最后由于国内众筹的局限性,以及受众宣传等诸多因素,这次目标一万人民币的众筹只收到了54名玩家的4400元,并没有成功。
再后来他又将目标盯上了独立游戏大赛,IGF独立游戏节。
2012年IGFChina他制作了一款名为的中国古典风的作品,只做了一个关卡,但他觉得游戏不够好,最后没好意思投给IGF评选组。
这一年评选组比较青睐中国风,另一款水墨风的作品获得了学生组最佳作品,只可惜棉花没有参赛。
不过这款中国古典风的游戏素材他并没有闲着,而是将其改造成了一款手机主题。
最后就是他的第四款作品了。
我问他前后共做了几年独立游戏,他回答说从2012年开始,很明显他觉得才算是他的真正起点。
他说起源于一个很逗比的事情,来自于一个新闻,福布斯漫画家排行榜。
画漫画原来也能这么赚钱,那他就画了一个南瓜先生,做起了走上人生巅峰的梦。
后来他又在独立游戏群里认识了蛋蛋,脸圆圆的也就是番茄先生。
蛋蛋最初来到团队的身份是编剧,给南瓜先生漫画编剧情,棉花当时画大饼说成功了一年分给蛋蛋500万,后来这成了他和小伙伴之间互相调侃的一个梗。
两个人一直折腾了小半年,然后又觉得不行,还是回头做游戏。
于是蛋蛋的身份就从编剧变成了程序,从头开始学Unity。
过了两个月,他再次将也推到了众筹平台,这次将目标定为5000元。
然而结果却比第一次还惨,只收到了15名玩家的1360元。
但他们并没有灰心,还是继续着游戏的制作。
棉花甚至发出了一则招聘启事:“招收美术、程序、策划。条件:必须一流。待遇:暂时无钱,只有鼓励。”
随后他们收到了一家天使投资机构20万的投资,棉花注册了“胖布丁”公司,名字取自英文“pumpkin”。
2013年IGFChina,他们带着荣耀归来,一举夺得最佳美术奖。
其实这也并不是什么很好的起点,他们又埋头一年多,直到受到索尼的亲睐,成为了国行首发游戏之一。
但国行主机的境况大家也都看在眼里,此时距离棉花赚钱的调侃还很远。
半年后,他们将推到了移动端,由乐逗游戏代理,他们才算是松了一口气。
又过了半年,也就是现在,他们马不停蹄又将推出新作。
的开发其实早就在进行之中了,事实上CottonGame手头一共有四款游戏在制作当中。
经过两年多的发展,原本只有棉花和蛋蛋的团队,现在成长到了6个人,但6个人同时搞4款游戏依旧让人震惊。
ReadFishGame这个新团队则负责的发行,他们也只有少少的5个人,加上CottonGame一共11人。
早在去年7月份就已经有不少玩家体验到了的测试版本,这近一年几乎都是在给游戏添加细节,以及付费模式的探索。
很可惜由于时间以及设备的原因,有趣君这次并没有试玩到这款游戏,但是在跟棉花的聊天过程中还是了解到了不少信息。
不管是美术风格还是点触式解谜的玩法上,都完美继承了的亮点,我觉得这就是棉花一直坚持的自己的特色。
从视觉看,各方面极似,画风简单晦涩但又很顺眼,指点解谜玩法也是AVG的一个复古形式。
在棉花的交流里,他表示这种画风叫“表现主义”,就像是爱德华·蒙克那幅名画,跟死亡有关有点灰暗的基调。
之前那些Flash游戏中的角色形象,以及那本名为的3D制作教程的封面,都是这样一种特立独行的形象。
乍一看目光呆滞,就跟梵高那幅断耳自画像一样,满满都是奇异荒谬的气氛。
延续到这款游戏,我更喜欢将其称之为“荒诞卡通风格”,而这种美术风格也得到了独立游戏大赛以及玩家的肯定。
也许CottonGame也有了自己的一套方法论,于是也严格将这种风格延续了下来。
而在故事上,的剧情则显得更加荒诞和神秘。
高耸的灯塔、奇怪的荒岛、杂糅的建筑风格、神秘的七眼章鱼、埃及风的守护狗神,以及从天而降的外星人。
就跟美剧那个永远不能离开、充满超自然因素的小岛一样,而玩家则要解开这座小岛的所有谜题。
听起来又鬼畜又很有挑战不是吗?
可惜的是,开头那段洛夫克拉夫特的话仅仅只是引用,棉花表示游戏中并没有太多克苏鲁相关的元素。
在谜题的设计上,比进化了一个层次,找东西解锁的传统套路少了点,更多的是小游戏谜题,比如有些类似的迷宫解谜。
中非线性的解谜进程,也在中得到了加强,多条解谜元素之间的交织,更加考验大脑。
最后在音乐的选择上,棉花也有很多自己的看法。
在IndieAce的演讲上,他多次提到这部电影,他说他看这电影前5分钟就哭了。
朋友问,这还没到情感高潮呢怎么就哭了?他说被音乐感动哭,配上画面就更泪崩了。
的众筹演示只给出了一首曲子,是同一位配乐者HurryP制作的。
棉花说这是他的老伙伴了,几乎已经是专职为CottonGame服务了。
之前他的想法是会慢慢地自己也将音乐这一块抓起来,毕竟某些时候要找到自己想要的感觉,不同的人表达和理解可能会有差异。
但是HurryP的表现很好,的音乐很棒,甚至还推出了原声集。
而这次也将会有更优美的音乐体验。
总的来说,是一款非常值得期待的游戏,制作人棉花这十几年的“独立游戏大冒险”也堪称奇迹。
他的才气、坚持和勇气,在乌烟瘴气的国产游戏圈简直是鹤立鸡群。
他笔下的那些眼神诡异的神秘小人,或者主角南瓜先生,又或者每一款作品都出现过的戴着宇航头盔的奇男子,都是他存在的痕迹。
他不仅活在跟别人不一样的世界里,还活在自己的作品中。
最后引用一位粉丝对他的评价:
这个游戏的开发者,是个外星人,变态~~可怕~~
和我们不是一个世界的。
他的世界充满幻想,想画啥就画啥,好羡慕~~
你应该能想象这些波浪线代表的是怎么样激动和崇拜的心情吧,后来我才知道他也是CottonGame的成员,也许之前那则不给钱的招聘启事真的有奇效。