孫可言 陳根
摘 要:此文主要是為了介紹關(guān)于開(kāi)發(fā)基于Unity3D游戲引擎的手機(jī)版射擊類游戲。開(kāi)發(fā)手機(jī)版射擊類游戲主要的步驟有前期的市場(chǎng)需求和市場(chǎng)技術(shù)的調(diào)研,中期的游戲策劃,游戲場(chǎng)景的搭建與基本功能的實(shí)現(xiàn)以及后期的游戲主要功能的實(shí)現(xiàn)和基本功能的完善與游戲檢測(cè)。這篇文章主要介紹的是中期的游戲策劃,游戲場(chǎng)景搭建與基本功能的實(shí)現(xiàn)。游戲的基本場(chǎng)景包括游戲角色和NPC所處的外部的世界環(huán)境,比如,地形,天氣等; 游戲的基本功能包括人物角色的移動(dòng),跳躍,射擊,NPC的人工智能系統(tǒng)的實(shí)現(xiàn)等。
關(guān)鍵詞:Unity;NPC;碰撞檢測(cè);人工智能
Unity3D這款游戲引擎具有很強(qiáng)大的跨平臺(tái)性,同時(shí)也具有強(qiáng)大的兼容性,比較容易入門(mén),也比較適合水平不太高的手機(jī)游戲開(kāi)發(fā)人員。并且,該引擎的相關(guān)文檔和教程都十分豐富,而且,Unity3D的技術(shù)架構(gòu)具有特殊性,能夠?qū)崟r(shí)生成查看功能,適用性強(qiáng),使開(kāi)發(fā)的流程簡(jiǎn)單化,能夠方便廣大用戶的使用。
如今,市場(chǎng)上的關(guān)于射擊類的游戲,其中有60%以上是通過(guò)Unity3D游戲引擎開(kāi)發(fā)的。由此可見(jiàn),Unity3D是射擊類游戲的最基本使用最廣泛的游戲引擎。這篇文章針對(duì)第一人稱射擊類游戲的開(kāi)發(fā)過(guò)程中的相關(guān)技術(shù)問(wèn)題展開(kāi)了詳細(xì)的說(shuō)明,對(duì)Unity3D的運(yùn)用中的關(guān)鍵技術(shù)進(jìn)行了詳細(xì)的闡述,對(duì)于其他用戶靈活的使用Unity3D游戲引擎有著十分重要的意義。
1 相關(guān)工作
這篇文章是以Unity3D為開(kāi)發(fā)平臺(tái),對(duì)碰撞檢測(cè)技術(shù)人工智能技術(shù)進(jìn)行研究。
碰撞檢測(cè)技術(shù)的主要目的有三個(gè):檢測(cè)模型之間是否發(fā)生了碰撞,反饋出發(fā)生或即將發(fā)生碰撞的部位,動(dòng)態(tài)的查詢模型之間的距離。進(jìn)而針對(duì)碰撞后的反饋進(jìn)行針對(duì)性的動(dòng)作。碰撞檢測(cè)技術(shù)廣泛應(yīng)用于各種系統(tǒng)中,比如時(shí)下比較流行的游戲英雄聯(lián)盟和守望先鋒,都離不開(kāi)碰撞檢測(cè)算法。
人工智能技術(shù)是最近幾年興起的一項(xiàng)技術(shù),簡(jiǎn)稱為AI,使計(jì)算機(jī)具有動(dòng)物或人類的某種智力,這有助于我們作出特別的決定執(zhí)行什么一些程序。另計(jì)算機(jī)只是能接受數(shù)據(jù)、執(zhí)行邏輯的電子設(shè)備.和高速運(yùn)算,輸出結(jié)果。
因此,人工智能(AI)本質(zhì)上是使計(jì)算機(jī)能夠思考并且像活的有機(jī)體那樣決定執(zhí)行特定的操作。人工智能只是一個(gè)通用術(shù)語(yǔ);它的實(shí)現(xiàn)和應(yīng)用是不同的,實(shí)現(xiàn)不同的目的,解決不同的問(wèn)題。
2 前期準(zhǔn)備工作
從游戲的可玩性角度來(lái)說(shuō),射擊類游戲是一款十分容易獲取用戶粘度的游戲類型,近些年來(lái)在市場(chǎng)上的一些列的射擊類游戲都取得了不錯(cuò)的成績(jī)。我們的這個(gè)游戲是模范市場(chǎng)已經(jīng)有的射擊類游戲的模式進(jìn)行開(kāi)發(fā)和研究的,在一些具體的細(xì)節(jié)方面進(jìn)行了調(diào)整和優(yōu)化處理。
首先,是運(yùn)用3DMax搭建了一個(gè)完善的游戲界面和游戲場(chǎng)景,增強(qiáng)用戶的沉浸感;其次,我們?cè)谟脩襞c計(jì)算機(jī)的交互上運(yùn)用了人工智能技術(shù),使得游戲中的AI角色更加具有真實(shí)感;最后,游戲的盈利模式則是通過(guò)與其他游戲的廣告商合作收取廣告商的加盟費(fèi)和游戲的道具費(fèi)用等。
3 游戲UI設(shè)計(jì)
游戲玩家對(duì)游戲的評(píng)價(jià)主要有兩個(gè)方面,一個(gè)是主要的也就是游戲的模式和操作,而另一個(gè)十分重要的因素也就是游戲的美工。好的游戲離不開(kāi)精良的美術(shù)內(nèi)容。這里說(shuō)的游戲美術(shù)就是游戲中出現(xiàn)的可視化內(nèi)容,包括游戲UI界面,游戲場(chǎng)景及角色等,游戲美術(shù)決定游戲的界面風(fēng)格,是游戲設(shè)計(jì)與開(kāi)發(fā)過(guò)程中不可或缺的重要組成部分。具體來(lái)說(shuō)本款作品的游戲美術(shù)需要完成UI界面的設(shè)計(jì)、游戲場(chǎng)景和道具的設(shè)計(jì)與制作、人物角色和NPC形象的設(shè)計(jì)和建模以及動(dòng)畫(huà)的制作等。
4 核心技術(shù)要求
上文介紹了美術(shù)制作的部分內(nèi)容,現(xiàn)在介紹一下程序設(shè)計(jì)部分。程序需求是一個(gè)游戲的核心,是實(shí)現(xiàn)預(yù)期效果的必要保證。即用一些腳本和代碼將美工設(shè)計(jì)的好的各種素材聯(lián)系起來(lái)并進(jìn)行交互。程序需求在游戲設(shè)計(jì)開(kāi)發(fā)過(guò)程中十分重要,決定著一個(gè)游戲現(xiàn)在運(yùn)行過(guò)程中是否能完美還原策劃的預(yù)期效果和運(yùn)行時(shí)是否流暢。
這款手機(jī)版的FPS射擊游戲中涉及到多種人工智能技術(shù),NPC,主角,場(chǎng)景中障礙物,道具等一些列對(duì)象,需要通過(guò)腳本來(lái)控制個(gè)對(duì)象之間的關(guān)系以及互動(dòng)。當(dāng)前介紹碰撞檢測(cè)技術(shù),人工智能實(shí)現(xiàn)技術(shù)。
4.1 人工智能實(shí)現(xiàn)技術(shù)
4.1.1 內(nèi)部需求
在三維射擊游戲中。我們所設(shè)置的AI角色即NPC需要了解他們自身所處的周圍環(huán)境,他們所處的世界的相互作用,以便于他們按照程序做出相應(yīng)的決定,執(zhí)行特定的操作。
這些信息主要包括以下幾個(gè)方面:
1)玩家位置:NPC與玩家的相對(duì)位置信息主要作用是用于NPC決定是否執(zhí)行擊,或追逐等操作。
2)玩家的健康狀況和自身的健康狀況:這里主要指的是射擊游戲中玩家所操控的角色的血量和NPC自身的血量,主要是為了讓NPC做出正確的判斷,是執(zhí)行繼續(xù)前進(jìn)或者撤退。
3)在游戲地圖中的資源位置:在射擊游戲中主要是需要玩家占領(lǐng)的地域資源,當(dāng)玩家操作的角色傾占了該地形資源的時(shí)候,NPC就會(huì)發(fā)出相應(yīng)的攻擊和追逐的動(dòng)作與玩家進(jìn)行實(shí)時(shí)的互懂。
4)其他單位:除了以上的游戲中的對(duì)象,所有其他的單位,也必須要獲取他們的位置以及性能等其他信息,比如,場(chǎng)景中的障礙物和建筑,NPC不能夠穿越他們,而是需要躲避。
4.1.2 基本的感官系統(tǒng)
人工智能系統(tǒng)會(huì)模擬感官,比如視覺(jué),聲音,甚至氣味追蹤和識(shí)別目標(biāo)。這就使得NPC會(huì)有自己的感覺(jué),如感知,嗅覺(jué),視覺(jué)和觸覺(jué)等。這些感覺(jué)將尋找特定的操作來(lái)使NPC完成相對(duì)應(yīng)的執(zhí)行任務(wù)從而達(dá)到與用戶進(jìn)行交互的效果。比如,當(dāng)玩家控制的角色與進(jìn)入NPC的事業(yè)范圍之內(nèi),NPC會(huì)執(zhí)行攻擊任務(wù),對(duì)玩家進(jìn)行攻擊,并在攻擊的同時(shí)執(zhí)行移動(dòng)操作,向著玩家操控的角色靠近?;蛘?,當(dāng)玩家控制的角色對(duì)NPC進(jìn)行攻擊NPC會(huì)根據(jù)自身的健康狀況和玩家操縱角色的健康狀況以及周圍的環(huán)境等綜合因素做出判斷,對(duì)玩家進(jìn)行攻擊還是撤退。
4.1.3 射擊游戲中的AI角色
一款游戲若是缺少交互就無(wú)法生存,所以射擊游戲中的AI角色是射擊游戲的核心部分,AI角色的人工智能程度也就決定著一個(gè)射擊類游戲的趣味性和可玩性。
AI角色具有兩種感覺(jué),視覺(jué)與觸覺(jué)。透視感即視覺(jué)將檢查是否玩家角色是在一套可見(jiàn)的范圍和距離內(nèi)以決定AI角色是否要采取相關(guān)反射行為。觸覺(jué)將檢測(cè)如果敵人的側(cè)面撞上了方塊對(duì)撞機(jī),很快就要環(huán)繞我們的AI角色了。正如我們以前看到的,我們的玩家角色將會(huì)發(fā)現(xiàn)敵人信息。所以,當(dāng)AI角色的這些感官被觸發(fā)時(shí),他們發(fā)現(xiàn)玩家角色并作出程序里寫(xiě)入的相應(yīng)動(dòng)作與玩家進(jìn)行交互。在我們這款射擊類游戲中,僵尸的視覺(jué)系統(tǒng)看到了玩家的角色,僵尸將會(huì)按照一定的線路追逐玩家并在一定的距離范圍內(nèi)對(duì)玩家進(jìn)行攻擊;玩家的子彈如果與僵尸發(fā)生碰撞,僵尸的觸覺(jué)系統(tǒng)將會(huì)讓僵尸的血量發(fā)生減少的變化,當(dāng)血量降低為0時(shí),僵尸死亡;玩家擲出的手雷發(fā)生爆炸,觸碰到僵尸的觸覺(jué)系統(tǒng),僵尸將會(huì)被彈飛并死亡。這些都是AI角色的人工智能技術(shù)的實(shí)現(xiàn),即玩家實(shí)施的每一步操作,AI角色都會(huì)做出對(duì)應(yīng)的操作予以回應(yīng)從而到達(dá)與玩家進(jìn)行交互的效果。
4.2 碰撞檢測(cè)技術(shù)
碰撞檢測(cè)技術(shù)有各種不同的算法,優(yōu)秀的碰撞檢測(cè)的算法可以很好地增強(qiáng)游戲中對(duì)象之間進(jìn)行碰撞的的真實(shí)性而且能夠減少CPU在計(jì)算碰撞檢測(cè)相關(guān)數(shù)據(jù)的時(shí)候的內(nèi)部計(jì)算時(shí)間。
這款射擊類游戲在Unity3D中用如下JavaScript腳本進(jìn)行碰撞檢測(cè):
function OnCollisionEnter(obj:Collision){
Debug.Log("Collider:"+obj.collider.name+"gameObject:"+obj.gameObject.name);
Action;
}
將如上的碰撞檢測(cè)的OnCollisionEnter函數(shù)綁定到對(duì)象obj上,當(dāng)這個(gè)物體被其他物體碰撞時(shí)函數(shù)被調(diào)用。
碰撞檢測(cè)技術(shù)幾乎是任何游戲中都必須要用到的技術(shù),玩家與游戲場(chǎng)景中的各個(gè)對(duì)象和游戲中AI角色之間的交互動(dòng)作都是在碰撞檢測(cè)技術(shù)的基礎(chǔ)上來(lái)實(shí)現(xiàn)的。碰撞檢測(cè)的算法根據(jù)使用的對(duì)象和實(shí)際的情況會(huì)分為很多種,其中有距離預(yù)測(cè)算法、時(shí)間預(yù)測(cè)算法等等。距離計(jì)算算法是一種計(jì)算量比較大碰撞檢測(cè)算法,但是這種方法的計(jì)算的精確度高,更具有真實(shí)性。這款射擊類游戲采用的就是距離計(jì)算的算法。當(dāng)物體之間發(fā)生碰撞以后,會(huì)出現(xiàn)什么樣的效果和做出什么反應(yīng)都是調(diào)用上面提及的函數(shù)來(lái)進(jìn)行進(jìn)行碰撞檢測(cè)的計(jì)算。
5 總結(jié)
隨著計(jì)算機(jī)技術(shù)的日益發(fā)展,Unity3D游戲引擎越來(lái)越平民化,人工智能技術(shù)也漸漸的被人們熟知并加以運(yùn)用到計(jì)算機(jī)技術(shù)中。這篇文章在對(duì)Unity3D游戲引擎精心研究的基礎(chǔ)上結(jié)合FPS射擊類游戲的特點(diǎn),通過(guò)3D建模技術(shù)和次世代貼圖技術(shù),運(yùn)用碰撞檢測(cè)和人工智能交互技術(shù)進(jìn)行設(shè)計(jì)與開(kāi)發(fā)。總結(jié)出射擊類游戲相關(guān)場(chǎng)景的設(shè)置以及AI角色的設(shè)置的一些簡(jiǎn)單的方法。同時(shí),這款游戲的故事情節(jié)也略顯不足,人物角色單一,游戲模式也不夠多元化,還需要進(jìn)一步的改進(jìn)與深化研究。
參考文獻(xiàn):
[1] (美)羅素.殷建平譯.人工智能:一種現(xiàn)代的方法(第3版).清華大學(xué)出版社,2013-11-01.
[2] 伍傳敏,張帥,邱錦明.基于Unity3D的FPS游戲設(shè)計(jì)與開(kāi)發(fā)[J].三明學(xué)院學(xué)報(bào),2012,29(2):35-40.
[3] (澳)尼格尼維斯基.陳薇譯.人工智能:智能系統(tǒng)指南(原書(shū)第3版).機(jī)械工業(yè)出版社,2012-08-01.
項(xiàng)目名稱:
2015北方工業(yè)大學(xué)實(shí)培計(jì)劃大學(xué)生科研訓(xùn)練計(jì)劃深化項(xiàng)目