




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
開發(fā)玩耍可能是學(xué)習(xí)編程的理由中最吸引人的一條了。但如何從零開頭入門,到達(dá)能夠開發(fā)玩耍的編程水平,是困擾很多勇敢少年們的傳統(tǒng)難題。作為一名玩耍設(shè)計(jì)師,我沒有系統(tǒng)地學(xué)習(xí)過編程。5年前開頭,我有了自己從頭完整開發(fā)玩耍的念頭,于是斷斷續(xù)續(xù)地看了很多書,試過了很多入門方法和開發(fā)環(huán)境,但直到近半年才Unity開發(fā)環(huán)境下獨(dú)立制作玩耍原型和利用成型的框架完善玩耍功能已不成問題。本文會(huì)介紹如何從零開頭學(xué)習(xí)玩耍開發(fā)編程的方法,期望能為和我一樣掙扎在編程大門之外的玩耍開發(fā)愛好者們供給幫助。不過事先要說明的是,這種學(xué)習(xí)思路是為了幫助你在做玩耍的過程中漸漸學(xué)習(xí)編寫程序,不適用于其他領(lǐng)域,但作為一種入門方法,它能讓你在半年到一年的學(xué)習(xí)之后,做到獨(dú)立制做小玩耍〔或原型〕。門外漢學(xué)編程的難點(diǎn)介紹學(xué)習(xí)方法之前,我們先看看門外漢學(xué)編程最常遇到的問題。第一,程序員們常常說程序語言只是編程工具,但市面上常見的教程都寵愛從語法、算法和程序語言的使用思想開頭教學(xué),而不是把編程語言當(dāng)做解決實(shí)際問題的工具來入手。因此,初學(xué)者常常消耗很大精力才能理解書上寫的算法和思想,卻完全不知道理解之后能用來做什么。其次,很多編程教程雖然配有實(shí)例,但一方面例子的學(xué)習(xí)難度曲線增加得很快,剛看完一個(gè)“HelloWorld”實(shí)例,下一個(gè)例子可能就變成教你如何安排內(nèi)存〔Objective-C的教程就是這樣的〕。另一方面初學(xué)者在對(duì)開發(fā)流程不生疏的狀況下,很難做到舉一反三,從一個(gè)實(shí)例里總結(jié)出做另外三個(gè)玩耍的方法,我常常遇見看了三個(gè)不同類型的玩耍實(shí)例,放下書后卻連一個(gè)玩耍都做不出來的狀況。第三,很多編程教程為了提高普適性,在使用現(xiàn)成架構(gòu)方面都很保守,導(dǎo)致了很多重復(fù)造輪子的教程消滅。例如在前幾年Cocos2D〔iOS平臺(tái)玩耍開發(fā)的玩耍引擎〕還沒有現(xiàn)在這iOS玩耍開發(fā)教程講的都是如何使用OpenGLES來制作玩耍圖像,而這些底層架構(gòu)的實(shí)現(xiàn)對(duì)初學(xué)者來說是根本不行能完成的任務(wù)。因此,適合初學(xué)者的學(xué)習(xí)方針是:從實(shí)際需求動(dòng)身;“怎么做”優(yōu)于“為什么”〔為什么可以在入門之后再漸漸理解〕;使用允許你偷懶的工具或架構(gòu)〔需要做的越少越好〕。這些要求其實(shí)很簡潔滿足,答案恰恰在看起來和編程關(guān)系不大的領(lǐng)域——可視化編程工具里〔VisualProgrammingTools〕。可視化編程玩耍引擎讓你先做再想可視化編程泛指一切使用可視化元素的操作代替文本輸入的程序設(shè)計(jì)方式,大體上就是像畫流程圖一樣通過連接假設(shè)干“盒子”和“箭頭”來實(shí)現(xiàn)程序規(guī)律。這個(gè)概念在玩耍開發(fā)工具上的應(yīng)用越來越流行,GameMaker、RPGMaker、GameSalad、Construct2Unity都是其中的代表。盡管這些工具和引擎各有不同的開發(fā)方式,但它們都能讓初學(xué)者在完全不懂編程語法和簡單算法的狀況下快速實(shí)現(xiàn)自己的玩耍設(shè)計(jì)。我之前的態(tài)度是寧可抱著“看也看不懂,看懂了也不會(huì)做”的書XNA〔C#的玩耍開發(fā)架構(gòu)〕Cocoa〔蘋Objective-C的應(yīng)用開發(fā)架構(gòu)〕,也不屑于使用GameMaker、GameSalad之類的圖形界面開發(fā)工具。認(rèn)為這些工具屬于“業(yè)余型”,就算能做出玩耍來也是旁門左道,不能修煉內(nèi)功。BIGJam的活動(dòng),接觸了很多GameMakerFlash這些簡潔的工具當(dāng)做制作獨(dú)立玩耍的最正確選擇。緣由是他們多年以前開頭學(xué)習(xí)玩耍開發(fā)時(shí)使用的就是這些工具,常年的使用閱歷讓他們能在最短的時(shí)間里用這些工具實(shí)現(xiàn)想法。而使用這些工具從頭到尾制作了大量玩耍的經(jīng)受,也在他們以后學(xué)習(xí)用編程語言開發(fā)玩耍時(shí)打下了很好的根底。從那之后,為了快速開發(fā)原型,我開頭物色入門級(jí)的可視化編程玩耍引擎。HTML5Construct2偶然進(jìn)入了我的視線。花十幾分鐘學(xué)習(xí)教程實(shí)例之后,我很快用幾個(gè)小時(shí)做出了一個(gè)始終在構(gòu)思的玩耍想法〔固然想法本身就很簡潔,而且制作過程中遇到實(shí)現(xiàn)困難的設(shè)計(jì)都進(jìn)展了進(jìn)一步簡化〕。說來慚愧,盡管在主機(jī)玩耍Construct2的開發(fā)過程中我第一次感覺到對(duì)玩耍開發(fā)的整個(gè)過程和架構(gòu)有了初步生疏。首先,可視化編程工具里一般都有一個(gè)現(xiàn)成的玩耍場景〔任何玩耍開發(fā)過程中都需要一個(gè)畫布或一個(gè)攝像機(jī)來描述玩家可以看到的圖像范圍〕,然后你需要把玩耍中需要的各個(gè)元素〔一般稱為Actor,例如主角、敵人、子彈等,這就是編程語言里對(duì)象的概念〕放進(jìn)場景里,然后通過關(guān)聯(lián)規(guī)律模塊來讓它們快速互動(dòng)起來。Construct2的規(guī)律模塊使用了格外貼近編程語言的按行號(hào)從上到下的執(zhí)行挨次。而且你將從教程中學(xué)習(xí)到,原來玩耍開頭運(yùn)行后每一幀都會(huì)按挨次執(zhí)行一遍全部的規(guī)律,這就是玩耍開發(fā)的根本框架中最常說的主玩耍循環(huán)〔MainGameLoop〕。除此之外,用戶使用規(guī)律模塊時(shí)不用擔(dān)憂語法錯(cuò)誤和算法的設(shè)計(jì),一般這類引擎里都會(huì)供給大量現(xiàn)成的算法模塊可供選擇。只要專注于設(shè)計(jì)玩耍規(guī)律,其他事情可以說都是軟件自動(dòng)幫你完成。在觀看教程和其他范例工程時(shí)也一目了然,學(xué)習(xí)別人的設(shè)計(jì)思想更加簡潔。Construct2獨(dú)立完成了第一個(gè)玩耍原型后,我學(xué)到了相像的玩耍元素可以共享一局部屬性〔編程語言里使用類和繼承的概念〕;學(xué)到了全部活動(dòng)的玩耍元素都需要在每一幀的循環(huán)里進(jìn)展驅(qū)動(dòng),每幀只運(yùn)動(dòng)一小段距離;還學(xué)到了應(yīng)當(dāng)在主玩耍循環(huán)的什么GameOverGameOver時(shí)進(jìn)入另一個(gè)循環(huán)來等待玩家重開頭玩耍等內(nèi)容。這段經(jīng)受讓我生疏到有力量從頭到尾制作玩耍〔或者原型〕對(duì)于玩耍開發(fā)的理解有多么重要。但有一個(gè)問題消滅了—假設(shè)可視化工具那么好用,那為什么還要連續(xù)學(xué)習(xí)編程呢?我當(dāng)時(shí)也光臨著高……由需求動(dòng)身向編寫代碼的轉(zhuǎn)型直到我打算做個(gè)稍大一點(diǎn)的戰(zhàn)略玩耍工程,才開頭在各種玩耍開發(fā)工具中碰壁。接連嘗試了Construct2、GameMaker、Stencyl,可不管哪一個(gè)工具都無法很簡潔地供給我所需要的數(shù)據(jù)構(gòu)造。重打量了需求的增加和工具的局限性之后,我才打算開頭學(xué)習(xí)UnityC#編程。在請教了團(tuán)隊(duì)里的程序員和有針對(duì)性地學(xué)習(xí)了一局部Unity中搭建出了設(shè)計(jì)需要的根本玩耍UnityC#腳本,一步步地把握了C#里類的繼承、列表和字典的使用與托付等難以讀懂,學(xué)了也不知道怎么用的概念。Unity開發(fā)環(huán)境里獨(dú)立制作玩耍原型時(shí),我也感覺從Unity引擎有個(gè)特點(diǎn),就是有一個(gè)內(nèi)容格外豐富的插件市場,其中最流行的插件類型之一就是可視化編程插件。這些插件〔PlayMaker、uScript、AntaresUniverse等〕Unity玩耍開發(fā)的常用功能打包成函數(shù)塊,并按需求類別歸納成組,只要花一點(diǎn)時(shí)間閱讀手冊就相當(dāng)于把握了Unity里大局部的常用函數(shù)功能。之后用戶通過連接不同函數(shù)塊的輸入輸出接口來實(shí)現(xiàn)完整的玩耍規(guī)律。當(dāng)時(shí)我為了開發(fā)一個(gè)動(dòng)畫狀態(tài)很多的動(dòng)作玩耍原型,購置了PlayMaker插件,并且使用這個(gè)插件強(qiáng)大的狀態(tài)和動(dòng)畫掌握功能第一次學(xué)習(xí)了有限狀態(tài)機(jī)的制作和使用。之后又經(jīng)身邊的程序員教導(dǎo)了可以用來掌握菜單和不同條件下需要不同處理方式的很多玩耍邏輯。Construct2一樣,我也只在一個(gè)工程中使用了PlayMaker的狀態(tài)機(jī)。在了解了有限狀態(tài)機(jī)的根本工作方式后,我在之后的工程中都使用了團(tuán)隊(duì)里的程序員開發(fā)的純代碼的有限狀態(tài)機(jī)系統(tǒng)〔exUnityUnity下的玩耍開發(fā)有用架構(gòu):s://github/jwu/exUnity〕,完成了從可視化編程到代碼編程的轉(zhuǎn)型。這就是Unity下的可視化編程插件很適合用來學(xué)習(xí)編程的緣由:和其他較為簡潔的工具的區(qū)分在于,UnityJavaScriptC#作為C#函數(shù)和腳本打包成了可視化的規(guī)律塊,并沒有轉(zhuǎn)變其設(shè)計(jì)思路。對(duì)于初學(xué)者來說,用可視化插件組裝起來的玩耍規(guī)律和用C#手動(dòng)編寫的玩耍程序幾乎是一一對(duì)應(yīng)的,有時(shí)甚至能準(zhǔn)確到函數(shù)段落〔AntaresUniverseUnity的全部函數(shù)功能一一對(duì)應(yīng)〕Unity官方的腳本參考手冊,就能完成從可視化編程到文本編程的翻譯。我經(jīng)過可視化工具的啟發(fā),很快就覺察插件有些臃腫和煩瑣,也無法實(shí)現(xiàn)一些需求實(shí)現(xiàn)。在接下來的兩個(gè)原型中就越來越多地開頭手動(dòng)編寫代碼,對(duì)工具的依靠越來越小,直到完全拋棄。現(xiàn)在可以答復(fù)前面提出的“為什么有了不用編程就能開發(fā)玩耍的工具,還要學(xué)習(xí)編程”的問題了。假設(shè)你的全部設(shè)計(jì)需求都可以被可視化玩耍開發(fā)工具完成,那么確實(shí)不需要進(jìn)一步學(xué)習(xí)編程。但假設(shè)有的需求無論如何都不能用其他工具完成,那么自己寫代碼來實(shí)現(xiàn)就是唯一的出路,這時(shí)你有猛烈的需求和目標(biāo),就可以通過詢問或搜尋“怎么做”來學(xué)習(xí)編程并滿足需求。我的程序員好友常常說:“能否學(xué)會(huì)編程其實(shí)只取決于你的需求是否猛烈,不得其門而入、或半途而廢的都是需求不夠明確或不夠猛烈的人。”可視化編程工具對(duì)于玩耍開發(fā)者來說就是一個(gè)篩選需求的過程:100個(gè)需求,但都不知道從哪開頭90個(gè)需求,剩10個(gè)就被放大并明確化了。接下來依靠上網(wǎng)學(xué)習(xí)或向他人請教,終究也能自己實(shí)現(xiàn)〔個(gè)別超出力量的需求不要強(qiáng)求,請別人做或者放棄都比鉆牛角尖要好〕。可視化編程工具能夠培育我們由淺入深的思考習(xí)慣。先盡可能地用簡潔的規(guī)律去實(shí)現(xiàn)設(shè)計(jì),假設(shè)用“盒子”和“箭頭”無法完成,那么你在尋求代碼上的解決方案時(shí),就答復(fù)了“為什么要用這樣的程序設(shè)計(jì)思想”的問題。經(jīng)受了這個(gè)過程,你對(duì)“為什么”的理解會(huì)比一開頭就去看特地講解“為什么”的大部頭程序書籍深刻很多。而通過實(shí)踐理解了需求和程序設(shè)計(jì)之間的關(guān)系后,再去系統(tǒng)地閱讀程序設(shè)計(jì)教程效果會(huì)好得多。可視化編程雖然依靠于工具,但也能幫助你時(shí)刻把“程序語言即工具”的概念裝在腦袋里。之后無論換什么引擎,用哪種語言,首先應(yīng)當(dāng)問自己:“”另外,程序設(shè)計(jì)和畫流程圖之間的距離沒有想象中那么大,通過反復(fù)用可視化編程工具畫“流程圖”的過程,能夠從實(shí)踐中學(xué)習(xí)各種游戲設(shè)計(jì)的實(shí)現(xiàn)方法,當(dāng)你能準(zhǔn)確地畫出規(guī)律完善的流程圖時(shí),離你寫出同樣規(guī)律完善的程序距離已不遠(yuǎn)了。更重要的是,在這個(gè)過程中你實(shí)現(xiàn)了自己的想法,制造出了和書上的例程完全不同的東西,對(duì)于增加信念和進(jìn)一步明確自己的學(xué)習(xí)需求的作用都是巨大的。想學(xué)寫程序,就要做程序員的朋友最終講下如何從身邊的程序員那里獲得幫助。初學(xué)者想要學(xué)寫代碼,有個(gè)程序員朋友能讓你獲益良多。當(dāng)你遇到難題時(shí),請把詢問的重點(diǎn)集中在需求思路和關(guān)鍵字上,而不是一味求代碼。高手供給了思路以后自己實(shí)現(xiàn),或通過關(guān)鍵字自己尋求解決方案,都更有助于水平的提高。從可視化編程到代碼的轉(zhuǎn)化中,也可以嘗試使用程序員寫的功能庫或常用的架構(gòu)。前文中提到不要重復(fù)造輪子,當(dāng)拋棄可視化編程工具時(shí),就要用現(xiàn)成的功能庫來代替。在選用功能庫時(shí),自己信任的程序員推舉的東西總會(huì)是一個(gè)格外不錯(cuò)的選擇,他能告知你一個(gè)庫的優(yōu)缺點(diǎn)并且在使用過程中供給技術(shù)支持。我在學(xué)寫代碼的過程中,先是自己用最簡潔的方式實(shí)現(xiàn)功能,然后一邊不斷閱讀和學(xué)習(xí)同個(gè)獨(dú)立開發(fā)團(tuán)隊(duì)里程序員的工程構(gòu)造和代碼,再使用程序員設(shè)計(jì)或慣用的架構(gòu)來組織自己的代碼,這樣既能最快地完成工作,又能漸漸養(yǎng)成較好的編程習(xí)慣和深入理解程序設(shè)計(jì)思想。流行的可視化編程玩耍開發(fā)工具及簡潔點(diǎn)評(píng)GameMakerGameMaker是已有十多年歷史的老牌獨(dú)立玩耍開發(fā)引擎,也是在世界范圍內(nèi)最受獨(dú)立玩耍開發(fā)者歡送的引擎。巨大的用戶基數(shù)和獨(dú)立玩耍圈用戶們樂于共享的精神使得學(xué)習(xí)GameMaker格外簡潔。GML,便利用戶使用腳本代碼實(shí)現(xiàn)更高GameMakerStudioiOS、AndroidHTML5等各種平臺(tái)。Construct2GameMakerHTML5玩耍引擎,它的大事編輯界面〔EventEditor〕格外接近寫單一過程的程序代碼的模式和習(xí)慣,可以幫助初學(xué)者學(xué)習(xí)最根本的玩耍循環(huán)構(gòu)架。Construct2GameMaker,但仍舊處在高速進(jìn)展期,功能添加的很快。GameSalad這是一個(gè)很受業(yè)余愛好者和玩耍開發(fā)初學(xué)者的圖形界面引
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)村基礎(chǔ)設(shè)施改善及公共服務(wù)平臺(tái)建設(shè)協(xié)議
- 2025年吳忠2024危險(xiǎn)品運(yùn)輸從業(yè)資格考試題庫
- 高品質(zhì)農(nóng)業(yè)種植協(xié)議
- 2025年蘇州危險(xiǎn)品考試
- 農(nóng)村畜牧飼養(yǎng)托管協(xié)議
- 2025年原子吸收分光光度計(jì)合作協(xié)議書
- 公司出租房屋租賃合同
- 項(xiàng)目投資合作協(xié)議之共同發(fā)起融資合同書
- 個(gè)人網(wǎng)絡(luò)服務(wù)委托協(xié)議
- 教育培訓(xùn)課程開發(fā)與運(yùn)營合同
- 2025屆WMO世界奧林匹克數(shù)學(xué)競賽(中國區(qū))八年級(jí)地方晉級(jí)選拔賽模擬試題合集2套(AB卷)附答案
- 2025年四川省綿陽市涪城區(qū)九年級(jí)中考數(shù)學(xué)第二次診斷試卷(含答案)
- 磚砌蓄水池施工方案72698
- 2025年河北承德中考試題及答案
- 白癜風(fēng)診療共識(shí)(2024版)解讀
- T-CCA 035-2024 現(xiàn)制現(xiàn)售飲品添加糖量及食品安全操作指南
- 創(chuàng)業(yè)創(chuàng)新大賽職教賽道
- 圍手術(shù)期肺部感染預(yù)防
- 2025年春季安全教育主題班會(huì)教育記錄
- 2024版特種設(shè)備重大事故隱患判定準(zhǔn)則課件
- 2025年全球及中國鋼制螺旋錐齒輪行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報(bào)告
評(píng)論
0/150
提交評(píng)論