具体描述
钟迪龙所著的《Cocos2d-x游戏开发之旅(附光盘)》介绍Cocos2d-x的基础知识:基本知识、基本结构、控件、动作以及屏幕触摸事件的使用。介绍Cocos2d-x更高阶的内容,包括渲染效率的提高、动画、TexturePacker图片打包、Tiled地图游戏实例、定时器、函数回调、内存管理、数据保存、Csv文件读取。介绍Lua、有限状态机启蒙知识和应用。分享基于Cocos2d-X的自定KUI模块实现思路和实现过程。详细讲解塔防游戏《卡牌塔防》开发思路和过程。分享常见错误和解决方案。
作者简介
作者从事手机网游开发多年,曾在创业公司中打拼了两年,参与Android手机RPG+SLG网游开发,并担任客户端主程,负责客户端框架搭建和逻辑功能开发。开发的游戏曾以《群侠三国》、《英雄传》为名在不同平台上运营。
作者喜欢技术交流,在一篇又一篇的文章发布中,形成了独具特色的语言风格,以通俗且生动有趣的文字与游戏开发爱好者分享开发心得。
目录信息
1.1 出场人物介绍
1.2 入学要求——本书适合人群
1.3 这内容有点糟糕——本书风格
1.4 你需要这些技能——学Cocos2d-x需要什么知识
1.5 我们为什么要学Cocos2d-x
1.6 先给我们的代码找个温馨的家——环境搭建
1.6.1 紫色风暴之VS2010
1.6.2 我的Cocos2d-x版本
1.6.3 看看前辈们的毕业设计——运行官方Demo
1.7 广告时间——提供一些学习资源
第2章 不离不弃的HelloWorld
2.1 简单到无法想象——直接运行HelloCpp项目
2.2 新建Cocos2d-x项目遇到的麻烦——成功新建一个HelloWorld
2.2.1 创建Cocos2d-x项目
2.2.2 解决编译报错的方案1——直接复制源文件
2.2.3 解决编译报错的方案2——修改项目配置
2.3 HelloWorld,没有想象中的简单——简单解析HelloWorld
2.3.1 HelloWorld是如何显示到窗口的
2.3.2 场景其实不是真正的场景
2.4 实例来了
第3章 我们来学习怎么爬行
3.1 环游世界——场景
3.2 一切的主宰——导演
3.2.1 加载第一个场景
3.2.2 简单的切换场景
3.2.3 包含特效的切换场景
3.2.4 赠送的——推进和弹出场景
3.3 你走你的,我走我的——层
3.4 比对象还要可爱的对象——精灵来了
3.5 我得下命令——菜单
3.6 当个背包客——节点
第4章 我们来学习怎么走路
4.1 吉他独奏《天空之城》——播放声音
4.2 控件篇1——我最爱的九妹和按钮事件
4.2.1 你好,九妹——可拉伸图片
4.2.2 解决使用extensions库时编译报错的问题
4.2.3 九妹和按钮搭配
4.2.4 丰富多彩的按钮事件
4.2.5 啰嗦一下——CCControlButton特别的小功能
4.3 控件篇2——我不是DJ之圆形音量按钮
4.3.1 圆形音量按钮
4.4 控件篇3——我要战斗之血量条
4.4.1 又是一个音量控制按钮
4.4.2 我要的血量条
4.5 动作篇1——简简单单的运动
4.5.1 你想去哪,你想走多远——CCMoveTo和CCMoveBy
4.5.2 我要减肥——CCScaleTo和CCScaleBy
4.5.3 卡牌翻转特效——用CCScaleTo就可以实现
4.5.4 闪亮登场——CCBlink
4.6 动作讲解2——更复杂的运动
4.6.1 我要你按照我的路线走——CCBezierTo和CCBezierBy
4.6.2 我没让你停,重复动作——CCRepeatForever
4.6.3 动作一起做,一边走一边转一边跳——CCSequence
4.7 动作讲解3——动作监听
4.7.1 小若,到家了告诉我一声——动作结束监听
4.7.2 动作家族族谱
4.8 屏幕触摸事件
4.8.1 屏幕事件初探
4.8.2 复数形式的函数——每个CCLayer都能获取屏幕事件
4.8.3 单数形式的函数——截断事件,一个CCLayer的垄断
第5章 是时候跑起来了——《LittleRunner》
5.1 这是一个什么游戏
5.2 找个主角回来——创建主角精灵
5.2.1 创建筛选器
5.2.2 创建实体基类
5.2.3 创建主角类
5.2.4 创建游戏场景
5.2.5 修改游戏窗口大小
5.3 其实她不想跑——创建无限滚动地图
5.3.1 每一帧都可以操作——scheduleUpdate初探
5.3.2 翻滚吧,地图——地图无限滚动
5.4 开心的时候——让主角跳起来
5.4.1 CCControlButton的应用——创建跳跃按钮
5.4.2 CCJumpBy的应用——给主角添加跳跃动作
5.5 金钱诱惑——加入怪物
5.5.1 怪物诞生
5.5.2 怪物巢穴——创建怪物管理器
5.5.3 贪婪的主角——怪物碰撞检测
5.5.4 疼了就退后——增加主角受伤时的动作
5.6 监控一切——创建分数标签、血量条等属性对象
第6章 精灵来了第二季
6.1 一大波精灵来袭——大量精灵单独绘制的缺陷
6.2 把相同的精灵装上车——使用CCSpriteBatchNode优化绘制
6.2.1 一次渲染——CCSpriteBatchNode的特别之处
6.2.2 什么是纹理——CCTexture简单解说
6.3 遇到不同的精灵怎么办——TexturePacker工具使用
6.3.1 同一张图片,同一个纹理
6.3.2 将多张图片打包到一起
6.3.3 加载打包后的图片
6.4 是动画,不是动作——CCAnimation
6.4.1 用打包前的图片创建动画
6.4.2 用打包后的图片创建动画
6.4.3 额外赠送——动画创建辅助类
第7章 游戏实例之《跑跑跑》
7.1 更丰富的世界——使用Tiled地图
7.1.1 世界诞生——创建跑步场景
7.1.2 Tiled地图来了——使用Tiled Map Editor创建地图文件
7.1.3 你报错了吗——Tiled Editor常见路径错误
7.2 嘿,培养新人——创建新的主角
7.2.1 主角诞生——创建实体类和主角类
7.2.2 固定主角出生点——对象层的使用
7.2.3 让主角跑——添加主角动画
7.3 更智能的主角——添加角色控制器
7.3.1 创建控制器基类
7.3.2 带着它就能跑——主角移动控制器
7.3.3 焦点是主角——让地图随着主角滚动
7.4 更多的内容
7.4.1 让主角上下移动——三方移动控制器
7.4.2 添加障碍物——Tiled障碍层的使用
7.4.3 添加能吃的物品以及胜利条件
第8章 用多线程做定时器?你疯了——schedule很强大
8.1 我爱单线程——schedule介绍
8.2 每一帧都有我——scheduleUpdate和update
8.3 定时器可以这么做——schedule和回调函数
8.3.1 不调用update函数,调用自己的函数
8.3.2 真正的定时器
8.4 让一切都停下来——unSchedule
8.5 触发器可以这么做——scheduleOnce和回调函数
8.6 额外赠送,我总是很关注我暗恋的女孩——观察者模式
8.6.1 你喜欢谁?我帮你留意——观察者模式扫盲
8.6.2 Cocos2d-x提供的观察者模式工具类——CCNotificationCenter
8.6.3 addObserver和postNotification函数传递数据的区别
8.6.4 额外赠送——自己实现简单的观察者
第9章 野外生存训练
9.1 师父走了,你怎么办——学会查看官方Demo
9.2 迟早都要学会——学习查看Demo源代码
9.3 别忘了开源——学习查看Cocos2d-x源代码
9.3.1 为什么addObserver和postNotification不能同时传递数据
9.4 物竞天择,没用的就要被淘汰——retain和release
9.4.1 为什么会有retain
9.4.2 真正的凶手autoRelease
9.4.3 看代码实际点
9.4.4 原理来了
9.4.5 实际情况
9.4.6 倒底什么时候要retain
9.5 再传授几招
9.5.1 在调试项目时,跟踪并进入Cocos2d-x的源码
9.5.2 什么?你忘了保存记忆?我们一起十年了啊——保存数据
9.6 我能摆脱编译的噩梦——读取Csv配置文件
9.6.1 什么是Csv文件——Csv格式文件扫盲
9.6.2 如何创建一个Csv文件
9.6.3 预热——编写字符串工具类
9.6.4 辅助工具——编写文本读取工具类
9.6.5 进入主题——编写Csv文件读取工具类
……
第10章 睡觉的时候不要吃东西——有限状态机
第11章 我比Csv更厉害——强大的Lua
第12章 额外奉献,状态机代码生成工具——SMC
第13章 自力更生——自己写一个UI模块
第14章 倾情奉献——因为偷懒而诞生的《卡牌塔防》游戏(上篇)
第15章 倾情奉献——因为偷懒而诞生的《卡牌塔防》游戏(下篇)
第16章 倾情奉献——因为偷懒而诞生的《卡牌塔防》游戏(终结篇)
第17章 额外的一些东西
· · · · · · (收起)
读后感
用户评价
说实话,我最欣赏的是作者在处理复杂技术点时的那种“庖丁解牛”般的功力。比如,关于坐标系和向量运算那几章,本来是我最头疼的部分,涉及到大量的数学直觉。以往的书籍通常直接给出公式,然后让你硬背硬套,结果就是代码跑起来了,但我压根不知道为什么会这样移动。然而,在这本书里,作者似乎带着你走进了游戏引擎的底层逻辑,他会用非常生活化的比喻来解释矩阵变换,比如想象一个透明的玻璃板在屏幕上移动、旋转,数据是如何影响最终画面的。更妙的是,他并非停留在理论层面,而是立刻给出了一个可以实时观察效果的小Demo源码。我一边看书,一边在自己的电脑上编译运行,发现只要稍微调整书中的几个参数,屏幕上物体的行为就发生了预期的变化,这种即时反馈机制极大地增强了我的学习动力和对知识的掌握感。这种“理论-比喻-实践”三位一体的讲解模式,让原本高冷的引擎底层知识变得触手可及,是我认为这本书最具价值的地方。
这本书的实战案例选择非常巧妙,它们既不是那种简单到幼儿园水平的“弹球”,也不是那种复杂到需要专业美术团队的“3A”大作。作者选择的几个案例,比如一个基于物理引擎的解谜小游戏,以及一个简单的平台跳跃闯关游戏,都恰好卡在了“能激发兴趣”和“能完整学习核心流程”的黄金分割点上。通过完成这些项目,我得以系统地接触到事件处理机制、碰撞检测的优化、粒子系统在特效中的应用,甚至是简单的AI行为编写。最让我印象深刻的是,当我们在实现一个道具收集功能时,作者不仅给出了实现代码,还详细分析了如果项目规模扩大后,如何优化数据结构以避免性能瓶颈。这种前瞻性的指导,让我明白写代码不仅是让它“能跑”,更重要的是让它“能用长久”,这对于任何一个想从兴趣走向专业的人来说,都是宝贵的经验传承。
这本书的封面设计相当吸引人,那种带着一点复古未来感的像素风,立刻就勾起了我对早期街机游戏的热爱。我拿到手的时候,首先注意到的是它纸张的质感,摸起来很厚实,内页印刷色彩鲜明,即便是复杂的代码截图也能看得清清楚楚,这对于需要频繁对照代码学习的读者来说,简直是福音。我不是科班出身的程序员,之前尝试过好几本编程入门书,但它们要么过于理论化,让人望而却步,要么就是实例太简单,学完后感觉根本无法应用到实际项目中。这本书的开篇并没有急于抛出晦涩的C++语法,而是从一个非常直观的游戏概念入手,引导我们理解2D游戏的基本构成要素,比如场景管理、精灵动画的原理。作者似乎非常懂得初学者的心理障碍,他用一种讲故事的方式,把原本枯燥的面向对象概念融入到游戏角色的创建过程中,让我感觉自己不是在“啃书本”,而是在一步步“搭建”我的第一个小游戏世界。这种循序渐进,并且兼顾了理论深度与实践可操作性的编排方式,是我此前阅读其他技术书籍时极少见到的体验。
我是一个典型的“遇到问题就卡住”的学习者,看书的时候总会产生无数的“如果……怎么办?”的疑问。这本书最让我感到惊喜的是它对疑难杂症的预判和解答。在每一章的末尾,作者都会设置一个“常见陷阱与调试技巧”的环节。这可不是那种敷衍的问答,而是真正针对新手在实际操作中会遇到的坑。比如,关于内存泄漏的排查,书中提供了一套非常系统化的日志记录和分析流程,甚至配有截图指导如何使用IDE的内置工具进行追踪。这使得我在遇到运行时崩溃或者帧率骤降时,不再像无头苍蝇一样乱试,而是有章可循地去定位问题根源。这种“未雨绸缪”的写作策略,极大地减少了学习过程中的挫败感,让我在遇到困难时,也能保持学习的热情和信心。可以说,这本书更像是一位经验丰富的老前辈,在你身边耐心地带着你攻克每一个难关,而不是一份冷冰冰的官方文档。
这本书的排版布局简直是艺术品级别的,这在技术书籍中是相当罕见的。很多技术书为了塞下更多内容,字体小得像蚂蚁,代码块和文字挤在一起,阅读起来非常累。但《Cocos2d-x游戏开发之旅》在视觉设计上投入了极大的心思。代码块被清晰地用灰色背景区分出来,关键函数和变量总是被高亮显示,即使用眼快速扫过,也能抓住重点。更别提那些流程图和架构图,它们不再是生硬的方框连接线,而是结合了游戏主题元素的插图,例如用迷宫来表示状态机跳转,用船的航线图来解释路径规划。这种“有温度”的排版,让长时间的阅读变得不再那么煎熬。我常常是抱着消遣的心态打开它,结果不知不觉间就沉浸了进去,不知不觉间就敲完了好几页代码。不得不说,作者团队在书籍的“用户体验”上,下了远超预期的功夫,这体现了一种对读者负责任的态度。
Chapter5_4_LittleRunner01没有创建scene();Chapter5_4_LittleRunner003创建了jump()和jumpEnd()函数,但是主函数里没有调用代码.作者应该细心一点
很好的入门书
Chapter5_4_LittleRunner01没有创建scene();Chapter5_4_LittleRunner003创建了jump()和jumpEnd()函数,但是主函数里没有调用代码.作者应该细心一点
Chapter5_4_LittleRunner01没有创建scene();Chapter5_4_LittleRunner003创建了jump()和jumpEnd()函数,但是主函数里没有调用代码.作者应该细心一点
很好的入门书