游戏开发指南:从零开始制作你的第一款编程游戏

发表时间: 2020-12-04 22:10

关于游戏开发,需要对从一开始到最后开发一款游戏的一般过程有所了解。一般不是一个完整的,一步一步的指导完成的结果。你还需要自己找出相当多的东西才能有一个游戏。

第一步:选择游戏库

游戏库具有的功能:

  • 一种加载和呈现图像的方法
  • 一种加载和播放音频的方法
  • 基本图像处理(旋转等)
  • 原始绘图功能(圆、线、矩形、点等)
  • 渲染文本的能力
  • 跟踪时间和等待的能力
  • 创建和控制线程的能力(但不是必需的)

第2步:定义概念——创意

所有的游戏都从这里开始,只是一个人头脑中的想法。

首先,想出一个游戏的主意。一旦你有一个简单的想法,扩展它。

例如,如果它是一个棋盘游戏,目标是什么/你如何赢?规则会是什么样子?等等,如果你的游戏中会有人物或故事,那就创造他们吧。确保你有一个相当明确的概念,你的游戏将是什么,当它结束。游戏越复杂,你就越应该在一开始就计划好,这样你就不用在编码的时候担心游戏本身了。记住,你的游戏会随着你的创造而进化。

第三步:规划你的引擎

如果你正在制作一个棋盘游戏或者基本的街机游戏,你可以完全跳过这个游戏,只需对你的游戏进行编程。然而,对于更复杂的游戏,您可能需要考虑使用预先制作的引擎,或者编写自己的“引擎”。

游戏引擎到底是什么?虽然它们在结构和整体功能上差异很大,是提供更高级别功能(如物理、资源处理和游戏实体管理)的超级功能库。

选择使用存在引擎还是创建自己的引擎,这取决于您实际想要做多少编程。使用预先制作的引擎将简化您作为程序员的工作,编写游戏/事件脚本比其他任何事情都要简单。

为什么我要说计划而不是选择?嗯,很有可能你不会做下一个老卷轴,并因此,可以创造你自己的“引擎”的种类。请记住,您将不会创建下一个“虚幻引擎”,您编写并打算重用的大部分代码(正如引擎的要点一样)最终将与您的游戏逻辑交织在一起,因此不可能很容易地重用。考虑到这一点,不要担心如果你的“引擎”部分依赖于游戏的特定代码,这就会发生。不要专注于构建一个完全可重用、超级健壮的框架,而是要确保代码具有可读性、组织性和功能性。首先专注于制作游戏,然后尝试创建可移植模块。如果您一定要编写有用的、可重用的东西,那么资源管理器和其他各种实用程序类就是很好的起点。

步骤4:编写引擎(如果你是自己做的话)

现在是开始编写引擎的时候了,前提是这是您选择的路线。这不一定意味着游戏本身,而是核心渲染、物理和文件处理;本质上是用来构建游戏的函数和类。

简单的游戏并不需要太多的框架,只需直接使用游戏库编程即可。大型游戏中最重要、最被忽视的组件之一是资源管理器。资源管理器是一个类,它负责加载资源(考虑图形和声音),确保只加载一次资源,并在不再需要资源时卸载资源。

引擎/框架的另一个重要方面是接口。当您编写游戏本身的逻辑时,编写主游戏循环不需要花4个小时,因为您搜索了数百个更新函数,试图找出您实际需要的函数。保持简洁。如果你能够用一个或两个函数调用来更新所有的游戏逻辑,然后再用一两个函数来渲染场景,那么你就在正确的轨道上了。利用面向对象的原则,例如继承和纯虚拟基类(想象接口)是创建具有良好结构的框架的好方法。

步骤5:媒体(音频和图形)

到现在为止,你至少已经考虑过你想让这个游戏看起来像什么样子,有了一套媒体可以使用。大量的免费图形和声音效果仅仅是谷歌搜索的地方。Audacity和GIMP是编辑您所获得或创建的任何内容的不可缺少的工具。

第六步:写游戏

一旦您选择了一个引擎或使用您自己的框架,您就可以实际编写游戏逻辑本身。理想情况下,在花费无数个小时之前,您至少已经完整地阅读了一篇文章,您将永远不会回到创建一个“引擎”的过程中,这个“引擎”超越了它的角色,几乎无法使用,但不足以独立运行。您的框架应该提供一个基础,用于构造对象交互(但不一定定义它),并处理所有渲染和其他低级细节,如物理。游戏逻辑本身将定义对象交互(例如,通过定义GameObject的子类)、游戏规则(例如什么构成输赢)、游戏的初始状态(首先加载哪个地图、您从哪个项目开始,等等),并包含主游戏回路。

游戏的主回路到底是什么?简单地说:这是一个循环,主循环。想想看,在玩游戏的时候,什么东西会被不断重复,这些就是这个神秘的循环中包含的东西。例如,每次迭代游戏都应该更新所有的对象,然后将它们全部绘制到屏幕上。除了更新和绘图之外,主循环还可能负责计时。对用户来说,更新太多的游戏看起来非常快,而且很可能太难了。以光速思考乒乓球。理想情况下,这个循环将使用您先前创建的框架,并且非常简单。

第七步:从里面取点东西

创建一个独立于游戏逻辑的框架的主要原因是为了让您学会编写可重用的代码。

初学者放弃项目的主要原因之一是他们花费了大量的时间和精力试图为他们的游戏“编写一个引擎”,但是他们还不知道一个好的引擎甚至包括了什么,或者一个结构/界面是否真的能工作。在浪费了所有的时间之后,他们没有什么可展示的,然后灰心丧气并因此退出。

通过首先编写游戏,然后编写可重用的代码,理想情况下,您将得到一些您可以看到的东西。这是对你的努力的一个实实在在的奖励,也是一个继续努力工作的理由。

在游戏中考虑加入这些:

可以尝试用游戏代码制作可移植模块。

编写了一个非常棒的资源管理器或出色的类来处理键盘输入,让它们完全可移植。
步骤8:打包和分发

将所有所需文件打包到一个压缩文件、压缩存档或可执行安装程序中,并发送给每个人!