【问题标题】:What are the "gotchas" when developing an iPhone Game? [closed]开发 iPhone 游戏时有哪些“陷阱”? [关闭]
【发布时间】:2009-07-24 07:42:37
【问题描述】:

习惯于开发商业和参考应用。现在我要做一个iPhone游戏。您可以分享哪些技巧来帮助我:

  1. 了解项目范围
  2. 定义可交付成果
  3. 指定游戏玩法和其他参数
  4. 估计开发工作
  5. 测试游戏

一个大问题,我知道。谢谢!

【问题讨论】:

  • 如果您需要提示和技巧,这应该是社区 Wiki 吗?

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


【解决方案1】:

我的回答没有遵循您正在寻找的瀑布方法响应,因为我认为您需要先学习游戏编程技能,然后才能计划、设计、实施和测试它。游戏编程与商业编程以及整个其他领域非常不同。

由于您缺乏游戏编程经验,因此您需要先了解一些概念,然后才能对游戏进行编程,更不用说在 iPhone 上进行编程了。

其中一些因素取决于您是在编写 3D 游戏还是采用 2D 平台风格。

OpenGL ES 您需要学习的第一件事是OpenGL ES programming language。这基本上是一个 3D API,它使您能够绘制 3D 图元。如果您正在编写 2D 游戏,您仍然需要使用它,因为使用 GPU 进行加速会很快。 Google 上有一些不错的教程,您应该开始学习。

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

碰撞检测 我怎么知道我的球何时撞到了墙上?答案是碰撞检测。碰撞检测的形式有很多,比如Sphere to Sphere、AABBOOBB、Convex Hulls、Triangle Mesh等。

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

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

场景图 如果您希望一次在屏幕上显示 10-20 多个敌人,您将需要编写一个场景图来管理动态绘制、逻辑以及资源的创建和删除。如果您不知道什么是多态性,则需要了解它,因为它对于您的游戏对象来说是必不可少的,并且它与场景图相关联。

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

Objective-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

【讨论】:

  • 好答案。不知道为什么这被否决了,尽管 OP 似乎不知道他们想要什么,而不是“一款 iPhone 游戏”
  • 一个忠告,如果你打算在应用商店发布你的游戏,FMOD sdk 将需要一个许可证.....但总的来说,很好的信息:)
  • 你提到有可用于 iPhone 开发的游戏引擎,你能列出一些你知道或推荐的吗? - 谢谢。
  • 在多个平台上发布 Unity3D 游戏并不难。因此,只需相对较少的努力,您就可以在 iPhone 网络(使用 Unity 的浏览器插件)本地 Mac、Linux...上发布游戏i> Wii 等...(我不为他们工作,但我喜欢 Unity :))
【解决方案2】:

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

所以,一个问题是,您“必须”开发的这款游戏是什么?如果是数独,不用担心。如果是实时 3D 太空战,那就另当别论了。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    • 2010-10-04
    • 2012-06-30
    • 1970-01-01
    • 2011-12-11
    • 2010-09-27
    相关资源
    最近更新 更多