9

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

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

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

4

2 回答 2

36

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

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

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

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

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

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

AI 如何让敌人攻击我的玩家角色?人工智能是另一个让 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 代码上。

这里有一些其他的检查:

iPhone 版 Ston3D

乌龙引擎

SIO2引擎

用于 2D 游戏的 iTGB

于 2009-07-24T07:45:49.157 回答
2

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

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

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

于 2009-10-06T14:48:45.737 回答