为什么像Unity3D这样的引擎相对于像OpenGL这样的本机库更适合初学者?[关闭]


25

我只是3D游戏的初学者,我的首选平台是Android。我在其他论坛上发布了一个有关“使用什么:OpenGL或Unity3d?”的问题。他们都强调Unity3D并使用其内置的功能和工具,如果我要使用OpenGL,则必须自己编写代码。但是后来有人说,大多数复杂的游戏都需要自定义引擎。为什么要在OpenGL上使用像Unity3D这样的引擎?


15
两个词:即时满足。您可以在不了解太多知识的情况下统一完成一些“有用的事情”,而使OpenGL应用程序正常运行则需要花费很多代码行并需要了解广泛的概念。
Jari Komppa 2014年

5
也许我们可以在一个主题中对其进行解释,所有“我应该使用什么技术”的问题都将永远消失。我也想要一个独角兽
飞速发展

8
“大多数复杂的游戏都需要自定义引擎” -实际上,出乎意料的大量非常成功的AAA游戏是建立在诸如虚幻引擎之类的股票引擎上的。
菲利普2014年

2
除此之外,初学者将无法使游戏足够复杂,以至于无论如何都需要自定义引擎。
基督教徒

这只是出现在Gamasutra上,虽然它不能直接回答这个问题,但却很相关:gamasutra.com/blogs/ChrisDeLeon/20140426/215519/…-特别是,对于您从中构建的项目而言,这将非常困难带有OpenGL的基础项目是“适度”的第一个项目。
Steven Stadnicki 2014年

Answers:


30

我想您已经自己回答了这个问题。您说过“我只是3D游戏的初学者”。你进一步说 “ ... Unity3D并使用它的内置功能和工具,如果要使用OpenGL,则必须自己编写代码”

从本质上讲,这意味着如果单独使用OpenGL,则将要编写游戏引擎,然后可能在数年后编写您的游戏。如果您想专注于游戏,请利用可用的资源使您尽可能地接近该目标。使用游戏引擎是专注于创建游戏的最佳方法,而不是编写创建游戏所需的所有内容。

看到这个相关的问题:库和引擎之间有什么区别,这是什么?游戏框架与游戏引擎之间是什么?


所以OpenGL仅用于图形,而unity3d是一个完整的框架,它具有图形以及游戏的物理要求?
阿曼·格罗弗

1
Unity远不止于此,但是是的,两者之间的差异非常大。
jhocking

3
@AmanGrover:还意识到使用GL,“仅用于图形”实际上是“仅用于向GPU提交命令”。图形的所有实际艰苦工作仍必须由程序员完成,而Unity包含了所有重要的图形功能和算法,可以立即使用。
肖恩·米德迪奇

2
不要写引擎,不要写游戏。这就是我被告知要采取的方法。我的意思是有人在创建实际游戏时创建了游戏引擎。这就是我不同意Byte的观点。
LaVolpe 2014年

28

因为按照定义,初学者不知道他们在做什么

OpenGL有一个巨大的学习曲线。当然,您可以发出几个glBegin命令,对在屏幕上放置一些三角形而感到兴奋,然后以更复杂的东西走到最深处,而您还差点没准备好去做。那不是学习的好方法。打个比方(有点夸张)可能是在学习一些基本的中学物理,然后才负责大型强子对撞机。它不是下沉或游泳,而是在地下游泳或留下一个大的放射性孔。

假设大多数人问“我想做一个游戏,我应该使用什么?” 问题实际上确实想制作游戏(否则,他们肯定会问一个不同的问题吗?)因此答案是针对该问题量身定制的,并且使用预先存在的工具包,框架或引擎是帮助他们实现目标的一种方法不必为烦恼而烦恼,因为UBO或glUniform调用对于更新单个矩阵是否更可取。

这就是每次一次迈出一步,使学习过程更加轻松,并为您带来一些收获。努力学习如何做一个游戏如何正确使用成熟和强大的3D API 在同一时间大概是太多初学者。这就像邓宁-克鲁格效应减去负面含义一样。您不知道自己不知道的东西,因此您实际上对所要承担的一切没有任何现实的印象。

另一方面,如果您的目标是学习OpenGL,那么您实际上并不想制作游戏!您想学习OpenGL,并且在制作游戏的背景下进行学习可能是一种有趣的学习方法,但是制作游戏是达到目的的一种手段,而不是本身的目的(当然,这不是学习OpenGL的唯一方法) )。您可能永远都不会发布它,并且您几乎肯定会在几年后再回顾它,并对您所做的一些愚蠢的事情感到尴尬。


22

这实际上取决于您要从该项目中获得什么。如果您的主要目标是专注于游戏设计,那么使用预构建引擎可能会更好,因为这样可以使您更快地进入游戏制作部分。如果您的目标是学习制作游戏的编程部分(特别是如果您正准备为该行业工作),那么您可能会发现使用OpenGL将是更有价值的经验。请记住,以上两种陈述都不是100%正确的。

在决定这种事情时,确实没有任何规则。您在此类问题中听到的大多数答案都是观点,而很少有与您自己的项目和技能完全相关的观点。


谢谢,是的,我正在寻找这方面的工作,因此我将使用OpenGL。
阿曼·格罗弗

9
我坚决不同意使用“裸” OpenGL对于闯入游戏行业的人会更有价值。Unity提供了一个相对成熟的现代游戏引擎的很好的例子。了解它提供的功能(着眼于学习如何自己提供类似的功能)是理解游戏开发过程本身的一种极好的方法,而OpenGL在任何有意义的意义上都不是特定于游戏的。
Steven Stadnicki 2014年

这只是说明这些东西实际上没有规则,只有意见。这完全取决于您的需求/需求。
轰动

5
@AmanGrover-然后不要做游戏!一次学习一件事,您会更轻松。制作一个太阳系模拟器。了解如何绘制基本图元,学习如何平移和旋转图元,将行星放入VBO中以更快地绘制图元,使用一些着色器在其上制作动画云,并且您与理解基本原理的距离还很远。
Maximus Minimus 2014年

3
@KamikazeSoctsman再次在这里不同意。我并不是说OGL没有用-远非如此!-但是在过去的十年中,我仅短暂地使用和掌握了OpenGL知识的一小部分。相反,由于游戏图形引擎往往对性能如此敏感,因此以我的经验,它们是新程序员入门的最不常见的场所之一。您应该完全了解3D数学,并且应该了解渲染的原理-但这与学习OGL完全不同。
Steven Stadnicki 2014年

6

区别很简单。Unity是带有四个圆形轮子的马车,可以带您到位。OpenGL是一种锯末,您可以建立一家商店,并潜在地用来模制改进的和更现代的托架和轮子。也就是说,如果您在第一时间就花了很多时间来学习人们的知识。

作为初学者,您的目标应该是首先研究现有的马车及其设计。把所有东西扔到窗外并从头开始是没有意义的。首先,了解已经存在的内容,并全面了解它。如果不知道,您如何知道它的局限性,如果您不知道这些局限性,那么如何突破?使平庸的东西变得毫无用处,并且对所有可用的充满活力的现有工具无知,这有什么意义呢?

恕我直言,新手游戏开发人员的步骤如下:

  1. 掌握现代的框架/引擎并对其有深刻的了解(这也将帮助您了解游戏设计,图形和OpenGL的各个方面)。
  2. 用它制作一个小游戏,并在此过程中学习更多。
  3. 有机地遇到发动机中的障碍和限制。
  4. 了解有关该主题的更多信息。
  5. 努力改善您认为需要改进的领域。

独自进行已完成的工作不会使您成为任何人的有价值的开发人员,因为您在这方面将不会有高产,也不会成为一个好的学习者,您只会复制现有的代码,也许会学会阅读并理解它们。就像老口袋妖怪所说的那样:“这不是很有效……”。

最糟糕的是,这种方法不容易跟上,因为其中没有满足感,因此您使用的是原始意志力,这已被科学证明是对人类有限的资源。您需要做一些可以满足日常需求的事情,否则您将无法保持满意。

综上所述,强调引擎是因为您可以使用引擎来完成工作,并且您更有可能以这种方式成功。甚至伟大的游戏创作者都依赖别人的先前工作,这就是进步的本质。在制作自己的自定义乐高积木之前,您需要了解全局并知道如何使用他人提供的乐高积木。


4

假设你的目标是创建一个游戏,谁谈到定制引擎被那家伙要求是错误的。如果有的话,复杂的游戏需要一个成熟的引擎,该引擎必须由从事该行业的专业人士设计,实施,优化,测试并维护,或者可以匹配其质量(至少出于特定游戏目的)。 ,如果可能的话。

大型游戏开发人员确实会构建内部引擎,但仍会大量使用它们来开发未来的游戏。但是请记住,他们的预算,团队规模以及许多其他因素与独立开发人员有很大的不同-即使现有技术在技术上没有不足,他们自己构建引擎也可能具有更大的商业意义。

当然,仍然存在误解,因为在现有引擎中并不存在许多现成的功能,它们根本无法在该引擎中实现,但这通常是不准确的。

请记住,某些最具创新性的现代游戏(例如Portal和Antichamber)是使用现有引擎构建的。一些相当复杂的在线游戏,例如《永恒之塔》和《 TERA》都是使用现有引擎构建的。一些最视觉上最漂亮的游戏,例如Bioshock Infinite和Thief,都是使用现有引擎构建的。而且,当然不是。但是重点是:我见过的任何东西都真正不需要自定义引擎。

另一方面,如果您的目标是学习图形编程的概念,那么当然可以使用OpenGL。但是即使如此,请记住,熟悉一些现有的引擎将极大地帮助您了解您正在做的事情以及您应该瞄准的目标。


1
-1。关于游戏行业的相当大的断言。其中大多数不准确。我希望我可以在您的帖子中加上大约12 citation neededs
Panda Pajama 2014年

1
@PandaPajama在我的回答中,几乎只有一个关于游戏行业的主张。如果它困扰您很多,欢迎您对其进行更正或完全删除。
TC

我的(有限的)经验告诉我,如果不能概括一下,那就是游戏行业。每个公司都有不同的看待事物的方式,即使公司内部的不同团队也可能对所有事情采取截然不同的政策。在这种特殊情况下,内部引擎确实会产生成本,并带来一些优点和缺点。最终结果是节省还是支出是非常难以计算的,并且会因项目而异。此外,预算虽然很重要,但并不是制作游戏时要考虑的唯一要素。
2014年

@PandaPajama当然,请看我的编辑。我只是说过,总体上讲,这对他们来说可能更具商业意义,其中包括预算因素以及任何有助于制定决策的因素,并指出这可能根本不是现有发动机的技术限制。
TC
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.