前言
写作初衷
从创新工场-涂鸦移动离职以后,我一直想把自己所学到的东西总结一下,以帮助更多想走上或者准备走上游戏开发这条道路上的人。很庆幸地接到了出版社的约稿,便愉快地决定要把自己一路走来所学到的知识做一个系统的总结,并尝试用一种更容易理解的方式把它们讲出来,以让更多的读者少走一些弯路,可以在尽可能短的时间内学到尽可能多的知识。
当我刚开始学libGDX游戏引擎的时候,对于很多自学的人来说,我应该是很幸运的了。因为当时身边有很多经验很丰富的同事可以请教。虽然这样,依然感觉到libGDX的教程少之又少,学习起来困难重重。整个过程大部分都是以一个初学者的水平一点一点从那晦涩难懂的英文libGDX官方教程中学习。所以当自己有能力去做些什么的时候,我很乐意用自己微薄的能力去为后来的学习者做些什么。这就是我写这本书的初衷。
作为一个优秀的游戏引擎,libGDX不知不觉也走过了好几个年头。从一开始的一个不怎么起眼的小项目发展到现在拥有众多使用者的项目,从第一个bug不少的版本发展到较为稳定的0.9x版本,再到后来的1.x版本,开发者们能够真真切切地感受到libGDX的每一步成长。
作为一个游戏引擎,libGDX支持使用Java语言进行游戏开发,这让众多爱好游戏开发,但又苦于使用门槛过高的其他语言进行游戏开发的开发者看到了希望。不仅如此,libGDX还兼容多种平台,包括Android、iOS、Html5、PC。作为一个游戏引擎,libGDX让使用Android原生进行开发的开发者们从SurfaceView中解脱出来,开发效率得到极大的提高。
本书特色
1.内容实用、详略得当,符合初学者的认知规律
本书内容涵盖了使用libGDX进行游戏开发所必须掌握的知识,其中包括但不限于:libGDX的架构、libGDX UI编程、libGDX配套的开发工具、libGDX在一些问题上的解决方案。从内容结构上非常注重知识的实用性和可操作性。必须掌握的细节处绝不吝惜笔墨、甚至细致到每一次的鼠标单击;仅需要大致了解的内容绝不铺张浪费纸张、整体结构的描述提纲挈领。这样的安排注重了只介绍初学阶段必备知识的深入了解,需要大致了解的知识也能够有所认识,这种由浅入深、循序渐进地讲授遵循和尊重初学者对知识的认知规律。
2.实例驱动,特别适合初学者阅读
本书每介绍一个基本知识点,都会通过一个难度适中的实例来帮助读者加深对该知识点的理解,从而能够举一反三。而且,每一个实例作者都会配以详细的注释,帮助读者更好地理解这个实例中每一行代码的意义,从而达到“知其然”,更要“知其所以然”的目标。
3.项目接近真实的商业开发
本书中所介绍的两个项目存在于真实的商业开发中。其中捡金币的游戏模型应用广泛。2014年百度在圣诞节期间的一些推广活动就是嵌入到这种模式的游戏中实现的。而其中的2048游戏更是在各大应用商店中广受好评。
本书内容及体系结构
第1章 libGDX简介
本章对libGDX游戏引擎进行了较为详细的介绍。包括libGDX的历史、功能、特点以及libGDX都有哪些配套的开发工具。让读者对libGDX有一个感性的认识,为后面的章节打下基础。
第2章 libGDX的架构分析
本章详细介绍了libGDX的生命周期、模块组成、libGDX中可以使用的输出日志的方式以及一些其他的辅助工具。通过本章的学习,读者对使用libGDX进行游戏开发时所编写的代码架构有了较为直观的认知,清楚每一个生命周期函数中都应该完成哪些操作。
第3章 数据存取
本章详细介绍了使用libGDX进行游戏开发时所需要用到的一些游戏的数据存取的一些方式。这一章知识的讲解不局限于libGDX,也详细介绍了Android中的操作方式。因为在开发的时候,这两种经常会配合着使用。
第4章 libGDX UI中的编程
本章详细介绍了使用libGDX来进行UI编程时所需要的知识。其中包括对SpriteBatch、BitmapFont基础类的详细介绍。这些知识有利于更好地理解和掌握本书第5章的内容。毕竟本章的知识其实是第5章所介绍到的内容的底层实现。
第5章 libGDX中的常见UI组件
本章是站在控件的高度去讲解UI编程。其中所涉及的控件包括Image、Button、Slider、SplitPane等常见又实用的控件。熟练掌握这些控件的使用,能让我们的开发更有效率,也让我们能够编写出符合我们项目需求的控件。
第6章 libGDX中的事件处理与音效
本章详细介绍了libGDX中的事件处理与音效。事件处理是整个游戏的基础,它能让游戏从一个状态切换到另外一个状态。而音效更是能为一个游戏加分不少。通过本章的学习,读者将掌握更上一层楼的技能与技巧。
第7章 资源加载器、游戏界面的跳转以及物理引擎
本章详细介绍了资源加载器、游戏界面的跳转以及libGDX中的物理引擎。资源加载器所对应的异步加载方式常常被运用到大型游戏中。游戏界面的跳转是一个游戏中状态切换自然而然的效果。而物理引擎则在体育类游戏中随处可见。
第8章 libGDX中的UI编辑器
本章详细介绍了如何让CocosStudio这个UI编辑器来为libGDX服务,从而弥补libGDX在UI编辑器上的不足。通过本章的学习能够让读者比较轻松地处理游戏元素较多的情况。
第9章 小游戏实战——捡金币
本章详细介绍了如何使用本书中所介绍到的知识去开发出一个具有较强趣味性的游戏——捡金币,该游戏模式被广泛应用各类的网页推广中。
第10章 休闲类游戏——2048
本章详细介绍了一个成熟的休闲类游戏——2048的开发。首先分析了整个项目的组成,让读者对整个游戏的架构有一个清晰的认识。接下来把这个游戏中所涉及的每一部分都在详细的介绍中实现,并在最后提出了一些优化与改进的方向。
本书读者对象
✧libGDX初级及中级开发者,了解Java语言和游戏开发的读者。
✧libGDX零基础,但具有一定的SurfaceView开发经验的工程师。
✧游戏开发零基础,但爱好游戏开发的工程师。
✧爱好游戏开发的大学生。
致谢
感谢南京邮电大学物联网学院院长孙知信教授在我编写本书时所给予的鼓励,也感谢给予过我很多帮助的同事和朋友们。
本书在编写过程中,我虽然具备一些开发经验,但是水平有限,书中不免有错误之处,望读者批评指正。