編輯推薦
一本使用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 遊戲開發之旅吧!