我要去做个游戏。我注意到有很多可用的游戏引擎,库和框架,并且在确定使用哪个引擎时遇到了一些麻烦。
我已经对某些编程语言非常满意,但是有些我根本不了解。我不反对学习新的编程语言(如果有帮助的话),但我的真正目标只是制作自己的游戏。
我应该使用什么标准来比较引擎,库和框架之间的相互比较,以便可以决定哪个标准可以使我最有效率地完成比赛?
我要去做个游戏。我注意到有很多可用的游戏引擎,库和框架,并且在确定使用哪个引擎时遇到了一些麻烦。
我已经对某些编程语言非常满意,但是有些我根本不了解。我不反对学习新的编程语言(如果有帮助的话),但我的真正目标只是制作自己的游戏。
我应该使用什么标准来比较引擎,库和框架之间的相互比较,以便可以决定哪个标准可以使我最有效率地完成比赛?
Answers:
这有点像选汽车或电脑。或几乎所有具有各种功能的东西,其中一些您非常在乎,其他一些您不介意,有些甚至不希望包含在内。
我认为其中很多归结为实际上知道您想要什么。这意味着您需要对自己制作的游戏有一个很好的了解。这可能意味着您将需要一个相当详细的计划,以实现游戏以及游戏的内容。另外,拥有所有这些详细信息实际上可以帮助您完成游戏。遵循计划并从清单中检查事情要容易得多,而不仅仅是对游戏有所了解并开始编写代码。
首先,您至少应大致了解您的游戏将是什么以及将需要什么。常见的问题包括您的游戏是否需要物理。然后是相互关联的问题,主要是关于您的游戏开发和运行环境以及您的游戏是否商业化的问题。
如果您将仅使用Windows,则DirectX和基于C#的库是最佳选择。如果您想成为多平台平台,则需要查看基于OpenGL和C / C ++的库,如果您的游戏是2D的并且可以负担得起Adobe的工具,则可以查看Flash。像您的平台一样,您的编程语言将影响可用的库。用C ++编写的程序很难调用Java库。
如果您的游戏是商业游戏,则可以考虑购买Unity等引擎。如果您的游戏是免费软件或开放源代码,则您将希望专注于也是开放源代码的库,或者对于非商业项目至少是免费的。当然,开源库对于商业项目也很有用。查看开源库时,请确保检查其许可证。某些许可证要求您根据使用库的方式使自己的软件部分开源。限制自己使用开源库显然会给您可以使用的库带来另一个限制。
查看图书馆时,请确保检查其开发和社区的活跃程度。我相信一个众所周知的图书馆,并且积极地维护着一个图书馆,该图书馆托管在某人的大学网页上,该网页自1999年以来就没有更新过。
最后一个问题,尤其是如果这是不是你的第一个游戏项目,是是否有方面你的游戏需要,你知道你会如果您尝试自己做斗争。因为这些方面尤其适合寻找图书馆。如果您的游戏需要碰撞检测并且您知道自己无法实现碰撞检测(就像我不能那样),请考虑选择一个物理引擎并利用其中的碰撞检测功能。
简短的备忘单,用于评估库,框架,引擎和SDK并选择最佳
因此,在您甚至开始评估之前,您需要明确您所处的场景以及您将要/将要满足的要求,因为这是评估应回答的问题。
该场景定义了需求来自何处(由谁决定什么是需求,什么不是需求)。
典型方案是:
最怪异的项目方案
您自己或与一些朋友一起想要创建您的(也许是第一个)游戏。完美,您可以自行决定所有事情,并且只限于基本的技术要求和技术要求(应该是手机游戏,PC游戏,主机游戏,网络游戏等)。您可以决定任何内容。
隐性要求是您可能想学习特定的东西(一种语言,特定的框架/引擎)
学生情景
要求可能来自您的老师。在那种情况下,我的典型要求是:游戏需要具有一些物理元素和多人网络支持。或者它必须用C ++编写。因此评估变得容易。您正在寻找一种游戏引擎,该引擎可以使用c ++进行编程,并且可能已经包含网络和物理引擎。
一个更邪恶的(现实生活中的)要求:必须从头开始编写所有内容(但允许使用库)。因此,不允许使用任何编辑器(例如Unity3D)。因此,您不是在寻找引擎/ SDK,而是在寻找库。
独立游戏场景
您想稍后通过游戏赚钱。因此,您将需要以某种方式出售它,这使您可以检查哪些要求来自您要出售游戏的商店。
是否允许Java游戏,HTML5游戏,...)
是否要求您包括特定的库(如果是,请提供那些库所用的语言)
Google Playstore将要求您将游戏编写为Android游戏,Apple AppStore将要求您将游戏编写为iOS应用程序。或者您需要选择一个多平台引擎。
专业场景
您不仅拥有提供需求的商店,而且很可能是发布者或客户对需求有自己的想法。在这种情况下,您还将拥有更大的受雇开发人员团队。根据他们的技能设置,会出现新的要求(我们的程序员只能写c ++,所以如果没有他们(很多)学习新的知识,我们就不能使用纯Java / Android游戏引擎)。
在您成功建立了一个员工团队并找到了一个客户/发布者之后,我就不会对此场景进行详细介绍了,您已经知道您正在寻找评估对象。
当我是嗜好者或个人时,我该如何确定我的要求是什么?
问自己有关目标和比赛的问题?
我的游戏应该是什么?移动设备,PC,Web(html / Js),我将使用哪些控制器(触摸屏,陀螺仪,游戏手柄)
我的游戏有哪些新功能,其他游戏也有哪些功能。其他游戏也具有的那些部分(渲染,音频,输入处理)将由您可以找到的大多数(游戏引擎)工具完成,或者很容易在您自己的游戏或游戏引擎中捆绑具有该功能的库。
我的项目有什么意义:愤怒的小鸟或天际?《愤怒的小鸟》几乎可以在所有工具中完成,天际(仅限于高性能工具)(假设)还需要额外的多年定制(高性能地形引擎并不容易)
我唯一的目标只是完成游戏吗?是?完美,您可以使用一些高度先进的工具,例如Unity,Unreal,...,拥有方便的编辑器和庞大的社区,为您提供教程并回答您的问题。它消除了处理低级任务(如网格加载,实现自己的数学函数等)的负担。
我的目标是学习特定的东西吗?是?你想要学什么?
我应该选择哪种语言?如果目标仍然只是完成游戏,请选择您/您的团队最了解的游戏?如果您想学习特定的语言,则可以选择该语言的工具。
工具X是否可以为我的游戏提供足够的性能?也许,你永远不会知道。即使在大批量生产中,优化和抛光阶段也要花费很长时间,并且要花很多时间才能完成。遇到性能问题时,开始关心性能。您不知道该工具的性能如何,除非达到其极限。工具开发人员网站上的所有内容都只是一个大概的猜测。经过多年的工具评估,我不再相信开发人员网站上的任何内容。
回答这些问题将使您达到要求。评估是在查找工具列表和测试(不仅仅是阅读主页),该工具可以提供或不能提供什么。
需求不是一成不变的,而是动态的。他们将在开发过程中来来去去。例如,游戏是否需要物理性取决于设计。如果设计更改,需求也可能更改。
满足您的要求并开始。不断变化的需求是苦难,快乐,快乐的开发人员的日常食粮,而与项目规模和经验水平无关。
去这里。
尽管有很多游戏引擎,但实际上您没有太多选择。