游戏开发从何开始?UIKit与核心动画(Core Animation)与石英核心(QuartzCore)与OpenGL与cocos2D哪个更适合?

16
如果我对在iPhone/iPad上进行游戏开发感兴趣,有哪些技术建议?事实上,关于这些技术的简单提示,突出它们如何适用于典型的游戏开发将是很好的。因为我不理解它们如何结合起来的原因,所以问题就在于它们大致在这里的哪个位置:
  • UIKit
  • 核心动画
  • QuartzCore
  • OpenGL
  • cocos2D
我的印象是cocos2D会是一个好选择,似乎它是OpenGL的一个更简单的封装器?不确定这是否意味着UIKit与核心动画与QuartzCore无关?
1个回答

39

好的,我会试着用简短的话来回答这个问题:这取决于你需要什么。

现在我会详细解释一些更长的想法和说明 - 这很长。如果你不打算看完,请确保你读了最后几句话。

首先,我需要澄清一下,你列出的“技术”或API主要与图形有关(除了UIKit还处理输入),只要您理解图形只是整个游戏的一部分(根据我的经验可能还比较“次要”),那就没问题了。

除了图形之外,在制作真正的游戏时还有很多其他要处理的事情。为了不让问题偏离太远,让我丢几个流行词汇: 游戏逻辑、人工智能、资源管理、物理学、交互、网络(可能)、声音等等。我的建议是找一本好书并深入了解[1,2]。

现在我快速浏览了一下,回到你的问题:

基本上,OpenGL和QuarzCore是“在屏幕上绘制东西”的核心技术。所有其他技术都是建立在它们之上的。因此,从理论上讲,如果您想要这样做,您可以仅使用OpenGL或QuarzCore实现与图形输出有关的所有内容(不过您需要注意QuarzCore仅支持2D绘制,而OpenGL同时支持3D和2D,2D实际上只是3D的一种特殊情况)。我认为Quarz实际上也是建立在OpenGL之上的,但我对此不确定。

UIKit是建立在这些技术之上的,使用它基本上有两个作用:a)避免重新发明轮子和b)使用户界面的创建更加容易、快捷和健壮。当然,您可以通过指定四边形的坐标并将其发送到OpenGL进行处理来自行绘制每个按钮。然后你需要检查每一个用户输入是否命中了你的按钮并调用相应的处理程序。但是,仅创建一个UIButton实例(甚至可能在IB中)并指定一个单击处理程序就可以减少很多工作量。

底线:UIKit非常适合创建用户界面。此外,它还可以与OpenGL和QuarzCore一起使用。即使在游戏中我也会在iOS上使用它来创建用户界面。
关于Cocos2D:这是一个建立在OpenGL之上的“游戏引擎”。因此,它包括了许多你在编写自己的基于OpenGL的引擎时必须处理的东西,例如场景管理、精灵、纹理、网格、资源等等。我相信它还有连接到物理和碰撞检测库的功能。然而要理解其中发生的事情需要学习计算机图形和游戏工作[1、2、3]。
底线:你可以使用Cocos2D来制作您的(2D)游戏图形,并使用UIKit来创建用户界面。
然后,CoreAnimation用于动画化CoreGraphics内容。它提供了一个简单的接口,例如平滑地滑动或旋转物体,封装了所有所需的计算(插值、重新绘制等)。它无法与OpenGL配合使用 - 但我认为Cocos2D也会有一个包装器。
底线:用于漂亮的用户界面动画。
说了这么多,只是浅显地介绍了一下,我并不想一开始就吓到你。
对于您特殊的游戏(每个游戏都是特别的),您可能只需使用UIKit和CoreAnimation来处理图形,这可能会成为一款畅销游戏。它们允许使用易于使用的接口进行大量绘制,并且不需要太深的背景知识,对于小型项目而言性能足够。
如果您有一个伟大的游戏想法,请使用最简单的图形解决方案来满足您和您的玩家,并实现它。一旦开始运行,您仍然可以在必要时进行改进。
[1]http://www.mcshaffry.com/GameCode/
[2]http://www.gameenginebook.com/
[3]http://www.opengl.org/documentation/red_book/

非常好 - 感谢您的概述 - 我会查看参考资料。顺便问一下,为什么有人不选择cocos2d而选择Core Animation呢?也就是说,您知道cocos2d是否可以做到Core Animation所能做到的并且更多吗? - Greg
我并不是很熟悉Cocos2D,但我认为它可以做到CA所能做的事情,并且还可以使用OpenGL而不是Quarz。因此,UIKit和Quarz动画将与CA一起使用,其他所有内容将使用Cocos - 但正如我所说,我不确定它们提供了什么(但通常任何体面的游戏引擎都有相当不错的数学库来支持它)。 - cli_hlt
1
对于这个问题,我想到的是Cocos2D是一个(我读过完整的但无法确认)“游戏引擎”,而CA只是一种简单的方法来为UI元素添加动画 - 所以这肯定是一个区别。 - cli_hlt
你说在使用OpenGL时,2D是3D的一个特例。那么,如果我们想要在像素级别上操作图像(例如背景),你认为使用OpenGL还是QuartzCore更好? - zago
答案再次取决于您的经验、已有的知识和技能等等。如果您从零开始,QuarzCore可能更容易入手。不确定是否可以使用它来完成OpenGL所能完成的所有任务。而在OpenGL中,2D是一个场景,其中所有的z坐标都具有相同的固定值(通常为0,但不一定)。 - cli_hlt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接