来自业余的建议
//经过多年的学习,从零到业余
我一定会远离Unity或Torque2D MIT之类的高级引擎。它们非常适合小型原型,但是我永远不会认真对待它们来开发自己的视频游戏。我为什么要?除非它只是简单的SideScroller或Arcade重制,否则有什么意义呢?
大多数游戏引擎,库或框架仅执行最简单的任务,就带有大量肿的代码,这些代码具有您永远不会使用的功能。
几年前刚接触游戏开发时,我从顶部开始。非常高级的引擎。没有什么比RPG MAKER更高,但绝对可以像Unity和Torque那样高。然后我走到XNA和C#,因为它有很多资源和教程。我的主要项目需要性能,或者即使我不是一个大项目,也许我只是强迫性地想要软件具有令人难以置信的性能。XNA根本没有削减它,我阅读的引擎有很多问题,需要解决。当您执行与在C ++中滚动自己的引擎相同的工作(修复XNA错误和问题)时,使用诸如XNA / C#之类的“更高级别”的东西有什么意义?
经过一段时间的学习,我最终了解了游戏引擎的设计方式,并开始研究引擎本身的代码。阅读大多数专业人士所说的话以及对游戏引擎批评家的抱怨后,我意识到,“为什么还要使用引擎?”
重读我的C ++并真正了解该语言使用的一些哲学对我有很大帮助。但是,我花了很多时间来学习很多我只是想开始制作游戏的东西。
因此,我最终获得了很多好评,其中包括C ++和非常低的级别:SDL。不幸的是,这令人头疼。它是如此之低,我几乎没有理由甚至都使用这个库。我宁愿简单地学习OpenGL并从头开始自己做。坦率地说,多数情况是我需要执行自己的代码以执行诸如翻转图像之类的基本操作(由于我处理sprite的方式,其他人的实现也不起作用),这促使我永久性地丢弃SDL。如果您想要软件渲染器,那就太好了,但是IMO我宁愿将其降低到硬件(OpenGL)或更高(SFML)的水平。
我不想再买一本关于亚马逊的书并学习另一个API,所以我走得更高。SFML简直很棒,更不用说在整个互联网上都受到高度赞扬了。我读了几乎无数的正面评论,几乎没有负面评论。对于SDL,我不能说同样的话。它处理所有极端的基础知识,但其余部分留给我和我选择的其他库。从那以后我一直坚持下去。
IMO,一个游戏引擎真是愚蠢。对于专家和初学者来说,低级库都是更好的选择。
还需要注意的是,当我被迫以比我所见即所得的高级游戏引擎所学到的更低的水平处理事物时,我已经学习了更多有关编程概念的知识,并且提高了我的软件开发技能。
像Unity一样,XNA给您带来什么?可视化编辑和拐杖。新手最终将了解到,您仍然必须像编写裸露的C ++一样编写几乎整个游戏的代码,而可视化编辑器对于您可以自己创建的东西效率低下。
像XNA这样的东西通过SFML或您自己的OpenGL和其他有用的库实现给您带来什么?海事组织,绝对绝对没有好处。更糟糕的性能是,用C#代替C ++,提供了大量的新手教程,但专业水平却大大降低,并且一些令人头疼的事情使IMO再次成为您应该使用C ++学习的关键。最初,我对C ++感到恐惧,喜欢C#,主要是因为听到和谣传愚人的意见,这些愚人在最初与C ++一样遇到了麻烦:我只想要一个足够好的程序员。我意识到我需要学习更多的基础知识并克服我的弱点,以便克服C ++带来的麻烦,而C ++可以使C#变得“简单”。我是否曾经想过C#中某些事情的简单性?甚至不!我知道如何在C ++中轻松地做到这一点。
如果低级库或学习DirectX / OpenGL令您感到恐惧,那么请等到开始着手制作完整的视频游戏的复杂性。
我的游戏引擎理念可以通过两个示例进行总结,这些示例说明了引擎的冗余性和无用性,但在个别情况下除外。
被低级库吓倒的新手会发现,即使使用Unity之类的高级引擎(除了图形渲染,音频播放,内容加载;真正的基本功能),它们也将与制作游戏几乎相同从头开始。复杂性在于设计游戏,而不是理解API或开发类以呈现到显示器。
不会被在Unity之类的游戏中创建完整游戏的复杂性所吓倒的专家,对于Unity毫无用处,因为花时间来自信地学习API和特定引擎的要求可能更令人头疼,比编写基础知识所需的几个类所需的时间更多。
因此,引擎对于新手来说毫无用处,因为新手因为缺乏工程技术而无法与他们合作。同样,对于老手来说,引擎毫无用处,因为他们已经具备了无需引擎就可以做到的工程技能,并且可能会推出自己更高效,更具体的“引擎”,而不是费心学习游戏引擎的API,功能和性能怪癖。更不用说使用由于有时不是开源而使您有时无法触摸的引擎所产生的巨大噩梦(或者即使它们是开源引擎,有时阅读别人的代码也可能是一场噩梦)。
哎呀,甚至一些“低级”“游戏框架”也不过是创建窗口,渲染到显示器以及播放音频的几类。这是专业人士可以使用其他库(例如SDL / SFML或他们自己的OpenGL / DirectX / OpenAL实现)从头开始做的事情,而这实际上只需要花费少量时间即可完成完整的视频游戏。
TLDR;
如果要编程,请学习成为一名程序员。
避免使用engine,但不要傻傻地忽略非常有用的库。
如果您想成为游戏设计师,请尝试所见即所得引擎,然后将这些游戏抽出来!
如果您想成为游戏程序员,请避免使用像拐杖这样的引擎。
对于我来说,使用高级游戏引擎削弱了我成为程序员的能力。当我开始使用低级库而不是根本不使用任何库的那一刻,我开始学到了很多东西,以至于我迅速地从一个新手变成了一个现在可以创建视频游戏的人,而没有任何参考,教程或书本。只是我的编译器以及大量的工程和实践。
我在很短的时间内从低级库中获得的学习量远远大于我在较高水平的引擎中所获得的学习量。**