在决定2D游戏引擎(例如Slick2D / Flixel / FlashPunk)和3D引擎(例如Unity)进行2D游戏开发时,初学者应该注意哪些利弊?
尽管我过去曾涉猎Game Maker,Flash和XNA,但我才刚刚开始从事独立游戏开发。我听说过很多有关Unity的正面信息,它的跨平台特性使其更具吸引力,但据我了解,它是3d引擎的核心。
对于严格的2d游戏,是否有令人信服的理由使用Unity等3d引擎?还是会为我的初次学习体验增加不必要的复杂性?
在决定2D游戏引擎(例如Slick2D / Flixel / FlashPunk)和3D引擎(例如Unity)进行2D游戏开发时,初学者应该注意哪些利弊?
尽管我过去曾涉猎Game Maker,Flash和XNA,但我才刚刚开始从事独立游戏开发。我听说过很多有关Unity的正面信息,它的跨平台特性使其更具吸引力,但据我了解,它是3d引擎的核心。
对于严格的2d游戏,是否有令人信服的理由使用Unity等3d引擎?还是会为我的初次学习体验增加不必要的复杂性?
Answers:
这取决于游戏,但是在大多数情况下,使用专门为2d设计的引擎制作严格的2d游戏会更加容易。
现在,对于一些优点和缺点(其中一些将与Unity特别相关,其中一些更为通用)
3d引擎通常是围绕3d模型(多边形和纹理)的游戏对象设计的。虽然当然可以制作一个平面并对其应用纹理,但这样做时您正在积极地与引擎对抗。
另外,许多3d引擎缺乏处理精灵表(在一个纹理上的所有动画帧)的能力,因为他们希望动画(而不是通过绑定和其他方法)作用在模型上(而不是纹理)。再次,有解决方法,但是,再次,您正在积极地与引擎合作以实现这一目标。
增加了复杂性。正如乔什·佩特里(Josh Petrie)的回答中所述,3d比2d复杂得多,主要是在数学和场景管理方面。移动对象和处理3d空间非常困难,如果这是您的第一批游戏之一,那就会变得更加困难。好消息:Unity会抽象出其中的一些问题,尽管您仍然需要处理一些事情(而且很多抽象还是针对3d模型,而不是2d精灵)。
Unity附带的或您可以从中获得的大多数库都用于3d对象。这包括诸如照明,寻路,物理等东西。与此同时,box2d可以轻松地与Flash或XNA或其他(也许)一起使用。
3d加速。与CPU相比,图形卡在处理场景中的许多对象方面要好得多,而使用Unity则可以非常轻松地获得好处。这样一来,您就可以在屏幕上显示数千个精灵,或者轻松地包含粒子效果,或者添加诸如着色器之类的有趣功能来支持诸如扭曲空间和时间的酷效果。Unity具有许多内置的效果,因此非常容易。请注意,许多2d引擎在后台使用OpenGL或DirectX,并且在许多情况下也可以通过硬件加速。
支持模型。还记得那是早先的问题吗?是的,这也会带来好处。根据游戏的不同,能够在背景中包含旋转球体或诸如3d对象之类的很酷的东西可能会有所帮助。您也可以使用3d制作游戏,而只是将其强制为2d透视图,这可以让您选择旋转世界几何图形,而不必做大量额外的图形来处理它。
学习3d。面对现实,很多游戏都是用3d编写的,如果您学习如何使用Unity,则可以将许多技巧应用到可能需要3d的下一款游戏中。此外,目前正在放学的很多艺术家都在接受3D建模的教学,因此找到3d艺术家比传统2d游戏艺术家更容易(无论说艺术家有什么好处。...)
有很多缺点,也有很多优点。这完全取决于您要制作的游戏类型,由您决定是否值得。Flash仍然是一个非常可行的选择,因此,如果2D引擎更适合您的游戏,则没有错。
一个很大的缺点是额外的复杂性-3D引擎并不总是像专用2D引擎一样具有对2D图形的一流支持。这意味着处理或管理2D场景需要大量工作,并且/或者您仍然必须处理3D数学和转换管道的复杂性。特别是如果您不完全了解3D图形理论的基础知识,那么当图像不显示时,您可能会迷失和困惑;如果不小心,您可能会发现“解决方案”,使您的图像出现了,但不一定正确(因此以后会咬你)。
但是,除了人类方面,只要3D引擎具备构建2D游戏所需的工具,使用它就不是一个坏主意。这些天它们变得更加普遍,并且倾向于更积极地开发,所以这是一个加号。此外,可能还有少数专注于2D的引擎或框架在幕后没有使用D3D或OpenGL,因此可能无法获得现代GPU的好处。
在这个相关的问题中,您会看到很多有关什么可能会使3D变得更困难的讨论(但是,如果只将3D引擎用于2D游戏,则只需要解决其中的一部分)。
如果可以的话,请学习Unity。Unity与开源和免费的Blender 3D配合得很好。关于如何使用飞机在Blender中进行2D建模和动画制作,有很多不错的在线教程。另外,您还可以从网上免费下载大量模型,这些模型可以免费或廉价地用作起点。
当然,这是假设您不擅长创建自己的游戏引擎。我现在最喜欢的2D游戏是《 Super Meat Boy》,它是在Flash中设计的,编程结束是自定义的……使游戏引擎可以满足特定的游戏需求。这是进行此类项目的最佳方法,因为它为您提供了很多自由。那就是说要走那条路需要很多工作。