关于游戏开发,需要了解游戏从开始到结束的一般开发过程。通常不是一个完整的分步指南来完成结果。您还必须自己弄清楚很多事情才能玩游戏。
第一步:选择游戏库
游戏库的特点:
第 2 步:定义概念 - 创意
所有游戏都从这里开始,只是一个想法。
首先,想出一个游戏创意。一旦你有了一个简单的想法材质材料,就展开它。
例如,如果是棋盘游戏,目标是什么/如何获胜?规则会是什么样子?等等,如果您的游戏将包含角色或故事3D素材,请创建它们。确保您对游戏结束时的内容有一个相当清晰的想法。游戏越复杂,一开始就应该计划得越多,这样您在编码时就不必担心游戏本身。请记住,您的游戏会随着您的创作而发展。
第 3 步:规划您的引擎
如果您正在制作棋盘游戏或基本街机游戏游戏开发制作流程,则可以完全跳过此游戏,只编写游戏程序。但是,对于更复杂的游戏,您可能需要考虑使用预制引擎,或者编写自己的“引擎”。
究竟什么是游戏引擎?虽然它们的结构和整体功能差异很大,但它们都是超级函数库,可提供更高级别的功能,例如物理、资源处理和游戏实体管理。
选择使用现有引擎还是创建自己的引擎取决于您实际想要进行多少编程。使用预制引擎将简化您作为程序员的工作,编写游戏/事件脚本比其他任何事情都容易。
为什么我说计划而不是选择?好吧,您可能不会制作下一个旧卷轴,因此可以创建自己的“引擎”。请记住,您不会创建下一个“虚幻引擎”,您编写并打算重用的大部分代码(作为引擎的重点)最终会与您的游戏逻辑交织在一起,因此不可能轻松重用考虑到这一点,如果您的“引擎”部分取决于游戏的特定代码,请不要担心会发生这种情况。不要专注于构建一个完全可重用、超级健壮的框架,但要确保你的代码是可读的、有组织的和功能性的。首先专注于制作游戏,然后尝试创建可移植模块。如果您必须编写一些有用且可重用的东西,那么资源管理器和其他各种实用程序类都是不错的起点。
第 4 步:编写引擎(如果您自己编写)
是时候开始编写引擎了,假设这是您选择的路线。这并不一定意味着游戏本身,而是核心渲染、物理和文件处理;本质上是用于构建游戏的函数和类。
简单的游戏不需要太多的框架,直接使用游戏库编程即可。大型游戏中最重要和被忽视的组件之一是资源管理器。资源管理器是一个负责加载资源(想想图形和声音)的类,确保它们只加载一次,并在不再需要时卸载它们。
引擎/框架的另一个重要方面是接口。当您编写游戏本身的逻辑时,编写主游戏循环并不需要 4 个小时,因为您搜索了数百个更新函数,试图找出您真正需要的更新函数。把事情简单化。如果您能够使用一两个函数调用更新所有游戏逻辑,然后使用一两个函数渲染场景,那么您就走在了正确的轨道上。利用继承和纯虚拟基类(想想接口)等面向对象的原则是创建结构良好的框架的好方法。
第 5 步:媒体(音频和图形)
到现在为止,您至少已经考虑过您希望游戏是什么样子,并且拥有一套可以使用的媒体。大量的免费图形和音效只是谷歌的地方。 Audacity 和 GIMP 是编辑您获得或创建的任何内容的不可或缺的工具。
第 6 步:编写游戏
一旦您选择了引擎或使用自己的框架,您实际上就可以自己编写游戏逻辑。理想情况下,您在花费无数小时之前已经阅读了至少一篇完整的文章,并且您永远不会回头创建一个超出其角色以至于几乎不可能有用但不足以独立运行的“引擎”。您的框架应该为构建对象交互(但不一定要定义它)提供基础游戏开发制作流程,并处理所有渲染和其他低级细节,如物理。游戏逻辑本身将定义对象交互(例如,通过定义 GameObject 的子类)、游戏规则(例如,什么构成输赢)、游戏的初始状态(首先加载哪个地图,从哪个项目开始等),并包含主游戏循环。
游戏的主循环到底是什么?简单地说:这是一个循环,主循环。想想玩游戏时一遍又一遍地重复什么,这就是这个神秘循环中包含的内容。例如,游戏的每次迭代都应该更新所有对象,然后将它们全部绘制到屏幕上。除了更新和绘制,主循环还可能负责计时。对于用户来说,更新太多游戏看起来非常快,而且很可能太难了。想想以光速打乒乓球。理想情况下,此循环将使用您之前创建的框架并且非常简单。
第 7 步:从内部取出一些东西
创建一个独立于游戏逻辑的框架的主要原因是教你如何编写可重用的代码。
初学者放弃项目的主要原因之一是他们花费大量时间和精力尝试为他们的游戏“编写引擎”,但他们还不知道一个好的引擎甚至包含什么或结构/ 接口是否实际工作。在无所事事地浪费了所有时间之后,他们灰心丧气并退出了。
通过先编写游戏,然后编写可重用代码,理想情况下,您会得到可以看到的东西。这是对您辛勤工作的切实回报,也是继续努力的理由。
考虑将这些添加到您的游戏中:
您可以尝试用游戏代码制作可移植模块。
编写一个很棒的资源管理器或很棒的类来处理键盘输入并使它们完全可移植。
第 8 步:包装和分发
将所有需要的文件打包成一个 zip 文件、zip 存档或可执行安装程序,然后发送给每个人!