關(guān)于我們
書單推薦
新書推薦
|
Swift游戲開發(fā)經(jīng)典實例(第三版)
·設(shè)計游戲架構(gòu),組織游戲內(nèi)容。 ·用UIKit編寫界面、定制菜單。 ·讓游戲能夠檢測和響應(yīng)用戶輸入。 ·使用音效、音樂和語音合成。 ·通過iCloud存儲和訪問數(shù)據(jù)。 ·用SpriteKit創(chuàng)建2D圖形及動畫。 ·用物理引擎模擬真實世界。 ·用SceneKit創(chuàng)建和繪制3D場景。 ·設(shè)計AI系統(tǒng)進行用戶測試。 ·添加游戲控制,擴展顯示器以及增強現(xiàn)實。
想編寫出精彩的iOS游戲嗎?使用蘋果的Swift編程語言,這是無可比擬的簡單。本書詳細介紹了iOS 游戲開發(fā)中遇到的各種問題,從架構(gòu)設(shè)計到圖形性能,所有內(nèi)容都升級到了新的Swift版本。 這是一次全新的升級,將讓你對iOS游戲開發(fā)中遇到的常見問題獲得簡單、直接的答案。想知道如何讓物理對象移動或者補習(xí)一下游戲方面的數(shù)學(xué)知識嗎?本書給出了示例代碼和答案。只要你擁有一定的iOS開發(fā)和Swift基礎(chǔ)即可。 前言 如今,移動設(shè)備已被各種游戲占領(lǐng)。iPhone、iPad 和iPod touch 都是非常強大的游戲平臺,要做出讓玩家眼前一亮的游戲從沒有像現(xiàn)在這樣容易。在iTunesApp Store 中,數(shù)量最多的App 就是游戲,從簡單的“一分鐘的”方塊游戲到復(fù)雜的長期冒險游戲。因此,現(xiàn)在就是制作你個人專屬游戲的最佳時機。自從有了App Store,我們就一直在做iOS 游戲。當(dāng)時,我們發(fā)行了第一個iOS 策略游戲Culture,之后又制作了數(shù)以百計的游戲,種類涉及了古老的填數(shù)字游戲到兒童益智游戲的各種類別,F(xiàn)在,在iOS 平臺上運行的游戲越來越多。 本書對Swift 游戲開發(fā)中遇到的常見問題提供了簡單直接的解決方案。無論你是想知道如何使物體移動,還是想補習(xí)一下游戲中的數(shù)學(xué)知識,你都能找到簡單直白的答案、解釋和示例代碼。本書既是一本教程,也是一本參考書。通過本書,你可以從一系列的“問與答”中輕松地汲取到新的、正確的知識,也可以快速地從目錄的某個標(biāo)題中找到現(xiàn)成答案。 本書的讀者對象 我們假設(shè)讀者具備一定的編程技巧,至少在一定程度上了解iOS 開發(fā):熟悉Xcode開發(fā)環(huán)境,會使用iOS 模擬器,懂得基本的Swift 語法。同時懂得如何使用iOS 設(shè)備。不需要你具備任何游戲開發(fā)知識,但至少對于你想創(chuàng)建什么樣的游戲要有一個大概的認(rèn)識。 你會發(fā)現(xiàn)本書的內(nèi)容對所有類型的游戲都適用,當(dāng)然也會有一些例外,有的技巧更適合某種游戲一些。但總體上來說,本書不是專門針對特定種類的游戲而編寫的。 本書的主要內(nèi)容 本書的每一章是由多個“技巧”構(gòu)成:每一個“問題”都是你在游戲開發(fā)中有可能遇到的問題以及它的快捷解決方案。本書可以以任意順序閱讀,你不需要一章接一章地閱讀,也不需要把每一章都從頭到尾讀完(但我們?nèi)匀唤ㄗh你按順序閱讀,否則你可能跳過了某些關(guān)鍵的內(nèi)容)。 每個“技巧”中包括相關(guān)問題的陳述和解決方案,即解決問題所采用的技術(shù)(或者功能的實現(xiàn))。在此之后是問題討論,更詳細地討論問題的解決辦法,使讀者更加理解方案的實現(xiàn)細節(jié),注意事項以及其他相關(guān)知識。 各章內(nèi)容簡要介紹如下: 第1 章,游戲的設(shè)計 討論游戲的整體架構(gòu)和代碼組織的不同方法,定時器的各種用法,以及iOS 的塊語法。還會學(xué)習(xí)如何通過塊和Operation Queue 來調(diào)度任務(wù),以便讓它們在將來某個時候執(zhí)行;并學(xué)習(xí)如何在項目中進行單元測試。 第2 章,視圖和菜單 介紹UI 以及如何利用iOS 自帶的UIKit 現(xiàn)實用戶圖形界面。除了內(nèi)置的GUI對象,如按鈕、文本框之外,UIKit 也可以按需定制,對于某些游戲來說,UIKit 可能是你唯一需要使用的圖形界面設(shè)計工具。 第3 章,輸入 你將學(xué)習(xí)如何從用戶獲取輸入并在游戲中使用這些數(shù)據(jù),包括屏幕觸摸、手勢的判斷(如輕觸、滑動和捏合),以及其他輸入方式,比如用戶當(dāng)前位置,或者從設(shè)備內(nèi)置的各種傳感器中獲取數(shù)據(jù)。 第4 章,聲音 討論聲效和音樂的使用。你將學(xué)習(xí)到如何加載和播放音頻文件,如何訪問用戶內(nèi)置的音樂庫,以及如果用戶想在玩游戲的同時聽到他最喜歡歌曲,我們要怎么辦。 第5 章,存儲數(shù)據(jù) 討論和存儲相關(guān)的內(nèi)容。游戲過程中,或多或少需要保存一些數(shù)據(jù),有的數(shù)據(jù)比較少(如當(dāng)前得分),有的數(shù)據(jù)量一般(如游戲存檔),有的數(shù)據(jù)量非常大(如游戲中用到的各種多媒體資源)。在本章,你將學(xué)習(xí)到各種存儲數(shù)據(jù)的方法,以及它們所適用的最佳場景。 第6 章,2D 圖形和Sprite Kit 討論iOS 自帶的2D 圖形庫Sprite Kit。Sprite Kit 功能強大,易于使用。在本章你將學(xué)習(xí)如何創(chuàng)建場景,如何使精靈動起來,以及如何使用貼圖和圖片。本章還會介紹一些常用的2D 數(shù)學(xué)運算技能。 第7 章,物理學(xué) 你將學(xué)習(xí)如何使用Sprite Kit 中的2D 物理引擎。物理引擎使游戲中的物體能夠像在真實世界中一樣移動,能使我們以很少的代碼實現(xiàn)許多精彩的效果。你將學(xué)習(xí)如何使用物理體、節(jié)點和作用力,以及如何使物理引擎接受用戶的輸入的控制。 第8 章,Scene Kit 介紹Scene Kit,即蘋果新的3D 框架,包括用Scene Kit 顯示3D 對象,鏡頭的使用、紋理以及3D 物理引擎。 第9 章,人工智能和行為 討論如何使游戲?qū)ο蟾又悄埽约昂屯婕医换。你將學(xué)習(xí)如何讓對象互相追逐,讓對象躲避某些東西,以及在避開障礙物的同時算出兩點之間的路徑。你還會學(xué)到如何通過Core ML 和Vision 檢測鏡頭中看到的對象。 第10 章,使用外設(shè) 討論游戲和外界交互的方法:外加顯示器,如電視機和顯示器;提供額外輸入方式的游戲控制器,如手柄和物理按鍵;相機等。你會學(xué)到當(dāng)接入外部硬件時如何檢測、使用它們,使游戲充分發(fā)揮硬件所帶來的好處。并學(xué)習(xí)如何使用ARKit 實現(xiàn)增強現(xiàn)實。 第11 章,性能和調(diào)試 本書最后一章介紹如何提升游戲性能和穩(wěn)定性。你將學(xué)習(xí)如何使用Xcode 的高級調(diào)試功能,如何使用壓縮紋理以節(jié)省內(nèi)存,以及如何讓游戲加載得更快。 其他資源 本書源代碼可在此處下載(或者利用GitHub 的fork 功能進行克。篽ttp://www.secretlab.com.au/books/ios-game-dev-cookbook-swift。 O’Reilly 還有許多關(guān)于游戲開發(fā)和軟件開發(fā)的書(有一般的,也有iOS 的),也許會對iOS 游戲開發(fā)人員會有用,例如: ?? Physics for Game Developers。 ?? Learning Cocoa with Objective-C(與本書同一作者)。 ?? Swift Development with Cocoa(與本書同一作者)。 ?? Programming iOS 8。 我們強烈建議你將Gamasutra(http://gamasutra.com/)加到你的常用閱讀列表中去,因為它涵蓋了許多高質(zhì)量的游戲行業(yè)動態(tài)。 游戲設(shè)計師Marc LeBlanc 的個人網(wǎng)站(http://8kindsoffun.com/),站長搜集了許多演講、筆記和短文。我們發(fā)現(xiàn)這是一個充滿創(chuàng)意的地方。 最后不得不提到我們自己的博客(http://secretlab.com.au/)。 本書的排版約定 本書使用如下的排版約定: 斜體(Italic) 表示新出現(xiàn)的術(shù)語、URL、email 地址、文件名及擴展名。 等寬字體(Constant width) 表示程序片段,以及書中出現(xiàn)的變量、函數(shù)名、數(shù)據(jù)庫、數(shù)據(jù)類型、環(huán)境變量、 語句和關(guān)鍵字等。 加粗等寬字體(Constant width bold) 表示應(yīng)該由用戶輸入的命令或其他文本。 等寬斜體(Constant width italic) 表示應(yīng)該由用戶輸入的值或根據(jù)上下文確定的值替換的文本。 使用示例代碼 本書附加的材料(示例代碼、練習(xí)等)在此處下載:http://www.secretlab.com.au/books/ios-game-dev-cookbook-swift。 本書的最終目的是為了幫助大家完成自己的工作。因此,本書中所有示例代碼你都可以在自己的程序和文檔中引用。使用這些代碼,并不需要經(jīng)過作者的授權(quán),但如果大量復(fù)制本書代碼則另當(dāng)別論。例如,僅從本書中復(fù)制幾段代碼用在自己的程序中無需經(jīng)過授權(quán),但將O’Reilly 書籍中的示例程序用于出售或復(fù)制成光盤則需要授權(quán);卮鹚藛栴}時,引用本書內(nèi)容或示例代碼也無需授權(quán)。但如果是將本書大量示例代碼放入你的產(chǎn)品文檔中,則需經(jīng)過授權(quán)。 如果你在代碼中保留我們的版權(quán)聲明,我們會十分感激,但這并不是必須的。完整的版權(quán)聲明應(yīng)該包含書名、作者、出版社以及ISBN。例如:“iOS Swift Game Development Cookbook by Jonathon Manning and Paris Buttfield-Addison (O’Reilly).Copyright 2015 Secret Lab, 978-1-449-92080-0”。 如果使用代碼時,超出了上述聲明中的許可范圍,請隨時聯(lián)系我們:permissions@oreilly.com。 O’Reilly Safari Safari(以前是Safari Books Online)是一個面向企業(yè)、政府、教育工作者和個人的會員制培訓(xùn)和參考平臺。 會員可訪問來自250 多家出版商的數(shù)千本書籍、培訓(xùn)視頻、學(xué)習(xí)路徑、互動教程和精選播放列表,包括O’Reilly Media,Harvard Business Review,Prentice Hall Professional,Addison-Wesley Professional,Microsoft Press,Sams,Que,Peachpit Press,Adobe,F(xiàn)ocal Press,Cisco Press,John Wiley & Sons,Syngress,Morgan Kaufmann,IBM Redbooks,Packt,Adobe Press,F(xiàn)T Press,Apress,Manning,New Riders,McGraw-Hill,Jones & Bartlett 和Course Technology 等。 更多信息,請訪問 http://oreilly.com/safari。 如何聯(lián)系我們 任何有關(guān)本書的意見或疑問,請按照以下地址聯(lián)系出版社。 美國: O’Reilly Media, Inc. 1005 Gravenstein Highway North Sebastopol, CA 95472 中國: 北京市西城區(qū)西直門南大街2 號成銘大廈C 座807 室(100035) 奧萊利技術(shù)咨詢(北京)有限公司 本書有一個專門的網(wǎng)頁,在上面列出了本書的勘誤表、示例及其他附加信息。網(wǎng)址是:http://bit.ly/ios_game_dev_cookbook_swift。 對于本書的評論和技術(shù)性問題,請發(fā)送電子郵件到:bookquestions@oreilly.com。 要了解更多 O’Reilly 圖書、培訓(xùn)課程、會議和新聞的信息,請訪問以下網(wǎng)站: http://www.oreilly.com。 我們的Facebook:http://facebook.com/oreilly。 我們的Twitter:http://twitter.com/oreillymedia。 我們的YouTube:http://www.youtube.com/oreillymedia。 致謝 Jon 在此感謝他的父母和他的大家庭,感謝他們的大力支持。 Paris 在此感謝他的母親。不是因為母親,他就不會做自己感興趣的事情,更不用說寫書了。 感謝本書編輯Rachel Roumeliotis,是她的技巧和忠告使本書得以完成。此外,作者在編寫本書的過程中接觸過的所有O’Reilly 人員都是他們領(lǐng)域中的佼佼者。 非常感謝Tony Gray 和 AUC,他們給予我們和這里列舉的其他人極大的支持。如果不是Tony 和AUC 社區(qū),我們不會有機會進入這個行業(yè)工作,更別說寫這本書了。抱歉,Tony,現(xiàn)在你也在寫書了。 感謝Neal Goldstein,所有功勞和過失都給他,是他驅(qū)使我們進入了一種瘋狂的寫作狀態(tài)。 還要感謝Maclab 的那幫家伙[ 忘記了他們的名字,他們始終堅持觀戰(zhàn)到Admiral Dolphin 團隊獲得勝利的那一刻(Admiral Dolphin 團隊曾獲得GovHack 2013 的“Bestuse of data.gov.au”獎,兩個作者都是該團隊的成員)],以及Christopher Lueg 教授、Leonie Ellis 博士以及塔斯馬尼亞大學(xué)的所有人。在此向Mark Pesce 道歉,原因他懂的。 因為種種原因,還感謝 Mars G.、Tim N.、Dave J.、Rex S.、Nic W.、Andrew B.、Jess L.、Alec H.、Scott B、Bethany H.、Adam S. 以及Rebekah S.。特別要感謝蘋果公司辛勤工作的工程師、作家、藝術(shù)家和其他員工,沒有他們,這本書(以及許多其他的同類書)都不會存在。 最后,非常感謝你購買了我們的書,非常感謝!如果有任何反饋,請告訴我們。你可以給lab@secretlab.com 發(fā)郵件,或者在Twitter 聯(lián)系我們@thesecretlab。
Jonathon Manning是一位游戲設(shè)計師及程序員,他曾經(jīng)參與過多個項目,從一個關(guān)于貓的視頻游戲(獲得過BAFTA的獎項)到實時通信軟件客戶端。他的 Twitter是@desplesda。 Paris Buttfield-Addison是一位移動應(yīng)用工程師、游戲設(shè)計師和熱衷于讓技術(shù)盡可能簡單和吸引人的學(xué)者。他的Twitter是@parisba。 Jon和Paris是Secret Lab的聯(lián)合創(chuàng)始人,Secret Lab是位于澳大利亞塔斯馬尼亞的一家獨立游戲工作室。 目錄 前言 .1 第1 章 游戲的設(shè)計 9 1.1 設(shè)計游戲引擎 .9 1.2 創(chuàng)建基于繼承的設(shè)計 10 1.3 創(chuàng)建基于組件的設(shè)計 12 1.4 用 GameplayKit 創(chuàng)建基于組件的游戲設(shè)計 16 1.5 計算屏幕的幀刷新時間 18 1.6 進入和退出游戲 .19 1.7 用定時器進行游戲的刷新 22 1.8 每幀刷新 .23 1.9 游戲暫停 .24 1.10 記錄游戲時間 25 1.11 使用閉包 26 1.12 在方法中回調(diào)閉包 29 1.13 使用 Operation Queues .30 1.14 延遲執(zhí)行 32 1.15 串行執(zhí)行 33 1.16 通過閉包進行數(shù)組的過濾 34 1.17 加載游戲資源 35 1.18 在游戲中使用單元測試 36 .19 二維網(wǎng)格 39 1.20 使用隨機數(shù) .40 1.21 編寫狀態(tài)機 .42 第2 章 視圖和菜單 . 46 2.1 使用故事板 47 2.2 創(chuàng)建視圖控制器 .53 2.3 通過Segue 導(dǎo)航到不同屏幕 60 2.4 使用布局約束進行布局 65 2.5 導(dǎo)入圖片到項目 68 2.6 切割按鈕的背景圖片 70 2.7 用UIDynamics 創(chuàng)建動畫視圖 71 2.8 用Core Animation 移動圖片.74 2.9 旋轉(zhuǎn)圖片 75 2.10 實現(xiàn)視圖的彈起效果 77 2.11 用UIAppearance 主題化UI 樣式 79 2.12 對UIView 進行3D 旋轉(zhuǎn) .80 2.13 在游戲內(nèi)容之上顯示菜單 83 2.14 創(chuàng)建高效的游戲菜單 84 第3 章 輸入 . 86 3.1 偵測觸摸 87 3.2 處理輕觸手勢 .88 3.3 在屏幕上拖動圖片 .90 3.4 識別旋轉(zhuǎn)手勢 .92 3.5 識別捏合手勢 94 3.6 自定義手勢 96 3.7 在視圖的指定區(qū)域識別觸摸 .100 3.8 識別搖晃手勢 101 3.9 識別設(shè)備傾斜手勢 .102 3.10 獲得指北針方向 106 3.11 獲得用戶的位置 108 3.12 計算運動速度 112 3.13 計算用戶與目標(biāo)的距離 113 3.14 當(dāng)用戶進入或離開某個位置時獲得通知 . 114 3.15 通過地名獲得坐標(biāo) 118 3.16 通過坐標(biāo)獲得地名 119 3.17 將設(shè)備當(dāng)作方向盤 121 3.18 測量磁場 122 3.19 利用輸入改善游戲設(shè)計 124 第4 章 聲音 126 4.1 用 AVAudioPlayer 播放聲音 .126 4.2 用AVAudioRecorder 進行錄音 .130 4.3 使用多個AVAudioPlayer .131 4.4 兩個聲音間的淡入淡出 133 4.5 合成語音 .136 4.6 獲知音樂程序當(dāng)前播放曲目 137 4.7 當(dāng)前曲目何時改變 .140 4.8 音樂回放控制 141 4.9 讓用戶選擇音樂 142 4.10 當(dāng)其他App 正在播放音樂時的操作 145 4.11 在游戲中使用哪種聲音播放模式最好 147 第5 章 存儲數(shù)據(jù) 148 5.1 保存游戲狀態(tài) 148 5.2 在本地保存游戲得分 .150 5.3 用 iCloud 保存游戲進度 .151 5.4 使用iCloud 的鍵– 值存儲 .157 5.5 何時使用文件,何時使用數(shù)據(jù)庫 159 5.6 管理資源集 160 5.7 用NSUserDefaults 存放數(shù)據(jù) .162 5.8 最佳數(shù)據(jù)存儲策略 .164 5.9 游戲中的財富值 .165 5.10 保存到CloudKit 166 5.11 向CloudKit 數(shù)據(jù)庫中添加記錄 .168 5.12 查詢CloudKit 數(shù)據(jù)庫中的記錄 .169 5.13 從CloudKit 數(shù)據(jù)庫中刪除記錄 .173 第6 章 2D 圖形和Sprite Kit 175 6.1 熟悉二維數(shù)學(xué) 176 6.2 創(chuàng)建Sprite Kit 視圖 183 6.3 創(chuàng)建場景 .184 6.4 加入精靈 187 6.5 文本精靈 .188 6.6 獲取有效字體 190 6.7 使用自定義字體 .191 6.8 場景切換 191 6.9 移動精靈和標(biāo)簽 194 6.10 紋理貼圖精靈 197 6.11 紋理圖集 197 6.12 形狀節(jié)點 198 6.13 混合模式 200 6.14 對精靈使用濾鏡 .201 6.15 貝塞爾曲線 202 6.16 煙霧、火焰和粒子特效 204 6.17 抖動屏幕 205 6.18 動畫精靈 207 6.19 視差滾動 208 6.20 噪聲圖 215 第7 章 物理學(xué) 217 7.1 物理學(xué)術(shù)語和定義 .217 7.2 為精靈添加物理特性 .219 7.3 靜止物體和運動物體 .220 7.4 定義碰撞體的形狀 .221 7.5 速度 224 7.6 質(zhì)量、大小和密度 .224 7.7 創(chuàng)建墻壁 .226 7.8 設(shè)置重力 .227 7.9 讓物體無法旋轉(zhuǎn) .229 7.10 改變物理模擬世界的時鐘 .229 7.11 碰撞檢測 230 7.12 查找物體 231 7.13 連接 233 7.14 作用力 235 7.15 在物體上添加推進器 .236 7.16 制造爆炸 237 7.17 根據(jù)設(shè)備方向改變重力 239 7.18 拖動物體 241 7.19 創(chuàng)建車輛 243 第8 章 Scene Kit . 246 8.1 使用Scene Kit .246 8.2 創(chuàng)建一個Scene Kit 場景 247 8.3 顯示3D 對象 248 8.4 Scene Kit 的鏡頭 248 8.5 創(chuàng)建燈光 .249 8.6 移動 251 8.7 使用文本節(jié)點 252 8.8 自定義材質(zhì) 252 8.9 紋理對象 .254 8.10 法向貼圖 254 8.11 約束對象 255 8.12 加載3D 模型文件 256 8.13 3D 物理學(xué) 257 8.14 反射 258 8.15 點擊測試 259 8.16 加載場景文件 .260 8.17 粒子系統(tǒng) 260 8.18 Metal 261 第9 章 人工智能和行為 263 9.1 Swift 使向量計算更輕松263 9.2 讓對象朝某個點移動 266 9.3 跟隨路徑 .268 9.4 攔截運動物體 269 9.5 逃逸 270 9.6 目標(biāo)選擇問題 271 9.7 轉(zhuǎn)向問題 272 9.8 隱蔽點問題 273 9.9 路徑算法 274 9.10 網(wǎng)格中的路徑查找 279 9.11 計算下一步問題 280 9.12 判斷對象能否“看見”其他對象 281 9.13 用NSLinguisticTagger 作詞性標(biāo)注 .283 9.14 用 AVFoundation 框架訪問相機 285 9.15 導(dǎo)入 Core ML 模型 288 9.16 識別圖片中的物體 289 9.17 用人工智能增強游戲設(shè)計 293 第10 章 使用外設(shè) 294 10.1 檢測控制器 .296 10.2 從游戲控制器中獲得輸入 298 10.3 通過AirPlay 顯示游戲內(nèi)容 .300 10.4 使用擴展屏幕 301 10.5 為不同的屏幕適配UI 303 10.6 拖放 307 10.7 用 UIFeedbackGenerator 實現(xiàn)觸覺回饋 .313 10.8 用ReplayKit 記錄屏幕 315 10.9 用ARKit 顯示AR 畫面 .318 10.10 AR 場景的點擊測試 322 10.11 用 TestFight 測試 APP 325 10.12 用Fastlane 構(gòu)建和發(fā)布APP .326 第11 章 性能和調(diào)試 327 11.1 改善幀刷新率 .327 11.2 快速加載關(guān)卡 .330 11.3 解決內(nèi)存不足問題 331 11.4 查找崩潰原因 .333 11.5 使用紋理壓縮 .334 11.6 使用watchpoint .338 11.7 記錄日志 339 11.8 創(chuàng)建語音斷點 .340
你還可能感興趣
我要評論
|