开发iPhone游戏时有什么“陷阱”?

时间:2009-07-24 07:42:37

标签: iphone opengl cocos2d-iphone unity3d game-engine

用于开发业务和参考应用程序。现在我必须做一个iPhone游戏。您可以分享哪些提示来帮助我:

  1. 了解项目范围
  2. 定义可交付成果
  3. 指定游戏和其他参数
  4. 估算开发工作
  5. 测试游戏
  6. 一个很大的问题,我知道。谢谢!

2 个答案:

答案 0 :(得分:36)

我的回答是不遵循您正在寻找的瀑布式方法响应,因为我认为您需要先学习游戏编程的技巧,然后才能进行规划,设计,实施和测试。游戏编程与业务编程和其他整个领域完全不同。

由于您在编程游戏方面缺乏经验,因此在编写游戏时段之前需要了解一些概念,更不用说iPhone上的一个概念了。

这些事情中的一些将取决于您是在编写3D游戏还是采用2D平台风格。

OpenGL ES 您需要学习的第一件事是OpenGL ES programming language。这基本上是一个3D API,使您可以绘制3D基元。如果您正在编写2D游戏,由于使用GPU加速,您仍然需要使用此功能。 您应该从Google开始使用一些很好的教程。

矢量数学 如果您正在做任何3D操作,您将需要了解3D矢量数学,矢量基本上用于游戏中的所有内容,相机外观方向,角色位置,速度,碰撞检测等。二维矢量(x,y)减去2D游戏编程仍然需要z组件。

碰撞检测 我怎么知道我的球撞到墙上的时间?答案是碰撞检测。有许多形式的碰撞检测,例如Sphere to Sphere,AABBOOBB,凸壳,三角网格等。

<强> AI 如何让敌人攻击我的玩家角色?人工智能是让NPC /敌人做出明智决策能力的另一个重要领域。 AI可以很简单,例如if else语句,但通常需要有限状态机或模糊逻辑才能有效。

<强>寻路 如果要将角色从A点移动到B点,同时避开敌人并移动障碍物,则需要使用寻路算法。 A Star(A *)是最受欢迎的之一。

场景图 如果您希望一次在屏幕上有10-20个敌人,则需要编写场景图代码来管理动态绘图,逻辑以及创建和删除资源。如果你不知道什么是多态,你将需要知道它,因为它对你的游戏对象必须遵守,并且它与场景图有关。

<强>物理学 位置,速度,加速度,重力和光线都使用矢量表示,您可能需要刷新物理数学以编码任何游戏。从牛顿的第二运动定律开始F = MA(力=质量*加速度)。 Bullet,ODE,Newton,Tokamak等开源物理引擎将使事情变得更容易,这意味着您不需要自己编写这些物理规则。

<强>目标-C ++ 尽管建议这是可选的。如果您不了解C ++,那么它本质上是C ++和Objective-C的混合体。由于C ++的速度和C ++中第三方库的可用性,我倾向于将C ++用于核心游戏引擎和编程。

<强>声音 如果您需要声音,您可以继续使用Apple提供的简单音频框架,但3D位置音频将需要更好的东西。我建议学习适用于iPhone的FMOD SDK。正如@Stowelly所提到的,FMOD需要获得商业发行许可,但还有其他一些你可以寻找的免版税。


使用游戏引擎 目前iPhone上有游戏引擎可以让你更容易让游戏进行,在你的情况下,虽然你仍然需要学习我上面提到的概念,但速度会更快。

以下是我所知道的一些游戏引擎:

<强> Unity3D 这可能是我所知道的最受欢迎的一个。 Unity是一个PC / Mac游戏引擎,可以让你在Mac上编写代码并编译为Windows / Linux / Mac OS X.我怀疑iPhone构建是否与其他平台直接兼容,我想你会被限制在iPhone上你开始了一个新项目。然而,该引擎的商业部署成本为199美元至399美元。

<强> Cocos2D 这是一个开源2D游戏引擎,可能对很多游戏有用。值得一看。托管在Google代码上。

以下是其他一些要查看的内容:

<强> Ston3D for iPhone

<强> OOlong Engine

<强> SIO2Engine

<强> iTGB for 2D Games

答案 1 :(得分:2)

商业应用和游戏之间的主要区别,特别是在移动设备上,是性能的重要性。提出表单并等待用户输入的应用程序可能在此期间没有做任何事情。另一方面,游戏循环一直在进行,可能还有很多。商业程序员不习惯用这些术语来思考,但是游戏会降低电池电量,不管你信不信,你实现游戏的方式会对电池的消耗速度产生很大的影响。

所以,有一个问题是,你必须“开发”这个游戏是什么?如果是数独,不用担心。如果这是一次实时3D太空战,那就是另一个故事。

如果你的商业应用程序在iPhone上,那么你可能使用了100%Objective-C。 (如果你在台式机上做C#或Java应用程序,那么欢迎管理自己的内存。)有些人会告诉你,Objective-C的运行时类型管理对于复杂的游戏来说太慢了。人们当然可以使用Cocos2D和其他引擎制作OK游戏,但这又取决于游戏。有些专业开发人员只能使用C ++甚至是C语言。