精通android游戏开发的译者序
首先,这是一本关于编程的书。(也许你会说:“编程书到处都是!”)
确切地说,这是一本关于游戏编程的书。(也许你会说:“游戏编程书有什么稀罕?”)
更准确地讲,这是一本关于Android游戏编程的书。(也许你会说:“如今,Android游戏编程书也不算少了!”)
最重要的是,这是一本能够帮助你将PC上庞大精美的3D游戏轻松移植到Android平台的编程书。(也许你会说:“……哦?那倒可以试试!”)
没错,这正是本书最引人注目的地方。不同于一般的Android游戏编程书,它没有详尽介绍在这个平台上开发游戏的方方面面,而是找到了一个独特的着眼点,让你切实领会如何“事半功倍”地完成Android游戏开发。
也许你从未想过Wolfenstein 3D和Doom之类的游戏也能在Android上流畅运转,不过这个看似艰巨的任务已经被作者轻松完成,而且他会把他的这一独门绝技悉心传授给你,你手上的这本书正是传说中的“葵花宝典”。
本书还有一大特点:说得少,做得多。它总是开门见山地切入主题,指明方法,然后完全通过实例讲解如何具体应用,并有针对性地强调如何解决应用过程中存在的问题。这一点应该很受一线编程人员欢迎。
你应该已经跃跃欲试了,那么现在就开始,去了解书中的奥秘,掌握作者传授的秘技,享受Android游戏开发的乐趣吧!
全书主要由王恒、苏金国翻译,并得到王小振、李璜、刘亮、王少轩、谢连宝的大力协助。若译文有不当之处,敬请读者批评指正。
前言
本书将帮助你为Android平台创建最棒的游戏。现在讨论这个主题的书有很多,不过本书会从一个独特的视角,展示如何不费吹灰之力就将本地PC游戏轻松地移植到Android平台上。为此,书中采用了我们耳熟能详的真实例子,而且每一章都提供了大量源代码。要记住,深入学习本书之前,首先要有Java 和ANSI C的坚实基础。我会尽我所能用清晰、简单的方式,结合图形和示例代码来解释这些最为复杂的概念。每一章提供的源代码都可以帮助你深入理解概念,作为移动游戏开发人员,你还可以充分利用这些源代码来节省开发时间。
需要什么软件
为了能够充分利用本书,需要以下工具。
已正确安装Java SDK的Windows或Linux PC
我想这是显而易见的,因为大多数Android开发都用Java完成。要注意,我所说的是Java SDK,而不是JRE。由于后面各章会用到JNI头文件和命令行工具,所以SDK是必不可少的。
Eclipse IDE 和Android SDK
Eclipse是Android开发领域事实上的标准IDE。我使用了Eclipse Galileo来创建本书所有示例的工作区,当然,使用Eclipse Ganymede也完全可以。. 本书独特之处
我认为有一点非常重要,那就是要让读者理解本书的写作目标与众不同。尽管Java是Android的主要开发语言,但Google意识到,作为一个游戏平台,Android要想取得成功,非常需要混合Java/C开发,正因如此,他们发布了NDK。Google逐渐认识到,为其他移动平台(如iPhone)编写的本地游戏非常之多,Android需要支持C开发才能迎头赶上。PC游戏已经有几十年的发展历程(主要用C编写),只需使用一个简单的ARM C 编译器,就可以把几千个PC游戏移植到Android平台。正是这一点让本书独具一格。既然可以采用一种优雅的方式简单地结合这两种语言,从而大量节省时间和金钱,为什么还要费力劳神地把10万行复杂的C代码转换成Java代码呢?利用这本书,你将掌握如何有效地结合这两种语言。这就是我的目标,也正是这一点,才让本书从众多相关图书中脱颖而出。另一方面,本书还包括介绍纯Java游戏的章节,通过合理均衡地分配各部分内容,希望能同时满足Java追随者和C爱好者的需要。
Android SDK兼容性
作为一个开发人员,你可能想明确本书中代码的SDK兼容性。这是一个重要的问题,因为Android SDK 的版本频繁更新。写本书时,Google刚刚发布了Android SDK 2.0版本。书中的代码已经用以下版本的Android SDK做过测试:
SDK 2.0
SDK 1.6
SDK 1.5
SDK 1.0
总之,本书中的代码在1.0到2.0的所有SDK版本中都可以顺利运行,这也是我一直以来的目标。 本书中对纯Java 游戏和混合游戏的内容做了合理的划分,安排如下:
第1章
作为第一步,这一章首先建立一个Linux系统,完成混合游戏编译,包括获取Android源文件、提取设备系统库、建立定制编译toolchain和定制编译脚本。由于本书后面将要使用Eclipse IDE,这一章还会介绍设置这个开发环境 的有关细节。.
第2章
这一章中,通过在一个本地库上构建简单的Java应用,你将了解如何采用一种优雅的方式结合Java 和C代码。你将学习关于Java本地接口(Java Native Interface ,JNI)的一些让人欢欣鼓舞的概念,还会了解结合Java 和C时所用的API,包括如何加载本地库、如何使用本地关键字、如何生成JNI头文件,以及方法签名、Java数组与C数组、调用Java方法、产品编译和打包等内容。
第3章
从这一章开始,我们来研究纯Java游戏,首先从一个名为Space Blaster的真实游戏入手。这个游戏的目标是利用手指或键盘让一个飞船飞越星空。从这一章中,你会了解如何构建基于XML的定制线性布局、如何使用抽象类和定时器任务来模拟简单的游戏循环、如何在一个非UI线程中使视图无效,以及如何从项目资源加载sprite和声音,另外还会学习一些绘制技术,如sprite动画、简单对象绘制以及使用Paint对象设置样式和颜色。
第4章
第4章以经典街机游戏Asteroids为例,继续讨论纯Java游戏。你将学习在Android画布上绘制多边形sprite的所有知识。这个技术稍有些难度,因为Android API缺乏对多边形的支持。这一章依赖于Java语言的高度可移植性,将多边形代码从 J2SE API 移植到Android API,从而最终创建Asteroids。你可能已经注意到,这是一个主要基于多边形的游戏。此外,这一章还谈到另外一些有意思的主题,包括游戏生命周期中的步骤(即初始化、绘制和更新物理特性)、响应按键和触控事件,以及在设备模拟器上测试。
第5章
这一章讨论的是利用OpenGL绘制3D图形。这里会展示我无意中得到的一个绝妙技巧,利用这个技巧可以在Java和C中混合OpenGL API调用。Google 提供了一个3D立方体示例来展示如何在纯Java 和混合模式中使用OpenGL,我们就通过这个立方体示例说明这个概念。这个技巧将为Android 的3D开发开拓一个新的领域,从而可以将大量3D PC游戏移植到这个平台,并且大大节省开发成本和时间。
第6章
第6章和第7章可以视为一个系列,这也是本书中我个人最喜欢的部分。这一章将把Wolfenstein 3D引入Android平台——这个游戏堪称所有PC上的3D 射击游戏的“教父”。 谁能想得到,这样一个复杂的PC游戏居然可以轻而易举地移植到Android移动设备上!这一章会介绍Java和C如何和谐共处,并介绍其他一些主题,如基本游戏体系结构(展示Java 和C组件如何结合),声音、音乐、按键和触控事件的资源处理器,如何使用JNI将图形信息、视频缓冲区和声音/音乐请求级联返回到Java,以及如何进行编译和测试。
第7章
作为下一步,第7章利用PC上的里程碑式游戏Doom进一步展示有关概念。Doom是迄今为止所创建的最伟大的3D游戏,这一点绝对无可争议,它为3D图形游戏开辟了一个新领域。这一章的最终目标并不是描述这个游戏本身,而是希望你能从中了解到:将类似Doom这么复杂的PC游戏移植到Android平台是何等容易。不相信吗?可以给你提供一个证据:Doom包含10万余行C代码,但是只需增加不到200行JNI API调用以及构建移动UI所需的Java代码,就可以把它引入到Android!这一章将说明,完全不必把10万行C代码全部转换为Java代码,只需要采用巧妙的方式将这两种强大的语言完美地混合在一个“优雅”的应用中。想想看这将节省多少开发时间和成本!一定要好好读一读这一章。
2023-05-10 广告
广告 您可能关注的内容 |