程序語(yǔ)言:Unity3D C# / Weka
截止時(shí)間: 2020/10/10
程序要求:
現(xiàn)有一個(gè)基于UNITY3D的小游戲項(xiàng)目(2D)。 游戲可以用wasd和方向鍵控制player在游戲場(chǎng)景中獲得食物,食物有兩種分別+10/+20食物點(diǎn)數(shù),躲避僵尸并到達(dá)脫離點(diǎn)。到達(dá)脫離點(diǎn)后將進(jìn)入下個(gè)類似但難度提升的游戲場(chǎng)景。玩家每次移動(dòng)食物分?jǐn)?shù)都會(huì)自動(dòng)減少,直到?jīng)]有食物結(jié)束游戲。隨著游戲難度提升,敵人(僵尸)的數(shù)量會(huì)增加。場(chǎng)景中有一些墻作為障礙物,墻可以被player攻擊數(shù)次后消失,但是會(huì)消耗食物點(diǎn)數(shù)。
首先需要添加代碼,讓這個(gè)項(xiàng)目可以自動(dòng)記錄并生成人玩游戲產(chǎn)生的數(shù)據(jù)到csv文件中,可能需要記錄的數(shù)據(jù):”玩家位置,現(xiàn)在的食物分?jǐn)?shù),脫離點(diǎn)的位置,墻的位置,離玩家最近的2個(gè)僵尸的位置,場(chǎng)景中食物的位置, ……”
綁定一個(gè)開(kāi)關(guān)讓人能決定是否記錄接下來(lái)的游戲數(shù)據(jù)。例如,按下某個(gè)熱鍵或進(jìn)行某些設(shè)置后,游戲會(huì)開(kāi)始記錄或關(guān)閉記錄模式。
對(duì)于坐標(biāo)記錄,可以將X坐標(biāo)和Y坐標(biāo)分開(kāi)記錄。
對(duì)于數(shù)據(jù)獲取,可以利用現(xiàn)有的BoardManager.cs腳本中的公共變量部分。
然后利用記錄好的csv文件到Weka軟件中處理,生成決策樹(shù),再利用這個(gè)決策樹(shù)實(shí)現(xiàn)控制player 進(jìn)行游戲的AI腳本,使得讓AI腳本控制player進(jìn)行游戲(拾取食物,躲避僵尸敵人,到達(dá)脫離點(diǎn)進(jìn)入下一階游戲 直到食物耗盡)。AI不需要玩得非常好,能模擬人玩游戲,能達(dá)到的關(guān)卡級(jí)別和人差不多就行。這里生成的csv文件數(shù)據(jù)是要編程者自己先進(jìn)行一些游戲,得到數(shù)據(jù)。并利用這些數(shù)據(jù)生成決策樹(shù),根據(jù)決策樹(shù)編寫(xiě)player AI。達(dá)到讓基于決策樹(shù)的AI代替人玩游戲的目的。
Player AI相關(guān)的代碼應(yīng)寫(xiě)在PlayerAgent.cs中。同樣應(yīng)有一個(gè)開(kāi)關(guān)來(lái)切換人玩游戲和AI玩游戲。
需要交付的是:
代碼:
·所有相關(guān)代碼。包括自動(dòng)記錄游戲數(shù)據(jù)到csv文件的代碼,根據(jù)決策樹(shù)編寫(xiě)的player AI腳本代碼。
·代碼注釋。
文檔:
·開(kāi)發(fā)者玩游戲生成的CSV文件。
·Weka軟件根據(jù)csv文件生成決策樹(shù)的相關(guān)數(shù)據(jù)和步驟截圖。包括生成的決策樹(shù)。
·說(shuō)明記錄數(shù)據(jù)到csv文件代碼的思路,生成決策樹(shù)的思路,根據(jù)決策樹(shù)實(shí)現(xiàn)player AI的思路。(為什么這樣做)
·簡(jiǎn)要說(shuō)明這個(gè)playerAI和人玩游戲的一些區(qū)別以及為什么有這些區(qū)別。