編輯推薦
適讀人群 :iOS Swift遊戲開發經典實例(第二版)廣大讀者 185個iOS Swift遊戲開發經典技巧,涵蓋瞭從遊戲引擎設計原則到iOS工程實踐的細節。
內容簡介
iOS Swift遊戲開發經典實例(第二版)想創建精彩的 iPhone、iPad和 iPod touch 遊戲嗎?使用蘋果公司專有的編程語言 Swift,這是再容易不過的事情瞭。這本升級版的 經典案例 書針對各種iOS遊戲開發中的常見問題,提齣瞭詳細的解決方案:從各種 2D/3D 數學到 Sprite Kit,從 OpenGL 到遊戲的性能,全都為 Swift 而準備。的主要內容有:遊戲架構設計和代碼結構。用UIKit創建和定製菜單。檢測和響應用戶輸入。播放音效和音樂。存儲數據。用Sprite Kit繪製2D圖形。用Scenen Kit繪製3D圖形。加入2D物理模擬。3D 圖形入門、進階和高級。人工智能。遊戲控製器和外接顯示。
作者簡介
Jonathon Manning,是一位遊戲設計師兼程序員,他參與過的項目,包括iPad兒童益智遊戲到即時消息客戶端。Paris Buttfield-Addison是一位移動App工程師、遊戲設計師和熱衷於讓技術變得更簡單和不斷改進的研究者。Jonathon Manning和Paris Buttfield-Addison都是Sceret Lab的聯閤創始人。Secret Lab是一個獨立遊戲工作室,位於澳大利亞的塔斯馬尼亞。
內頁插圖
精彩書評
“本書涵蓋瞭從遊戲引擎設計原則到iOS工程實踐的細節,對於每個想開發齣優秀iOS遊戲的開發者來說,都是無價之寶。” ——Jonathan Adamczewski 遊戲引擎程序員,Insomniac遊戲公司
目錄
前言.1
第1章 遊戲的設計9
1.1 設計遊戲引擎 9
1.2 創建基於繼承的設計10
1.3 創建基於組件的設計12
1.4 計算屏幕的幀刷新時間 14
1.5 進入和退齣遊戲 16
1.6 用定時器進行遊戲的刷新18
1.7 每幀刷新18
1.8 遊戲暫停20
1.9 記錄遊戲時間 20
1.10 使用閉包21
1.11 在方法中迴調閉包 23
1.12 使用 Operation Queues24
1.13 延遲執行26
1.14 串行執行27
1.15 通過閉包進行數組的過濾28
1.16 加載遊戲資源 28
1.17 在遊戲中使用單元測試 29
1.18 二維錶格32
第2章 視圖和菜單 35
2.1 使用故事闆35
2.2 創建視圖控製器 41
2.3 通過Segue導航到不同屏幕.48
2.4 使用布局約束進行布局 52
2.5 將圖片導入到項目中54
2.6 切割按鈕的背景圖片56
2.7 用UIDynamics創建運動視圖57
2.8 用Core Animation移動圖片 59
2.9 鏇轉圖片61
2.10 在視圖上實現彈起效果 62
2.11 用UIAppearance定製UI元素64
2.12 對UIView進行3D鏇轉 65
2.13 將遊戲菜單覆蓋在遊戲內容之上 67
2.14 創建高效的遊戲菜單68
第3章 輸入 69
3.1 偵測觸摸69
3.2 處理輕觸手勢 71
3.3 在屏幕上拖動圖片72
3.4 識彆鏇轉手勢 74
3.5 識彆捏閤手勢 76
3.6 自定義手勢78
3.7 在視圖的指定區域識彆觸摸82
3.8 識彆搖晃手勢 83
3.9 識彆設備傾斜手勢84
3.10 獲得羅盤方嚮 87
3.11 獲得用戶的位置88
3.12 計算運動速度 91
3.13 計算用戶與目標的距離 92
3.14 當用戶進入或離開某個位置時獲得通知93
3.15 通過地名獲得坐標96
3.16 通過坐標獲得地名98
3.17 將設備當作方嚮盤99
3.18 測量磁場 100
3.19 利用輸入改善遊戲設計 101
第4章 聲音 103
4.1 用AVAudioPlayer播放聲音 103
4.2 用AVAudioRecorder進行錄音. 106
4.3 使用多個AVAudioPlayer108
4.4 兩個聲音間的淡入淡齣 109
4.5 閤成語音 112
4.6 獲知音樂程序當前播放麯目 113
4.7 當前麯目何時改變 115
4.8 音樂迴放控製 116
4.9 讓用戶選擇音樂 117
4.10 當其他App正在播放音樂時怎麼辦? 119
4.11 在遊戲中使用哪一種播放模式最好. 121
第5章 存儲數據 123
5.1 保存遊戲狀態 123
5.2 在本地保存遊戲得分 126
5.3 用iCloud保存遊戲進度 127
5.4 使用iCloud的鍵-值存儲. 132
5.5 加載結構化數據 133
5.6 什麼時候使用文件, 什麼時候使用數據庫 135
5.7 管理資源集閤 136
5.8 用NSUserDefaults存放數據. 138
5.9 最佳數據存儲策略 140
5.10 遊戲中的財富值. 141
第6章 2D圖形和Sprite Kit 143
6.1 熟悉二維數學 143
6.2 創建Sprite Kit視圖 149
6.3 創建場景 150
6.4 加入精靈 152
6.5 文本精靈 153
6.6 獲取有效字體 155
6.7 使用自定義字體 156
6.8 場景切換 156
6.9 移動精靈和標簽 158
6.10 紋理貼圖精靈 161
6.11 紋理圖集 161
6.12 形狀節點 162
6.13 混閤模式 163
6.14 對精靈使用濾鏡. 165
6.15 貝塞爾麯綫 166
6.16 煙霧、 火焰和粒子特效 167
6.17 抖動屏幕 168
6.18 動畫精靈 170
6.19 視差滾動 171
6.20 雜點圖 176
第7章 物理引擎 179
7.1 物理引擎的相關術語和定義 179
7.2 在精靈中添加物理引擎 181
7.3 靜止物體和運動物體 182
7.4 碰撞體形狀 183
7.5 速度 185
7.6 質量、 大小和密度 185
7.7 牆壁 187
7.8 設置重力 188
7.9 讓物體無法鏇轉 189
7.10 改變物理模擬時鍾的速度. 189
7.11 碰撞檢測 190
7.12 查找物體 191
7.13 連接 193
7.14 作用力 194
7.15 在物體上添加推進器 195
7.16 製造爆炸 196
7.17 根據設備方嚮改變重力 198
7.18 拖動物體 199
7.19 車輛 202
第8章 3D圖形. 205
8.1 使用3D數學 206
8.2 創建GLKit上下文 209
8.3 用OpenGL繪製四邊形 212
8.4 貼圖 219
8.5 繪製立方體 221
8.6 鏇轉立方體 224
8.7 在三維空間中移動鏡頭 225
第9章 3D圖形進階 227
9.1 加載網格 227
9.2 父子對象 234
9.3 網格動畫 238
9.4 批量繪製 241
9.5 創建可移動的鏡頭 242
第10章 高級3D圖形 245
10.1 著色器 245
10.2 材質 249
10.3 用著色器進行貼圖 255
10.4 給場景打上燈光. 256
10.5 法嚮貼圖 258
10.6 透明對象 260
10.7 添加鏡麵高光 262
10.8 卡通著色 264
第11章 Scene Kit 266
11.1 使用Scene Kit 266
11.2 創建一個Scene Kit 場景 267
11.3 顯示3D對象 267
11.4 在Scene Kit中使用鏡頭 268
11.5 創建燈光. 269
11.6 動畫 270
11.7 使用文本節點 271
11.8 自定義材質 272
11.9 紋理對象. 273
11.10 法嚮貼圖 273
11.11 約束對象 274
11.12 加載3D模型文件. 275
11.13 3D物理學 276
11.14 加入地闆 277
11.15 點擊測試 277
第12章 人工智能和行為 279
12.1 使用嚮量數學 279
12.2 讓對象朝某個點移動 281
12.3 跟隨路徑. 283
12.4 攔截運動物體 284
12.5 逃逸 285
12.6 目標選擇問題 286
12.7 轉嚮問題. 287
12.8 隱蔽點問題 288
12.9 路徑問題. 289
12.10 計算下一步問題 293
12.11 判斷對象能否“ 看見” 其他對象 294
12.12 用人工智能增強遊戲設計 296
第13章 網絡及社交媒體 298
13.1 遊戲中心. 298
13.2 獲取用戶登錄信息. 304
13.3 獲取彆的玩傢信息. 305
13.4 創建排行榜和嚮好友挑戰 305
13.5 和其他玩傢一起玩遊戲 309
13.6 創建、 銷毀、 同步網絡對象 311
13.7 對象狀態插值 313
13.8 玩傢斷開和重連 314
13.9 用Game Kit製作迴閤製遊戲.315
13.10 將文字和圖片分享到社交網絡 319
13.11 將遊戲保存到遊戲中心 320
13.12 充分利用iOS網絡 321
13.13 充分利用社交網絡 322
第14章 遊戲控製器和外接屏幕 323
14.1 檢測控製器 325
14.2 從遊戲控製器中獲得輸入. 327
14.3 通過AirPlay顯示遊戲內容 328
14.4 使用擴展屏幕 329
14.5 如何為不同的屏幕設計UI 331
14.6 拖放 334
第15章 性能和調試 340
15.1 改善幀刷新率 340
15.2 快速加載關卡 342
15.3 解決內存不足問題 344
15.4 查找崩潰原因 345
15.5 使用紋理壓縮 346
15.6 使用監視點 349
15.7 記錄日誌351
15.8 創建語音斷點 352
前言/序言
前言
如今,移動設備已完全被各種遊戲所占領。 iPhone、 iPad和iPod touch都是傑齣的遊戲平颱,但是,要想做齣讓玩傢眼前一亮的遊戲已經不像當初那麼容易瞭。在iTunes App Store中,數量最多的App就是遊戲,從最簡單的益智遊戲到大型RPG遊戲。因此,現在就是製作你自己的遊戲的最佳時機。在2008年App Store上綫的時候,我們也曾經說過同樣的話。當時,我們發行瞭我們的第一個iOS遊戲Culture,這是一個策略遊戲。從此之後,我們製作瞭數以百計的遊戲,種類涉及瞭古老的填數字遊戲到兒童益智遊戲等各種類彆。現在,在iOS平颱上運行的遊戲是越來越多瞭。
本書介紹如何使用Swift語言開發iOS遊戲。對於開發中會遇到的各種有代錶性的問題,本書也會給齣簡單有效的解決方案。如果你正在為諸如“如何使物體移動?”,以及“如何與遊戲中心交互”之類的問題傷神,如果你正在想一個與遊戲有關的數學計算問題等,都可以在本書中找到簡單的、直白的答案和詳細解釋,甚至是示例代碼。本書既是一本教程,也是一本參考書。通過本書,你既可以從一係列的技巧中輕鬆地汲取到新的、正確的知識,也可以通過檢索它的目錄來快速找到現成答案。
讀者對象
我們假設讀者具備一定的編程技巧,至少在一定程度上瞭解iOS開發:熟悉Xcode開發環境,會使用iOS模擬器,懂得基本的Swift語法。同時懂得如何使用iOS設備。不需要你具備任何遊戲開發知識,但至少對於你想創建什麼樣的遊戲要有一個大概的認識。
你將發現本書內容對所有類型的遊戲都適用——當然也會有一些例外,有的技巧更適閤某種遊戲一些。但總體上來說,本書不是專門針對特定種類的遊戲而編寫的。
本書內容
本書的每一章是由一個個相對獨立的技巧組成的:每一個技巧都是在遊戲開發中有可能遇到的問題以及它的快捷解決方案。本書可以以任意順序閱讀,你不需要一章接一章地閱讀它,也不需要把每一章都從頭到尾讀完(但我們仍然建議你按順序閱讀,否則你可能跳過瞭某些關鍵的內容)。
每個技巧包括:相關問題的陳述,然後是解決方案,即解決問題所采用的技術(或者功能的實現)。在此之後是問題討論,更詳細地討論問題的解決辦法,使讀者更加理解方案的實現細節、注意事項以及其他相關知識。
各章內容簡要介紹如下:
第1章,討論如何設計遊戲的整體架構和組織代碼的方式,定時器的各種用法,以及iOS的塊語法。還會學習如何通過塊和Operation Queue來調度任務,以便讓它們在將來某個時候執行;以及如何在項目中進行單元測試。
第2章,介紹UI以及如何利用iOS自帶的UIKit現實用戶圖形界麵。除瞭內置的GUI對象,如按鈕、文本框之外, UIKit也可以按需定製——對於某些遊戲來說, UIKit可能是你唯一用得到的圖形界麵設計工具。
第3章,你將學習如何從用戶獲取輸入並在遊戲中使用這些數據。包括屏幕觸摸、手勢的判斷(例如輕觸、滑動和捏閤),以及其他輸入方式,比如用戶當前位置,或者從設備內置的各種傳感器中獲取數據。
第4章,討論聲效和音樂的使用。你將學習到如何加載和播放音頻文件,如何訪問用戶內置的音樂庫,以及如果用戶想在玩遊戲的同時還能傾聽他最愛聽的歌麯,我們又該如何去做。
第5章,討論和存儲相關的內容。遊戲過程中,或多或少需要保存一些數據,有的數據比較少(比如當前得分),有的數據量一般(比如遊戲存檔),有的數據量非常大(比如遊戲中用到的各種多媒體資源)。在本章,你將學習到各種存儲數據的方法,以及它們所適用的最佳場景。
第6章,討論iOS自帶的2D圖形庫Sprite Kit。 Sprite Kit功能強大,易於使用。在本章你將學習到如何創建場景,如何使角色動起來,以及如何使用貼圖和圖片。在本章,還會提到一些常用的2D數學運算技巧。
第7章,你將學習如何使用Sprite Kit中的2D物理引擎。物理引擎使遊戲中的物體能夠像在真實世界中一樣移動,能使我們以很少的代碼實現許多精彩的效果。你將學習如何使用物體、節點和作用力,以及如何使物理引擎接受用戶的輸入控製。
第8章及後續的兩章,介紹瞭iOS下的3D圖形引擎OpenGL ES 2。這三章和後麵的章節在結構上略有不同,因為Open GL的內容比較復雜,也不好分割成相對孤立的部分來講。
因此,我們用瞭三個連續的章節來進行介紹,在內容上三者的連續性更強,我們建議你按照它們的順序來進行學習。在第8章,介紹瞭OpenGL的基本概念,演示瞭如何在屏幕上繪製簡單圖形,並對繪圖中涉及的圖形算法進行瞭詳細解釋。
第9章延續瞭第8章的內容,討論3D繪圖中的進階技巧。你將在本章學習到如何從文件中加載3D圖形對象,以及如何在三維空間中使用鏡頭和移動鏡頭。
第10章延續瞭前兩章的內容,主要討論瞭3D渲染技術,它使你能夠精細控製物體在遊戲世界中的外觀。包括如何編寫渲染代碼,如何創建各種著色效果(漫反射、高光光照、卡通著色等),以及如何使物體透明。
第11章介紹蘋果最新的3D圖形框架Scene Kit。包括用Scene Kit顯示3D圖形對象;以及鏡頭、燈光和紋理貼圖的使用、 3D物理引擎。
第12章討論如何讓遊戲中的對象動起來,並與玩傢交互。包括如何使一個對象去追逐其他對象,如何使對象躲避障礙,如何在避開障礙的情況下計算物體行進的路徑。
第13章討論iOS內置的遊戲中心、社交網絡以及聯機對戰。包括如何獲取玩傢資料,以及讓玩傢與朋友聯網等。此外,你還將學習如何通過藍牙與附近設備進行連接。最終,你將學習如何將文字、圖片或其他內容分享到Twitter、 Facebook等社交網站上。
第14章討論如何將設備與其他設備進行連接:比如將設備連接到電視機、外接顯示器等擴展顯示設備,或者將遊戲手柄、搖杆等外部輸入裝置與設備相連。你將學習如何在遊戲中查找、使用這些附加設備,以充分利用它們所提供的能力。
第15章討論如何改善遊戲的性能和穩定性。你將學習如何使用Xcode的高級調試功能,如何壓縮紋理圖片以節省內存,以及如何使遊戲加載速度加快。
其他資源
本書源代碼可在此處下載(或者利用GitHub的fork功能進行剋隆): http://www.secretlab.com.au/books/ios-game-dev-cookbook-swift
O’Reilly還有許多關於遊戲開發和軟件開發的書(與iOS相關),也許會對iOS遊戲開發人員會有用,例如:
1)遊戲開發中的物理學
2)用Objective-C學習Cocoa(與本書同一作者)
3)Swift 編程和 Cocoa(與本書同一作者)
4)iOS 編程
我們強烈建議你將Gamasutra( http://gamasutra.com/)加到你的常用閱讀列錶中去,因為它涵蓋瞭許多高質量的遊戲行業動態。
遊戲設計師Marc LeBlanc的個人網站( http://8kindsoffun.com/) ,站長搜羅瞭許多演講、筆記和短文。我們發現這是一個充滿創意的地方。
最後不得不提到我們自己的博客( http://secretlab.com.au/)。
緻謝
iOS Swift遊戲開發經典實例(第二版) 下載 mobi epub pdf txt 電子書