You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

89 lines
9.9 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 第1讲 | 游戏开发需要了解哪些背景知识?
这一节开始,我将带你进入游戏开发的世界。
从最初的小霸王到充满混混和烟味的街机厅到PS、Xbox、DC、N64等次世代游戏主机再到电脑游戏再到如今在手机上就能玩到各种各样的游戏。
我会依次为你揭密,这些令人痴迷、沉浸的游戏,究竟是怎么发展的,常见的游戏种类有哪些,这些游戏在开发流程和细节上有什么不同,以及游戏开发究竟要从哪里开始学起。
## 浅述游戏的发展
我们现在公认的第一款电子游戏也就是主机游戏是1952年面世的。游戏玩的是井字棋6年后才出现了简陋的[网球游戏](https://www.bilibili.com/video/av1326850/)。
下面这幅图就是井字棋游戏尽管它与1952年的游戏画面还是有所出入但是游戏内容是一样的。
![](https://static001.geekbang.org/resource/image/e6/74/e67d2a821df9f4c625ba2f78ee294974.jpg)
此后,我们就进入了“雅达利”时期。随后的《太空侵略者》,是最经典的一款游戏。在这之后,我们耳熟能详的任天堂红白机,发布了《吃豆人》《大金刚》等游戏。再之后,就进入了各种游戏主机竞相绽放的阶段。
在电脑游戏方面第一款电脑游戏是1962年面世的《太空战争》。这是一个学生编写的。到1980年之后随着电脑技术的日趋成熟电脑游戏的画面才开始有了逐渐赶超电子游戏的态势。到2005年之后随着电脑图形硬件的发展电脑游戏的发展进入了加速期。
电子游戏的优势是它集合了当时高精尖的图形显卡技术纯粹为游戏所设计。比如索尼的PS系列。据闻PS使用的显卡技术来自军用科技传闻的真实性有待考证但每一代PS的图形显卡的确都是业内顶尖水平。而电脑游戏的优势是它能更换显卡和硬件。当显卡升级换代的时候理论上只要主板支持你就可以更新而电子游戏主机是固化的硬件只能靠购买新的版本。
## 游戏有哪些种类?
当前全世界的游戏琳琅满目,从硬件来讲,大致可以分为四大类。
第一类是我们前面提到的**主机游戏**,业界称为**Console Game**。比如微软的Xbox系列、索尼的PS系列、任天堂的Switch、N64、Wii等。这类游戏的硬件可以插在电视机或者显示屏上。以前游戏的载体一般是光盘、卡带现在也可以直接从网上下载。
这些公司还相应推出了掌上游戏机比如任天堂的3DS、NDS、GBA索尼的PSP、PSV等。掌上游戏机的推出让玩家随时随地可以玩上游戏。由于是专业的游戏机比之手机上的游戏有更好的操作感同时也更能体验到游戏的乐趣。
第二类是**电脑游戏**。电脑游戏品类繁多有PC客户端游戏比如《梦幻西游》《魔兽世界》《星际争霸》《GTA》等还有HTML5网页游戏、Flash游戏等等。
另外一类是**移动游戏**。包括Pad游戏、手机游戏。手机游戏目前品类繁多包括App游戏、HTML5游戏以及微信发布的小游戏。
最后一类是目前并不是特别发达的**电视机游戏**。随着安卓系统的兴起,电视盒子的出现,出现了一种不需要游戏主机却能在电视屏幕上直接玩的游戏,这就是电视机游戏。但这类游戏一般需要用电视遥控器玩,而且由于电视盒子的机能限制,画面甚至可能比不上手机游戏,所以只适合闲暇的时候偶尔玩一下。
## 游戏开发使用什么编程语言?
在最早期的游戏开发中比如任天堂的《FamiCom》我们俗称《红白机FC》、《Super FamiCom》我们俗称《超任SFC》都是使用**汇编语言**进行开发的。早期由于8位机能限制程序员们为了优化游戏速度、提升游戏画面无所不用其极甚至到了奇技淫巧的地步。到了后期的游戏比如《无赖战士》《足球小将》等已经将机能挖掘到了极限。到了16位机后任天堂《SFC》、世嘉的《MD》才逐步使用**C语言**进行编程。到了32位机之后基本都是使用**C/C++语言**进行编程。
## 游戏开发从哪里开始学起?
手游这么火,我为什么不直接讲手游呢?原因很简单,想要开发手机游戏,对技术人员要求很高。手游有两种,一种是传统意义上的原生开发手游,一种是微信小游戏和网页小游戏。后面这个就不用说了,我主要说原生手游。
我在后面会讲到,游戏引擎可以购买也可以自己开发。原生手游的话,用购买的成熟引擎做的话,调试起来就会比较困难。毕竟要在手机跑,出问题再改,再跑,加上手机内存和硬件限制,不如电脑端可以随时调试。其次,手游的开发需要考量更多资源的分配和占比,发布的包就是一个考验,谁也不会下载一个三四百兆的安装包。
我会以电脑游戏为主,进行开发流程的讲解。首先,**电脑游戏开发便捷**。事实上,只要开发游戏,就一定离不开电脑,不管是主机游戏,还是掌上游戏、移动游戏,开发一定是在电脑上(或者专用开发电脑);其次,**搞明白了电脑游戏的开发流程和知识之后,其他游戏的开发也一通百通**。
我会针对2D游戏特指客户端游戏进行剖析和讲解。为何专门选择2D游戏进行讲解呢
主要有两方面的原因:
* **2D游戏涉及最基本的图形、图像知识。**从画面方面考虑开发2D游戏只需要你知道X和Y的位置即可其他深层次的知识引擎都可以替你完成。想要制作3D画面你需要掌握更多的知识特别是几何知识这是毋庸置疑的。对于初学者来说我们首先需要掌握核心的开发流程至于过于细节的知识可以在有了一定基础之后再进行拓展学习。
* **2D游戏涉及最核心的网络呈现过程。**网络数据在客户端和服务器端之间传输,经过服务器端计算的数据返回给客户端,客户端进行呈现。比如,从“一颗炸弹消灭几个敌人”,就能知道网络是否有延迟,服务器计算是否正确等等。
## 2D游戏的类型
**1\. 横版游戏**
经典游戏《超级玛丽》就是一款横版过关游戏。横版游戏是2D游戏可以实现的最基本的内容。横版游戏最主要的特点是它的画面这种2D平面的画面只有左右两侧画面可以控制玩家体验通常比较顺畅。还有前几年大火的《水管鸟》、耳熟能详的《魂斗罗》以及Steam上的《返校》等等都是横版2D游戏。
**2.俯视视角游戏**
其次就是俯视视角的游戏。比如FC上的《勇者斗恶龙》《大航海时代》等等。这类的游戏提供一个空中俯视的视角给玩家能很清晰地看到游戏中呈现的所有地图和区域。在区域中主角可以给玩家呈现四个、六个或者八个方向的旋转和移动。在横版游戏中玩家只能左右或者上下进行移动而俯视角的游戏则可以移动四个、六个或八个方向。比如在《GTA2》中可以朝各个方向移动并且通过缩放实现了主角的上下跳跃的视觉呈现。
**3.斜45度角的视角游戏“伪3D”游戏**
另外还有斜45度角的视角游戏。我们看到大量的网页游戏、Flash游戏、一些早期所谓的2.5D MMO游戏都是这种类型的视角。这种视角下的游戏也被俗称为“伪3D”游戏。我们可以通过八个或者六个方向进行操作。地图和建筑物都是斜45度角的做得好的游戏可以进行缩放所以看起来就像是3D的画面。
事实上到了2D斜45度角的后期我们都使用3D建模然后把它转成2D图形来进行制作。因为在2D角度下有一个很细节的问题那就是左右手脚的交换。也就是说如果角色右手拿着武器往左边走当它在往右侧走的时候为了节省资源和编程的方便会对人物进行镜像绘制这就变成了左手拿着武器了。
所以到了后期的2D MMO游戏中我们会通过3D建模制作大量的非镜像图片来契合左右手的限制。比如主角骑的坐骑中左右脚被坐骑遮挡我们可以通过3D建模将各种模型的脚和坐骑制作在一起以解决左右脚或者装备被遮挡的问题。
不管是开发2D游戏还是3D游戏你首先需要理解什么是游戏引擎这一点我会在第三节的时候着重介绍。以目前的技术手段开发一款完整的游戏已经不是特别难的事情只要你有一款强大的引擎然后将焦点focus在你所要实现的逻辑上只需要配置一些图片、关卡、音乐就能很快地实现一款游戏。
但是,**如果你不明白游戏的总体开发逻辑和实现细节,在开发过程中出现了问题将会变得很棘手**。如果你了解和明白了游戏开发的本质、网络传输的基础知识那么对于其他游戏的开发比如移动端比如HTML5端比如小游戏的开发则会变得更容易。因为**知道了游戏开发的底层知识和开发逻辑之后,几乎所有的游戏都是以这样的结构和逻辑进行开发的**。
## 小结
以上是我今天分享的全部内容,你只需要记住一个理念即可:
不管何种类型、何种平台的游戏,其开发的顺序和手段几乎是一样的。而对于初学游戏开发的人来说,首先需要掌握的是开发流程,在有了一定基础之后,再学习细节的知识,就会如虎添翼。
最后给你留一个思考题吧。在游戏开发中很多游戏公司都会先出一个游戏Demo请问游戏Demo在游戏的开发流程中扮演一个怎样的角色
欢迎留言说出你的看法,我在下一节的挑战中等你!