具体描述
《实战Flash游戏开发》由Christopher Grffith所著,细致深入地阐述
了Flash 游戏开发的完整过程,尤其针对Flash CS4与ActionScript 3,展
开介绍了如何充分调动各种元素,简化流程,高效创建有用代码,进而开发
制作出高水准的Flash游戏。
《实战Flash游戏开发》适用于Flash游戏设计开发人员以及任何想做网
络游戏的程序员。
点击链接进入新版: 实战Flash游戏开发(第2版)
作者简介
Christopher Griffith Blockdot公司高级游戏开发师,拥有近十年的Flash应用及游戏开发经验,客户包括乐高、微软、美国航空公司、百事等知名企业。
目录信息
1.1 一些基础知识 1
1.2 常见游戏类型 1
1.2.1 冒险类游戏 1
1.2.2 动作类游戏 1
1.2.3 益智解谜类游戏 2
1.2.4 词汇类游戏 2
1.2.5 策略与模拟经营类游戏 3
1.2.6 角色扮演游戏 4
1.2.7 驾驶类游戏 4
1.2.8 桌面式和卡牌式游戏 4
1.3 常用开发术语 5
1.3.1 伪码 5
1.3.2 算法 5
1.3.3 过程式编程 5
1.3.4 面向对象编程 5
1.3.5 设计模式 6
1.3.6 类 6
1.3.7 Public、Protected、Private和Internal 6
1.4 游戏特有的开发术语 7
1.4.1 人工智能 7
1.4.2 游戏循环(或者说“主循环”) 7
1.4.3 游戏视角 8
1.4.4 卷动背景 8
1.4.5 区块式游戏 8
1.5 Flash 程序开发术语 8
1.5.1 舞台 9
1.5.2 显示对象 9
1.5.3 事件和侦听器 9
1.5.4 包 9
1.5.5 创作时事件、编译时事件及运行时事件 9
1.6 醒一醒 10
第2 章 最佳编程工具 11
2.1 倒叙几句 11
2.2 Flash 的一些优点 11
2.2.1 玩家占有率 12
2.2.2 灵活性 12
2.2.3 上市速度 12
2.2.4 美观性 12
2.3 白璧微瑕 13
2.3.1 缺点:代码编辑器 13
2.3.2 解决方案:使用附加工具 13
2.3.3 缺点:性能及内存管理 14
2.3.4 解决方案:使用第三方解决方案或自己创建 14
2.3.5 缺点:内容调试 15
2.3.6 解决方案:使用跟踪输出与自定义工具 15
2.3.7 缺点:缺乏内建游戏库 16
2.3.8 解决方案:自己开发工具或寻找开源工具 16
2.4 不要和Flash 对抗 17
2.5 Flash 所能创建的内容 17
2.5.1 动画与游戏 17
2.5.2 应用程序与游戏 17
2.5.3 Flash 与Flex 18
2.5.4 网站与游戏 18
2.5.5 Flash 与传统游戏开发 19
2.6 最佳创作工具 19
第3 章 一份计划抵得上1000 片阿司匹林 20
3.1 用一两句话来描述游戏 20
3.2 为包含所有游戏界面的游戏流程列出提纲或绘制线框图 20
3.3 概述游戏所使用的核心机制 21
3.4 列出所需的资源清单 23
3.5 列出游戏所需的技术清单 24
3.6 用UML 建模工具设计类图(可选) 26
3.7 规划步骤的快速回顾 27
第4 章 //太棒了! 28
4.1 适当的提醒 28
部分1 类 28
4.2 包 29
4.3 类就像文件一样 29
4.4 构造函数 29
4.5 常量、变量与方法 29
4.6 getter 与setter 方法 31
4.7 类标识符 32
4.8 继承与多态 33
4.9 接口 34
4.10 将Flash 中的资源与类链接起来 36
4.11 类与基类 37
4.12 使用没有类文件的导出元件 38
4.13 getDefinitionByName 与Casting 39
部分2 事件 40
4.14 dispatchEvent 方法 40
4.15 addEventListener 方法、removeEventListener 方法以及事件流程中的各阶段 41
4.16 事件的传播与取消 43
4.17 自定义事件 43
部分3 错误 45
4.18 try、catch、finally 45
4.19 自定义抛出错误 46
部分4 数据结构与列表 47
4.20 Object 47
4.21 数组 48
4.22 Vector 50
4.23 Dictionary 51
4.24 ByteArray 51
4.25 到底该使用哪种列表 51
4.26 自定义数据结构 52
部分5 让所有人都能读懂你的注释 52
4.27 底线 53
部分6 Flash 为什么会这么做 53
4.28 事件流程 53
4.29 帧脚本 54
4.30 使用多个SWF 文件 56
4.31 内存垃圾回收 57
4.32 本章小结 59
第5 章 管理资源与使用图像 60
5.1 小议组织库元件 61
5.2 使用图像 61
5.3 常用的光栅图像格式 62
5.3.1 压缩 65
5.3.2 平滑 66
5.3.3 解块 67
5.3.4 外部的图像编辑工具 67
5.4 要点 67
第6 章 让它动起来:ActionScript 动画 68
6.1 几个术语 68
6.1.1 缓动 69
6.1.2 序列 69
6.2 是否补间?这是个问题 69
6.3 一个由脚本驱动的简单射击游戏 70
6.3.1 Projectile 类 70
6.3.2 SimpleShooter 类 70
6.4 记忆力游戏:补间动画 72
6.4.1 MemoryCard 类 73
6.4.2 Memory 类 73
6.5 本章小结 76
第7 章 如雷贯耳:如何使用音频 77
7.1 常用音频格式 77
7.2 常用导出设置 78
7.3 使用外部文件 80
7.4 声音编辑工具 80
7.5 编写音效脚本 81
7.5.1 理解与声音有关的类 81
7.5.2 SoundEngine 类 82
7.5.3 使用SoundEngine 类 91
7.5.4 SoundMixer 类 92
第8 章 重塑“视频游戏” 93
8.1 视频编解码器 93
8.2 外部视频应用:过场与菜单 93
8.3 CutsceneManager 类 96
8.4 时间轴上的视频 100
8.4.1 文件尺寸 100
8.4.2 库:易于使用与杂乱无章 100
8.4.3 性能表现 100
8.4.4 自由的动态模糊 101
8.5 建立内部视频 101
8.6 本章小结 104
第9 章 XML 与动态内容 105
9.1 引入数据:理解URLLoader 类 105
9.2 XML 105
9.3 E4X 106
9.4 纵横字谜 106
9.4.1 CrosswordTile 类 109
9.4.2 CrosswordClue 类 113
9.4.3 CrosswordPuzzle 类 114
9.5 内容并非只有现成的:纵横字谜编辑器 122
9.6 数据传送 123
9.7 示例:XML与Flash Vars 的应用对比 124
9.8 本章小结 125
第10 章 就是一个词儿:数学 126
部分1 Math 类 126
10.1 几何学及三角学 126
10.2 简要介绍一下弧度与pi 值 130
10.3 Flash 中的3D 133
13.1.1 位置 134
13.1.2 旋转 134
13.1.3 透视投影 134
10.4 简单的TunnelShooter 范例 135
10.4.1 基本机制 136
10.4.2 所需类文件 136
10.4.3 Tunnel 类 136
部分2 物理学 145
10.5 标量 145
10.6 矢量 146
10.7 Vector3D 类 146
10.8 位移 146
10.9 速度 146
10.10 加速度 147
10.11 摩擦力 147
10.12 惯性 147
10.13 物理仿真与假象 147
10.14 真实性与期望值 147
10.15 范例:顶视角的驱动引擎 148
10.15.1 Vehicle 类 148
10.15.2 Time 类 149
10.15.3 Game 类 150
10.16 范例:顶视图且带有漂移效果的赛车游戏 153
10.17 本章小结 155
第11 章 别碰我 156
11.1 能力与需求 156
11.2 hitTestObject——最基本的检测方法 156
11.3 hitTestPoint——更先进的检测方法 157
11.4 半径/距离检测法——极适合圆形的检测方法 161
11.5 矩形边框检测法 162
11.5.1 新的Enemy 类 163
11.5.2 SimpleShooterCollisions类所新增的内容 164
11.5.3 该方法的一些不足之处 165
11.6 这些办法都不灵?那就用鸡尾酒疗法 167
第12 章 建筑师——由来已久的梦想 168
12.1 OOP 概念 168
12.1.1 封装 168
12.1.2 继承 169
12.1.3 多态性 169
12.1.4 接口 169
12.2 游戏开发中的实用OOP 技巧 170
12.3 单例模式:一种良好的文档模式 171
12.4 本章小结 173
第13 章 驿馆闲谈 174
13.1 简单地进行封装——类与容器 174
13.2 将有关数值存储到变量与常量中 175
13.3 不要信任舞台 176
13.4 不要使用不理解或不适用的架构或设计模式 176
13.5 要把握好向别人展示自己作品的最佳时机 177
13.6 本章小结 177
第14 章 MixUp——一个简单的游戏引擎 178
14.1 主文档 180
14.2 MixUP 类 180
14.3 Title 类 182
14.4 RulesPanel 类 183
14.5 Game 类 184
14.6 接口 186
14.7 GameBoard 类 188
14.8 SourceImageEmbedded 类 194
14.9 GameHistory 类与Results 类 196
14.10 SourceImageCamera 类 198
14.11 本章小结 200
第15 章 技术大融合:制作平台游戏 201
15.1 平台类型游戏 201
15.2 数据流程 202
15.3 游戏流程与功能 202
15.3.1 游戏背景设定 203
15.3.2 关卡设计及墙壁的作用 203
15.3.3 出口(portal) 203
15.3.4 玩家角色 203
15.3.5 物品 203
15.3.6 敌人 204
15.4 关卡文件格式以及资源结构 205
15.4.1 关卡的XML 文件 205
15.4.2 资源SWF 文件 207
15.4.3 游戏所用类的概述 208
15.5 引擎类 208
15.5.1 ISprite 接口 209
15.5.2 IPlayer 接口 209
15.5.3 IEnemy 接口 210
15.5.4 IItem 接口 210
15.5.5 IPortal 接口 211
15.5.6 IWall 接口 211
15.5.7 PlatformerEvent 类 212
15.5.8 PortalDestinations 类与PortalRequirement 类 212
15.5.9 PlatformerConfig 类 213
15.5.10 GridReference 类 213
15.5.11 CollisionGrid 类 215
15.5.12 PlatformerEngine 类 216
15.6 游戏实现类 230
15.7 资源类 232
15.7.1 Player 类 233
15.7.2 Enemy 类 234
15.7.3 Item 类 235
15.7.4 Portal 类与Wall 类 236
15.7.5 游戏中的资源 237
15.8 本章小结 239
第16 章 独乐不如众乐:开发多人游戏 240
16.1 RTMFP 240
16.2 Stratus 240
16.3 MixUp 多人游戏 241
16.3.1 游戏所用的类 241
16.3.2 SourceImageWebCamera 类 242
16.3.3 ConnectionPanel 类 245
16.3.4 Title 类 246
16.3.5 Results 类 247
16.3.6 MixUp 类 248
16.4 本章小结 250
第17 章 找到就干掉:猎虫行动 251
17.1 Bug 251
17.1.1 trace 251
17.1.2 FlashTracer 253
17.1.3 调试器 254
17.2 性能与优化 255
17.2.1 FrameRateProfiler 类 256
17.2.2 MemoryProfiler 类 258
17.2.3 Sample 包 259
17.3 本章小结 262
第18 章 当心恶贼 263
18.1 恶意使用 263
18.1.1 关闭不再需要的事件侦听器 263
18.1.2 为所要接受的输入设置最低延时 264
18.1.3 一经发现恶意使用就将游戏关闭264
18.2 数据保护 264
18.2.1 内存攻击 264
18.2.2 数据的散列加密 265
18.2.3 拆解数据 267
18.2.4 插入误导性数据 267
18.2.5 保护要发送与接收的数据 268
18.2.6 保护传输数据安全的散列加密法 268
18.2.7 矩阵加密法 268
18.3 SWF 文件保护 269
18.4 本章小结 269
附录A 摄像头与麦克风 270
附录B 本地化 276
附录C JSFL——情人们的JavaScript 283
后记 289
· · · · · · (收起)
读后感
用户评价
这本书的配套资源和示例代码管理得极其出色,这一点在很多技术书籍中常常被忽视。作者不仅提供了清晰的章节对应代码,而且在代码库中保留了大量的注释和版本迭代的痕迹,这使得学习过程中的调试工作量大大减少。更重要的是,书中倡导的模块化编程思想贯穿始终,每一个功能模块——比如库存系统、得分系统、音效管理器——都被设计成可以独立插拔和复用的组件。我曾经因为代码耦合度高,导致修改一个简单的音效播放逻辑,牵连了半个游戏系统。这本书则通过清晰的接口定义和低耦合设计,彻底改变了我的编码习惯。它教会我的不仅仅是如何让游戏跑起来,而是如何构建一个“健壮的、能够应对未来迭代需求的软件工程体系”。这种对工程质量的强调,使得这本书的价值远远超出了“入门”的范畴,它更像是一部面向中级开发者的“代码规范与架构设计”指南。
作为一名从小玩游戏长大的玩家,我对游戏的“手感”有着近乎偏执的追求。很多教程教出来的角色移动,总是感觉僵硬、飘忽不定,缺乏物理反馈的真实感。这本书在这方面的处理简直是教科书级别的示范。它花了相当的篇幅来讲解如何实现平滑的加速度曲线、如何计算精确的地面摩擦力,甚至是如何通过细微的“弹跳”和“缓冲”效果来增强角色跳跃时的反馈力度。我记得书中为了演示如何避免“穿墙”问题,提供了一个基于时间步长的精确碰撞检测算法,而不是简单地依赖于相邻帧的判断。这个细节的打磨,直接将我自制小游戏的“玩具感”提升到了一个更加专业的水准。当我终于在自己的小游戏中实现了那种恰到好处的“下落感”时,那种成就感是难以言喻的。这已经不是简单的编程指南了,更像是一本关于“游戏设计哲学”的实践手册,告诉你如何用代码去雕琢玩家的感官体验。
我必须承认,在接触这本书之前,我对Flash这个平台的技术潜力存在一定的偏见,认为它在现代游戏开发领域已经有些过时。但是,这本书的内容刷新了我的认知,它展示了如何高效地利用Flash/AIR生态系统的原生优势,尤其是在跨平台部署方面。书中详细介绍了如何打包针对移动设备(iOS/Android)的AIR项目,包括权限管理、触摸事件的优化处理,以及如何利用Stage3D进行硬件加速的初步探索。这种对整个开发周期的覆盖——从IDE配置、代码实现、性能调试,到最终的打包发布——是非常完整的。它让我明白,即便是看似“老派”的技术栈,只要掌握了其核心的优化点和现代化的开发思路,依然能产出高质量、具有市场竞争力的产品。对于那些希望快速验证游戏创意,并希望在不涉及复杂3D引擎学习的情况下,快速推向市场的开发者来说,这本书提供了一个极其务实且高效的路径图。
这本《实战Flash游戏开发》简直是为我这种半路出家的独立开发者量身定做的宝典!我之前尝试过用其他工具做一些简单的互动网页,但总觉得代码逻辑和资源管理上力不从心,尤其是在处理复杂的动画和用户反馈时,简直一团糟。这本书的厉害之处在于,它并没有停留在那些虚无缥缈的理论层面,而是直接带着你一头扎进实际的项目操作中。从最初的项目搭建,到核心的游戏循环设计,再到角色控制和碰撞检测的精妙实现,每一个步骤都讲解得细致入微。我尤其欣赏作者在讲解AS3(ActionScript 3.0)语法时,总能结合具体的游戏场景来阐述,而不是生硬地堆砌语法规则。比如,在描述如何优化大型位图加载以避免内存溢出时,书中提供的缓存策略和异步加载的范例,直接解决了我在上一个项目里遇到的性能瓶颈。读完前几章,我对自己能独立完成一个功能完备的平台跳跃游戏这件事,突然充满了前所未有的信心。它就像一位经验丰富的老兵,手把手教你如何在新战场上布置火力点,每一个技巧都带着实战的硝烟味。
说实话,我对技术书籍的要求一直很高,很多所谓的“实战”教程,最后都变成了对官方文档的拙劣复述,或者只覆盖了“Hello World”级别的简单案例,根本无法满足我对深度和广度的渴求。然而,这本书的架构设计和内容深度完全超出了我的预期。它不仅仅聚焦于基础的游戏制作流程,更深入探讨了高级的主题,比如如何设计一个可扩展的关卡编辑器,以及如何利用Flash的显示列表特性进行高效的渲染优化。我特别喜欢其中关于“状态机”在AI设计中的应用那一章。作者用一个简单的敌人寻路和攻击模式,将抽象的状态管理概念变得可视化、可操作化。这对于提升我代码的健壮性和可维护性起到了决定性的作用。以前我的代码写得像意大利面条一样纠结,现在,每当我要添加新功能时,都能清晰地知道应该在哪个“状态”下进行修改。这本书的价值,不在于教会你模仿一个特定的游戏,而在于传授一套通用的、可以迁移到任何2D游戏类型中的底层架构思维。
初级水平,弱
初级水平,弱
初级水平,弱
初级水平,弱
初级水平,弱