我只是3D游戏的初学者,我的首选平台是Android。我在其他论坛上发布了一个有关“使用什么:OpenGL或Unity3d?”的问题。他们都强调Unity3D并使用其内置的功能和工具,如果我要使用OpenGL,则必须自己编写代码。但是后来有人说,大多数复杂的游戏都需要自定义引擎。为什么要在OpenGL上使用像Unity3D这样的引擎?
我只是3D游戏的初学者,我的首选平台是Android。我在其他论坛上发布了一个有关“使用什么:OpenGL或Unity3d?”的问题。他们都强调Unity3D并使用其内置的功能和工具,如果我要使用OpenGL,则必须自己编写代码。但是后来有人说,大多数复杂的游戏都需要自定义引擎。为什么要在OpenGL上使用像Unity3D这样的引擎?
Answers:
我想您已经自己回答了这个问题。您说过“我只是3D游戏的初学者”。你进一步说 “ ... Unity3D并使用它的内置功能和工具,如果要使用OpenGL,则必须自己编写代码”。
从本质上讲,这意味着如果单独使用OpenGL,则将要编写游戏引擎,然后可能在数年后编写您的游戏。如果您想专注于游戏,请利用可用的资源使您尽可能地接近该目标。使用游戏引擎是专注于创建游戏的最佳方法,而不是编写创建游戏所需的所有内容。
看到这个相关的问题:库和引擎之间有什么区别,这是什么?游戏框架与游戏引擎之间是什么?
因为按照定义,初学者不知道他们在做什么。
OpenGL有一个巨大的学习曲线。当然,您可以发出几个glBegin命令,对在屏幕上放置一些三角形而感到兴奋,然后以更复杂的东西走到最深处,而您还差点没准备好去做。那不是学习的好方法。打个比方(有点夸张)可能是在学习一些基本的中学物理,然后才负责大型强子对撞机。它不是下沉或游泳,而是在地下游泳或留下一个大的放射性孔。
假设大多数人问“我想做一个游戏,我应该使用什么?” 问题实际上确实想制作游戏(否则,他们肯定会问一个不同的问题吗?)因此答案是针对该问题量身定制的,并且使用预先存在的工具包,框架或引擎是帮助他们实现目标的一种方法不必为烦恼而烦恼,因为UBO或glUniform调用对于更新单个矩阵是否更可取。
这就是每次一次迈出一步,使学习过程更加轻松,并为您带来一些收获。努力学习如何做一个游戏和如何正确使用成熟和强大的3D API 在同一时间大概是太多初学者。这就像邓宁-克鲁格效应减去负面含义一样。您不知道自己不知道的东西,因此您实际上对所要承担的一切没有任何现实的印象。
另一方面,如果您的目标是学习OpenGL,那么您实际上并不想制作游戏!您想学习OpenGL,并且在制作游戏的背景下进行学习可能是一种有趣的学习方法,但是制作游戏是达到目的的一种手段,而不是本身的目的(当然,这不是学习OpenGL的唯一方法) )。您可能永远都不会发布它,并且您几乎肯定会在几年后再回顾它,并对您所做的一些愚蠢的事情感到尴尬。
这实际上取决于您要从该项目中获得什么。如果您的主要目标是专注于游戏设计,那么使用预构建引擎可能会更好,因为这样可以使您更快地进入游戏制作部分。如果您的目标是学习制作游戏的编程部分(特别是如果您正准备为该行业工作),那么您可能会发现使用OpenGL将是更有价值的经验。请记住,以上两种陈述都不是100%正确的。
在决定这种事情时,确实没有任何规则。您在此类问题中听到的大多数答案都是观点,而很少有与您自己的项目和技能完全相关的观点。
区别很简单。Unity是带有四个圆形轮子的马车,可以带您到位。OpenGL是一种锯末,您可以建立一家商店,并潜在地用来模制改进的和更现代的托架和轮子。也就是说,如果您在第一时间就花了很多时间来学习人们的知识。
作为初学者,您的目标应该是首先研究现有的马车及其设计。把所有东西扔到窗外并从头开始是没有意义的。首先,了解已经存在的内容,并全面了解它。如果不知道,您如何知道它的局限性,如果您不知道这些局限性,那么如何突破?使平庸的东西变得毫无用处,并且对所有可用的充满活力的现有工具无知,这有什么意义呢?
恕我直言,新手游戏开发人员的步骤如下:
独自进行已完成的工作不会使您成为任何人的有价值的开发人员,因为您在这方面将不会有高产,也不会成为一个好的学习者,您只会复制现有的代码,也许会学会阅读并理解它们。就像老口袋妖怪所说的那样:“这不是很有效……”。
最糟糕的是,这种方法不容易跟上,因为其中没有满足感,因此您使用的是原始意志力,这已被科学证明是对人类有限的资源。您需要做一些可以满足日常需求的事情,否则您将无法保持满意。
综上所述,强调引擎是因为您可以使用引擎来完成工作,并且您更有可能以这种方式成功。甚至伟大的游戏创作者都依赖别人的先前工作,这就是进步的本质。在制作自己的自定义乐高积木之前,您需要了解全局并知道如何使用他人提供的乐高积木。
假设你的目标是创建一个游戏,谁谈到定制引擎被那家伙要求是错误的。如果有的话,复杂的游戏需要一个成熟的引擎,该引擎必须由从事该行业的专业人士设计,实施,优化,测试并维护,或者可以匹配其质量(至少出于特定游戏目的)。 ,如果可能的话。
大型游戏开发人员确实会构建内部引擎,但仍会大量使用它们来开发未来的游戏。但是请记住,他们的预算,团队规模以及许多其他因素与独立开发人员有很大的不同-即使现有技术在技术上没有不足,他们自己构建引擎也可能具有更大的商业意义。
当然,仍然存在误解,因为在现有引擎中并不存在许多现成的功能,它们根本无法在该引擎中实现,但这通常是不准确的。
请记住,某些最具创新性的现代游戏(例如Portal和Antichamber)是使用现有引擎构建的。一些相当复杂的在线游戏,例如《永恒之塔》和《 TERA》都是使用现有引擎构建的。一些最视觉上最漂亮的游戏,例如Bioshock Infinite和Thief,都是使用现有引擎构建的。而且,当然不是。但是重点是:我见过的任何东西都真正不需要自定义引擎。
另一方面,如果您的目标是学习图形编程的概念,那么当然可以使用OpenGL。但是即使如此,请记住,熟悉一些现有的引擎将极大地帮助您了解您正在做的事情以及您应该瞄准的目标。
citation needed
s