商家名称 | 信用等级 | 购买信息 | 订购本书 |
![]() |
华章程序员书库:Android游戏开发实践指南 [平装] | ![]() |
|
![]() |
华章程序员书库:Android游戏开发实践指南 [平装] | ![]() |
《华章程序员书库:Android游戏开发实践指南》由全球资深软件开发专家亲自执笔,AndEngine创始人Nicolas Gramlich作序鼎力推荐!理论知识系统而全面,讲解了Android游戏开发的方方面面;实战性强,以各种经典游戏案例为导向,全面展示了Android游戏开发的流程、方法和技巧,是系统学习Android游戏开发的经典教程。
“Rick Rogers写的这本书很棒,全书以通俗易懂的语言讲解了常见的游戏开发问题。书中以AndEngine作为技术基础来讲解游戏的制作,通过一个完整的范例游戏指导读者进行开发,整个开发过程既涵盖了初学者应该掌握的所有知识点,也为专业级游戏开发者提供了经验与心得。”
——Nicolas Gramlich,AndEngine创始人
作者:(美国)罗格斯(Rick Rogers) 译者:爱飞翔
Rick Rogers,资深软件开发工程师,拥有30余年软件开发经验,从事手机软件开发10余年,经验十分丰富。他还是一位有经验的技术作家,曾在杂志上发表过多篇技术文章,并著有另外一本关于Android应用开发的图书。
译者序
序
前言
第1章手机游戏 1
1.1手机游戏市场 2
1.2电脑游戏的世界 3
1.2.1 游戏类型 3
1.2.2适合于手机的游戏 5
1.2.3 典型的游戏组件 6
1.2.4《少女大战吸血鬼》 8
1.2.5 V3的设计 9
1.3 AndEngine范例 11
1.4总结 12
1.5 习题 12
第2章游戏要素与工具 14
2.1软件开发工具 15
2.1.1 Android SDK 15
2.1.2 AndEngine游戏引擎库 16
2.1.3 AndEngine游戏概念 17
2.1.4 Box2D物理引擎 19
2.2图形工具 19
2.2.1 矢量图工具:Inkscape 20
2.2.2位图工具:GIMP 21
2.2.3 动画捕捉:AnimGet 22
2.2.4瓦片地图创建工具:Tiled 23
2.2.5 TrueType字体创建与编辑工具:FontStruct 23
2.3声音工具 24
2.3.1 音效工具:Audacity 24
2.3.2背景音乐工具:MuseScore 25
2.4初试身手:制作启动画面 26
2.4.1创建游戏项目 27
2.4.2加入AndEngine库 27
2.4.3 加入启动画面代码 28
2.4.4用模拟器运行游戏 30
2.4.5 用Android设备运行游戏 31
2.5总结 31
2.6习题 32
第3章游戏循环与菜单 33
3.1游戏循环概述 34
3.2 AndEngine的游戏循环 35
3.2.1初始化Engine对象 35
3.2.2其他Engine类 36
3.3为V3增加菜单屏幕 37
3.3.1 AndEngine的菜单 37
3.3.2构建V3的开始菜单 40
3.3.3创建菜单 40
3.3.4 MainMenuActivity类 45
3.3.5常数与字段 46
3.3.6 onLoadResources()方法 46
3.3.7 onLoadScene()方法 46
3.3.8 createStaticMenuScene()方法与createPopUpScene()方法 46
3.3.9 onKeyDown()方法与onMenuItemClicked()方法 47
3.3.10从启动画面切换到菜单 47
3.4内存使用 50
3.5“退出”选项 50
3.6总结 50
3.7习题 51
第4章场景、图层、场景切换与实体修改器,52
4.1 AndEngine的场景 53
4.1.1 实体 组件模型 53
4.1.2 Entity类 54
4.1.3构造器 54
4.1.4 Entity类的位置相关方法 55
4.1.5 Entity类的缩放相关方法 55
4.1.6 Entity类的颜色相关方法 56
4.1.7 Entity类的旋转相关方法 57
4.1.8管理子对象 57
4.1.9 管理Modifier 58
4.1.10其他有用的Entity类方法 58
4.1.11 Layer类 59
4.1.12 Scene类 59
4.1.13 背景管理 60
4.1.14子Scene对象管理 60
4.1.15 Layer对象管理 61
4.1.16上级Scene对象管理 61
4.1.17触摸区域管理 61
4.1.18特殊Scene类 61
4.1.19用于Entity的Modifier类 62
4.1.20 EntityModifier类的通用方法 63
4.1.21位置相关的EntityModifier类 63
4.1.22缩放相关的EntityModifier类 66
4.1.23颜色相关的EntityModifier类 67
4.1.24旋转相关的EntityModifier类 67
4.1.25透明度相关的EntityModifier类 68
4.1.26延迟相关的EntityModifier类 69
4.1.27 Modifier的组合 69
4.1.28 EaseFunction 71
4.2创建游戏第1关的场景 79
4.3总结 84
4.4习题 85
第5章绘制与精灵 86
5.1快速回顾Entity类 87
5.2绘制线条与矩形 88
5.2.1 线条 88
5.2.2 矩形 88
5.3精灵 88
5.3.1 贴图 89
5.3.2效率问题 99
5.3.3复合精灵 100
5.4总结 104
5.5习题 105
第6章动画 106
6.1动画所需素材 107
6.2动画的瓦片贴图 108
6.3 AndEngine的动画 108
6.4动画范例 110
6.5将动画加入LevellActivity类 114
6.6动画制作的问题 122
6.7高级话题:从3D模型中制作2D动画 123
6.8总结 123
6.9习题 123
第7章文本 125
7.1字型与字体 126
7.2载入字型 127
7.2.1 Font类 127
7.2.2 StrokeFont类 127
7.2.3 FontFactory类 128
7.2.4 FontManager类 128
7.2.5 Typeface类 128
7.3 AndEngine中的文本 129
7.3.1 AndEngine中的文本API 129
7.3.2 桌面通知 132
7.4定制字型 133
7.5将定制字型加入V3 135
7.6总结 142
7.7习题 142
第8章用户输入 144
8.1 Android与AndEngine的输入方式 145
8.1.1 字母键盘与袖珍键盘 146
8.1.2触摸 146
8.1.3 自定义手势 152
8.1.4屏幕游戏手柄 152
8.1.5加速计 153
8.1.6位置和方向 153
8.1.7语音 158
8.2将用户输入加入V3 161
8.3总结 166
8.4习题 166
……
第9章瓦片地图 168
第10章粒子系统 193
第11章声音 213
第12章物理效果 237
第13章人工智能 272
第14章计分与碰撞 291
第15章多媒体扩展包 315
第16章游戏集成 334
第17章测试与发行 352
附录习题解答 369
前言
本书要点
这是一本讲解如何编写Android手机游戏的书。只要读者略有开发Android应用的经验,就可以通过阅读本书,将这种经验同AndEngine开源游戏引擎结合起来,制作出2D手机游戏。无论要写什么类型的游戏,本书都会提供范例,并逐步讲解它们。本书旨在让你熟悉AndEngine并且尽快发布游戏,其中许多例子都是为了支持一个范例游戏:《少女大战吸血鬼》(VirginsVersusVampires,V3)的开发。
本书开篇的第1章会介绍手机游戏的概况、流行程度、游戏的类型以及游戏策划的范例。接下来的数章,每章将会针对一个游戏开发相关的话题展开论述。
第2章讲述了用来开发游戏的工具,包括进行代码开发、美工和声音制作所用的工具。
第3章介绍了游戏逻辑循环的概念,并且演示了如何用AndEngine开始开发游戏。
第4章深入探讨图形绘制,详解了AndEngine所提供的场景切换与实体修改器机制,运用它们可使游戏的显示效果丰富多彩。
第5章再进一步深入游戏中的位图和矢量图形的绘制,演示了如何绘制精灵。
第6章介绍了构建动画精灵的简单方法,以及如何让物体动起来。
第7章给出使用AndEngine以各种方式在游戏中显示文本的范例。
第8章研究了Android游戏可用的用户输入选项,包括触摸、多点触摸、键盘、语音识别、加速度计、定位器与方向检测器。
第9章讲述了AndEngine如何载入和使用瓦片地图,以及如何用瓦片集去构造无限广阔的虚拟世界。
第10章演示了内建于AndEngine的粒子系统,并展示了如何用XML文件定义与保存粒子效果。
第11章展示了如何用AndEngine来查找、获取、修改、使用背景音乐与音效。
第12章研究了物理引擎Box2D。它与AndEngine一起,使开发基于物理交互对象的游戏更加容易。
第13章研究了可以让游戏更加智能、更加好玩的人工智能技术。
第14章搭建了一个基于游戏元素间碰撞的计分框架。
第15章探究了AndEngine可以利用扩展而完成的功能,例如创建Android活动桌布,播放MOD音乐文件,创建“增强现实游戏”,以及在多人游戏的玩家中进行通信。
第16章通过完善现有功能或增加新功能使游戏更具可玩性,并至此结束本书的范例游戏开发。
第17章讲述了为确保游戏顺利发行而需要做的事情,然后告诉读者如何发行与推销游戏。
附录提供了每章末尾习题的答案。
本书最好按顺序阅读,但如果读者觉得跳读更合适的话,那样也可以。每一个主题基本上都作为独立的概念来讲述,但是如果需要引用其他章的概念来讲述它,那么那些概念也会被提到。
对于读者来说,本书的目的很简单:玩得开心。本书的写作精神是,游戏应该是有趣的,而且开发游戏本身也应该有趣。愿你的游戏能够在AndroidMarket的“热门下载”列表中登上榜首。
本书的目标读者
如果读者迫不及待地想要为Android设备开发2D游戏,并且至少具备一些用AndroidSDK和Java进行Android应用开发的经历,那么本书就很适合你了。本书介绍了手机游戏的基本主题,并演示了如何用AndEngine游戏引擎去实现它们。要学习这些范例的话,不一定必须是个Android开发高手,但需要熟悉Android的基本概念[例如活动(Activity)、服务(Service)、意图(Intent)等],同时需要能熟练地阅读与编写Java代码、使用AndroidSDK。
致谢
衷心感谢以下人士协助笔者完成此书。
NicolasGramlich,他为了打造世界级的Android游戏引擎创立了AndEngine,并将努力工作的成果作为开源项目分享给大家(也包括每位读者在内)。Nicolas慷慨地允许我使用AndEngine作为本书的基础,并且自愿审阅了本书的草稿。他持续地完善与扩充AndEngine,并将这些改进提供给本书使用。
TrinaMacDonald,本书的组稿编辑,正是她提议写一本Android游戏开发相关的书。她是位出色的项目经理,没有她不知疲倦的辛苦工作,本书不可能与大家见面。
JamesBecwar、StephanBranczyk、JasonWei,本书的技术编辑。不可能有比他们更好的技术审校者了。他们三位令我在写书时能够本着实事求是的态度,确保技术信息的准确性,也保证了所有代码都能正确运行。
SonglinQiu是位出色的拓展编辑。本书行文清晰流畅之处,都要归功于她在审稿时提供的许多宝贵建议。如果读者发现文字有难懂之处,恐怕要怪我未采纳其中某些建议。
本书付诸刊印,要感谢生产经理JulieNahil与文字编辑JillHobbs的艰苦努力。我能不过多地分散精力,始终专注于本书的写作并最终将其完成,很大程度上要归功于他们。
OliviaBasegio身为助理编辑,做了许多工作。她将本书草稿交给合适的人员去审阅,并将其初步裁切。她也编排了本书的插图与许可信息,并在我忘记事情时提醒我。没有Olivia的帮助,我们只能看到一些零碎的资料,而不可能有一本完整的书呈现在眼前。
这里无法详尽地列出在遇到困难时鼓励我的每位朋友与家人的名字。我要特别感谢女儿AllisonJackson和KatieKehrl,她们一如既往的乐观使我相信最终能完成此书,她们用自己的生活态度为我树立了榜样。
SusieJackson,我的妻子,为我做的每件事情提供灵感,也包括写这本书。她棒极了!能够和她结婚我感到很幸运。她在生活中带给我的自信与积极态度,让我能够坐在办公室里努力创作。再次感谢你,Susie。
版权页:
插图:
3.4内存使用
趁这个机会,我们花几分钟时间来讲一个手机软件设计所面临的重要问题,那就是内存使用与垃圾收集。如果读者曾经开发过手机软件的话,应该会了解手机应用开发与桌面应用开发的一个重大差别:手机的资源很有限。这里所说的资源包括电池电量、内存、固定存储器、屏幕尺寸、处理器速度以及其他一些东西。在做手机游戏时,要始终考虑如何节省资源。
例如,在Android手机游戏开发中,内存使用与垃圾回收就是个大问题。大家都知道,游戏的Java二进制码是运行在Dalvik虚拟机上的,当其耗尽可用内存后,会调用垃圾回收器将不再被引用的对象回收掉。这个办法能够解决大部分的内存泄漏问题,但是当垃圾回收器运行时,会拖慢游戏的运行。开发者当然想极力减少系统进行垃圾回收的次数,可以尽可能多地重用已有对象来达到目的。看看源代码就会发现,AndEngine非常善于利用对象池技术来分配与回收对象,这个方法虽然不是万灵丹,但是如果运用得合理,也是非常有效的。
3.5“退出”选项
现在告诉大家一个猥琐的小秘密。其实说起来也不算什么,就是关于前一个菜单上的那个“退出”按钮的事情。大家可能知道,Android系统从来都没有真正的“退出”选项。当用户要停止(其实是暂停执行)一个程序时,Android推荐的方法是按下手机的“Back”键,这样系统就会回到主桌面。如果读者觉得这话难以理解,请在Android开发者文档(http://developer.android.com)中找到“Activity Lifecycle”这一段并看一看。应用程序可以在当前Activity类中的onPause()方法中关闭所有服务,并停止所有的计时器。
为了符合Android开发规范,自此将从菜单中除去“退出”选项。
3.6 总结
本章开头综述了游戏循环的概念,然后介绍AndEngine用以实现游戏循环的方法。在绝大多数情况下,AndEngine的游戏循环是不可见的。开发者编写代码将所要完成的任务告知游戏循环,它会自动安排执行。
AndEngine提供了许多有关菜单的类。本书给出了用于创建与管理文本菜单、图形化(精灵)菜单以及动画精灵菜单的若干方法。
范例游戏接下来要写的功能,是在启动画面结束后创建主菜单画面并显示给玩家。在写这部分代码的过程中,读者熟悉了AndEngine中菜单相关类的用法。这段代码创建了文本菜单并列出了几个菜单项,展示了文本菜单的默认行为;同时也创建了一个有若干选项的弹出式图形菜单,并比较了创建该菜单与创建文本菜单的异同。
现在大家已经掌握了基于AndEngine引擎开发游戏的基本结构,学会了如何启动游戏,如何处理不同的菜单项以及如何结束游戏。读者还了解到创建新场景与加载资源所使用的固定代码模式。现在应该研究一下游戏内容本身,以及游戏所需基本元素的细节问题了。这些将是第4章所要讲的内容。
3.7 习题
1.MainMenuActivity代码在弹出式菜单上用SlideAnimator做出了滑动效果。如果将SlideAnimator应用于静态菜单,结果会如何?请解释为何静态菜单不会如预期的那样滑动。
2.修改MainMenuActivity.java,使得每个菜单项具有不同的颜色。
3.修改MainMenuActivity.java,使得菜单项在被选中时,尺寸稍微变大一些,而不要像现在这样变成灰色。
喜欢华章程序员书库:Android游戏开发实践指南 [平装]请与您的朋友分享,由于版权原因,读书人网不提供图书下载服务