在评估制作游戏的库,引擎和框架时应该考虑什么?


10

我要去做个游戏。我注意到有很多可用的游戏引擎,库和框架,并且在确定使用哪个引擎时遇到了一些麻烦。

我已经对某些编程语言非常满意,但是有些我根本不了解。我不反对学习新的编程语言(如果有帮助的话),但我的真正目标只是制作自己的游戏。

我应该使用什么标准来比较引擎,库和框架之间的相互比较,以便可以决定哪个标准可以使我最有效率地完成比赛?


11
对于它的价值,我使用两步法:(1)任意选择一个;(2)后悔该决定。这样做的好处是可以使您快速通过第一步。
卡梅隆·弗雷德曼

2
这不应该是社区Wiki问题吗?
Marton

我很高兴将此问题纳入“社区Wiki”问题,但是我没有其他选择。如今,我认为关于问题的CW只是主持人。
Trevor Powell

@Marton您为什么认为它应该是CW?
MichaelHouse

1
@ Byte56因为当有人想要开始游戏开发时,总是会出现此问题。那里已经有很多框架/引擎,而这样一个通用的“考虑事项” Wiki条目将非常有帮助。我认为它将回答许多将在此站点上出现的“我应该使用哪个引擎”的问题。后面的措词实际上会使这样的问题“没有建设性”。
Marton

Answers:


14

这有点像选汽车或电脑。或几乎所有具有各种功能的东西,其中一些您非常在乎,其他一些您不介意,有些甚至不希望包含在内。

  1. 列出您感兴趣的功能,例如2D / 3D支持,照明,物理,使用您熟悉的语言等。
  2. 根据您对当前项目的重视程度,对它们进行排名。
  3. 研究您的选项,并针对每个选项,尝试根据它们与您的项目目标的匹配程度对它们的支持功能进行排名。
  4. 使用最适合您目标的一种。或者,您可以选择前几名,并对其进行试驾。实现游戏的一些简单功能,然后查看您更喜欢哪个功能。

我认为其中很多归结为实际上知道您想要什么。这意味着您需要对自己制作的游戏有一个很好的了解。这可能意味着您将需要一个相当详细的计划,以实现游戏以及游戏的内容。另外,拥有所有这些详细信息实际上可以帮助您完成游戏。遵循计划并从清单中检查事情要容易得多,而不仅仅是对游戏有所了解并开始编写代码。


3

首先,您至少应大致了解您的游戏将是什么以及将需要什么。常见的问题包括您的游戏是否需要物理。然后是相互关联的问题,主要是关于您的游戏开发和运行环境以及您的游戏是否商业化的问题。

  • 您将支持哪些平台?您在什么平台上开发游戏?
  • 您打算使用哪种编程语言来实现您的游戏?
    • 这受您打算支持的平台的影响。
  • 您的游戏将具有什么样的图形,音频和输入?
  • 您的游戏是免费软件还是开源软件,还是商业软件?
    • 如果是开源的,您是否想在以后使用您的游戏或使用第一个游戏引擎的其他游戏进行商业化?

如果您将仅使用Windows,则DirectX和基于C#的库是最佳选择。如果您想成为多平台平台,则需要查看基于OpenGL和C / C ++的库,如果您的游戏是2D的并且可以负担得起Adobe的工具,则可以查看Flash。像您的平台一样,您的编程语言将影响可用的库。用C ++编写的程序很难调用Java库。

如果您的游戏是商业游戏,则可以考虑购买Unity等引擎。如果您的游戏是免费软件或开放源代码,则您将希望专注于也是开放源代码的库,或者对于非商业项目至少是免费的。当然,开源库对于商业项目也很有用。查看开源库时,请确保检查其许可证。某些许可证要求您根据使用库的方式使自己的软件部分开源。限制自己使用开源库显然会给您可以使用的库带来另一个限制。

查看图书馆时,请确保检查其开发和社区的活跃程度。我相信一个众所周知的图书馆,并且积极地维护着一个图书馆,该图书馆托管在某人的大学网页上,该网页自1999年以来就没有更新过。

最后一个问题,尤其是如果这是不是你的第一个游戏项目,是是否有方面你的游戏需要,你知道你会如果您尝试自己做斗争。因为这些方面尤其适合寻找图书馆。如果您的游戏需要碰撞检测并且您知道自己无法实现碰撞检测(就像我不能那样),请考虑选择一个物理引擎并利用其中的碰撞检测功能。


1
  • 图书馆能满足您的需求吗?
  • 是专门做您需要的吗?有多少杂物附着在上面?
  • 它是如何设计的?看到时想呕吐吗?如果是,那么对于您的健康和理智而言,它可能不是最佳选择。
  • 它足够灵活以满足您的需求吗?注意到一半的代码之后,该库不起作用,这不是很好的提示。
  • 图书馆如何证明未来?开发人员是否随时间增加了功能?他在修东西吗?他在进步吗?如果您的游戏开发可能需要花费几年的时间,这可能会带来很大的不同。对于您将在一个月内完成的小型项目而言,它并不重要。
  • 大小合适吗?对于小型项目,播放器必须下载20MB还是200MB可能会产生很大的影响。较大的项目可能足够大,以至于中间件的大小几乎没有什么区别。

1

除了人们评论过的特定游戏功能之外,您还应该考虑一些一般性问题。

  1. 支持结构-即使游戏引擎是完美的,支持也可能过于昂贵或不存在。
  2. 学习起来有多容易-您可能不想要太大的东西,因为学习的时间可能过于繁琐。
  3. 它涵盖了您的未来计划吗?您可能不想花时间学习一个当下完美的引擎,而只是从头开始为下一个项目重新学习一个全新的引擎。也许您确实想要那个。
  4. 许可证-如果您要制作封闭式游戏,请确保引擎的许可证未将其开源。

0

简短的备忘单,用于评估库,框架,引擎和SDK并选择最佳

  • 库,框架,引擎SDK等都是旨在为您解决问题或帮助您解决问题并满足某些要求的工具。
  • 评估意味着找出最符合要求的人。

因此,在您甚至开始评估之前,您需要明确您所处的场景以及您将要/将要满足的要求,因为这是评估应回答的问题。

该场景定义了需求来自何处(由谁决定什么是需求,什么不是需求)。


典型方案是:

最怪异的项目方案

您自己或与一些朋友一起想要创建您的(也许是第一个)游戏。完美,您可以自行决定所有事情,并且只限于基本的技术要求和技术要求(应该是手机游戏,PC游戏,主机游戏,网络游戏等)。您可以决定任何内容。

隐性要求是您可能想学习特定的东西(一种语言,特定的框架/引擎)

学生情景

要求可能来自您的老师。在那种情况下,我的典型要求是:游戏需要具有一些物理元素和多人网络支持。或者它必须用C ++编写。因此评估变得容易。您正在寻找一种游戏引擎,该引擎可以使用c ++进行编程,并且可能已经包含网络和物理引擎。

一个更邪恶的(现实生活中的)要求:必须从头开始编写所有内容(但允许使用库)。因此,不允许使用任何编辑器(例如Unity3D)。因此,您不是在寻找引擎/ SDK,而是在寻找库。

独立游戏场景

您想稍后通过游戏赚钱。因此,您将需要以某种方式出售它,这使您可以检查哪些要求来自您要出售游戏的商店。

是否允许Java游戏,HTML5游戏,...)

是否要求您包括特定的库(如果是,请提供那些库所用的语言)

Google Playstore将要求您将游戏编写为Android游戏,Apple AppStore将要求您将游戏编写为iOS应用程序。或者您需要选择一个多平台引擎。

专业场景

您不仅拥有提供需求的商店,而且很可能是发布者或客户对需求有自己的想法。在这种情况下,您还将拥有更大的受雇开发人员团队。根据他们的技能设置,会出现新的要求(我们的程序员只能写c ++,所以如果没有他们(很多)学习新的知识,我们就不能使用纯Java / Android游戏引擎)。

在您成功建立了一个员工团队并找到了一个客户/发布者之后,我就不会对此场景进行详细介绍了,您已经知道您正在寻找评估对象。


当我是嗜好者或个人时,我该如何确定我的要求是什么?

问自己有关目标和比赛的问题?

  • 我的游戏应该是什么?移动设备,PC,Web(html / Js),我将使用哪些控制器(触摸屏,陀螺仪,游戏手柄)

  • 我的游戏有哪些新功能,其他游戏也有哪些功能。其他游戏也具有的那些部分(渲染,音频,输入处理)将由您可以找到的大多数(游戏引擎)工具完成,或者很容易在您自己的游戏或游戏引擎中捆绑具有该功能的库。

  • 我的项目有什么意义:愤怒的小鸟或天际?《愤怒的小鸟》几乎可以在所有工具中完成,天际(仅限于高性能工具)(假设)还需要额外的多年定制(高性能地形引擎并不容易)

  • 我唯一的目标只是完成游戏吗?是?完美,您可以使用一些高度先进的工具,例如Unity,Unreal,...,拥有方便的编辑器和庞大的社区,为您提供教程并回答您的问题。它消除了处理低级任务(如网格加载,实现自己的数学函数等)的负担。

  • 我的目标是学习特定的东西吗?是?你想要学什么?

  • 我应该选择哪种语言?如果目标仍然只是完成游戏,请选择您/您的团队最了解的游戏?如果您想学习特定的语言,则可以选择该语言的工具。

  • 工具X是否可以为我的游戏提供足够的性能?也许,你永远不会知道。即使在大批量生产中,优化和抛光阶段也要花费很长时间,并且要花很多时间才能完成。遇到性能问题时,开始关心性能。您不知道该工具的性能如何,除非达到其极限。工具开发人员网站上的所有内容都只是一个大概的猜测。经过多年的工具评估,我不再相信开发人员网站上的任何内容。


回答这些问题将使您达到要求。评估是在查找工具列表和测试(不仅仅是阅读主页),该工具可以提供或不能提供什么。


需求不是一成不变的,而是动态的。他们将在开发过程中来来去去。例如,游戏是否需要物理性取决于设计。如果设计更改,需求也可能更改。

满足您的要求并开始。不断变化的需求是苦难,快乐,快乐的开发人员的日常食粮,而与项目规模和经验水平无关。


0

去这里

尽管有很多游戏引擎,但实际上您没有太多选择。

  1. 许可证限制。某些引擎会妨碍您发布产品的能力,而无需先支付大量许可费用,例如Unity,例如,Unity收取额外的编译至iOS的费用(2016年更改
  2. 平台。您是否关心针对多个平台?哪个?
  3. 2D或3D?一些引擎迎合2D。
  4. 需要物理学吗?一些引擎提供物理学
  5. FPS,RTS?使用专门针对您要创建的游戏类型的引擎可能是明智的。
  6. 显然,您想用自己喜欢的语言工作。不喜欢C吗?然后不要使用Allegro!
  7. 您是一个庞大的设计模式吗,OOP粉丝?众所周知的OGRE“过度使用”模式
  8. 积极发展?您应该考虑在前沿功能(DX11 / OGL 4)的可用性与几年前开发逐渐减弱的引擎的稳定性之间进行权衡
  9. 用户群?庞大的用户群通常意味着更好的论坛,因此更容易回答您的问题
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.