如何學習寫遊戲AI?

計算機系學生,想要自己在課外時間寫一個AI,比如賽車類(極品飛車,跑跑卡丁車,狂野飆車)和射擊類(CS,CF),需要學習哪些知識,用到什麼工具?


知識:編程知識

工具:IDE

具體:

1.看書。先把握個大方向。

《遊戲人工智慧編程精粹》,雖然翻譯爛,但是裡面的demo質量高,幫你寫好了一個帶圖形的一群小兵互毆的遊戲。這本書的意義在於讓你對遊戲AI先有一個感性認識,從零起步。

簡評遊戲人工智慧相關的中文書(上)

簡評遊戲人工智慧相關的中文書(下)

雖然裡面推薦了不少書,但其實都是跟這本《遊戲人工智慧編程精粹》屬於一類的,不會跳出狀態機的圈子。

《遊戲編程精粹》,由於國內遊戲開發大環境的原因,前幾本的AI相關Gems還能看,或者說能用,後幾本講的基本不可用。這系列的書的意義在於幫你把握遊戲AI的全球發展趨勢,看完了這幾本裡面AI相關的文章,基本上AIDev、GDC上面的一些比較新的文章可以看看了。

2.寫代碼。自己一個人搞的話,AI其實就是hard code出來的。

語言不限,拿一門比較喜歡的容易上手的語言來重寫《遊戲人工智慧編程精粹》裡面的例子是個好主意。

可以實現一些簡單的遊戲,比如坦克大戰,比如吃豆人。

如果只是純對AI邏輯感興趣,可以看看這個

CodeTank 代碼坦克

或者這個

AI9

最後再恬不知恥的貼一下我的博客。漫談遊戲中的人工智慧


賽車和射擊遊戲的 AI 比較不單純,因為受場景環境的影響很大,射擊遊戲里光是製作敵人的可視範圍和聽覺範圍系統就是挺大的工程,除非是拿虛幻引擎現成的 demo 去改 AI 的行為。賽車遊戲的 AI 我沒接觸過,但同樣想要敵車能夠體現出「智能」的表現,要考慮賽車的各種運行參數,以及 AI 在多大範圍內可以控制這些參數。總的說來都是大工程,非專業人員很容易迷失在 AI 之外的其他系統中。不適合做 AI 課題研究。

適合做 AI 研究的有棋牌類、戰略戰棋類、RPG 類,總之指令越單純越好,形式也很靈活,可以是狀態機,可以是 behavior tree,也可以就是一堆 if...else。不太需要特定工具,狀態機和 behavior tree 可以去找現成的庫,自己寫一個簡單的遊戲框架然後在此基礎上編程就可以了。


買本書看看吧,推薦一本好的AI書《遊戲人工智慧編程案例精粹》,

然看你問題中的需求不光是AI,如果做賽車遊戲,對物理引擎也要比較深入的學習,裡面涉及到車輪的摩擦,重力,加速度影響和碰撞檢測等。

想快速做出東西的話,可以學習一個遊戲引擎,跟著他的Demo做,比如Unity等容易入門的引擎。

當然學習引擎也還是建議你買本書或者看教學視頻這樣比較快。


先學習機器學習,將遊戲ai和機器學習相結合:
opencv用圖像模塊處理後,提取特徵,然後投入machine learning里做分類。

練手可以做個行人跟蹤,HOG特徵提取加svm分類。

opencv有c++和python介面,用法差不多,也封裝了一些機器學習的方法。


「寫」是什麼概念,只是完成設定好的機制的話沒什麼好練習的吧。

創作AI的大部分工作是策劃的事情,一個AI好不好根本上由策劃決定,比如格鬥,AI策略是策劃設計的,權重也好,多狀態機綜合操控也罷設計的部分是由策劃完成的。程序只是負責實現這些文字。

還沒接觸過哪個程序是能自己創作AI的。


推薦閱讀:

從零開始手敲次世代遊戲引擎(十四)
GMS 中文教程特別篇 #2:GML 編程實踐的經驗與建議
FC遊戲的偽多捲軸
非IT人士都能看懂的工程代碼重構方法:三步走

TAG:人工智慧 | 遊戲開發 |