姜帥彤 付夢遠
(長春建筑學院,吉林 長春 130000)
如今,手機的硬件功能正在不斷強化。國外的手游行業(yè)正處于黃金發(fā)展階段,特別是其他發(fā)達國家,由于其手游,手游不僅是人們?nèi)粘蕵返囊环N方式,更是一種文化產(chǎn)業(yè)。推動著這些國家經(jīng)濟的發(fā)展,而我國相對于其他國家手游的起步較晚,但我國網(wǎng)絡的快速普及也為手游的發(fā)展提供了一個良好的平臺。在國家有關政策和資金的大力支持下,我高校也相繼開設了許多相關行業(yè)來培養(yǎng)優(yōu)秀人才,在不久的將來,手游也將成為我國的支柱性產(chǎn)業(yè)。
目前,手游的開發(fā)主流引擎有三種:unity3D、UDK以及COCOS2d。其中,unity3D常用于開發(fā)三維立體的空間和人物事物,被用于模擬真實生活中的各種場景,最大的特點就是能夠跨平臺,各種主流平臺,包括windows,IOS都能夠適用。UDK這是虛擬引擎的開發(fā)工具包,能夠增強手機的畫面感,COCOS2d則能夠?qū)崿F(xiàn)交互和資源共享。這三大主流引擎各有各的優(yōu)勢,unity3D由于其強大的跨平臺性和快速開發(fā)游戲的特點,受到了廣大手游開發(fā)者的喜愛。三大主流開發(fā)引擎中,unity3D開發(fā)游戲的速度最快,并且C#,javaScript等腳本語言都能夠很好的適用,并且美化三維畫面的所有文件格式都能兼容。除此之外,unity3D還擁有一個強大的后臺,在unity3D的資源商可以下載開發(fā)軟件所用到的所有模型,貼紙,腳本及插件等。
一般來說,根據(jù)手游的運行環(huán)境,手游可以分為單機游戲和網(wǎng)絡游戲;根據(jù)用戶體驗可以分為:角色扮演類游戲、益智游戲和休閑游戲。與外國玩家不同,外國玩家更喜歡角色扮演游戲,而中國玩家更喜歡休閑游戲?!稕Q戰(zhàn)大洋》是一款角色扮演類的網(wǎng)絡游戲。該款游戲為商業(yè)開發(fā)項目,因此為了保證能夠在進行公測后可玩性和畫面效果能夠吸引到更多的玩家,提高下載量,所以在項目建成之初,對該游戲的要求就是畫面精美,可玩性高,用戶體驗感好,除此之外,還要求對手機客戶端的大小進行控制,這樣才能夠保證玩家在聯(lián)網(wǎng)時與服務器端能夠進行實時高效的通信[1]。
1)游戲說明?!稕Q戰(zhàn)大洋》是一款養(yǎng)成類游戲,同時又具有策略游戲的特征。該游戲是用第三人稱的視覺來進行的。游戲場景根據(jù)實際場景縮小1:1。游戲環(huán)境只兼容android和iOS操作系統(tǒng),主要針對中高級硬件的智能手機,需要聯(lián)網(wǎng)進行游戲。由于該款游戲?qū)儆谏虡I(yè)開發(fā)項目,因此還涉及盈利的問題。盈利的主要來源是軟件市場的下載收益以及游戲玩家的投入。而由于國內(nèi)軟件應用市場大多都是免費下載,因此該款游戲也會考慮進行海外推廣。所以在進行開發(fā)時,除了要考慮到國內(nèi)玩家的游戲習慣和特點外,還要考慮海外文件,人均付費力較高,道具的購買里也遠大于國內(nèi)玩家。此外還將推行出多國語言版本,以方便海內(nèi)外玩家。
2)通信協(xié)議的實現(xiàn)。通信協(xié)議的發(fā)展首先需要考慮安全性和高效性。因此,最重要的是數(shù)據(jù)包的結(jié)構(gòu)和數(shù)據(jù)的編碼方式。《決戰(zhàn)大洋》這款游戲采用的通信協(xié)議是AGP協(xié)議,它是一種基于交互包的協(xié)議,數(shù)據(jù)通過TCP/ip協(xié)議傳輸。每個包都包含請求標識,表示包的用途。通信協(xié)議的編解碼方式采用緩沖協(xié)議。因此,需要根據(jù)基本數(shù)據(jù)類型定義項目實施過程。首先要做的是將數(shù)據(jù)以utf-8的編碼方式寫入定義文件,以后綴為.prooto的數(shù)據(jù)格式進行存儲。然后,將這些數(shù)據(jù)的格式將轉(zhuǎn)換為以.cs后綴的訪問類文件,將該訪問編譯成一個動態(tài)連接的數(shù)據(jù)庫,方便游戲運行時的調(diào)整[2]。
3)任務系統(tǒng)的實現(xiàn)。在實現(xiàn)任務系統(tǒng)時,首先需要生成一個靜態(tài)場景,完成動態(tài)場景的代碼編寫,然后完成控制邏輯代碼的編寫,從而完成功能系統(tǒng)的開發(fā)。在游戲的日常工作部分,由三部分組成,將領的頭像、背景圖像以及提示文字,場景部分可以利用EZGUI插件的控件來實現(xiàn)。
游戲中的背景圖案建立了一個矩形面板,因此可以用UIButton實現(xiàn)。而將領的頭像是在游戲運行時根據(jù)玩家的偏好生成特定數(shù)據(jù)的。由于玩家不同,將領的產(chǎn)生也不同。一個玩家可以產(chǎn)生幾個不同的將領,所以,需要通過PackedSprite控件來實現(xiàn)。控件實際上是一個幀動畫控件,可以同時設置多個動畫,每個動畫段可以包含多個幀。因此,只要將每個將領頭像制作成長度為一的動畫,然后將所有幀動畫放在同一個控件中就足夠了。每一幀都以將領的id命名的,因此很容易調(diào)用。
游戲中的提示文本由spriteText控件實現(xiàn),它相當于一個可以移動和縮放的文本框,該控件定義了各種屬性,如文本對齊、字體大小、字體樣式和顏色。
4)背包系統(tǒng)的實現(xiàn)。背包系統(tǒng)的實現(xiàn)首先需要生成一個基本的靜態(tài)場景,然后對動態(tài)場景進行編碼,最后編寫一個能夠?qū)崿F(xiàn)背包系統(tǒng)的控制邏輯代碼。背包系統(tǒng)場景界面由背景圖像、功能按鈕、提示文本、項目圖標和滑塊五部分組成,其中該場景中的滑動條部分要設置為隱藏,結(jié)合使用EZGUI插件,可以實現(xiàn)界面場景。場景的底層的界面,可以用UIButton實現(xiàn)。首先,構(gòu)建一個空白對象,然后連接腳本,為UIButton賦予一個制作好的界面圖像,指定一個材質(zhì),然后生成貼圖。需要注意的是,在指定文本時最好創(chuàng)建一個單獨的材質(zhì)[3]。場景中的多個功能按鈕中,除了背包按鈕和艦船按鈕使用使用UIRadioButton控件外,其他按鈕都都可以使用UIButton控件來實現(xiàn)。
5)地圖系統(tǒng)的實現(xiàn)。在背包系統(tǒng)中,邏輯處理部分主要是GIBag類,而實際上需要調(diào)用其他類來共同實現(xiàn)這個功能。該類由若干部分邏輯函數(shù)組成,包括游戲場景的邏輯、玩家數(shù)據(jù)的邏輯、操作響應的邏輯和數(shù)據(jù)通信的邏輯等。GIBag類功能的實現(xiàn)調(diào)用了幾個種類和接口,并與進行了數(shù)據(jù)通信。檢驗校對在類的實現(xiàn)過程中也非常重要。如果出現(xiàn)空值,游戲在運行過程中就會崩潰退出,如果場景搭建或重復創(chuàng)建的界面空間,也會極大地消耗手機的硬件資源,造成游戲卡頓的現(xiàn)象,甚至造成手機死機。另外,在背包系統(tǒng)的生成中,系統(tǒng)會生成將領背包、艦船背包和臨時背包,而在玩家的場景現(xiàn)實中,臨時背包是不可見的,它的作用是暫時放置玩家在游戲中撿到的物品,或是將玩家正在使用和出售的物品進行存儲,即背包系統(tǒng)的數(shù)據(jù)緩存結(jié)構(gòu),這樣既可以方便背包的邏輯處理,又可以方便背包場景界面的呈現(xiàn)。
綜上所述,基于unity 3D的手機游戲開發(fā)和功能實現(xiàn)相對于大型游戲的開發(fā)雖然快速,但仍是一項漫長又復雜的過程。在游戲項目的開發(fā)當中,必然會遇到許多難題。對于代碼框架結(jié)構(gòu)的設計和整個功能系統(tǒng)開發(fā)的思路與控制都是非常困難的,需要廣大編程人員付出時間與心血。盡管,unity 3D并不能夠滿足大型游戲開發(fā)的專業(yè)性和定制型,但隨著其軟件版本的不斷更新,這款游戲開發(fā)引擎將更加專業(yè),也會滿足越來越多的需求。