簡介
《iPhone遊戲編程實例:分享成功遊戲開發人員的錦囊妙計》通過實戰中的真實示例闡釋了獨立進行iPhone遊戲開發時必須掌握的知識,介紹了高效開發創意遊戲和最佳化遊戲的實用技巧。書中結合示例對iPhone遊戲開發進行了詳細而通俗的講解,包括如何使用iPhoneSDK工具(如Instruments和Shark)最佳化遊戲,如何加強遊戲設計的美術工藝,如何利用REST式網頁服務在自己的遊戲中實現社會化網路,如何在iPhone平台上快速進行遊戲開發,如何通過開發在iPhone、MacOSX、Linux和Windows上運行的遊戲來提高市場份額,如何開發iPhone多人遊戲。
《iPhone遊戲編程實例:分享成功遊戲開發人員的錦囊妙計》適合所有iPhone遊戲開發人員學習參考
書籍介紹
如果你還只是在iPhone上安裝別人開發的遊戲,如果你還在為別人的iPhone遊戲驚嘆不已,很遺憾地告訴你:你有些落伍了!
如果你已經不再滿足於此,而在期盼著有一天自己的遊戲也能登上AppStore,祝賀你,你的願望絕對不是無謂的夢想。因為,你有強大的後援,而你手上的這本書就是最有力的支撐。
本書作者曾開發過一些知名的iPhone遊戲,而且仍在iPhone遊戲的開發道路上繼續努力。
本書正是匯集了這些作者根據自己的實踐經驗提煉的“獨門絕技”。無論你是否玩過他們的遊戲,但有一點是肯定的,你絕對不想錯過他們的智慧結晶。
全書共有8章,分別從不同角度引領大家走入iPhone遊戲開發的前沿,具體包括用戶體驗、社交遊戲、基於標準C的遊戲開發、遊戲最佳化、遊戲設計文檔、跨平台遊戲、代碼最佳化和網路化遊戲。每位作者各盡其能,分別用一章介紹自己最為擅長的領域。有些側重於用生動的語言展示概念的內涵,有些則著重於通過示例代碼支持所闡述的思想,不同風格、不同角度、不同內容,共同匯聚成為你手上這本異彩紛呈的技術指南。讀過本書你定會“功力大增”,相信正如作者所說,也許你的應用程式很快就能發布到AppStore上!
全書主要由王小振、王恆翻譯,並得到李璜、喬會東、蘇金國、姚曜的大力協助。全書是多位不同風格的作者合作完成的,因此給翻譯帶來了一些困難,儘管我們在文字上下了很大工夫,但肯定還會有不當之處,敬請批評指正。
內容介紹
首先,很顯然:iPhone很火。iPodtouch也很火(儘管不那么明顯)——沒有電話,沒有蜂窩網(也沒有相應的每月付費),只是一個可以玩遊戲、可以下載應用程式的絕妙的Cocoatouch設備。它們的穩定性、一直保持的網路連線、無以言表的非凡外觀,以及(作為開發人員,這一點我們體會最深)所有那些傑出的第三方套用,使得消費者對它們狂熱追捧。Apple的AppStore也很火,而且這些設備的擁有者很清楚,其中最火的是遊戲!《華爾街日報》報導了由Mobclix收集的數據,這些數據顯示Apple的AppStore中四分之一以上都是遊戲(http://blogs.wsj.com/digits/2009/03/23/no-recession-for-iphone-game-apps/)。風險投資者也加入進來,對遊戲開發人員ngmoco的投資竟達一千萬美元之多。甚至專門有一個有關iPhone遊戲的會議(http://www.igsummit.com/)。
本書是iPhone和iPodtouch遊戲開發之旅中的一個指南和同伴。像所有優秀的旅行指南一樣,這裡有很多提示、重點,還有一些很有意義的建議,可以幫助你避免犯那些之前較早探路者經歷過的代價高昂而且很花費時間的錯誤。
不過遊戲開發人員的生活並非總是充滿樂趣,當然遊戲也是如此,所以這裡還包含另外一些內容。畢竟,與任何形式的套用開發一樣,遊戲開發同樣需要掌握基本編碼和語言技巧的有關知識。因此,書中提供了一些代碼,以便你在構建自己的應用程式時重用。有些開發人員可能並不把遊戲開發作為自己的首選,即便如此,這些開發人員也能從本書找到大量可靠的信息,並在他們的套用中使用。
本書面向每位為iPhone和iPodtouch編寫遊戲的人。這裡假設你已經有一些開發經驗,包括一般經驗以及只在iPhone上使用Objective-C和Cocoa的經驗。我們並不打算涵蓋可能想到的每一種遊戲的每一個API的方方面面,而是為讀者留出了很大的想像空間,只提供了最重要的概念和有說服力的示例,希望它們對你有用,能夠讓你有所啟發。
我們之所以能夠這么做,是因為它是Apress的“Mac和iPhone開發人員系列”完整路線圖的一部分。所以,如果你用過Objective-C和Cocoa,不過沒有專門做過iPhone開發,DaveMark和JeffLaMarche編寫的《iPhone3開發基礎教程》可以很好地填補空白。如果你用過某種面向對象語言(如C++、C#或Java),閱讀《iPhone3開發基礎教程》之前,只需簡單瀏覽Apple免費線上參考手冊TheObjective-C2.0ProgrammingLanguage(可以http://developer.apple.com得到)的前幾章可能就足夠了。否則,你可能需要先從MarkDalrymple和ScottKnaster的LearnObjective-ContheMac開始(前提是你有C的開發經驗,但沒有用過Objective-C),或者需要先看看DaveMark的LearnContheMac(前提是你在開發方面完全是新手,或者從未用過PHP、ASP或JavaScript等類C語言)。
iPhoneSDK的某些部分基於標準C而不是Cocoa框架,類似的,本書的一些部分使用了標準C的指針和結構。如果你不熟悉這些內容,PetervanderLinden所著的ExpertCProgramming(由PrenticeHall出版)可以幫助你了解有關內容。
本書首先將認真地考慮用戶體驗。我們總聽人們這樣講:套用發布之前應當力求完美,不過這到底是什麼意思呢?JoachimBondo是優雅的西洋棋套用DeepGreen的作者,他同讀者分享了他的見解,指出哪些因素可以促成一個優秀的用戶界面,以及他如何決定需要增加哪些特性和需要刪除哪些特性。了解DeepGreen中貫徹的這些思想會讓你明白“力求完美”的真正含義。
在第2章,PJCabrera向我們介紹了重歸遊戲社交性的有關思想。他用大量代碼來支持自己的想法,展示了如何調用一個網頁服務,如何解析得到的XML,如何向網頁服務提交數據以及對於真正的REST式網頁服務,如何用一個非正式的庫簡化這個任務。此外,你還將了解如何使用RubyonRails建立一個REST式網頁服務的原型,從而能夠很快起步。有長時間開發經歷的開發人員很想知道古老的文本遊戲StarTrek是如何演變成使用OpenGLES的遊戲SpaceHike的。AaronFothergill在第3章解釋了這個演變過程,還分享了一個巧妙的技術來保存基於結構的數據。
在第4章,PangeaSoftware公司的“巨星”Briangreenstone(Bugdom、CroMagRally等遊戲的作者)向我們展示了開發iPhone動作遊戲時必做的事項。Brian還將指導你使用Instruments和Shark完成性能分析。第一次讀這一章時,看到最後我真是筋疲力盡了。在第5章,OlivierHennessy和ClaytonKane以遊戲設計文檔的形式介紹了他們在這個領域的經驗(可以把這看作一個成功計畫)。他們還對可用的遊戲引擎給出了概述,並解釋了選擇某個引擎的原因。除了iPhone,你是不是還在考慮其他平台?在第6章,MikeKasprzak分享了他為iPhone編寫基於OpenGLES的遊戲的有關技術,只需少量修改就能讓遊戲在Windows和Linux上運行。其中還包含了“跳幀”和物理模擬等技術。MikeLee曾任職於DeliciousMonster,後來與他人合創了Tapulous,現在加入了Apple。他在第7章介紹了對代碼最佳化過程的認識。Mike深入分析了最佳化的思維過程,包括主要觀察哪些方面將有助於得出解決方案。他還強調了納入開發商框架的重要性,儘管你可能更願意自行開發。
在本書的最後,RichardZito和MatthewAitken介紹了有關多人遊戲的內容。他們研究了實現網路化的多種技術,展示了各種技術的優缺點。這裡涵蓋了底層socket技術(包括提供以及不提供Bonjour服務)。你將了解如何在網路上“發布”遊戲的可用性,以及如何讓用戶加入。我們還線上增加了額外的一章①,由JamieGotch所著,介紹了如何實現遊戲Puyo的一個克隆版本,這是一個積木下落遊戲,使用了A*(A星)尋路算法。A*通常在諸如實時策略、冒險和角色扮演等類型的遊戲中為單元運動實現人工智慧型。這一章展示了如何使用A*在遊戲中尋找相鄰的同色積木。Jamie的遊戲Fieldrunners在遊戲開發人員大會獨立遊戲節Mobile2009大賽中成為贏家。
目錄
第1章簡化複雜遊戲的用戶界面:西洋棋遊戲deepgreen成功之路3
1.1複雜的用戶界面4
1.2為什麼要考慮簡單性6
1.3如何獲得簡單性6
1.3.1提取核心要素7
1.3.2改善圖像8
1.3.3讓用戶集中注意力9
1.3.4深入挖掘10
1.3.5簡單就是美12
1.3.6為用戶賦予能力14
1.3.7讓用戶微笑15
1.4小結16
第2章基於rest式網頁服務的回響式社交遊戲19
2.1社交網路遊戲和iphone20
2.2創建原型高分網頁服務21
2.2.1創建高分rails應用程式22
2.2.2使用rest式xml網頁服務24
2.3在iphone上顯示高分26
2.3.1創建ui27
2.3.2連線網頁服務32
.2.3.3解析xml37
2.3.4在表視圖中顯示高分41
2.4向網頁服務提交高分43
2.5提交用戶成就46
2.6引入objectiveresource46
2.6.1使用objectiveresource47
2.6.2用objectiveresource提交高分50
2.7小結50
第3章使用標準c的快速遊戲開發.53
3.1起步55
3.2創建工程.57
3.3解決保存遊戲問題64
3.3.1如何保存65
3.3.2如何輕鬆保存65
3.4spacehike:具體套用70
3.4.1渲染循環和基本組織70
3.4.2遊戲邏輯總覽72
3.4.3繪製和處理遊戲73
3.4.4改進遊戲84
3.5小結84
第4章briangreenstone實現遊戲最佳化的必要工作87
4.1記憶體問題.88
4.2你懂c嗎89
4.2.1標準c是最好的89
4.2.2cocoa與corefoundation90
4.3編譯器最佳化90
4.3.1thumb指令集91
4.3.2編譯器最佳化級別93
4.3.3最佳化函式調用93
4.4音頻最佳化.94
4.4.1流式音樂回放94
4.4.2OpenAL的聲音效果95
4.5opengl最佳化96
4.5.1構造一個高效的opengl繪製上下文97
4.5.2避免狀態改變98
4.5.3縮減紋理大小99
4.5.4使用壓縮紋理100
4.5.5幾何形狀數據縮減102
4.5.6限制繪製調用數量102
4.6性能工具103
4.6.1使用instruments104
4.6.2使用shark105
4.7小結109
第5章成功之道始於遊戲設計文檔.113
5.1遊戲遠景114
5.2遊戲設計文檔114
5.2.1標題115
5.2.2遊戲摘要.115
5.2.3遊戲細節.115
5.2.4遊戲設定.116
5.2.5遊戲系統/引擎116
5.2.6遊戲玩法:控制項和ui117
5.2.7過關地圖.118
5.2.8美學設計.119
5.2.9標題和信息螢幕120
5.2.10聲音效果120
5.3從遠景到現實120
5.3.1創建真實人工智慧的技巧121
5.3.2iphone設計的挑戰122
5.4遊戲開發技巧124
5.4.1solitairetop3124
5.4.2backgammon124
5.4.3pool125
5.4.4kaleidoscope125
5.4.5shaken’break125
5.4.6bikinihunt127
5.4.7yoyo127
5.4.8apachelander.127
5.5小結128
第6章多平台遊戲開發:面向linux和windows的iphone遊戲.131
6.1smiles的開發:一組智力遊戲132
6.2跨平台和可移植性136
6.2.1編寫可移植代碼的原因136
6.2.2為什麼不編寫可移植代碼137
6.3徹底的可移植性137
6.3.1經典遊戲循環138
6.3.2實際遊戲循環139
6.3.3幀與刷新速率141
6.3.4work與draw幀代碼141
6.4與事件驅動作業系統合作142
6.4.1準備跟蹤觸控142
6.4.2跟蹤觸控143
6.4.3遊戲循環中模擬觸控和釋放事件145
6.5跳幀147
6.5.1創建一個unix系統時間庫148
6.5.2使用unixtime庫實現跳幀152
6.6傾斜和觸摸物理示例154
6.6.1物理模擬示例的遊戲代碼154
6.6.2可移植性的更多考慮160
6.7小結161
第7章代碼最佳化——來自mikelee(“世界上最頑強的程式設計師”)165
7.1第一代:粒子效果166
7.2全局167
7.3第2代:煙與鏡子168
7.4過早最佳化170
7.4.1構建效率170
7.4.2代碼效率172
7.4.3算法效率174
7.5第3代:鯊魚出動175
7.6保持冷靜177
7.7第4代:更巧妙的最佳化178
7.8特定於應用程式的最佳化179
7.9小結182
第8章網路化遊戲:正確地選擇185
8.1多人遊戲網路化選擇186
8.1.1通信是關鍵186
8.1.2區域網路遊戲中引入“bonjour”193
8.1.3繪製到螢幕202
8.2井字遊戲示例203
8.3小結214
通信和電子方面的書籍
介紹電子科學與技術、信息技術、通信工程等方面的基本理論和基本知識,了解國內外電子與通信技術的發展動態。 |