欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Java版戰(zhàn)棋(SLG)游戲AI及尋徑處理入門

系統(tǒng) 1831 0

代碼下載地址: http://download.csdn.net/source/1047937


SLG或者說戰(zhàn)棋游戲,在大多數(shù)英文站點是歸類到Simulation Game的(包括模擬城市之類的純SIM),并沒有進(jìn)行SRPG(Strategies Role Play Games)、RTS(Real-Time Strategy Game)乃至RSLG(Role play Simulation Game)種種的細(xì)分。歸結(jié)原因,想必還是因為近似因素太多,在大多數(shù)時候已經(jīng)難以區(qū)分其本來面貌,只能一概而論,所以本文也可以理解為SRPG或 RSLG開發(fā)的入門示例。

前言:

這是一篇孤立的博文,精簡了示例代碼效果及行數(shù),僅保留最基礎(chǔ)功能,與以前寫過的[Java版SLG游戲開發(fā)入門]沒有直接聯(lián)系,但可以互相參看。

關(guān)于AI:

AI(Artificial Intelligence),即人工智能,有時也稱作機(jī)器智能或人工腦,是指那些由人類制造出來的系統(tǒng),在面對具體事務(wù)時,所表現(xiàn)出的類人反應(yīng)。通常情況下人工智能多指以人類思維模式為準(zhǔn)繩,通過計算機(jī)模擬實現(xiàn)的智能。

人工智能的定義可以分為兩部分,即“人工”和“智能”。“人工”比較好理解,爭議性也不大。有時我們會要考慮什么是人力所能及制造的,或著人自身的智能程度有沒有高到可以創(chuàng)造人工智能的地步,等等。但總的來說,“人工系統(tǒng)”就是通常意義下的人工系統(tǒng)。

舉凡涉及到什么是“智能”的話題,就問題多多……人唯一了解的智能是人本身的智能,這是普遍認(rèn)同的觀點。但我們對自身智能的理解也都非常有限,對構(gòu)成人的智能的必要元素也知之甚少,所以很難真正定義什么是“人工”制造的“智能”。


據(jù)此,我同樣很怕寫涉及到AI題材的博文,首先AI處理本就是個有待研究的領(lǐng)域,因為甚至連[智能]究竟是什么都是個很難解釋的問題,這其中還涉及到其它諸如意識(consciousness)、自我(self)、心靈(mind)(包括無意識的精神(unconscious_mind)等等,存在相當(dāng)大程度的爭議。

而評判AI的標(biāo)準(zhǔn)也不盡相同,拋開還很遙遠(yuǎn)的人工生命(“強(qiáng)人工智能”或“弱人工智能”),似乎要成為標(biāo)準(zhǔn)的“機(jī)器人三定律”,圖靈測試等等不說,單從游戲AI引擎的設(shè)計角度講,這已經(jīng)是個很嚴(yán)肅的話題,并非一兩行代碼就能構(gòu)建完成的,負(fù)責(zé)任的說,如果要嚴(yán)謹(jǐn)?shù)膶懗鲆粋€中等規(guī)模戰(zhàn)棋游戲的AI處理代碼,并配合圖文解釋且標(biāo)注上參考文獻(xiàn),加上關(guān)鍵字摘要等等,差不多就是篇碩士論文|||,總之水很深??紤]到篇幅及鄙人水平因素,故此文中并沒有深入探究,僅僅給出一個“入門示例”,供看客參考而已。

正文:

事實上我們之所以喜歡游戲,很大程度上是基于“與天斗,與地斗,與人斗,其樂無窮”的理由,相信極少有玩家會喜歡戰(zhàn)場上的敵人永遠(yuǎn)一動不動任你蹂躪,更不會有人喜歡僅僅出現(xiàn)You win again字樣的游戲。應(yīng)該說,游戲中的AI很大程度上講是體現(xiàn)在電腦與玩家的對抗中,一款好的游戲AI應(yīng)該能足夠刺激玩家,“蹂躪”玩家,吸引玩家參與對抗。

不妨這樣講,制作游戲的目的相較于體現(xiàn)玩家的“聰明”,倒不如說是更希望看見他們的“愚蠢”,看見他們被游戲玩弄得驚慌失措,叫苦連天,還樂此不疲的“憨佬”形象,這才是我們作為游戲開發(fā)者的最大快樂(^^)~

根據(jù)具體事件的不同,游戲AI可具體體現(xiàn)在以下兩個方面:

一、單元活動AI(Unit Behavioral AI)

游戲AI并不總是標(biāo)準(zhǔn)含義上的AI。而單元(也可理解為角色或者基本對象,以下同)游戲AI正是為設(shè)計出具有提供某種挑戰(zhàn)或某種真實體現(xiàn)的生命特征的一次真正的嘗試。

譬如在玩家與游戲的互動中,只站在一處、從不移動的警衛(wèi)會顯得非常不真實。不過,如果你創(chuàng)建一個例行程序(routine),使他不時的朝四周張望,或變換他的姿勢,他會看起來更具活力。通過創(chuàng)建一個在預(yù)設(shè)的路徑上行走的警衛(wèi)偶然停在站崗的警衛(wèi)前,并好像與他談話這樣的情景,真實的體現(xiàn)能被極大地提高。單元活動AI,正是出于這種目的制作的“擬人性”而非“擬人”AI。

在單元AI中,動作模式可分為被動式(Passive)與自發(fā)式(Spontaneous)兩大類。

1、被動式 :現(xiàn)實生活中,如果有人打了你的左臉,要不然就伸出右臉讓他再打,要不然就伸出右手還他一巴掌,總之,你會有相應(yīng)的“反應(yīng)”。而被動式AI,正是這種情況的體現(xiàn)。

在被動模式下,單元(角色)隨時會對自身環(huán)境中的變化做出響應(yīng)。如果一個敵人發(fā)現(xiàn)了你,開始向你跑來,并朝你射擊,那么他們已經(jīng)做出了看到你的反應(yīng)。

2、自發(fā)式 :在自發(fā)模式下,單元做出行動時并不依賴于自身環(huán)境中的任何變化。一個單元決定從其所站立的崗哨移向基地周圍的某個游動崗哨,則這個單元已經(jīng)做出了一次自發(fā)性的行動。

通過在你的游戲中加入不同的單元活動元素,就能夠制造出單元的“聰明”假象,令玩家產(chǎn)生對手如同真人的錯覺。

二、單元行動AI(Unit Actions AI)

好比人類的智商是體現(xiàn)在行為及對世情的準(zhǔn)確判斷上,真正讓一個游戲單元看起來聰明或者愚蠢的,同樣是他們的行動。

簡單的說,如果游戲單元依照玩家認(rèn)為可行的方式移動,或者在玩家認(rèn)知范圍合理的情景下做如閃避這樣的動作,那么單元看起來會很聰明,相反則會給人愚蠢的印象。但是,實際開發(fā)中這種現(xiàn)象都并非真實存在,而是看起來聰明或愚蠢的假象,因為程序僅僅與玩家面對的基本情景相關(guān)聯(lián),而并非游戲中角色真的聰明抑或愚蠢。

如果你處理恰當(dāng),且這一應(yīng)用包含的范圍廣泛,你的玩家就會相信你的單元足夠“聰明”。為了實現(xiàn)這一目的,你需要把自己放在你所構(gòu)建單元的位置上思考,如果把你丟到游戲中,在他們的情景下你會怎么做?你將怎樣回應(yīng)各種各樣的攻擊或遭遇敵人?如果什么事都根本沒發(fā)生,你又將會做些什么?

如果你回答了這些問題,并針對你的單元將遇到的每種情景正確的實施了它們,你擁有“看似聰明”單元的機(jī)會就會最大化,這也是創(chuàng)建一個優(yōu)秀的、穩(wěn)健的游戲AI的第一步。

談過了單元行為,我們再來說說單元運(yùn)行中的事件分類。

根據(jù)處理事件采取的不同技術(shù),游戲AI又可分為確定性(deterministic)AI與非確定性(Non-deterministic)AI兩大類別:

1、確定性AI:

確定性AI的單元(角色)行為或者說表現(xiàn)是特定的,可預(yù)測,沒有任何不確定因素。其具體實現(xiàn)如同我在博文[Java偽尋徑追蹤實現(xiàn)]中展示的單元追逐演算,一個非玩家單元緊隨玩家單元X,Y坐標(biāo)前進(jìn),直至與玩家單元或目標(biāo)點重疊為止。


2、非確定性AI:

與確定性AI相反,非確定性AI在行為模式上存在著很大程度上的不可預(yù)測性,理論上講甚至能夠令單元(角色)做出很多超出程序員構(gòu)想的突現(xiàn)行為。簡單實現(xiàn)可見隨本博文發(fā)布的程序示例(單元隨機(jī)動作),但其復(fù)雜實現(xiàn)則需要應(yīng)用到神經(jīng)網(wǎng)路、貝斯葉概率模式、乃至基因演算法等相關(guān)知識支撐。故此鄙人對嚴(yán)謹(jǐn)意義上的非確定性AI也不敢置喙太多,深入研究有待看客自行探索。

3、[隱藏類別] AI處理結(jié)果欺詐(流氓手段、、賴招,隨便叫(-_-|||)):

這種方式事實上是程序員心智肚明,卻又諱莫如深的一種編程技巧,我讀書時老師戲稱其為“流氓手段”。還記得在當(dāng)時課堂上,老師曾舉過這樣一個例子,讓我們寫出一段能夠得到1-100相累加結(jié)果的最簡代碼,同學(xué)們發(fā)言很踴躍,但是卻沒人有正確答案。而當(dāng)我們質(zhì)疑老師的評判標(biāo)準(zhǔn)時,老師卻給出了絕對最簡的答案——直接顯示5050。

應(yīng)該說,在處理絕對可知結(jié)果時,這種方式確實非常有效,對于頻繁運(yùn)算來講更能體現(xiàn)其價值所在;而對于游戲中某些運(yùn)算復(fù)雜,但結(jié)果卻單一的事件,確實可以采用“流氓手段”進(jìn)行編程,即可提高效率,又減少了代碼量,但卻決不能輕易被用戶知道,尤其是在網(wǎng)游的轉(zhuǎn)、精煉等結(jié)果中……


總結(jié):


就我目前所知的游戲AI實現(xiàn)中,確定性AI可謂絕對主流,因為它的結(jié)果固定有窮,所以相對于非確定AI占用程序資源更小,效率更高,實現(xiàn)也更簡單。但有利必有弊,對一個聰明的玩家而言,找出一個確定性AI的規(guī)律是再簡單不過的事情,有限的行動模式,也必然決定游戲可玩性同樣有限。

而非確定性AI,則毫無疑問是塊雷區(qū),無論對我這種業(yè)余玩票性質(zhì)抑或?qū)I(yè)游戲開發(fā)者盡都如此,它已經(jīng)無限延伸入“人工生命”這塊“神之領(lǐng)域”,并非短時間就能夠?qū)W習(xí)甚至使用的技術(shù)。但如果能在程序中成功利用,則無疑會極大增強(qiáng)游戲可玩性。

至于我提到的“流氓手段”,則只能意會,不可言傳,大家心照不宣。

總體來講,游戲AI無論是確定性或非確定性,單元(角色)都難免如同巴浦洛夫狗流哈喇子中的dog那樣,僅僅會對特定事件做出“條件反射”,依據(jù)制作者設(shè)定好的行為模式而并非角色的自主思維運(yùn)作,行為可能性是“有窮”的,并沒有如人類般擁有“無限可能性”,故此可以看作一種“偽智能”,而非嚴(yán)格意義上的“人工智能”。當(dāng)然,我相信隨著技術(shù)的發(fā)展,這種“偽智能”技術(shù)最終將進(jìn)化為真正意義上的“人工智能”。

對于具體處理流程,則可作如下分類:

1、有限狀態(tài)機(jī)(Finite State Machin,FSM):

最廉價、同時也是最實用的技術(shù)。在游戲?qū)崿F(xiàn)(非游戲?qū)崿F(xiàn)有出入)中的基本運(yùn)作方式是采用窮舉方式,羅列出單元所有可能的動作或狀態(tài),再利用switch、if等方式判定各種事件關(guān)系及滿足條件,據(jù)此變更單元的動作或狀態(tài),由于我們所能做的僅是編輯從一狀態(tài)到另一狀態(tài)的轉(zhuǎn)換,完成這系列一行為的算法,就可歸屬于分層有限狀態(tài)機(jī)。

2、模糊狀態(tài)機(jī)(Fuzzy State Machine,FuSM):

當(dāng)利用隨機(jī)數(shù)等方式觸發(fā)模糊邏輯(fuzzy logic)時,會令單元的動作較難預(yù)計,產(chǎn)生大量新的分支判斷,這時處理多個有限狀態(tài)機(jī)情況的技術(shù)實現(xiàn),就是模糊狀態(tài)機(jī),它以看“不精準(zhǔn)”的響應(yīng)來進(jìn)行不確定性結(jié)果的處理。

3、分層有限狀態(tài)機(jī)(Hierarchical Finite State Machines,HFSM)及擴(kuò)展分層有限狀態(tài)機(jī)(Extended Hierarchical Finite State Machines,EHFSM):

這兩項技術(shù)可視同有限狀態(tài)機(jī)與模糊狀態(tài)機(jī)的融合體,他們嘗試以一種樹狀結(jié)構(gòu)分別處理有限及模糊狀態(tài),是一系列由同一個支點擴(kuò)展開的行為模式樹,不同的是擴(kuò)展分層有限狀態(tài)機(jī)有更為嚴(yán)密的控制流及數(shù)據(jù)流,當(dāng)然代價是對于游戲系統(tǒng)的資源損耗也更多。

以上是AI引擎開發(fā)中常用的一些基礎(chǔ)概念,如果想深入了解相關(guān)細(xì)節(jié),還需看客自行深入研究。

關(guān)于單元(角色)尋徑:

如果單元擁有AI,那么他理所應(yīng)當(dāng)?shù)哪軌蜃灾餍袆印5牵覀兌贾烙螒蛑薪巧遣淮嬖诨蛘哒f很難實現(xiàn)真正意義上AI的,所以與AI處理同樣,尋徑同樣是我們這些程序員的一種“欺詐手段”,用以“蒙蔽”用戶,讓他們產(chǎn)生單元擁有自主思維的錯覺。

關(guān)于常見的幾種尋徑方式,可見參本人博文[Java中的A*(A star)尋徑實現(xiàn)]以及[Java偽尋徑追蹤實現(xiàn)],不再贅述。

簡單的說,平面圖是由x、y兩點構(gòu)成的,而所謂尋徑就是在網(wǎng)格化的地圖上連接出點到點間的路線交集;如果我們以二維數(shù)組mapList表示地圖數(shù)據(jù),moveList表示地圖上可移動點的話,那么復(fù)合mapList地圖數(shù)據(jù)及moveList上可移動點所構(gòu)成的交集,就是尋徑后得到的單元行走路線,即尋徑結(jié)果。

相較于AI部分,尋徑可以看作AI實現(xiàn)中的一項分支技術(shù),個人認(rèn)為沒有太過深入探究理論的必要,唯一需要關(guān)心的,僅在于多對象尋徑時的效率或準(zhǔn)確性取舍問題,同樣請參考相關(guān)技術(shù)文獻(xiàn),否則本文隨時超出文章最大字?jǐn)?shù)……

具體到游戲?qū)崿F(xiàn)流程:

SLG離不開戰(zhàn)場及角色與各種事件判斷,而具體到其構(gòu)建過程,大多遵循如下順序:

1、地圖(背景戰(zhàn)場圖)構(gòu)建


2、獲得對應(yīng)地圖基本單元的對象集合(2D游戲中多為二維數(shù)組)


3、獲得可移動點的對象集合


4、創(chuàng)建地圖上角色(針對于地圖基本單元放置)


5、激活鍵盤或者鼠標(biāo)事件(處理如光標(biāo)移動等)


6、根據(jù)選擇的不同在地圖單元上繪制相光事件觸發(fā)物(菜單等),以供事件觸發(fā)


7、當(dāng)選擇事件時,事件處理開始,各單元(角色)根據(jù)預(yù)先設(shè)定響應(yīng)事件反饋給玩家(比如移動、攻擊等事件)


8、當(dāng)我方全部行動結(jié)束或者選擇結(jié)束后,敵軍開始由AI自行處理事件


9、判定是否滿足戰(zhàn)斗結(jié)束條件


10、如果未滿足步驟9,則循環(huán)回步驟1,同時回合數(shù)+1,游戲繼續(xù)

在這一過程中,還可以加入如兵種、物品、特殊人物加成等影響性數(shù)據(jù),但基本流程不受影響。

具體到演示代碼:

本博文附帶的演示代碼有核心基本類如下,具體請參見代碼注釋:

Role.java(角色處理,包含敵我雙方)

Map.java(地圖處理)

GameCanvas.java(戰(zhàn)場繪制及各種事件處理)

示例程序截圖如下:

回合開始:

0

角色狀態(tài):

1

移動尋徑:

2

菜單交互:

3

目標(biāo)選擇:

4

活動單元轉(zhuǎn)移:

5

代碼下載地址: http://download.csdn.net/source/1047937

————華麗的分割線———

本來上周就說寫的東西,卻由于某個事件的刺激,導(dǎo)致上周某幾天中回家就跑去各個論壇跟水軍打嘴仗,拖到本周才動手壘碼……對于這種“嘴勤屁股懶”的行徑,在此強(qiáng)烈鄙視自己(-_-|||)……

PS:實際上示例代碼周二晚已完成,計劃中昨晚就該發(fā)博文,結(jié)果中途忍不住又點了某個論壇,又和水軍對噴半天,所以耗到今天這篇博文才得以面世,寫的不夠周全,這兩天會慢慢補(bǔ)齊,還望各位大人見諒^^。


Java版戰(zhàn)棋(SLG)游戲AI及尋徑處理入門


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 狠狠色噜噜综合社区 | 青青青青手机在线视频观看国产 | 天天伊人网 | 日韩在线观看中文字幕 | 久久国产成人福利播放 | 人人性人人性碰国产 | 在线观看亚洲网站 | 国内精品99| 老司机福利在线视频 | 91亚洲国产成人久久精品网站 | 日韩一区二区三区视频 | 一二区视频| 久久国产精品久久久久久久久久 | 521色香蕉网站在线观看 | 亚洲精品无码成人A片九色播放 | 亚洲精品一区二区三区在线观看 | 日韩免费一区二区三区 | 一级毛片观看 | 中文字幕在线观看第一页 | 色成人亚洲 | 片一级片在线观看 | 日本精品久久久久久久久免费 | 黄色毛片视频网站 | 国产99久久精品一区二区永久免费 | 色综合综合色 | 日韩精品视频一区二区三区 | 九九爱精品| 久久偷拍人 | 欧美一二三区 | 91视频一区 | 狠狠久 | 一区二区三区视频在线观看 | 日本又黄又粗暴的gif动态图含羞 | 国产999精品久久久影片官网 | 91视频视频 | 黄色网在线播放 | 麻豆网站入口 | 国产精品成人国产乱一区 | 91视频区 | 国产一区二区三区国产精品 | 国产精品中文字幕在线 |