日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > ChatGpt >内容正文

ChatGpt

从0开始搭建一个战棋游戏的AI(初级教程)

發布時間:2024/8/26 ChatGpt 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从0开始搭建一个战棋游戏的AI(初级教程) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

戰棋類游戲一直以高策略性著稱,其中不乏經典之作如“三國志英杰傳”、“三國曹操傳”、“炎龍騎士團”、“金庸群俠傳”等等。

今天,我們就如何一步步從0開始實現一個簡單的戰棋類游戲AI,概述一下此類游戲AI的設計思路和算法。(什么?AI是啥?——人工智能,通俗來說就是電腦的自動策略。)
?


戰棋類游戲的關卡設計思想

經典戰棋類游戲一般來說AI都比較簡單,豐富高可玩性的關卡和極限挑戰難度,還是要靠關卡設計來做:比如什么時候敵方出援軍、敵方某個據點什么時候出兵之類的驅動整個戰局變化的。

這個由于是關卡設計者(一般是游戲策劃)考慮的范疇,我們今天不討論這個。光討論一個NPC,每回合在正常情況下應該如何決策。

模型分解

我們分析幾款經典的戰棋類游戲

1、曹操傳

分敵我回合,每回合自由選擇角色先后行動順序。

每回合一個角色可以做兩件事——(移動+行為)

其中行為又可以細分為攻擊、技能、休息、使用物品(可以給自己或身邊的人使用)
?


2、炎龍騎士團

也分敵我回合,每回合玩家自由選擇角色先后行動順序。

還是一樣,決策=移動+行為

行為細分為攻擊、休息、魔法、物品(可以給自己或身邊的人使用)

和曹操傳不一樣的地方是移動后不可以使用魔法(必須本回合停留原地才可以使用魔法)
?


3、金庸群俠傳

無敵我回合,每回合按照角色的身法決定先后行動順序。

決策=移動+行為

行為細分為攻擊、用毒、解毒、醫療、物品、等待、休息……

其中等待可以將行動延后
?


……

不難發現,大部分戰棋類游戲都遵循這個規則:單個回合內角色決策 = 移動 + 行動。

AI框架設計思路

我們本文并不想針對某個特定的游戲模式來做設計,而是想教大家一個簡單的買QQ號通用AI如何搭建——

因為大家構思和想做的游戲系統設定各異,(比如上面幾款游戲,就分別有自己的各項特殊規則)

在此種情況下,我們其實可以搭建一個通用的計算模型,來“海納百川”,實現一個與具體游戲業務邏輯無關的AI框架。

我們不妨先把技術的東東放一邊,以一個玩家的角度來重現,每一個回合我們人類是如何思考的呢?

“我走到這里,下回合對方是不是可以走過來打到我?”

“我這一擊剛好可以把對方秒殺,這樣對方就不能反擊我了!”

“我移動速度比對方快,我先跑回去補給完,然后再回來打”

“調整一下陣型!用防御力高的人在這個關卡上卡位,弓箭手在后方射。”

總之,決策基準就是如何行動對自己是最有利的。

數學模型

我們可以給每一個行為決策,算出一個“得分”來,最后負分是有害、正分是有利。最終AI的結果就是選擇得分最高的行為。

初級AI的本質是一個貪心算法

貪心算法(又稱貪婪算法)是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的是在某種意義上的局部最優解。

貪心算法不是對所有問題都能得到整體最優解,關鍵是貪心策略的選擇,選擇的貪心策略必須具備無后效性,即某個狀態以前的過程不會影響以后的狀態,只與當前狀態有關。

通俗來說,貪心算法就是只看眼前,不看之后的情況。

所以如果我們只看眼前一步,那么問題就變得很簡單:我如何下這一步棋獲得當前的最高收益?

搭建框架

這樣我們只需要將所有的行為結果都有一個評估的分數,然后遍歷所有的行為可能,取得分最高的評估結果來決策即可。

1、分數評估體系搭建

如何來做這個分數評估體系?——不同的游戲可以有各自的設定:舉個例子,比如如果某次行動擊中3個敵人,每個人評估扣血100,那么總共算得300分。比如某次給隊友加血,預估恢復技能能加150血,就算得150分……

所以某次行動的得分應該是本次行動所有影響的結果分數之和。(也可以根據具體需要,調整一些加權系數,后文說明)對自己有利則加分,對自己有害則減分(同理,對敵人有利減分,有害加分)

2、如何遍歷?

很簡單,戰棋類游戲無非移動+行動,把所有可能走的點全部走一遍,走到了那兒后把所有可能的行動全部做一遍。如果有些行動設計到施展位置,把所有的施展位置全部算一遍即可。

這里如果效率太低,可以盡情對搜索算法剪枝,此處不贅述。

3、擴展和調優

有了以上兩步,AI應該就可以跑起來了。我們接下來可以根據具體咱們游戲的設定來調優,讓AI更加聰明。

拿剛才的例子,比如擊中的3個敵人里有一個可以導致死亡(HP=0),那么額外再加200分(得分就是500了)。比如加血的隊友血越少得分越高(優先給瀕死的隊友加血),那么當AI可以選擇兩個隊友加血的時候,自然就會選擇那個更加瀕死的角色。

這里的設計就跟具體每個游戲相關,甚至更加復雜的話,還可以考慮地形、站位、AOE覆蓋范圍、加BUFF/DEBUFF、使用道具等各種情況。

這里還可以賦予不同的角色不同的使命,也只需要在最終的得分上體現即可(比如一個偏輸出的攻擊者,比一個偏防御的防御者在“減少敵方HP”的得分上有額外加權)

總之基于這個分數,可以做出一切有想象力的AI來,此處仁者見仁。

結語

我們基于這個思路開發了《金庸群俠傳X》和《江湖X》以及即將發布的《江湖X:漢家江湖》,基本AI是可用的(雖然由于游戲屬性有點復雜,AI也經常被玩家吐槽)。


很多戰斗變成了玩家的攔路虎
?


也會有一些由于AI給力被津津樂道的情況

最后祝大家開發愉快,有問題可以與我交流。

總結

以上是生活随笔為你收集整理的从0开始搭建一个战棋游戏的AI(初级教程)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。