如何在游戲中加入ai
『壹』 如何在魔獸爭霸的地圖中加入AI電腦。
要加AI
你了解
魔獸
的
地圖
運行的原理嗎?
如果你也是一位WEER(地圖編輯者)我想你大概能了解到AI是很高深的。用
觸發器
寫AI
太難
用JASS還可以
想在RPG里加入AI的話,先准備一個AI腳本
再用一個MPQ打開加密的RPG
解壓出j腳本
加入你寫的AI
最會替換源文件
重壓縮即可
我建議寫AI
用事件
節點
的方法,是一項浩大的工程。
『貳』 絕地求生ai訓練在哪
絕地求生ai訓練在哪:在左下方的AI大亂斗中。
工具/原料:
神舟戰神Z7
Windows10
絕地求生2.36
1、首先進入絕地求生。
『叄』 帝國時代2如何在多人游戲中使用AI
應該不能用啊,會發生同步錯誤的
『肆』 游戲里的AI是如何實現的
比如賽車游戲的AI,和你一起跑得賽車根據不同等級的AI表現出不同能力。它基本的設計思想是,通過對地圖場景進行數學建模然後結合模型中的應變數結合賽車本身的參數進行數學結合。最後特出了帶有系數的近似等式。然後通過數學變換(比如三角變換,等比變化,隨即變換等)使得AI變的非常具備「人」的思維。 還有一種AI是通過行為庫來實現的,在行為庫中,定義了大量的行為,這些行為可能是預先定義好的,可能是游戲者在平時游戲的時候被系統錄入的。然後AI通過類似責任鏈(不同等級的責任者對應不同等級的責任行為,你可以去網路搜索一下)的形式獲取到某一個時候的行為,從而表現的比較有"智能".
『伍』 如何在游戲機制中使用AI/劇情腳本
首先要說的是,並不是說AI,劇情邏輯必須非腳本語言不可,用C++也可以寫,甚至更習慣一些。但是腳本語言有腳本語言的長處,動態類型以及相當人性化的數據構造方式,特別是LUA中的表類型,似乎比較擅長描述這種復雜的AI/劇情結構。當然,為了驗證自己的想法,我也寫了4K的LUA代碼,結果覺得該腳本語言相當不容易構造簡潔的內容。AI從高自低的分別是計劃,狀態機,模式。我不知道這種劃分是基於何種角度,但是我個人的理解是狀態機最高,模式作為某個狀態下的某個決策所預定義的動作序列,而計劃,是為了實現某個目標的一組步驟的組合。那麼硬編碼的游戲循環何時調用腳本?答案是,游戲循環執行到調度NPC的AI函數的時候,該AI函數就不再做任何硬編碼,而只是簡單的dostring("gameEntitys[npc](/"update/")")。就是這么簡單,將所有的AI/劇情放置到腳本中。那麼,LUA中gameEntitys[npc]("update")是什麼意思?簡單的說,gameEntitys是一個存儲所有NPC的注冊表,gameEntitys[npc]將取得該npc的FMS函數,然後給該函數發送update消息告知npc當前的狀態進行例行更新。FMS函數對於每一個對象是唯一的,那麼比如某一類對象有共同的AI/劇情,那麼該類的每一個對象同用同樣的FMS函數的話,成員變數如何維持?要知道在LUA中模擬類還是比較麻煩的。答案是upvalue,也就是所有的對象使用同樣的函數來生成自身的FMS,該函數就是FMS_Creator(all_state,init_state)。在C++編碼中,NPC對象完成構造之後,就調用LUA載入對應的狀態機/劇情腳本,然後調用FMS_Creator為自己創建FMS函數:dofile("npc_ai.lua")--引入all_state,init_stategameEntitys[npc]=FMS_Creator(all_state,init_state)當然,NPC析構之後,你也要釋放LUA為你分配的資源gameEntitys[npc]=nil已經大概說明了如何在C++中啟動NPC的LUA邏輯代碼了,那麼如何在LUA中編寫狀態機呢?答案是表。每個表代表一個狀態,該表下的key表示該狀態接受的消息,key對應的值表示該狀態接受到key所表示的消息後要執行的決策,包括相應的動作和可能的狀態變遷。看代碼吧,最直觀的表述:state={name="attack",--狀態名enter={--進入該狀態要執行,屬於狀態的消息--func是函數,param是參數,sucess,unsucess是func執行結果所對應的狀態轉移{func=print,param="openfire"},{func=IsEnemyDie,sucess="cure"},}update={}--同enter,不過用於狀態在每一幀的更新exit={}--同enter,不過用於狀態在每一幀的更新other_msg={}--同enter,用於表示該狀態所接受的其他消息,可以有多個}在LUA中就是可以如此直觀的表示每一個狀態,其響應的消息以及函數。然後構造該npc接受的狀態集合:all_state={}all_state[state.name]=stateinit_state=state這樣子,就能傳遞到FMS_Creator中創建出自己獨一無二的狀態機函數了。那麼劇情腳本呢?其實描述了狀態機,劇情腳本是否已經有點眉頭了呢?劇情,即為計劃,每一個計劃由一系列步驟所組成。類似的,對應每個計劃的執行會有一個plan()函數,且為了達到獨立效果,該函數將會由plan_creator(all_step,first_step)生成。看參數,顯然計劃的步驟step就是類似於狀態的表,不過key方面略有不同,看代碼就明白:step={name="findbill",cond={--執行該步驟的前提條件--func是判斷條件的函數,param是判斷參數{func=IsXXX,param="xxx"},{func=IsStepFinished,param=some_step},},finish={--條件判斷成功要執行的動作{func