金文玥 于嘉鈺
摘 要:近年來,隨著智能手機的普及,人們接觸游戲更加便捷,這使得游戲產(chǎn)業(yè)迅猛發(fā)展,尤其是3D網(wǎng)絡(luò)游戲,受到了人們熱烈的追捧。本文首先介紹了什么是Unity3D,之后又分析了基于Unity3D的多人在線網(wǎng)絡(luò)游戲的設(shè)計情況,希望能夠為相關(guān)的游戲設(shè)計和開發(fā)提供一定的借鑒和參考。
關(guān)鍵詞:Unity3D;網(wǎng)絡(luò)游戲;系統(tǒng);算法
引言
目前,3D網(wǎng)絡(luò)游戲受到了人們廣泛的歡迎,尤其是一些大型多人在線網(wǎng)絡(luò)游戲,占據(jù)著游戲產(chǎn)業(yè)的半壁江山。對于3D網(wǎng)絡(luò)游戲而言,開發(fā)工具以及開發(fā)平臺具有決定性的作用,而Unity3D具有得天獨厚的優(yōu)勢,完全能夠滿足游戲開發(fā)設(shè)計的需求。
1.Unity3D概述
Unity3D是丹麥一家公司推出的游戲開發(fā)工具,這款工具更加重視對游戲可玩性方面的研究,并且便于游戲設(shè)計者和開發(fā)者操作,同時價格低廉。Unity3D的顯著特點包括:能夠呈現(xiàn)出高品質(zhì)的畫面,尤其是使用的光照貼圖技術(shù)處于行業(yè)領(lǐng)先地位,玩家在近距離觀察時可以看到陰影以及表面的細節(jié)。同時渲染延遲的能力不俗,可以在特定場景內(nèi)創(chuàng)建不同的光源,并且不影響整體的運行性能。另外,無論是微軟系統(tǒng)還是蘋果系統(tǒng),Unity3D的腳本都完全兼容,同時在設(shè)計游戲時可以斷點執(zhí)行,隨時處理問題。至于具體的音頻參數(shù),Unity3D產(chǎn)生的衰減曲線可以進行編輯,這樣使用者就能夠做到對聲音的環(huán)境進行控制和調(diào)整。值得一提的是,對于一些大型的游戲,比如王者榮耀、絕地求生、龍之谷等,占用空間都在1G以上,而Unity3D內(nèi)存管理器可以迅速查找相關(guān)的內(nèi)容,并且可以預(yù)覽和進行標(biāo)記。因為很多玩家需要在手機、電腦以及PAD上同時存儲游戲,而Unity3D完全支持在不同設(shè)備上運行同款游戲,并且進度保持一致,不需要下載和更新。
2.基于Unity3D的多人在線網(wǎng)絡(luò)游戲的設(shè)計
多人在線網(wǎng)絡(luò)游戲?qū)τ诰W(wǎng)絡(luò)流暢方面的要求特別嚴(yán)格,一旦出現(xiàn)網(wǎng)絡(luò)延遲,就會對整個游戲產(chǎn)生不可逆轉(zhuǎn)的影響,所以游戲的客戶端的實時率需要得到很好的保證,而且對于游戲人物的配音、皮膚以及動態(tài)效果,需要保證逼真同時形象生動。下面從結(jié)構(gòu)、算法、腳本和程序四方面簡要分析一下基于Unity3D的多人在線網(wǎng)絡(luò)游戲的設(shè)計過程。
2.1系統(tǒng)結(jié)構(gòu)
一般而言,多人網(wǎng)絡(luò)在線游戲的結(jié)構(gòu)分為兩大部分:服務(wù)器與客戶端??蛻舳税ㄓ螒蚩刂啤⒚佬g(shù)處理與接口管理三部分,而服務(wù)器包括數(shù)據(jù)庫、賬號管理與網(wǎng)絡(luò)服務(wù)三部分。通常情況下,服務(wù)器下面有多個子程序相互連接,這樣可以避免多個模塊之間出現(xiàn)干擾,尤其是能夠提高編譯的耦合度。至于客戶端,因為采用Unity3D技術(shù),能夠減輕后期維護的壓力。網(wǎng)絡(luò)游戲與單機游戲最大的區(qū)別在于能夠?qū)崿F(xiàn)玩家之間的實時互動,相關(guān)的代碼都在服務(wù)端運行,這樣能夠避免一些玩家在游戲中使用外掛,維護健康的游戲環(huán)境。具體的服務(wù)器代碼如下:
public class CreateServer:MonoBehaviour{
int port=100000;
void On(){
switch(Network.peerType){
case Disconnected:
Server()
break;
case PeerType.Connecting:
break;}
}
}
2.2取值算法
對于大多數(shù)網(wǎng)絡(luò)游戲而言,鼠標(biāo)的作用不容小覷,雖然在手機端或者是移動端,無法使用鼠標(biāo),但是Unity3D開發(fā)出的可觸摸操作桿,與鼠標(biāo)的作用一致,從而實現(xiàn)了交互式的替代控制。通過具體的角色,通過取值進而控制角色的行為,尤其是在一些立體場景中,需要借助地圖,找到相應(yīng)的位置,并根據(jù)坐標(biāo)指示進行移動,而且在移動之后,移動結(jié)果會上傳到服務(wù)器中,這樣才能做到同步。取值算法的核心在于對角色進行精準(zhǔn)的控制和定位,而且不應(yīng)該受到場景的影響,以往在游戲中常常出現(xiàn)卡屏的情況,就是取值算法的代碼出了問題,并不能很好地取點,對于一些特殊點也不能實現(xiàn)替代[1]。通過Unity3D可以對點進行分析,如果不符合要求,則會果斷拋棄,之后就近選擇可以替代的點。
2.3腳本系統(tǒng)
對于網(wǎng)絡(luò)游戲而言,人工智能在其中發(fā)揮著巨大的作用,如果游戲配有智能系統(tǒng),那么會極大地提升游戲體驗。Unity3D的腳本系統(tǒng)采取組合的方式,不同的數(shù)據(jù)庫之間腳本文件相互獨立,便于查詢。具體的設(shè)計流程如下:首先判斷狀態(tài)是否出現(xiàn)變化,如果出現(xiàn)變化,則需要切換模式動畫,產(chǎn)生動態(tài)的效果,并且根據(jù)取值結(jié)果進行調(diào)試。以三國殺為例,當(dāng)場上同時存在八名武將時,需要制定相應(yīng)的出牌順序,尤其是一些武將技能特殊,可能多次出牌或者是在回合外行動,所以需要根據(jù)人工智能啟動相應(yīng)的策略,決定誰有優(yōu)先的行動權(quán),并且在對戰(zhàn)過程中,由于反饋會有順序,而武將技能會出現(xiàn)類似的情況,所以一定要合理安排順序,避免游戲出現(xiàn)混亂[2]。同時三國殺還有特殊的模式,就是武將暗置,身份不明,這就需要人工智能根據(jù)狀態(tài)和行為的腳本,確定攻擊范圍,尤其是超過攻擊范圍應(yīng)該變換顏色,禁止出牌,這樣才能保證游戲卡牌產(chǎn)生應(yīng)有的效果,并與卡牌說明保持一致。
2.4協(xié)同程序
對于游戲玩家而言,操作簡單的游戲界面更易受到歡迎,尤其是創(chuàng)建角色和更換皮膚時,動態(tài)效果能夠讓人賞心悅目,同時如果游戲不占用內(nèi)存,會縮短游戲的等待時間。尤其是目前很多游戲等待時間過長,通常一局游戲半小時左右,但是等待時間可能在五分鐘以上,而通過協(xié)同程序,可以保證游戲中途有玩家進入,并且在游戲結(jié)束后統(tǒng)一計算功勛、貢獻以及正負值等。雖然協(xié)同程序占據(jù)了系統(tǒng)的空間,但是能夠顯著縮短數(shù)據(jù)的讀取時間,尤其是能夠保證內(nèi)存不被泄露。正是因為協(xié)同程序發(fā)揮作用,使得玩家能夠頻繁進行武將技能以及模式的切換。
結(jié)論
綜上所述,筆者對基于Unity3D的多人在線網(wǎng)絡(luò)游戲的設(shè)計進行了詳細的分析,并且結(jié)合相關(guān)的例子,發(fā)現(xiàn)Unity3D開發(fā)和設(shè)計的網(wǎng)絡(luò)游戲場景逼真,更為突出的是,無論是在電腦端還是手機端,游戲的運行都十分流暢,能夠為玩家提供良好的游戲體驗。
參考文獻
[1]鄧華麗.探討基于Unity 3D游戲開發(fā)流程[J].電腦編程技巧與維護,2018(07):156-157+176.
[2]薛玉倩.基于Unity3D的網(wǎng)絡(luò)游戲[J].內(nèi)蒙古科技與經(jīng)濟,2018(13):86-87.
(作者單位:大連工業(yè)大學(xué)藝術(shù)與信息工程學(xué)院藝術(shù)設(shè)計系)