【问题标题】:where to start for game development? UIKit vs Core Animation vs QuartzCore vs OpenGL vs cocos2D游戏开发从哪里开始? UIKit vs Core Animation vs QuartzCore vs OpenGL vs cocos2D
【发布时间】:2012-01-03 07:56:57
【问题描述】:

如果我有兴趣在 iPhone/iPAD 上进行游戏开发,对于开始研究哪种技术有什么建议吗?事实上,只要对这些技术中的每一个进行简单的说明,强调它如何适应典型的游戏开发就很好了,因为这个问题的原因是我不了解这些技术是如何结合在一起的。所以在这种情况下,它们大致适合这里:

  • UIKit
  • 核心动画
  • 石英核心
  • OpenGL
  • cocos2D

我的印象是 cocos2D 将是要走的路,而且它似乎是 OpenGL 的更简单的包装器?不确定 UIKit 与 Core Animation 与 QuartzCore 的区别在哪里?

【问题讨论】:

    标签: iphone ios opengl-es cocos2d-iphone quartz-core


    【解决方案1】:

    好吧,我会尽量简短地回答一个相当冗长的问题:这取决于。

    现在有一些更长的想法和解释 - 这很长。 如果你没有读到最后,请确保你阅读了最后几句话。

    首先我需要澄清的是,您列出的“技术”或 API 大多只与图形有关 (UIKit 除外,它也处理输入)只要你理解就可以了 图形只是其中的一部分(根据我的经验,我可能会添加“次要”) 一整场比赛。

    除了图形之外,在进行真正的游戏时,还有很多事情需要处理。 为了不过分逃避这个问题,让我简单地说几句流行语: 游戏逻辑、人工智能、资源管理、物理、交互、网络(可能)、声音等。 我的建议是买一本关于该主题的好书,然后深入研究 [1,2]。

    现在我略过了,回到你的问题:

    基本上,OpenGL 和 QuarzCore 是“在屏幕上绘制”的核心技术。所有其他技术都建立在此之上。所以理论上,如果你想去 方式,您可以单独使用 OpenGL 或 QuarzCore 实现与图形输出相关的所有内容(而您必须考虑 QuarzCore 仅是 2D 绘图,而 OpenGL 也支持 3D,而 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 和 CoreAnimiation 来处理图形,它很可能会成为一款轰动一时的游戏。它们允许通过易于使用的界面进行大量绘图,而且它们不需要太深的背景知识,并且对于小型项目来说具有足够的性能。

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

    [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 可以做的更多事情吗?
    • 我不是很喜欢 Cocos2D,但我认为它可以做 CA 可以做的事情以及更多,但在 OpenGL 而不是 Quarz 方面。所以 UIKit 和 Quarz 动画将与 CA 一起使用,其他一切都与 Cocos 一起使用 - 但正如我所说,我不确定它们提供了什么(但通常任何像样的游戏引擎都有相当好的数学库来支持它)。
    • 是的,我想到的是,不同之处在于 Cocos2D 是一个(我读得很成熟,但我无法确认)“游戏引擎”,而 CA 只是一种向 UI 添加动画的简单方法元素 - 所以这肯定是不同的。
    • 您说在使用 OpenGL 时 2D 是 3D 的一个特例。因此,如果我们想要处理图像的每像素级别(例如背景),您认为使用 OpenGL 还是 QuartzCore 更好?
    • 再一次,答案取决于(取决于你的经验、你已经拥有的东西、你更了解的东西等等......)。当您从头开始时,QuarzCore 可能更容易开始。不知道你是否可以用它来做所有你可以用 OpenGL 做的事情。是的,在 OpenGL 2D 中,所有 z 坐标都具有相同的固定值(通常,但不一定是 0)。
    猜你喜欢
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多