给新手电脑游戏开发人员的备忘录


本文针对的是学龄儿童,学生以及年龄较大,从未尝试过但真的想开始编写计算机游戏的人。 谁在童年时代就不玩电脑游戏,又不想编写自己的游戏,这会比《侠盗猎车手》或《孤岛危机》更好? 我想要,而且奇怪的是,我仍然想要。 在教授同一位程序员的几年实践中,我得到了一些关于去哪里和做什么的笔记。

这篇文章并非声称是完全准确和可靠的,它只是由一个在短短几年内积累了经验的人撰写的。 此外,它仅考虑实用和浪漫的一面:它不涉及获利问题,也不能从游戏中获得任何收益,而不能满足心爱的人以及可能的其他人的需要。

1.从哪里开始?


从实践。 您可以从纯C和OpenGL / DirectX开始,这是武士的方式,因为从头开始学习它而没有任何抽象是非常困难的。

如果C / C ++看起来过于混乱,则可以使用SDL之类的框架,也可以使用更高级别的LibGDX / PyGame /LÖVE2D。 在这里,抽象的级别要高一些,因此工作起来要容易一些,但是您必须自己完成游戏内部结构的整个组织,了解什么是游戏循环以及如何在其中组织事件系统。 这种方法提供了良好的知识和技能水平,但是,起初,它并没有激励人们爬进铁荒的深渊。

最后,您可以使用Unity / Unreal / CryEngine / Godot之类的游戏引擎,并在上面制作玩具。

那么,我们如何从所有这些多样性中进行选择? 但这只是一小部分。 新手(非开发人员)陷入的典型陷阱是工具的选择。 框架/引擎和语言。 阅读了许多文章,观看了视频教程,在某处谈论了很多伟大的事情,在某个地方讲述了一些令人讨厌的事情……没有理想的系统并且不存在,否则,理想游戏引擎应该是很久以前发明的(与Ideal一起)编程语言),而所有公司都只是在寻找“程序员”,而不是任何特定生态系统中的程序员。 我们只是选择最适合我们任务的工具,或者更喜欢它的工具,一个无法选择的人可以像过去一样呆在原地,没有任何进展。
那么如何选择呢? 我们可以选择第一个,然后开始理解。 使用超过一两个星期不喜欢它吗? 我们采取以下措施,并立即编写一条像蛇一样简单的东西,同时阅读所选工具的文档并在Google中查找其他所有内容,并为我们的《超级游戏》写出设计文档,这将同时杀死《暗黑破坏神》和《毁灭战士》。 当我们已经有了超级游戏的想法时,为什么要从简单的事情开始呢? 一切都很简单,新手开发人员的技能水平总是很低,以至于他将重写他的Super Game二十次,结果将达不到预期的效果,而这种沮丧的背后是彻底冷却了编写游戏和编程的想法。 在培训开始时,我们会做一些简单的事情,您可以立即与他们在那里的朋友一起感受和玩耍,参加比赛。 这是我们的动力,这是我们从自我教育和富有成效的大脑活动中获得的快乐,这是我们无法疲倦的原因。 在蛇之后,您可以先看一下这条蛇,然后尝试以“正常”方式对其进行重写,因为第一条蛇,即使是工作良好的蛇,也将具有类似怪物的内部结构,改变蛇的外观将非常困难,并且为其添加新的奖励将更加困难。 。 然后再次重写它,或继续其他操作,否则这条蛇已经在肝脏中了。 现在,例如,我们将制作一个从墙壁上跳出的球,该球需要进入环中,实际上是什么主意都没关系。

只有几条提示可供选择:我认为,您不应采取太低级的要求,因为我们在这里编写游戏,而不是中断位标志并沉迷于指针。 级别很低,很容易去遥远的丛林花几个月的时间几乎被浪费掉了。 并且不要采用太高级的东西(例如引擎),因为它们提供了太高的抽象水平。 只要我们不知道引擎的布置方式,就没有必要利用别人的发展,我们就必须了解它是如何工作的,因为引擎世界中的每个人都有很多内部限制,将来我们将不得不处理这些问题,并且手脚相连缺乏信息和对过程的理解,再加上一旦发动机出现漏洞 ,我们将无法做任何事情,直到我们完全了解其内部结构。 学习的复杂性和行动自由之间的平衡。

2.如何学习?


在这里,一种非常有用的技能称为“谷歌搜索”对我们有用。 互联网是一个巨大的信息源,出于某种原因,在我的记忆中,由于某种原因,它通常被低估了,搜索引擎的第二页已经无法实现。 因此,我们学会了向搜索引擎提出这样的问题,以便提供所需的样本。 通常,一开始,视频教程会减少。 您可以阅读教科书。 视频课程的优势在于,它们可以在短时间内立即产生明显的效果,这对于激发动力非常有用,但是它们在信息完整性方面存在很大的问题,因此没有人取消教科书和文档。 您可以在github上查找并查看代码示例,这是一个非常有用的课程,您可以从中学到不少。 我们查看别人的代码中无法理解的所有内容,并在网上查看它的含义。 然后我们使用(或不使用,呵呵)。 仅鼓励盗窃思想和观念(如果代码已获得免费许可)。 如果简单明了的东西非常复杂但非常必要-禁止在论坛和聊天室中与其他人联系,但是很容易开始滥用此方法,因此不建议这样做,除非完全煮熟,并且要经过数小时的有效搜索才能成功。 在数学领域,我强烈建议您阅读和理解矢量代数,解析几何,概率论和许多聪明的词,因为它们是非常通用的领域,不仅在游戏中有用。 在语言中-显而易见的英语,大多数文档都是用英语编写的。 禁止使用翻译器。 同样,在这里我们最需要学习学习和寻找信息,它将不仅在这个领域而且在任何地方而且总是总是派上用场。 但是,培训不应掩盖实践,反之亦然。 建议将写作和学习之间的时间比例保持在20/80,然后才能增加练习,永恒的学生是好的,但不切实际。 平衡时间。

3.想要更严肃的事情吗?


经过最后一个阶段和几个(几十个)游戏原型之后,我们已经学会了很好的书写能力,即使嵌套的if-elseif-elseif数量不是很多。 我们找到并阅读了几十个其他人的项目,即使其中一半不理解,它仍然不是很吓人,因为我们似乎已经准备好做一些严肃的事情,例如《超级游戏》? 抱马。 我们有几个原型,它们甚至发挥出色,但是我们甚至没有尝试完成我们的工作。 一旦某种东西变得或多或少能够起作用,我们就继续进行一些更有趣的事情,但是我们仍在等待一个非常艰苦的阶段,在这个阶段,很多人(包括我在内)崩溃了:创建完成项目。 与我们的原型有什么不同? 就是这样:“完成的项目”是相同的原型,但花费的时间是原型部分的三倍,它完成了所有菜单,设置,并检查了它在不同的屏幕分辨率和不同的键盘下是否可以正常工作,至少十几个级别或一个难度级别的选择,这样,不仅对作者和他的朋友,而且对学校或大学中的随机人群都非常有趣。 最常规的部分,该说些什么,但最有用,训练有素的部分将赢得胜利。 如果您不经历此阶段,则可以终身保留原型编写器。 在日常娱乐中平衡自己。

4.在哪里寻找图书馆?


如果您仔细阅读第二段,答案似乎很明显:在线,在存储库中和来自其他人。 而且好像一切都好,我们节省了时间,并立即做一些很酷的事情。 但是,在我们学习并且有时间的时候,我们有机会制造自行车-不抓住这个机会是一个罪过。 如果阅读教科书和文章以及观看课程是我们知识的延伸,那么编写您自己的库是一次加深的学习,并同时在多个方面进行:实施便捷的API(切断不必要的功能,平衡性能和可用性),加深和探索我们的语言铁生态系统的内部,以及创建小型成品模块,即使它们部分复制了现有模块的功能。 但是这里最主要的是不要分周期进行。 我们仍在编写游戏,并为其提供工具,在这里您也可以成为图书馆作家,而从不做一个完成的项目。 但也有大量的一般经验。

5.结论。


仍然有许多未解决的问题,其中一些将在此处简要回答。
什么是设计文档,为什么需要它? 对于尚未创建的游戏,这是这样的Wiki,内容越丰富越好。 而且这件事应该在游戏开始之前完成,通过可用人数和功能中断来大致估计开发时间。

为什么要切断功能? 通过前面的阶段,您可以大致估算出您和您的团队会厌倦执行此项目的时间。 如果我们处于地下独立开发而又没有资金和工作时间表的情况,那么很有可能会感到困惑和困惑,而不是执行该项目。 所有很酷的东西都可以很快实施,并且仍然有很多例程需要执行,而我们的任务是平衡酷和例程以使其完全相同。

在哪里寻找艺术家/音乐家/设计师? 首先,您可以制作一个几乎完成的项目,没有图形和声音,在msPaint中乱写了精灵,并从网络上的免费资源中获得了同样笨拙的动画和fuck。 我真的不建议您将尚未完成但很有可能无法完成的工作载入其他人。

实际上,我打算在Valve,EpicGames或其他任何地方找到一份工作,然后在那里工作,为什么我需要所有这些? 世界上大多数程序员都是自学成才的,通常具有丰富的“地下室”经验,而且,原型和小型玩具是放置在大型公司中的绝妙组合,而不仅仅是游戏开发商的职位。

附:这些技术中的大多数都适合于任何领域,不仅是编程游戏,而且还只是编程。 此外,在正确的方向进行了少量编辑后,您可以使用相同的说明进行美术教育或学习雕刻。

感谢您的阅读,本文可能会受到批评和补充。

Source: https://habr.com/ru/post/zh-CN470199/


All Articles