Pie*_*dad 9 opengl iphone game-engine unity-game-engine cocos2d-iphone
我习惯于开发业务和参考应用程序.现在我必须做一个iPhone游戏.您可以分享哪些提示来帮助我:
我知道这是个大问题.谢谢!
Bro*_*olf 36
我的答案不是遵循您正在寻找的瀑布式方法响应,因为我认为您需要先学习游戏编程的技巧,然后才能进行规划,设计,实施和测试.游戏编程与业务编程和其他整个领域完全不同.
由于您缺乏编程游戏的经验,因此在编写游戏时段之前需要学习一些概念,更不用说iPhone上的一个概念.
其中一些将取决于您是编程3D游戏还是2D平台风格.
OpenGL ES 您需要学习的第一件事是OpenGL ES编程语言.这基本上是一个3D API,使您可以绘制3D基元.如果您正在编写2D游戏,由于使用GPU进行加速,您仍然需要使用此功能.您应该从Google开始有一些很好的教程.
矢量数学 如果您正在做任何3D操作,您将需要了解3D矢量数学,矢量基本上用于游戏中的所有内容,相机外观方向,角色位置,速度,碰撞检测等.2D矢量(x,y)减去z组件仍然是2D游戏编程所必需的.
碰撞检测 我怎么知道我的球撞到墙上的时间?答案是碰撞检测.有许多形式的碰撞检测,如球体到球体,AABB,OOBB,凸壳,三角网格等.
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代码上.
以下是其他一些要查看的内容:
商业应用程序和游戏(尤其是在移动设备上)之间的主要区别在于性能的重要性。一个放置表单并等待用户输入的应用程序可能在此期间没有执行任何操作。另一方面,游戏循环一直在进行,并且可能会做很多事情。业务程序员不习惯用这些术语来思考,但是游戏会消耗电池电量,无论你相信与否,您实现游戏的方式将对电池消耗的速度产生很大影响。
那么,一个问题是,你“必须”开发的这款游戏是什么?如果是数独,不用担心。如果是实时3D太空战斗,那就另当别论了。
如果您的商业应用程序在 iPhone 上,那么您可能使用 100% Objective-C。(如果您在桌面上开发 C# 或 Java 应用程序,那么欢迎管理您自己的内存。)有些人会告诉您 Objective-C 的运行时类型管理对于复杂的游戏来说太慢了。人们当然可以使用 Cocos2D 和其他引擎来制作不错的游戏,但这又取决于游戏。有些专业开发人员只会使用 C++ 甚至直接使用 C。