编辑推荐
一本使用AS3和AGAL,在Flash 11 Stage3D (Molehill)中创建炫目3D游戏的渐进式指南!
Adobe Stage3D是一系列3D API,它将3D引入了Flash平台
如何在Flash世界中创建你自己的下一代3D游戏?如果你曾梦想用Flash编写自己的次世代3D游戏,Stage3D的硬件加速能力将让你震惊!《Adobe Flash 11 Stage3D(Molehill)游戏编程初学者指南》循序渐进,使用激动人心的新技术,教会你如何用AS3编写3D游戏。
内容简介
《Adobe Flash 11 Stage3D(Molehill)游戏编程初学者指南》是在Flash Player 11推出不久后出版的一本Stage3D入门书。在这项新技术刚问世而相关资源较为缺乏的时期,它可以说是一本不可多得的教材,对学习Stage3D将会十分有帮助,可谓是那些对3D图形学不太了解的Flash程序员们求之不得的及时雨。《Adobe Flash 11 Stage3D(Molehill)游戏编程初学者指南》作者是资深游戏开发者,他通过丰富的项目经验,结合实际案例,系统地讲解了Stage3D技术和3D游戏开发的方方面面,将实用的技能和知识传授给读者,让读者轻松上手、少走弯路。
《Adobe Flash 11 Stage3D(Molehill)游戏编程初学者指南》既可供F1ash相关从业人员和广大AS爱好者自学参阅,又可作为相关职业的培训教材。
作者简介
Christer Kaitila,拥有理工科学士学位,有17年从业经验的资深游戏开发者。作为骨灰级玩家、父亲、地下城主、艺术家和音乐家,他洒脱不拘,热爱自己赖以为生的游戏制作行业。20世纪80年代,在因特网、硬盘还不存在的时候,酷爱游戏机的他就制作了他的一款电子游戏。
6809汇编语言是他学会的一门编程语言,后来他又掌握了BASIC、TurboPascal、VB、C++、Lingo、PHP、JavaScript和ActionScript。在MS-DOS时代,他就是一个精英BBS的管理员。早在青少年时期,他就热衷于参加游戏样片制作。大学期间,他还作为自由职业者,为多方客户提供软件、编程服务。从那时起,他就是独立游戏开发社区的活跃成员,他的网名Breakdance McFunkypants也为其他同行所熟知。
Christer经常参加游戏聚会,以便不断学习前沿技术。他乐于为他人的项目提供帮助和热心的鼓励,在Adobe公司未公开发布的产品的测试中,也扮演了活跃的角色。他编写了解谜游戏、多玩家RPG游戏、动作游戏、射击游戏、赛车游戏、聊天室、在线游戏、浏览器游戏以及许多商业应用程序,从工业产品的3D显示到为工程师制作的模拟,不一而足。
现在,他是网站的管理员,这个网站从数以百计的游戏开发者博客那里同步新闻。他很乐于在Twitter和Google+上和游戏开发同行们交流。
布凡,网名白蓝紫,北京人,毕业于中国传媒大学。涉猎广泛,尤其热爱Flash和游戏制作。活跃于国内知名的游戏开发者社区9RIA社区,热衷于Stage3D的推广和科普,为了能让更多Flash爱好者了解这一领域,而接下了本书的翻译工作。平常喜欢进行各类创作,崇尚悠闲的生活方式,梦想有一天能成立自己的工作室。
内页插图
目录
第1章 让我们用Molehill制作游戏吧!
1.1 你的史诗级探险一触即发!
1.2 什么是Molehill?
1.3 Molehill不能做什么?
1.4 你需要具备哪些知识?
1.5 基本的3D术语
1.6 常见3D显像术语
网格(Mesh)
多边形(Polygon)
顶点(Vertex)
纹理(Texture)
着色器(Shader)
顶点着色器(Vertex Program)
片段着色器(Fragment Program)
3D显像等级已达成!
1.7 常见3D编码术语
向量(Vector)
法线(Normal)
矩阵(Matrix)
3D编码等级已达成!
1.8 小 结
1.9 第1级,达成!
第2章 Molehill蓝图
2.1 旧式渲染方法
2.2 Molehill渲染法:Stage3D
2.3 使用2DFlash文字和Sprite
2.4 为什么Stage3D这么快?
2.5 Molehill应用的结构
Stage
Stage3D
Context3D
VertexBuffer3D
IndexBuffer3D
Program3D
建立Molehill程序的流程
2.6 小 结
2.7 第2级,达成!
第3章 启动引擎!
3.1 第1步:从Adobe下载Flash11(Molehill)
Stage3D设置好了!
3.2 第2步:开始编码
任务完成——收获的时间到了
祝贺你!
3.3 完整的源代码
3.4 小 结
3.5 第3级,达成
第4章 基础着色器:我能看到东西了!
4.1 AGAL:Adobe图形汇编语言
一行AGAL代码是什么样的?
什么是寄存器(Register)?
什么是分量(Component)?
同时使用4个分量进行工作
不同的任务,不同的寄存器
4.2 基础AGAL着色器示例
顶点着色器
片段着色器
4.3 编译AGAL源码
4.4 该渲染了!
4.5 创作一个着色器演示文件
4.6 添加FPS计数器
任务完成——收获的时间到了
祝贺你!
4.7 小 结
4.8 第4级,达成!
第5章 构建一个3D世界
5.1 创建顶点缓冲
将3D模型导入Flash
我们的网格解析类完成了!
5.2 渲染循环
任务完成——收获的时间到了
5.3 文件夹结构
5.4 小 结
5.5 第5级,达成!
第6章 纹理:让世界更好看
6.1 制订计划的时间:创造一个“真正”的游戏
6.2 在Stage3D中使用纹理
2的幂
u, v坐标
透明纹理
在着色器中改动u, v坐标
纹理图集
动画纹理
操作纹理数据
6.3 渲染状态
背面剔除(Backface Cull)
深度测试(Depth Test)
混合模式(Blend Mode)
6.4 增加性能
不透明的更快
避免重复绘制
避免状态改变
使用简单着色器
绘制更少的网格
6.5 给演示文件添加纹理效果
6.6 你的演示文件已经升级了!
6.7 小 结
6.8 第6级,达成!
第7章 计时器、输入、实体:游戏性元素!
7.1 我们目前的任务
保持简洁
让它可以重用
7.2 让我们的游戏更富有交互性
添加HUD叠加层
持续跟踪时间:游戏计时类
游戏输入类
一个抽象的实体类
7.3 使用get和set函数隐藏复杂的代码
7.4 为我们新改良的游戏世界设计美术资源
7.5 升级我们的游戏
7.6 让我们在运行中看看这一切吧!
7.7 小 结
7.8 第7级,达成!
第8章 丰富的视效!
8.1 我们目前的任务
性能设计
可重用性设计
使用AGAL进行动画
8.2 一个基础的粒子实体类
8.3 关键帧顶点动画着色器
8.4 粒子系统管理类
8.5 关键帧化粒子网格
选择粒子纹理
8.6 将粒子系统类整合到游戏中
8.7 让我们在运行中领略粒子系统吧!
8.8 小 结
8.9 第8级,达成!
第9章 充满动作的世界
9.1 为“角色”扩展实体类
实现人工智能
9.2 碰撞检测
9.3 一个“角色重用池”系统
9.4 为了提升帧频,让游戏只显示邻近的角色
9.5 使用映射图的简单关卡编辑器
9.6 升级输入程序
9.7 小 结
9.8 第9级,达成!
第10章 3, 2, 1, 启动!
10.1 我们的最终任务
10.2 抵达终点线
10.3 为游戏添加新变量
10.4 为游戏添加美术资源
10.5 升级最终的游戏源代码
10.6 定义游戏专用事件
10.7 发布,扩散,收益!
10.8 小 结
10.9 第10级达成,宇宙得救了!
10.10 之后该怎么办?
作者寄语
附录 AAGAL操作码参考
A.1 一行AGAL代码是什么样的?
A.2 AGAL着色器可用的寄存器
A.3 复制数据
A.4 代数操作码
A.5 数学操作码
A.6 三角学操作码
A.7 条件操作码
A.8 向量和矩阵操作码
A.9 纹理采样寄存器
附录 B突击测验答案
前言/序言
Adobe的Stage3D(之前代号为Molehill)是一系列的3DAPI,它们让Flash平台走向了3D。作为一项全新的技术,目前为止几乎没有可供你学习这一革命性平台的资源。
这本书将会教你如何使用Flash做一款个性十足的次世代3D游戏,如果你曾梦想用Flash写一款属于自己的3D游戏,那就准备好领略Stage3D硬件加速带给你的强劲动力吧!这本书将带领你使用这项激动人心的新技术,伴着充足的示例、图片及源代码,一步一步地走完开发3D游戏的全过程。无论你是个3D编程的新手,还是个专业的游戏开发者,一定都会从这本实用又有趣的指南中获益的。
从启动Flash渲染一个简单的3D面片开始,每章都用一个更具深度也更完整的电子游戏作为示例工程。从一个简单的技术演示,你的游戏会逐渐成长为一个完工的产品——一款有着动画、特效、声音还有操作性的可玩3D游戏。本书的目标就是教你如何用Stage3D编写一款完整的有头有尾的游戏。
随着这项传奇任务的逐渐深入,你将会学到各式各样有用的小窍门,比如使用纹理制作吸引人的特效,为透明粒子系统设置特殊混合模式,用来设计漂亮着色效果的顶点和片段着色器,以及其他更多的东西。你将会学习如何将3D模型的几何结构上传给显存以便急速渲染,你将会深入研究AGAL着色器编程的梦幻魅力,你将会学习优化的窍门以达到超快的帧频。你会在每一章“升级”你的编程技巧,最终得到Molehill大师的头衔——你可以坦然地称自己为3D游戏程序员了。
这本书是由资深游戏开发者专为初学者而写的,包含着制作3DFlash游戏所需要的方方面面,它一定会成为你值得信赖的伙伴。
踏上您的三维游戏开发之旅:从零开始掌握 Adobe Flash 11 Stage3D(Molehill)的强大力量 您是否曾经梦想过创造出令人惊叹、动态十足的 3D 游戏,让玩家沉浸在一个充满想象力的世界里?您是否对 Flash 平台上强大的 Stage3D(代号 Molehill)技术感到好奇,但又不知从何入手?那么,这本书将是您开启这段激动人心旅程的最佳伙伴。 本书专为初学者设计,旨在系统地引导您掌握 Adobe Flash 11 Stage3D 的核心概念与实用技巧,让您能够自信地踏入 3D 游戏编程的广阔领域。我们将抛弃繁琐冗长的理论,直接深入 Stage3D 的实际应用,通过大量的示例代码和循序渐进的讲解,帮助您在最短的时间内理解并运用这项强大的技术。 您将学到什么? 在本书的陪伴下,您将构建起坚实的 3D 游戏开发基础。我们不会止步于理论的堆砌,而是聚焦于实际操作,让您亲手体验从 2D 到 3D 的转变,感受将抽象概念转化为生动视觉的乐趣。 1. Stage3D 的基石:理解渲染管线 想要驾驭 3D 图形,首先需要理解它是如何呈现在屏幕上的。我们将深入剖析 Stage3D 的渲染管线,这意味着我们将学习: 概念的引入: 什么是 GPU(图形处理器)?为什么它对于 3D 渲染如此重要?我们将解释 GPU 和 CPU(中央处理器)在游戏开发中的分工,以及 Stage3D 如何利用 GPU 的强大计算能力来加速图形渲染。 上下文与上下文3D: 您将了解如何获取和管理 Stage3D 的渲染上下文,这是所有 Stage3D 操作的起点。我们将详细讲解 `Context3D` 对象,它是与 GPU 交互的核心接口。 渲染目标与缓冲区: 学习如何设置渲染目标(通常是您的应用程序的可见区域),以及理解各种缓冲区(如颜色缓冲区、深度缓冲区、模板缓冲区)的作用,它们是如何协同工作来绘制出最终图像的。 三角形的力量: 3D 世界最终是由无数个三角形构成的。我们将讲解如何在 Stage3D 中创建和渲染基本的三角形,这是所有复杂模型的基础。 视图转换: 学习如何设置摄像机视角,让您的 3D 模型以您期望的方式被观察。这包括理解模型视图矩阵和投影矩阵的概念,以及如何通过它们来控制物体的空间位置和相机朝向。 2. 着色器的魔法:点亮您的 3D 世界 着色器是 Stage3D 的灵魂所在,它们是运行在 GPU 上的小型程序,负责计算每个像素的颜色。理解和编写着色器将是您创造出视觉效果的关键。 GLSL 简介: 我们将介绍 GLSL(OpenGL Shading Language),这是 Stage3D 使用的着色器编程语言。您将学习其基本语法和结构。 顶点着色器: 学习如何编写顶点着色器,它负责处理模型中的每个顶点,包括进行变换(平移、旋转、缩放)和计算光照。 片段着色器(像素着色器): 掌握如何编写片段着色器,它负责计算每个像素最终的颜色,包括纹理采样、光照计算和颜色混合。 顶点属性与统一变量: 理解如何将顶点数据(如位置、颜色、纹理坐标)传递给顶点着色器,以及如何使用统一变量来传递全局参数(如光源位置、材质属性)。 常用的着色器技术: 逐步引入一些基础但常用的着色器技术,例如: 基础光照模型: 实现简单的漫反射和镜面反射,让物体看起来更有立体感。 纹理映射: 将 2D 图像应用到 3D 模型表面,赋予物体真实的材质外观。 颜色插值: 理解顶点颜色如何在三角形表面平滑过渡。 3. 模型的构建与管理:塑造您的虚拟世界 游戏中的一切都是由模型组成的,无论是角色、场景还是道具。我们将学习如何创建、加载和管理这些 3D 模型。 从简单到复杂: 我们将从创建简单的几何体(如立方体、球体)开始,逐步过渡到加载更复杂的模型。 顶点缓冲与索引缓冲: 学习如何有效地组织和存储模型数据,以便 GPU 能够高效地读取和渲染。 模型加载: 介绍如何加载常见的 3D 模型格式(如果 Stage3D 支持),并将其整合到您的游戏中。 模型变换: 掌握如何对模型进行平移、旋转和缩放,将它们放置在游戏世界的合适位置。 4. 交互与动画:赋予生命力 一个静态的世界是无法吸引玩家的。我们将学习如何为您的游戏添加交互性和动画,让它变得生动有趣。 用户输入处理: 学习如何捕捉玩家的键盘、鼠标输入,并将其转化为游戏内的动作。 基础动画实现: 介绍如何通过改变模型变换来实现简单的动画效果,例如旋转、移动。 关键帧动画的原理(概念层面): 虽然不深入实现复杂的骨骼动画,但我们会讲解关键帧动画的基本原理,让您对更高级的动画技术有初步的认识。 5. 实用技术与优化:提升游戏质量 除了核心的渲染和模型处理,我们还将探讨一些能提升游戏质量和性能的实用技术。 相机控制: 实现更灵活的相机控制,例如第一人称视角、第三人称跟随视角。 深度测试: 理解深度测试的工作原理,确保物体按照正确的顺序渲染,避免穿模现象。 性能考量: 介绍一些基本的性能优化技巧,让您的游戏运行得更流畅。 学习方法与本书特色 本书强调“动手实践”的学习理念。每一章都将包含大量的代码示例,这些代码都经过精心设计,旨在直观地展示概念。您可以直接复制代码并进行修改和实验,从而加深理解。 循序渐进: 概念的引入将遵循由浅入深的原则,确保初学者能够轻松跟上。 代码驱动: 每一个技术点都通过具体的代码实现来阐释,让您能够“看到”效果。 项目导向: 随着学习的深入,我们将逐步构建一个小型但完整的 3D 场景,让您能够将所学知识融会贯通。 解决实际问题: 本书将重点关注您在 3D 游戏开发过程中可能遇到的常见问题,并提供有效的解决方案。 谁适合阅读本书? Flash 开发者: 熟悉 AS3 (ActionScript 3) 的开发者,希望将他们的技能提升到 3D 领域。 游戏开发爱好者: 对游戏开发充满热情,渴望学习 3D 图形编程的初学者。 希望扩展技能的程序员: 想要学习一种新的、强大的图形渲染技术的开发者。 准备好了吗? Adobe Flash 11 Stage3D (Molehill) 为开发者提供了一个强大的平台,让您能够创造出令人难忘的 3D 游戏体验。本书将成为您旅途中最忠实的向导。让我们一起,将您的创意化为现实,在 3D 的数字世界中尽情遨游! 现在,就翻开这本书,开启您的 3D 游戏开发之旅吧!