摘要: 距离上次发布翻译已经过去了两周。闲暇时间不多。译者感到很抱歉。由于近期项目的缘故,以后的翻译速度可能会更慢。还是那样,有能力的读者请阅读英文,国内好的东西(计算机相关)确实没国外的多。英文不好的读者也要尽量试着去读英文。这次是第三章的内容,讲解的是苹果公司的OpenGL ES模板项目。这次没有整理到博客中,而是写成了一个pdf文档,有兴趣的读者可以下载阅读。下载:Learning iOS Game Programming_第03章声明: 译文不可用于任何商业目的!版权归原书作者Michael Daley及译者所有。
阅读全文
摘要: 译者:老手可无视此文!新手可以大致看一下。 我们已经讲解了相关的术语及技术,现在让我们来看看在创建Sir Lamorak's Quest这个游戏时使用到的工具。 从一个开发者的角度来说,使用iPhone SDK进行开发的所有工具都可以从iPhone Dev Center(如图2.7)那里下载。本节也会涵盖到游戏开发过程中使用到的其它工具,这些工具并不能从苹果开发者网站上下载到,但我会在描述它们的时候给出相关的地址,这样你就知道去哪里获取它们。如图2.7:iPhone开发中心提供了关于在iPhone平台上进行开发的大量信息,包括入门文档、参考库及其它很有帮助的参考指南。在这个网站上你也可
阅读全文
摘要: 到目前为止,本章已经涵盖了基本的术语,当你阅读本书时,你会不时地遇到它们。在本节中,我们要讲讲在创建Sir Lamorak's Quest这个简单的游戏时所使用到的技术。Objective-C Objective-C是C语言的一个面向对象超集。因为Objective-C是C的超集,所以你不应该花费很长的时间来学习它。如果你有使用C或C++的经验,你也可以使用这些语言来创建iPhone游戏,但你需要对Objective-C有一些了解,这样你就可以很容易地使用Cocoa Touch API。Objective-C与C的重要不同点是Objective-C完全支持面向对象编程,例如使用类及类的
阅读全文
摘要: 碰撞检测就是识别一个物体与另外一个物体相碰撞的能力。我知道这听起来挺简单,但是,对于它来说,确实需要更多的内容。 当Sir Lamorak在城堡中走来走去时,我们确实不想让他穿越墙壁或门(让他在死后转化为另外一个幽灵并在城堡中出没,不是游戏设计的一部分)。我们也想知道Sir Lamorak什么时候被幽灵击中、他在什么时候从能量包处走过或幽灵在什么时候被Sir Lamorak的斧子击中。 检测碰撞的方法有很多。有些方法很简单,就是检查玩家角色所在的盒子是否与另外一个盒子(例如,幽灵或墙壁)有交集。其它一些技术可能更复杂,尤其是在你使用物理引擎时,物理引擎超出了本书的范围。这些检测技术不是...
阅读全文
摘要: 正如你在前面一章学到的,我们已经涵盖了基本的游戏设计、故事情节及Sir Lamorak's Quest的游戏组件。这是是目前为止所有重要的信息,但只不过是一个故事而已。我们现在需要看看3T:术语(Terminology)、技术(Technology)及工具(Tools),它们可以让我们把这个故事转化为一个功能全面且有趣的iPhone游戏。 注意: 这本书不会教你如何使用Objective-C或C语言,也不会教你那些你需要知道的所有其它技术;在网上有更好更详细的书籍及涵盖OpenGL与OpenAL的在线资源。我们也会讲解到一些,但是,只是讲解的详细程度只够让你理解为什么及如何使用它们。
阅读全文
摘要: 注:本节中的一些错误翻译已被修正 随着故事情节和游戏最终目标的到位,是时间去考虑一下游戏的构成了。我不得不去考虑一些事情,如,玩家如何失去生命值、如何重获生命值、如何杀死坏人以及坏人的什么东西可以阻碍Sir Lamorak前进。理清了这些问题后,我便写下了我的一些想法。作为思考过程的一部分,我想确保游戏难度不是过高也不是过低。游戏中需要一些思考及技巧。我也知道,为了让它恰到好处,需要进行多次测试。以我以往的经验,开发游戏是简单的,但平衡游戏的难易程度是有点困难的。下面的部分就是我给大家展现的游戏组成成分,虽然它们可能在游戏开发过程中被改变,但重要的是先定下这些想法并开始着手策划。时间...
阅读全文
摘要: 我热爱游戏。虽然这是一句非常简单的话,但是,把我的经历总结出来会更加不错。自从我在1982得到我的第一台计算机后,我就一直在玩游戏。Sinclair Spectum 48k(图1.1)是我向父母唠叨了数月之后的结果。在1982年圣诞节的早晨,当我撕开被纸包裹着的礼物后,我的第一台计算机就出现了。它是黑色的并带有闪闪发光的灰色橡胶按键,对于我来说,它是相当漂亮和神奇。 图1.1 我并不明白它为什么会工作起来并且是如何工作的。当我坐下来看着我的第一个游戏慢慢加载,然后显示在我的便携电视机,同时又从磁盘驱动器中听到奇怪的声音时,我就觉得我将会和计算机保持长期的关系。 在得到Spectum的...
阅读全文
摘要: 项目源码请到此处下载。 译者:在翻译时,我把function译为"方法",懂得就好,不爱无意义的讨论(你可能会说,应该翻译成"函数")。 在本章中,我们已经涵盖了许多内容,但是,在本章结束之前,我们还需要推出最后一个内容。我们已经建立了一些基本的功能,它们可以使我们创建OpenGL ES纹理、管理这些纹理并把纹理渲染到屏幕上,现在我们要看的就是我们游戏引擎中在图片渲染方面很关键的一个类。 Image类对已经创建出来并存储了相关信息的OpenGL ES纹理进行了封装,如以下内容: 1、位置(position) 2、缩放(scale) 3、旋转(rotati
阅读全文
摘要: 到目前为止, 我们已经见到了一个把一张图片转化为一个OpenGL ES纹理的类及一个帮助我们管理纹理并减少大量内存使用的类。下面要讨论的类是ImageRenderManager类,它负责把图片渲染到屏幕上。 我在本章的开头就提到过,我们会看看当使用OpenGL ES时到底是如何提高性能的。ImageRenderManager类是提高我们游戏引擎性能的基础类。 我也提到过,额外的开销会与OpenGL ES命令的使用有关联,如glDrawArrays及glDrawElements。没有什么可以阻止我们把实际的渲染代码放置到我们的Image类中,让每一个图片负责自身的渲染。但是,如果你在屏幕...
阅读全文
摘要: 我们的渲染类的设计表明,每当我们加载一个纹理时就会引起一次Texture2D实例的创建。Texture2D负责实际加载我们提供给OpenGL ES兼容纹理的图片并且存储纹理名称及以后会用到的最大s纹理坐标、最大t纹理坐标。 当渲染图片时,用到的最主要的类就是Image类。当你创建一个新的Image类实例时,Image类会使用用Texture2D来处理OpenGL ES纹理的创建。因为Image实例与Texture2D实例具有紧密的关系,就会出现多个Image实例共享相同纹理的情况。 解决这种情况的办法就是创建一个纹理管理器。这个单例类将会负责接收新纹理的请求并检查是否有纹理已经被加载。...
阅读全文