使用某种引擎开始游戏开发是否明智?[关闭]


14

我开始进行C#编程,以便以后使用XNA开发游戏。我读了一本关于C#的优秀游戏开发书。由于我已经知道其他语言,因此我可以快速学习C#功能和语法代码。然后,我进入了XNA。由于我正在阅读的书有些陈旧,因此将其放在一边,然后开始研究有关Internet上XNA的游戏开发教程。我可以使用2D图形来完成并理解其中的大多数。我创建了动画精灵,使角色向任意方向移动,背景与角色移动一起滚动,依此类推。一切都用“原始” XNA完成。

我发现其中有些事情很难理解,并且发现某些事情已经内置在框架中。我找到了其他游戏引擎,这些游戏引擎至少可以让我清楚地理解一些简单的代码,例如FlatRedBallAxiomQuick Start Engine。我已经知道了著名的“ OGRE”“ Unreal”“ Unity”。同时,我很想抛弃所有这些,并开始学习一些著名的游戏引擎编程。我想留在XNA,因为这花了我一些时间来学习。时间我不想浪费它。

这次,我把它留给有经验的人。即使我开始游戏开发,我是否可以使用某些游戏引擎并使用其提供的功能?有些人可能认为,习惯于使用裸框架的无聊例程是件好事。如果是这样,那么建议从哪开始呢?我听说每个市场都有所不同。我们也许可以认为我想要一个特定于RPG的游戏。


1
我有同样的想法...我已经使用XNA已有4年了。我开始制作MMORPG。。。与往常一样,从小处着手,使用自己喜欢的东西,除非您有更大的计划,然后在时间过长之前先做好点事情。
Michael Coleman

@Omnion,使用XNA尝试制作MMORPG已有4年,这与您使用的内容无关,而与决心,奉献精神,空闲时间和实际应用有关。任何人都可以使用XNA完成MMORPG,只要他们随着时间的推移保持动力和奉献精神即可。时间的长短会根据空闲时间和工作速度而变化,但是无论项目的规模或范围如何,即使一个人开始工作的规模很大,它也是可行的。关键是组织工程过程。无论规模大小,婴儿步伐一次一次地一步一步地完成一个项目。

1
我仅提及这一点是为了鼓励人们不要相信自己的项目太大,而只是简单地了解实际情况。如果一个人了解完成一个项目所需要的不仅仅是梦想,那么他们将走得更远。我一直想鼓励人们实现自己的梦想,而不是为了实现梦想。无论大小如何,都只能使其实用才能实现。及时,一切皆有可能。

Answers:


11

这取决于您要学习的内容。如果您想“仅仅创造一个游戏”,那么使用引擎就可以了。我个人不建议这样做。

如果您想真正了解计算机图形学的工作原理,则必须更深入地学习所有内容。从刷新线性代数(至少是矩阵,向量和线性空间)到了解图形管线的工作方式。XNA是最好的入门框架。我的第一个游戏就在其中(我的意思是真实游戏,第一个3D应用是openGL中的战车)。如果您要开始3D编程,没有如此宏伟的计划,那么现在就无法进行RPG。您应该尝试制作一些游戏,在充满立方体的太空中飞行并尝试射击红色的立方体,以学习基础知识。这可能会花费您比您认为更多的时间:)。但这会教给你很多东西。

加油!3D图形编程是您可以为生活而做的最好的事情。打包在一起既困难,有趣又富有创造力。


3
可能值得检查MonoGame而不是XNA。Microsoft已停止开发XNA,并且它缺少Windows 8 Metro UI支持。根据我在Reddit上阅读的一些帖子,他们的代表实际上是在推荐MonoGame。结果,您得到了跨平台(Linux,OSX,Android,iOS)。
David C. Bishop

17

使用现有引擎没有任何问题,一切都取决于您的目标。

如果您只对构建某些游戏或游戏设计感兴趣,则获得游戏代码的速度越快越好。像Unity之类的东西在这里很棒,因为您可以使用C#知识并开始将脚本附加到对象上并立即运行某些内容。

如果您想成为一名游戏程序员,那么您需要了解一些较低的知识。像XNA这样的框架是一个很好的起点。您可以依靠框架来启动并运行,然后在学习如何构建游戏的每个组件时开始用自己的代码替换框架的各个部分。


1
我比你更喜欢你的回答。为您+1。
Notabene

6
如果说您想成为一名游戏程序员,从一个引擎开始,然后在您自己进行研究时,将您用作一个很好的例子(假设您喜欢使用它)与其他资源进行对比,则这特别有用。在引擎架构上。
michael.bartnett

但是,即使您使用引擎,您仍然应该在计算机图形学的基础上坚如磐石。
Notabene

1

来自业余的建议

//经过多年的学习,从零到业余


我一定会远离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;

  1. 如果要编程,请学习成为一名程序员

  2. 避免使用engine,但不要傻傻地忽略非常有用的库。

  3. 如果您想成为游戏设计师,请尝试所见即所得引擎,然后将这些游戏抽出来!

  4. 如果您想成为游戏程序员,请避免使用像拐杖这样的引擎。

  5. 对于我来说,使用高级游戏引擎削弱了我成为程序员的能力。当我开始使用低级库而不是根本不使用任何库的那一刻,我开始学到了很多东西,以至于我迅速地从一个新手变成了一个现在可以创建视频游戏的人,而没有任何参考,教程或书本。只是我的编译器以及大量的工程和实践。

我在很短的时间内从低级库中获得的学习量远远大于我在较高水平的引擎中所获得的学习量。**


2
免责声明:这只是我的故事,也是我的学习风格。其他人可能有所不同。当我尝试成为Game PROGRAMMER(低级人员)而不是Game DESIGNER(依赖于引擎)时,对于我的学习过程来说,世界之间存在很大的差异。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.