从哪里开始进行游戏开发?UIKit vs Core Animation vs QuartzCore vs OpenGL vs cocos2D

Gre*_*reg 16 iphone opengl-es cocos2d-iphone ios quartz-core

如果我有兴趣在iPhone/iPAD上进行游戏开发,那么有哪些技术可以开始研究?事实上,只是关于这些技术的一个简单的子弹,突出它如何适合典型的游戏开发将是伟大的,因为这个问题的原因是我不理解这些如何组合在一起.所以在这种情况下,这些大致适合这里:

  • UIKit的
  • 核心动画
  • QuartzCore
  • OpenGL的
  • cocos2D上

我得到的印象是cocos2D将成为可行的方式,它似乎是一个更简单的OpenGL包装器?不知道UIKit vs Core Animation与QuartzCore之间的位置是什么?

cli*_*hlt 39

好吧,我会尝试做一个相当冗长的答案:这取决于.

现在有一些更长的想法和解释 - 这很长.如果你不想读到最后,请务必阅读最后几句话.

首先,我要澄清,你已经列出的"技术"或API的大多是能够独立地图形(除UIKit中也可以用来处理输入),这是好的,只要你明白,图形只是其中的一部分(和我经验我可能会添加整个游戏的"次要".

除了图形,在进行真实游戏时还会有更多的处理.为了不得到问题的远太让我扔几流行语:游戏逻辑,AI,资源管理,物理,互动,网络(可能),声音等我的建议是得到一本好书关于这个话题并潜入[1,2].

现在我撇开了它,回到你的问题:

基本上,OpenGL和QuarzCore是"在屏幕上绘制内容"的核心技术.所有其他技术都建立在其基础之上.所以从理论上讲,如果你想采用这种方式,可以实现与图形输出与OpenGL或QuarzCore单独(一切,而你将不得不考虑一个事实,即QuarzCore是仅2D绘图,而OpenGL的支持3D也和2D是真的只是3D的一个特例).我实际上相信Quarz也建立在OpenGL之上,但我不确定.

UIKit的是建立在这些之上,并利用它基本上两件事情:1)避免重新发明轮子和b)使用户界面的创建更容易,更快,更可靠.当然,您可以通过指定四边形的坐标并将其发送到OpenGL进行处理来绘制每个按钮.然后,如果它按下按钮并调用相关的处理程序,则必须检查每个用户输入.但是,仅创建一个UIButton实例(甚至可能在IB中)并指定一个单击处理程序确实可以消除大量工作.

底线:UIKit非常适合创建用户界面.此外,它还可以与OpenGL和QuarzCore一起使用.即使在游戏中,我也将它用于iOS上的用户界面.

关于Cocos2D:这是一个建立在OpenGL之上的"游戏引擎".因此,它包含了很多你在滚动自己的基于OpenGL的引擎时必须处理的东西,即场景管理,精灵,纹理,网格,资源等.我相信它也与物理和碰撞检测库有关联. .然而,为了理解那里发生的事情,需要学习计算机图形和游戏的工作原理[1,2,3].

结论:您可以将Cocos2D用于(2D)游戏图形,使用UIKit进行用户界面.

然后CoreAnimation用于动画CoreGraphics的动画.它提供了一个简单的界面,例如,可以平滑地滑动或旋转周围的东西,封装所有必需的计算(插值,重绘等).不适用于OpenGL - 但我认为Cocos2D也会有一个包装器.

底线:用于精美的用户界面动画.

说完所有这一切,只是仅略过顶部,我不想在第一时间吓唬你.

对于你的特殊游戏(每个游戏都很特别),你可能只需要UIKit和CoreAnimiation来获取图形,它可能会成为一款重磅游戏.它们允许通过易于使用的界面进行大量绘图,而且它们不需要太深的背景知识,并且对于小型项目而言具有足够的性能.

如果您有一个很棒的游戏创意,请使用最简单的图形解决方案,以满足您和您的玩家并实现它.一旦你完成它,你仍然可以在必要时进行改进.

[1] http://www.mcshaffry.com/GameCode/

[2] http://www.gameenginebook.com/

[3] http://www.opengl.org/documentation/red_book/