1. 写在最前面的寄语:
很多人把学习定义为一件痛苦的事情,那是因为90%的人都未掌握正确高效的学习方法。这也是为什么只有10%的人站在了职场的最顶峰,因为他们掌握了高效的学习方法,这样的方法能够让他们不断地更新迭代自己,不断地刷新自己的认知。每个人的成就最终很大程度上依赖于个人的认知。
所以,在我分享各种技术、产品策划设计、项目管理方面知识的同时,我更想把一种高效的学习方法也教给大家,最终能够达到授人以渔的目的。在这里,我把这种学习方法称之为HOPL(Hands-on Project Learning)学习法 — 通过动手做项目学习。
(本教程答疑请加U3D游戏开发入门到精通QQ群:730399676,申请进群备注掘金)
2. 教程概述和预期学习效果
本教程面向的群体有以下4类成员:
- 完全0基础纯萌新(C# 0基础、Unity3D 0基础)
- 有一定基础,但是还找不到游戏开发工作
- 想自己制作独立游戏的同学
- 虽然已经参加工作,但并不理解游戏开发中的设计思想
本教程是一篇连载图文教程,将通过一个自制的《Flappy bird》游戏案例讲解游戏开发的思想及方法,并将《Flappy bird》这个游戏进一步改造成一个横板射击类游戏《Crazy bird》以巩固并且升华整体学习效果。 学习本教程后,你将最终达到以下学习效果:
- 熟悉Unity3D游戏引擎
- 熟悉C#程序语言
- 了解游戏开发整体流程
- 掌握大部分游戏开发客户端的知识
- 第一次体验高效的学习方法带来的益处
- 初步掌握高效的HOPL(Hands-on Project Learning)学习大法
下面是两款游戏的一些截图(游戏中的美术资源都是纯手工绘制):
(本教程答疑请加U3D游戏开发入门到精通QQ群:730399676,申请进群备注掘金)3. 游戏开发有什么特点?游戏开发和网站开发、APP开发有什么不同?
要回答游戏开发有什么特点,我们必须先思考一个问题,即什么是游戏?一款游戏是一款软件应用吗?是一款产品吗?某种程度上,游戏是一款软件产品,因为毕竟它最后的表现形式无非就是一款客户端软件、一个网页端产品或是一个手机APP应用。
但是,我们再思考一下,什么是应用?应用的产生是为了方便人类日常生活、工作、学习的。人们日常高频重复地使用一个应用主要目的是为了便捷,比如现在人们都习惯性用支付宝或者微信这两个应用去支付任何消费。上述定义中有两个关键词:重复、便捷。
我们回过头来看下游戏,游戏是精神娱乐类的产品,大家对于游戏的需求就是要品类多、体验不同、玩法不同,大家最不需要的就是重复。
所以游戏一定不是一个应用,它更像是一部电影,人们每看一部不同的电影都希望有不同的体验和感悟。电影是艺术,一部好的电影一定会被称为是一部好的作品,而不是一部好的应用或者好的产品。同理,一款游戏其实应该是一部作品,作品是要避免同质化的,所以游戏有时候会被称之为“第九艺术”。
相信看到这里,有同学会提问:“我知道游戏是一部作品了,但是这个跟开发有什么关系呢?”。我们所生产的所有东西都需要用户来赋予它价值,而价值来自于用户的需求。游戏玩家对于游戏的需求就是好玩、不重复、体验独特等。这样的需求导致了,每一款游戏需要具备自己不同的体验。所以每一款游戏在设计的时候虽然有参考其他游戏,但是都要有自己的一套独有的游戏机制,以区别于其他游戏。
下面三张图为游戏机制的示意图以及两款知名游戏的游戏机制示意图(此处不再展开游戏机制这个话题,此话题在策划范畴内,我们可以在以后讨论)。
我们可以看到,哪怕是两款小游戏《超级马里奥》和《Flappy Bird》,它们的核心机制也是完全不一样的。我们很难找到两款游戏,它们的核心机制是基本一致的。所以,对于开发而言,我们很难做出一套框架来适用于大部分游戏。 但是网站开发和APP开发不同,同类型的网站或者APP应用都能找到很多共同点,比如电商网站基本都长得差不多,只是卖的东西不一样。所以如果一个团队一直做电商类网站,他们最终也会总结出一套电商类网站的前后端框架出来。这也是为什么前端技术和后端技术,如Java往深入学就是学习各种框架(如Spring)的原理,研究那些框架的源代码。但是游戏开发不同,游戏开发面对的产品需求都是不一样的,没法总结出一套通用的框架出来,如果非要说有,那游戏引擎本身就是一种“框架级产品”,它集成了很多游戏开发中常用到的功能模块(如UI模块、动画模块)并让这些模块非常易用,你甚至不用写一行代码就能做出游戏动画。当然,像网易这样专注于MMORPG游戏开发的公司而言,内部应该是有一套或多套MMORPG类游戏开发的成熟框架的。
所以,游戏开发最大的几个特点就是:
- 需求多变(几乎找不出完全一样游戏机制的游戏)
- 复杂程度高(要结合很多技术,如高并发、AI等)
- 用户交互行为很多(玩家在虚拟的世界里有众多的交互行为) 我们可以简单得出个结论:在同用户规模下,游戏开发要比网站和APP开发复杂的多。这也是为什么一款MMORPG游戏动不动就需要百人团队开发数年才能出第一个版本的原因,因为MMORPG游戏就是一个虚拟的世界啊!
(本教程答疑请加U3D游戏开发入门到精通QQ群:730399676,申请进群备注掘金)
4. 那到底如何才能高效地学习游戏开发?
既然游戏开发这么复杂,那是否有什么方法能够让一个初学者高效、快速地入门游戏开发呢?答案是肯定的。这也是我写这部《游戏开发从入门到弯道超车》的核心目的。
这里我们要隆重推出我们的HOPL(Hands-on Project Learning)学习大法!为了方便理解,我这里用学习英语的例子去做举例,因为学英语的方式和学程序语言和U3D非常的相似。只不过我这里描述的学英语的方式和我们曾经上学时期学英语的方式非常不同。Let's recall the memory of learning English in studenthood.(我们来回忆一下学生时代学习英语的样子吧!)。
大家在学生时代学习英语的过程基本是下面这样的:
按照这个流程学习英语,最后的结果是:你会发现,你从小学开始到大学学了10几年的英语,如果现在让你用英语日常交流的话你都做不到,更别提写出一篇优秀的英文文章了! So Why?原因是,这样学习英语的方法其实只是在碎片化地学习英语知识点罢了,但是从来没有教你如何用这些所学的知识点连贯起来去做一些事情。什么是做一些事情?语言就是个工具,大家通过语言去理解他人所说的话(Listening)、去读他人写的文章(Reading)、去通过文章表达自己的观点(Writing)、去通过口语日常交流(Speaking)。这些都是学习英语后真正要去实践的事情,但是很不幸的是,中国的教育体系并没有提供这样的学习场景和方式给到大家。大家只是通过不断地刷题去巩固碎片化的知识点罢了。 程序语言和U3D游戏引擎同样也是两个工具,这两个工具相互配合可以开发出精品的游戏。这里我以学习程序语言举例,学习程序语言(如U3D游戏开发需要必备的程序语言C#)的逻辑其实和学习英语的逻辑很相似。Why?因为他们都是语言类工具啊!英语是提供给人与人之间沟通的,而程序语言是提供给人与机器之间沟通的。但是,更不幸的的是,由于大家在学生时代养成的学习习惯导致了大家按照以下流程在学习程序语言:
是不是和上面学英语的流程很像?然后你发现,你连一个很小型很简单的应用都做不出!那到底应该怎么样学习英语或者是程序语言呢?我的答案是:实践。回忆一下我们学汉语时候的样子,我们什么字都不认识的时候,父母就开始用口语教我们喊爸爸妈妈了。还没上学前,我们就开始看一些小人书(图画配上简单的文字)了。我们学习汉语绝对不是通过背新华词典学会的。再举个例子,有的老爷爷老奶奶一个字都不认识,但照样能说汉语,这又说明了什么呢?说明:学习一样工具,先从实践(直接上手用工具),边用边学习,只学要用的!就像我们第一次用手机,我们可能只用里面的通话功能。所以我们完全没必要把一部手机的所有功能都学一遍再开始使用这部手机。
学习游戏开发亦是如此,开发一款游戏,所要用到的U3D的知识和C#的知识是有限的,根本不用把C#系统学一遍再把U3D系统学一遍,然后再开始学做游戏。我们要深刻的认识到,系统学习C#和系统学习U3D并不等于你学会了游戏开发。
学习做游戏,直接实践,遇到什么问题,找到对应的资料学习要用的知识,然后解决这个问题,如此循环。这里,很多同学会问:“我什么都不知道,我都不知道遇到问题是什么,怎么找资料?”这就是我写这部教程的原因,我会一步步带着你通过运用HOPL(Hands-on Project Learning)— 通过动手做项目学习。你走完这遍流程你就会发现你的自学能力上了一个大台阶!
具体请看下面的HOPL学习大法流程:
(本教程答疑请加U3D游戏开发入门到精通QQ群:730399676,申请进群备注掘金)5. 本教程大纲预览
根据以上这张学习的流程图,我们的本教程的大纲如下:
- U3D游戏开发从入门到弯道超车:序章
- 《Flappy Bird》场景动画及角色动画制作
- 《Flappy Bird》UI与交互及动态关卡技术
- 《Flappy Bird》刚体与碰撞器、碰撞与检测
- 《Flappy Bird》角色状态控制与游戏计分实现
- 《Flappy Bird》开发流程图绘制与知识点思维导图总结
- 《Flappy Bird》中所用知识点学习
- 《Flappy Bird》独立完成指导与难点总结
- 《Crazy Bird》角色自由飞翔与子弹发射
- 《Crazy Bird》怪物自动生成
- 《Crazy Bird》战斗主逻辑实现
- 《Crazy Bird》不同怪物制作及战斗难度升级
- 《Crazy Bird》BOSS制作及导弹自动跟踪效果实现
- 《Crazy Bird》BOSS战斗实现
- 《Crazy Bird》关卡管理与游戏优化 — BOSS、AI与关卡
- 《Crazy Bird》关卡管理与游戏优化 — 关卡管理
- 《Crazy Bird》关卡管理与游戏优化 — 游戏优化(1)
- 《Crazy Bird》关卡管理与游戏优化 — 游戏优化(2)
- 《Crazy Bird》开发流程图绘制与知识点思维导图总结
- 《Crazy Bird》中所用知识点学习
- 《Crazy Bird》独立完成指导与难点总结
- U3D游戏开发从入门到弯道超车:总结