黎忠文,覃志東,王全宇,倪仲余,3
(1.成都大學(xué) 信息學(xué)院,四川 成都610106;2.東華大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,上海201620;3.西華大學(xué) 數(shù)學(xué)與計(jì)算機(jī)學(xué)院,四川 成都610039)
智能手機(jī)是指具有獨(dú)立操作系統(tǒng),支持用戶下載安裝第三方服務(wù)商提供的聊天、游戲等應(yīng)用程序,并可以通過移動通訊網(wǎng)絡(luò)實(shí)現(xiàn)無線網(wǎng)絡(luò)接入的一類手機(jī)的總稱。目前,主流的智能手機(jī)操作系統(tǒng)有Android,iOS和 Windows Mobile等系統(tǒng)。其中,Android是由Google開發(fā)的開源操作系統(tǒng),其SDK已非常完善。隨著Android手機(jī)成本的下降,以及Google公司成功收購摩托羅拉移動公司,其市場占有率將更大。所以,基于Android平臺的游戲等各種應(yīng)用開發(fā)將具有廣闊的發(fā)展前景。對游戲創(chuàng)意的良好性能支撐,提高開發(fā)效率,縮短開發(fā)和推出市場的周期,都是影響一款游戲是否成功的關(guān)鍵因素,而這些因素的改善都與游戲引擎的設(shè)計(jì)息息相關(guān)。
游戲引擎是為運(yùn)行某類游戲的機(jī)器所設(shè)計(jì)的,并且能夠被該機(jī)器所識別的代碼集合。經(jīng)過不斷的發(fā)展,游戲引擎已經(jīng)成為一套由多個(gè)子系統(tǒng)共同構(gòu)成的復(fù)雜系統(tǒng),控制游戲的執(zhí)行,使玩家與終端能夠交互[1]。在現(xiàn)代手機(jī)游戲中,游戲角色的真實(shí)感體驗(yàn)是衡量游戲品質(zhì)的一個(gè)重要標(biāo)準(zhǔn)[2]。通常游戲的真實(shí)感體驗(yàn)由圖形渲染、物理模擬和人工智能等模塊完成。目前,已有的手機(jī)游戲引擎在圖形渲染和物理模擬方面取得了長足的進(jìn)步,但其人工智能模塊仍然顯得簡單甚至沒有[3],應(yīng)用這些引擎設(shè)計(jì)出的游戲其非玩家控制角色過于遲鈍或者程式化,影響了游戲的真實(shí)性,所以游戲引擎的人工智能仍有很大的發(fā)展和創(chuàng)新空間[4]。對于在線游戲而言,由于這類游戲需要技術(shù)性能和用戶感知視覺質(zhì)量并舉[5],對人工智能技術(shù)的需求很大。同樣在3D游戲開發(fā)中,相對于游戲引擎的其它部分,人工智能的研究力度還有待進(jìn)一步加強(qiáng),比如路徑搜索算法[6]直接影響著游戲的響應(yīng)速度[7]。當(dāng)前越來越多的游戲引擎是基于移動平臺的。當(dāng)游戲越來越復(fù)雜的時(shí)候,軟件基本開發(fā)方法將很難滿足這些游戲的開發(fā)要求。文獻(xiàn) [8]研究結(jié)果表明,在移動平臺上開發(fā)一個(gè)游戲引擎時(shí),選定一個(gè)設(shè)計(jì)模式,理清設(shè)計(jì)目標(biāo)和思路是很重要的。
本文通過對Android游戲的程序結(jié)構(gòu)進(jìn)行研究,基于模塊化的思想,設(shè)計(jì)實(shí)現(xiàn)了一個(gè)基于Android系統(tǒng)的2D游戲引擎LAndGame2D,重點(diǎn)對人工智能模塊中的基本算法:最短路徑搜索算法進(jìn)行了優(yōu)化,有益于提高游戲的真實(shí)感體驗(yàn)。
游戲引擎是面向游戲開發(fā)的通用內(nèi)核,將游戲程序設(shè)計(jì)中最通用的功能集成為一個(gè)游戲開發(fā)平臺。通常游戲引擎包括的模塊有智能模擬、物體成像、物理演算、碰撞運(yùn)算、角色的操作、聲音管理等,游戲開發(fā)人員可以通過API函數(shù)調(diào)用這些模塊,快速方便的開發(fā)游戲。
設(shè)計(jì)游戲引擎,首先需要分析游戲的運(yùn)行機(jī)制,提取游戲的基本構(gòu)成元素。Android游戲主要包括一個(gè)Activity類、一個(gè)流程控制類、一個(gè)游戲線程類和若干個(gè)游戲?qū)ο箢?。其中Activity類是游戲程序的基本執(zhí)行單元,控制復(fù)雜的游戲生命周期,如游戲的啟動、暫停、退出等。游戲控制類提供了游戲的界面切換的方法。游戲線程類循環(huán)檢測可能發(fā)生的各種事件,計(jì)算游戲狀態(tài),刷新屏幕。游戲?qū)ο箢愋枰x對象和執(zhí)行動作。當(dāng)游戲事件觸發(fā)時(shí),游戲?qū)ο笸ㄟ^回調(diào)函數(shù)調(diào)用相應(yīng)的操作。
Android平臺游戲運(yùn)行機(jī)制如圖1所示。
在游戲設(shè)計(jì)中通常采用的人工智能技術(shù)主要有模糊邏輯、有限狀態(tài)機(jī)、尋徑算法等。模糊邏輯使用模糊值來表示模糊的概念和進(jìn)行知識推理,被廣泛應(yīng)用于決策推理和行為選擇。例如,非玩家角色評估玩家展示的威脅,控制非玩家隊(duì)友的行為等。有限狀態(tài)機(jī)是基于規(guī)則的人工智能系統(tǒng),來源于自動機(jī)理論,可以管理整個(gè)游戲場景,也可以操作單個(gè)游戲?qū)ο蠛腿宋铩?/p>
圖1 Android平臺游戲運(yùn)行機(jī)制
尋徑算法是游戲開發(fā)中的常見算法,非玩家角色需要在較短時(shí)間內(nèi)找到由當(dāng)前位置到主角位置的最短路徑并且避免與障礙物碰撞,其依賴的核心基礎(chǔ)是人工智能中的最短路徑搜索算法。在現(xiàn)有游戲引擎中,對于最短路徑求解問題,先后有深度優(yōu)先算法、廣度優(yōu)先算法、Dijkstra算法、A*算法等諸多算法被提出。其中,深度優(yōu)先和廣度優(yōu)先算法屬于狀態(tài)空間搜索算法,其最大缺陷是搜索速度低,當(dāng)狀態(tài)空間很大或者不可預(yù)測的情況下則無法給出最優(yōu)解。Dijkstra算法能夠保證搜索成功率,但是由于需要遍歷計(jì)算的節(jié)點(diǎn)過多,所以搜索速度慢。而A*算法是啟發(fā)式搜索算法,它只需要產(chǎn)生全部狀態(tài)空間的部分結(jié)點(diǎn)及關(guān)系,就可求解,搜索效率較高,但是由于該算法沒有回溯,不能確保尋找到的路徑一定是最優(yōu)路徑。
近年來,遺傳算法因?yàn)槠鋸?qiáng)大的并行搜索能力,也被用來求解最短路徑問題,其搜索成功率優(yōu)于A*算法,且搜索速度優(yōu)于Dijkstra算法。但標(biāo)準(zhǔn)遺傳算法存在易陷入早熟的缺陷,采用該算法實(shí)現(xiàn)尋徑,則在游戲中常導(dǎo)致非玩家角色在一個(gè)角落不停地繞圈。顯然,這會極大影響玩家的真實(shí)感體驗(yàn)。綜合考慮算法的搜索速度和搜索成功率,本文引入Boltzmann行動選擇策略解決標(biāo)準(zhǔn)遺傳算法易早熟的缺陷,并以此優(yōu)化遺傳算法作為引擎尋徑問題求解的基本算法。
Boltzmann行動選擇策略是一種被搜索算法所采用的,適于求解非精確狀態(tài)信息下的順序決策過程問題的行動選擇策略。本文所改進(jìn)的遺傳算法利用基于Boltzmann行動選擇策略[9]替代輪盤賭選擇策略,從而解決標(biāo)準(zhǔn)遺傳算法容易早熟的問題。
標(biāo)準(zhǔn)遺傳算法一般采用輪盤賭選擇策略,給定種群規(guī)模為n的群體p = {a1,a2,···,an} ,個(gè)體aj∈P的適應(yīng)值為f(aj),其選擇概率為
式 (1)決定后代種群中個(gè)體的概率分布。當(dāng)種群中個(gè)體的適應(yīng)值差異較大時(shí),最優(yōu)個(gè)體和最差個(gè)體被選擇的概率之比成指數(shù)級增長。最優(yōu)個(gè)體將顯著增加在下一代的生存機(jī)會,而最差個(gè)體的生存機(jī)會則會被剝奪。最優(yōu)個(gè)體快速充滿種群,從而導(dǎo)致種群的多樣性迅速降低,遺傳算法也就過早地喪失進(jìn)化能力,陷入算法早熟問題。
Boltzmann行動選擇策略采用隨機(jī)接收準(zhǔn)則選擇行動,并根據(jù)當(dāng)前狀態(tài)下可選行動的估計(jì)價(jià)值決定選擇行動的概率。Boltzmann選擇機(jī)制可以有效地解決優(yōu)化算法難以避免的局部最優(yōu)問題,使系統(tǒng)最終演化到全局極小點(diǎn)[10],尋找到最優(yōu)的行動選擇策略。設(shè)行動全體集合為A,行動估計(jì)價(jià)值集合為VA,a1,a2,…,an∈A為當(dāng)前狀態(tài)下可選的行動,而v(a1),v(a2),…,v(an)∈VA分別為各行動估計(jì)價(jià)值提出對應(yīng)的估計(jì)價(jià)值,當(dāng)前狀態(tài)下選擇任一行動ak{a1,a2,…,an} 的概率為
其中,k=1,2,…,n,T>0是退火溫度,是控制進(jìn)化過程中選擇壓力的關(guān)鍵,在種群的進(jìn)化過程中,進(jìn)化早期時(shí)選擇壓力較小,適應(yīng)值較差的個(gè)體也需要一定的生存能力,退火溫度緩慢地遞減;進(jìn)化后期需要較大的選擇壓力來縮小搜索鄰域,加快最優(yōu)解改善的速度,退火溫度遞減也需要越快,因此退火溫度變化趨勢應(yīng)該是不斷成非線性下降的過程,所以,本文引入神經(jīng)網(wǎng)絡(luò)中的Sigmoid函數(shù)作為退火溫度的變化系數(shù),即
其函數(shù)曲線圖如圖2所示。
圖2 Sigmoid函數(shù)曲線
基于Boltzmann選擇機(jī)制的遺傳算法中個(gè)體被選擇的概率定義為
式中:n——種群規(guī)模,c——種群進(jìn)化迭代循環(huán)次數(shù),m——最大迭代次數(shù),T0——退火溫度初始值,Tmin——冷卻溫度。T會隨著迭代次數(shù)的增加而減小,選擇壓力就隨之增大,最終達(dá)到冷卻溫度。
為了驗(yàn)證算法的收斂性能以及跳出局部最優(yōu)解的能力,本文對基于輪盤賭選擇的標(biāo)準(zhǔn)遺傳算法 (SGA)和基于Boltzmann選擇的優(yōu)化遺傳算法 (BGA)進(jìn)行了比較測試。測試選取3個(gè)經(jīng)典的遺傳算法性能測試函數(shù),這些測試函數(shù)都是既有全局解又有多個(gè)極值點(diǎn)的函數(shù)
其中,-2.048≤xi≤2.048,i=1,2;該函數(shù)是二維單峰難以極小化的病態(tài)函數(shù),函數(shù)最小值是0
其中,-3≤x1≤3,-2≤x2≤2,函數(shù)最小值是10.316
其中,-10≤xi≤10,i=1,2,函數(shù)最小值是186.731。
用SGA和BGA兩種遺傳算法,對以上的測試函數(shù)進(jìn)行100次計(jì)算,求出收斂值。其中,計(jì)算機(jī)的配置為Pentium(R)4微處理器,主頻為2.8GHz,內(nèi)存容量為1.5G。遺傳參數(shù)設(shè)置:種群規(guī)模為60,最大迭代次數(shù)100,交叉率0.8,變異率0.05。計(jì)算結(jié)果見表1和表2。表中結(jié)果都是平均值,收斂時(shí)間單位為s。
表1 SGA測試函數(shù)時(shí)的性能比較
表2 BGA測試函數(shù)時(shí)的性能比較
由表1和表2可知,BGA遺傳算法雖然在收斂時(shí)間開銷上比SGA遺傳算法有所增加,但是成功的收斂次數(shù)多,提高了算法的收斂率,而且收斂的極值更加接近理論計(jì)算得到的函數(shù)值,收斂的穩(wěn)定性較好,從而很好的避免了遺傳算法陷入早熟的問題。
此外,我們對BGA遺傳算法和A*算法在游戲設(shè)計(jì)中的應(yīng)用效果進(jìn)行了比較。圖3和圖4是某次設(shè)定的兩點(diǎn)最短路徑搜索效果示意,顯然,BGA遺傳算法優(yōu)于A*算法尋找到的路徑。由于搜索速度快,A*算法在游戲設(shè)計(jì)中廣泛采用;但是,A*算法不能回溯,不一定能夠找到最短路徑,表現(xiàn)在游戲中就是非玩家角色易走錯(cuò)路、亂跑、行為飄忽和繞圈子等。相反,BGA遺傳算法則能保證較高的最短路徑搜索成功率,非玩家角色能智能地找到主角位置,增加了游戲的真實(shí)感體驗(yàn)。雖然在時(shí)間開銷方面,BGA遺傳算法搜索速度遜于A*算法,但由于當(dāng)前嵌入式CPU的主頻極高,玩家體驗(yàn)不出這種時(shí)間開銷差別。綜合考慮,我們采用BGA遺傳算法作為基礎(chǔ)尋徑算法。
游戲引擎是一種中間件,它是依賴操作系統(tǒng)來控制硬件的。本文設(shè)計(jì)的游戲引擎LAndGame2D架構(gòu)在操作系統(tǒng)層之上,其主要包括圖形引擎、物理引擎、人工智能模塊,網(wǎng)絡(luò)模塊、音效模塊、工具模塊、事件處理模塊等等[11],模塊結(jié)構(gòu)如圖5所示。
其中,游戲的核心類是為游戲提供框架,主要實(shí)現(xiàn)游戲邏輯類、流程控制類。人工智能模塊是提高游戲的智能,增加游戲的真實(shí)感體驗(yàn)。圖形引擎的功能是用于產(chǎn)生游戲角色及周邊場景的圖形,把讀取的所有數(shù)據(jù)及時(shí)轉(zhuǎn)化成屏幕顯示的圖形。物理引擎用于在游戲中準(zhǔn)確地實(shí)現(xiàn)物理模擬,通過剛體物體賦予真實(shí)的物理屬性的方式來計(jì)算運(yùn)動和碰撞。網(wǎng)絡(luò)模塊負(fù)責(zé)游戲的聯(lián)網(wǎng)對戰(zhàn)任務(wù),管理游戲中所需要交互的數(shù)據(jù)的傳送工作。音效模塊主要處理播放聲音和聲音的管理功能。工具模塊是將游戲中常用的操作進(jìn)行封裝,如向量計(jì)算、定時(shí)器等。事件處理完成對用戶輸入操作進(jìn)行響應(yīng)和對游戲內(nèi)部事件處理的功能。
在游戲邏輯類的實(shí)現(xiàn)中,LAndGame2DActivity是游戲的主類和入口程序,將對整個(gè)游戲的生命周期進(jìn)行控制,同時(shí)還提供了事件處理函數(shù)。比如:處理按鍵、觸摸等。LAndGame2DActivity繼承了Android應(yīng)用框架提供的Activity類。流程控制類主要用于游戲狀態(tài)機(jī)制來控制不同界面之間的切換,狀態(tài)機(jī)制就是對游戲定義多個(gè)狀態(tài),每一個(gè)狀態(tài)所顯示的界面都不同。游戲引擎框架中的流程控制類是LAndGame2DView,該類繼承自Android應(yīng)用開發(fā)框架層的SurfaceView類,SurfaceView類的實(shí)現(xiàn)原理是在繪圖之前必須使用lockCanvas方法鎖定畫布,得到畫布后在畫布上進(jìn)行繪制,繪制完成后使用unlockCanvasAndPost方法解鎖畫布,最后顯示到屏幕上。線程類使用run()方法可以隨時(shí)監(jiān)聽事件的觸發(fā),進(jìn)而改變狀態(tài),更新界面顯示。監(jiān)視事件需要繼承SurfaceHolder.Callback接口增加回調(diào)函數(shù)。
人工智能模塊主要實(shí)現(xiàn)了基于Boltzmann選擇遺傳算法的尋徑算法、模糊邏輯和有限狀態(tài)機(jī)?;贐oltzmann選擇遺傳算法的尋徑算法實(shí)現(xiàn)步驟是首先為染色體進(jìn)行二進(jìn)制編碼。由于游戲地圖是由一些單元格組成,當(dāng)非玩家角色處在起始點(diǎn)時(shí)運(yùn)動方向有上、下、左和右4種選擇,因此需要用兩個(gè)比特表示這4種情況。見表3。
表3 路徑搜索的基因編碼
接著產(chǎn)生初始種群個(gè)體,設(shè)置遺傳算法的參數(shù),測試每個(gè)染色體能使非玩家角色所能到達(dá)的最遠(yuǎn)位置距離目標(biāo)點(diǎn)的長度,即計(jì)算適應(yīng)度值。函數(shù)CalculateFitnessValue()經(jīng)過計(jì)算會返回一個(gè)適應(yīng)度值,其中計(jì)算適應(yīng)度值的程序如下:
int dist_x=abs(npc_x-end_x);
int dist_y=abs(npc_y-end_y)
第三,實(shí)驗(yàn)環(huán)境的搭建,需要進(jìn)行特征提取和篩選,建立一個(gè)良好的實(shí)驗(yàn)環(huán)境對圖像質(zhì)量的好壞有很大的作用,在拍照所選擇的相機(jī)鏡頭,拍照過程中的背景、燈光、相機(jī)的視場等,都會對最終農(nóng)產(chǎn)品的分類結(jié)果產(chǎn)生一定的影響,同時(shí)也要利用這個(gè)實(shí)驗(yàn)環(huán)境進(jìn)行實(shí)驗(yàn)驗(yàn)證,因此搭建什么樣的實(shí)驗(yàn)環(huán)境是該設(shè)計(jì)中的一個(gè)重點(diǎn)和難點(diǎn)。
int dist=dist_x+dist_y;
return 1/(dist+1);
程序中dist_x和dist_y就是非玩家角色所在的位置相對于目標(biāo)點(diǎn)的水平和垂直偏離值。如果非玩家角色到達(dá)出口,則dist_x+dist_y=0。計(jì)算兩點(diǎn)間距離比較常用的方法是兩點(diǎn)間距離坐標(biāo)公式,但是為了優(yōu)化程序的性能,減小計(jì)算量,可以利用不需要開方和平方的蒙特卡羅距離計(jì)算兩點(diǎn)間距離。dist計(jì)算的就是蒙特卡羅距離。最后通過Boltzmann選擇選出參與交叉的兩個(gè)個(gè)體后,實(shí)現(xiàn)交叉和變異操作后得到新的染色體繼續(xù)加入新的群體,完成一次迭代過程。不斷重復(fù)以上過程直到非玩家角色到達(dá)目標(biāo)點(diǎn)。模糊實(shí)現(xiàn)了幾種歸屬函數(shù),如布爾歸屬函數(shù),三角形歸屬函數(shù),梯形歸屬函數(shù)等。模糊處理定義了聯(lián)集、交集、補(bǔ)集操作。有限狀態(tài)機(jī)定義了一個(gè)簡單狀態(tài)機(jī)框架。
圖形引擎主要是負(fù)責(zé)地圖場景管理模塊的實(shí)現(xiàn)。地圖管理中的圖層對象由Layer類實(shí)現(xiàn),Layer類封裝一個(gè)可視元素的位置、寬度、高度和可見性等信息。圖層不是每次顯示一個(gè)單個(gè)的圖像,而是顯示多個(gè)依次排列的圖像,當(dāng)創(chuàng)建圖層時(shí),通過指定貼磚排列構(gòu)成圖層。圖層要求所有的貼磚圖像大小必須相同。當(dāng)布置貼磚柵格時(shí),貼磚可以按任意的組合方式混合和匹配。
物理引擎是通過剛體物體賦予真實(shí)的物理屬性的方式來計(jì)算運(yùn)動和碰撞。本文設(shè)計(jì)的物理引擎主要提供碰撞檢測技術(shù)的功能。在游戲中實(shí)體對象的位置改變的情況下會發(fā)生碰撞,實(shí)現(xiàn)碰撞檢測主要包括:確定檢測對象、檢測是否碰撞、處理碰撞這3個(gè)方面。碰撞對象主要分為游戲?qū)嶓w對象之間的碰撞和游戲?qū)嶓w對象與環(huán)境之間的碰撞。
網(wǎng)絡(luò)模塊為游戲支持網(wǎng)絡(luò)服務(wù)。網(wǎng)絡(luò)連接主要分為互聯(lián)網(wǎng)和局域網(wǎng),互聯(lián)網(wǎng)需要封裝Http協(xié)議,可以通過標(biāo)準(zhǔn)java接口實(shí)現(xiàn)Android游戲引擎的聯(lián)網(wǎng)操作,另外需要注意網(wǎng)絡(luò)通信的中文亂碼問題。局域網(wǎng)則主要封裝藍(lán)牙連接及傳輸數(shù)據(jù)的功能。
音效模塊提供對背景音效和動作音效的管理,其中包括音樂類型、當(dāng)前播放次數(shù)、音樂結(jié)束處理,循環(huán)播放音樂、音樂模式管理等函數(shù)。
事件處理模塊主要負(fù)責(zé)用戶和手機(jī)終端交互的處理,需要考慮到事件的類型、發(fā)起者、被發(fā)起者、事件參數(shù)等因素。當(dāng)一個(gè)事件被觸發(fā)時(shí),發(fā)送消息給事件響應(yīng)者,事件響應(yīng)者收到消息后,根據(jù)消息的內(nèi)容來判斷處理相應(yīng)的事件。
在游戲引擎LAndGame2D完成的基礎(chǔ)上,本文利用該游戲引擎開發(fā)了一款飛行射擊游戲,該游戲運(yùn)行的流程圖如圖6所示。
圖6 游戲運(yùn)行流程
根據(jù)游戲流程圖將飛行射擊游戲劃分為5個(gè)模塊:
(1)移動模塊和炮彈生成模塊,完成飛機(jī)和炮彈的移動、生成功能,主要由圖形引擎中的人物顯示模塊完成。
(2)繪圖模塊,繪制游戲界面,主要由圖形引擎的場景繪制完成。
(3)碰撞檢測模塊,檢測炮彈和飛機(jī)之間以及飛機(jī)與飛機(jī)的之間的碰撞,主要由物理引擎完成。
(4)資源初始化模塊,初始化游戲數(shù)據(jù),加載聲音、圖片資源,主要由游戲程序完成。
(5)游戲AI模塊,為了使生成的敵機(jī)更加智能,采用基于Boltzmann選擇的遺傳算法,使得游戲更加具有真實(shí)感。游戲中具體的編碼設(shè)計(jì)是:一個(gè)基因表示一幀時(shí)間內(nèi)敵機(jī)的移動方向?;蜷L度限制在m=60以內(nèi),對于每秒刷新30幀的游戲,在2秒內(nèi),敵機(jī)的運(yùn)行軌跡都是精確模擬的。適應(yīng)度評估將精確模擬2秒內(nèi)飛機(jī)的移動判斷飛機(jī)的生存概率,粗略評估2秒之后的生存概率。經(jīng)過迭代得到飛機(jī)最佳的運(yùn)行路徑,從而敵機(jī)更加難以擊落,增加游戲的可玩性。飛行射擊游戲的界面如圖7所示。
圖7 飛行游戲界面
由此可見,利用LAndGame2D開發(fā)一款游戲,游戲開發(fā)人員只要集中精力設(shè)計(jì)游戲的創(chuàng)意、美工及資源即可,其余工作可以利用游戲引擎完成,這樣就能提高游戲的開發(fā)效率,縮短開發(fā)和推出市場的周期,降低游戲開發(fā)的難度。
本文實(shí)現(xiàn)了一個(gè)基于Android操作系統(tǒng)的游戲引擎LAndGame2D,包含的子系統(tǒng)模塊有圖形引擎、物理引擎、人工智能模塊,網(wǎng)絡(luò)模塊、音效模塊、工具模塊、事件處理模塊,這些模塊具有很高的靈活性和擴(kuò)展性,特別是基于Boltzmann選擇遺傳算法上實(shí)現(xiàn)的人工智能模塊,能夠明顯提高非玩家角色的智能,增加了游戲的真實(shí)感體驗(yàn)。利用LAndGame2D開發(fā)的幾款游戲能夠在Android模擬機(jī)仿真運(yùn)行及真機(jī)運(yùn)行,游戲運(yùn)行流暢,效果令人滿意。
[1]RAN Jing.Analysis and design of 2Dmobile game engine based on J2ME [D].Chengdu:Southwest Jiaotong University,2007:1-82 (in Chinese).[冉靜.基于J2ME的2D手機(jī)游戲引擎的分析與設(shè)計(jì) [D].成都:西南交通大學(xué),2007:1-82.]
[2]Eva Hudlicka.Affective game engines:Motivation and requirements [C]//Proceedings of the 4th International Conference on Foundations of Digital Games.New York,USA:ACM,2009:299-306.
[3]CHEN Song.Design of graphic engine based on changeable angle [J].Computer Science,2006,33 (11):240-242 (in Chinese).[陳松.基于斜視角可變的游戲引擎設(shè)計(jì) [J].計(jì)算機(jī)科學(xué),2006,33 (11):240-242.]
[4]Eike F A,Steffen E,Peter C.The case for research in game engine architecture [C]//Proceedings of the Conference on Future Play:Research,Play,Share.New York,USA:ACM,2008:228-231.
[5]Frederick W B,Rynson W H,Danny K.Game-on-demand:An online game engine based on geometry streaming [J].ACM Transactions on Multimedia Computing,Communications,and Applications,2011,7 (3):118-131.
[6]LIN Dubin,LI Xin.Improved A*path-finding algorithm based on DEM-grid[J].Computer Engineering and Design,2011,33(10):3414-3418 (in Chinese).[林篤斌,李欣.基于 DEM格網(wǎng)的改進(jìn)型A*路徑搜索算法 [J].計(jì)算機(jī)工程與設(shè)計(jì),2011,33 (10):3414-3418.]
[7]LI Hongbo,WU Yuxin,ZHAO Kuan.Survey of research and application of 3Dgame engine technology on android platform[J].Digital Communication,2012,10:28-33 (in Chinese).[李紅波,吳雨芯,趙寬.Android平臺下3D游戲引擎技術(shù)的研究及應(yīng)用綜述 [J].數(shù)字通信,2012,10:28-33.]
[8]Peker G A,Can T.A design goal and design pattern based approach for development of game engines for mobile platforms[C]//Proceedings of the 16th International Conference on Computer Games.Washington,USA:IEEE Computer Society,2011:114-120.
[9]DING Haijun,F(xiàn)ENG Qingxian.Artificial bee colony algorithm based on Boltzmann selection policy [J].Computer Engineering and Applications,2009,45 (3):53-55 (in Chinese).[丁海軍,馮慶嫻.基于Boltzmann選擇策略的人工蜂群算法[J].計(jì)算機(jī)工程與應(yīng)用,2009,45 (3):53-55.]
[10]ZHAO Xiaoqiang,ZHANG Shouming.Boltzmann selectionbased KFCM algorithm incorporated with artificial bee colony algorithm [J].Journal of Lanzhou University of Technology,2011,37 (1):71-75 (in Chinese).[趙小強(qiáng),張守明.基于Boltzmann選擇的人工蜂群KFCM算法 [J].蘭州理工大學(xué)學(xué)報(bào),2011,37 (1):71-75.]
[11]REN Wei.An application of artificial intelligence in computer game software [D].Xi’an:Xi’an University of Electronic Science and Technology,2006:1-66 (in Chinese).[任巍.人工智能技術(shù)在計(jì)算機(jī)游戲軟件中的應(yīng)用 [D].西安:西安電子科技大學(xué),2006:1-66.]