前言
笔者第一次接触Cocos2d-x是在2012年初。当时与一位朋友尝试着制作了一款小游戏,上了App Store平台。在开发中,笔者主要负责游戏美术,这其实不是笔者的长项,所以该游戏的美术效果可以用惨不忍睹来形容。虽然那时候的引擎版本只是1.x,并且开发的游戏相当失败,但通过这个游戏,笔者对Cocos2d-x产生了浓厚的兴趣。
其实Cocos2d-x算不上是一款功能超强的游戏引擎,但它很简洁、小巧,是一款轻量级的游戏引擎。大多数程序员实际上更喜欢简洁的东西,而不是庞然大物。Cocos2d-x简洁的设计结合丰富的Demo,让人可以很快上手,并能使用它开发出一些简单的游戏。其代码的开源及跨平台特性也相当诱人。Cocos2d-x本身的这些特性结合市场的需求,使其很快就成为手游开发的主流引擎之一。
在Cocos2d-x刚开始“火”的那一段时间,市面上关于Cocos2d-x的书籍还十分匮乏。笔者利用业余时间对该引擎进行了深入研究,并使用它开发了几个小游戏,也总结了一些开发经验。之后一段时间,笔者萌生了按照自己的想法写一本Cocos2d-x游戏开发图书的想法。这个想法很快便进入了实施阶段,但进展远没有想象的顺利。其原因一方面是笔者写作的速度跟不上Cocos2d-x的更新速度,另一方面是笔者的工作任务也很重,加之写作期间还开发了四五个游戏作品,这使得本来就不充裕的时间更是捉襟见肘。
的确,Cocos2d-x的更新非常频繁,并且引擎更新的同时带来了很多接口的变化,一些代码甚至需要进行重构。除了原有内容的变化改动之外,日益增加的新功能也加大了写作的难度。虽然2013年底笔者已经完成了初稿,但是回过头来阅读一遍,发现书稿难以达到自己的预期。于是笔者做了一个决定:推翻重写。在经历了几个月的重写之后,Cocos2d-x版本已经升级到了3.0。笔者发现又有许多新增功能和新特性需要重新了解和学习,于是又经历了一段时间的学习和使用,不得不决定再次对书稿做较大的改动,几乎又推翻重写了一次。从开始写作直至完成书稿,整个过程一言难尽,饱含艰辛。在写作的过程中,Cocos2d-x的书籍如雨后春笋相继面市,加上自己工作繁忙,写作时间有限,一度产生了放弃的念头。但写一本自己满意的Cocos2d-x图书的信念支撑笔者走到了最后。当然,这一切对笔者而言很有意义,也很有价值:其一是有机会能和读者共享自己的心得体会;其二是笔者自己也得到了提升。毕竟写书相对于写代码而言需要考虑的东西更多。代码写错还可以改正,而书写错则将误人子弟。
考虑到读者群体的不同,笔者将本书分为《基础卷》和《进阶卷》两个分册。《基础卷》主要是为了让读者夯实Cocos2d-x游戏开发的基础知识,适合没有经验的零基础读者阅读。《进阶卷》内容全面,且实用性很强,可以拿来就用,快速解决问题,适合想要进阶学习的读者阅读,也可以作为一本解决实际问题的手册使用。当然,对于想要全面而深入学习Cocos2d-x游戏开发的读者而言,则需要系统阅读这两本书。
本书是《精通Cocos2d-x游戏开发》的《进阶卷》,是一种实用的Cocos2d-x进阶图书,是在笔者完成《基础卷》写作之后,用了一年多的时间编写的。这一年多笔者工作繁忙,压力巨大,几乎很难在晚上10点之前下班,通常晚上一两点下班是家常便饭。最长的加班记录是到了第二天早上9点,也就是正常上班的时间。笔者在这种情况下利用大量业余时间写作完成书稿,实属不易。在写作过程中,笔者不断地将之前已完成的书稿中的一些过时内容及难以令自己满意的内容推翻重写,力求完美。
虽然工作繁忙,但笔者在工作中积累的经验也成为了《进阶卷》的宝贵素材。本书介绍了丰富的实用技巧,针对开发过程中需要用到的各种技术及可能碰到的各种问题,做了全面而深入的介绍。无论是需要解决问题的读者还是需要增长经验的读者,都能通过阅读本书有所收获。本书对读者的要求略高,需要读者熟悉Cocos2d-x,最好能有一定的开发经验。虽然在编写时笔者尽量做到了图文并茂,让内容更加通俗易懂,但对于初学者而言还是有一定的难度。所以建议初学Cocos2d-x的读者先阅读《基础卷》,以巩固好基础,然后再来阅读《进阶卷》,这样学习效果会更好。如果是有针对性地解决某一问题,读者可以阅读相应章节。欢迎读者在本书的QQ群中对阅读中的疑问进行交流和讨论。相信本书能够让每一个基础扎实的Cocos2d-x程序员成为一个经验丰富的Cocos2d-x开发高手。
本书内容特色
1.内容新颖,紧跟趋势
本书内容新颖,紧跟技术趋势,以当前主流的Cocos2d-x游戏引擎版本3.x为主进行讲解,在一些必要的地方也兼顾了早期的2.x版本的内容,并对新旧版本之间的差异做了必要说明,适合更多的读者群体阅读。
2.覆盖面广,实用性强
本书专注于解决开发过程中碰到的各种问题,介绍各种常用的开发技术,涵盖了游戏客户端开发的大部分问题。
3.追求原创,与时俱进
相较于市场上千篇一律的Cocos2d-x学习教程,本书力求做到与众不同,与时俱进。书中内容的组织不是堆砌知识点和简单地翻译技术文档,而是从学习和理解的角度出发,并结合了笔者的实际开发经验,使用绝大多数章节都是“干货满满”。
4.风格活泼,讲述准确
刻板的风格不是笔者所钟爱的行文风格。笔者更喜欢用较为简单和自由的文字和读者交流,所以本书阅读起来并不会枯燥乏味。另外,讲解的准确性是对科技图书的基本要求,只有准确的表达才能让读者不至于出现太多的理解偏差。所以笔者对书中的表述经过了反复斟酌和提炼,并采用了大量例图、举例和类比等手法,以便于读者更容易理解和掌握。
5.举一反三,扩展思维
本书并不满足于按部就班地介绍功能和API,而是从实际应用出发,扩散思维,在解决问题的同时,让读者思考问题的本质,以更深入地理解所学知识,从而达到举一反三、学以致用的效果。虽然本书介绍的是Cocos2d-x,但对技术点的介绍并不局限于Cocos2d-x,对于使用其他引擎的开发者,很多知识都是相通的,即所谓知行合一,方能真正掌握知识。
本书内容及知识体系
第1篇 实用技术篇(第1~16章)
本篇深入介绍了Cocos2d-x游戏开发的各种实用技术,涵盖了热更新、加密解密、骨骼动画、调试技巧、Shader特效、物理引擎、分辨率适配等实用的技术点。读者可以根据自己的需求和兴趣挑选本篇的章节进行阅读。
第2篇Lua篇(第17~22章)
本篇介绍了在Cocos2d-x中使用Lua开发的技巧,包含了Lua的基础知识,以及在Cocos2d-x中如何使用Lua,分析了Quick-Cocos2d-x框架和原生Lua框架的区别。
第3篇 网络篇(第23~31章)
本篇介绍了如何使用Cocos2d-x开发网络游戏,包含了网络基础知识的讲解,以及弱联网、强联网、局域网这3种网络游戏的前后端开发,并提供了一个简易横版实时对战游戏的Demo,相信读者可以在Demo中更好地了解网络游戏的开发知识。
第4篇 跨平台篇(第32~36章)
跨平台开发是Cocos2d-x程序员所必须掌握的知识,初次进行跨平台移植的读者难免会遇到不少问题,本篇详细介绍了iOS和Android平台下的开发和打包,涵盖了丰富的知识点,如证书签名、ABI、JNI等技术。打包也不是简单地罗列操作步骤,对打包过程中遇到的各种问题都会追本溯源。另外本篇还介绍了如何使用AnySDK在iOS和Android下快速接入第三方SDK。
本书阅读建议
由于Cocos2d-x游戏引擎是基于C++的,所以一些基础的C++知识是必须知道的。假如读者完全没有任何编程方面的经验,则不适合阅读本书。
书中部分章节的内容可能较为深入,如果读者对这部分内容一时难以理解,可以先跳过而阅读后续章节,等读完后续章节再回头阅读这部分内容,也许就豁然开朗了。如果是为了解决某个问题或者系统学习某个技术点,这种有针对性的阅读效率会更高。
本书中的部分例子引用自Cocos2d-x引擎自带的TestCpp,本书的配套资源中也提供了本书的代码下载方式,读者在学习的过程中可以参照TestCpp中的例子。
本书读者对象
❑ 有一定Cocos2d-x游戏开发经验的人员;
❑ Cocos2d-x开发人员;
❑ 想系统学习Cocos2d-x的程序员;
❑ 想丰富Cocos2d-x开发经验的程序员;
❑ 想开发跨平台手机游戏的人员;
❑ 从其他开发转向Cocos2d-x的程序员;
❑ 大中专院校的学生和社会培训的学员。
本书配套资源获取方式
本书涉及的源代码等资源需要读者自行下载。请读者登录清华大学出版社网站www.tup.com.cn,然后搜索到本书页面,在页面上找到“资源下载”栏目,然后单击“课件下载”或者“网络资源”按钮即可。读者也可以在笔者的github中获取,网址为https://github.com/wyb10a10。
本书作者
本书由王永宝主笔编写。其他参与编写的人员有欧洲、吴穗勇、孙世志、吴穗智、李小妹、周晨、桂凤林、李然、李莹、李玉青、倪欣欣、魏健蓝、夏雨晴、萧万安、余慧利、袁欢、占俊、周艳梅、杨松梅、余月、张广龙、张亮、张晓辉、张雪华、赵海波、赵伟、周成、朱森。
本书的编写对笔者而言是一个不小的挑战,虽然笔者投入了大量的精力和时间,但只怕百密难免一疏。若读者在阅读本书时发现任何疏漏,希望能及时反馈给我们,以便及时更正。联系我们请发邮件至wyb10a10@163.com或bookservice2008@163.com,也可以加入本书的QQ交流群83177510,交流学习心得,解决学习中遇到的各种问题。
最后祝各位读者读书快乐,学习进步!
编著者