用立方體色塊造就千軍萬馬之勢,《銀河破裂者》中的AI系統竟是這樣做出來的
作者:Piotr Bomak
校稿:maggiemmi
本文內容首發Game Developer,經由GWB編譯首發自“騰訊GWB遊戲無界”公眾號
https://www.gamedeveloper.com/disciplines/the-puppet-master---the-development-of-the-ai-system-for-the-riftbreaker
前文回顧(點選下方文字即可檢視全文):
萬物皆可隨機化!淺談《銀河破裂者》中程式化地圖生成
即使您的目標是讓數以千計的敵人同時攻擊玩家,最開始也只是從幾個敵人開始。下面展示的是《銀河破裂者》的首批原型之一。基本上什麼都沒有,甚至連物體的比例都有問題,但足以進行第一次實驗。佔位符立方體象徵著敵人,您可以看到他們正試圖定位並接近玩家。當時我們嘗試使用我們在Zombie Driver中使用的舊款生物碰撞檢測系統。每個敵人在其碰撞體前都有 3 條光線軌跡,以避開其他實體和世界部分。
這些看起來可能不怎麼樣,但這確實是《銀河破裂者》在 2018 年初的樣子
好吧,即使它看起來幹得還不錯,但演算法有點過時了。它還不夠好。我們希望我們的生物快速而狂暴,而不是笨拙。我們移除了所有的光線軌跡並開始使用分離力和內聚力。這給了我們更好的移動,這是我們未來工作的第一步。在那段時間裡,我們通過數學和物理,測試我們所有的想法。在這個例子中,幾十個敵人正在追趕玩家,同時他們在牆壁之間迴旋。敵人穿過狹窄的通道,一旦到達空地,就會再次散開。整潔,一切似乎都執行良好,但這只是開始。
你們永遠抓不住我
如果遊戲中只有一種敵方單位,任何遊戲都會很快變得無聊。即使在《吃豆人》中,每個鬼魂也以獨特的方式行事。(說真的!看看這篇文章)。Galatea 37 是多個物種的家園,每個物種都彼此不同。
有一條重要的規則,如果一個系統對一件事起作用,那麼它對其他事也同樣起作用。我們需要測試我們的數學方程如何處理不同大小和速度的生物。他們會互相粘在一起嗎?他們能避開所有世界物體嗎?當時有很多問題需要回答。而唯一的方法就是將每一個想法和解決方案付諸實踐。看吧!我們為您帶來終極的 Canoptrix、Arachnoid 和 Hammerroceros 衝刺!(它們一點也不慢,這裡只是慢放了。100% 正確。)
準確的把學生在幾何測試前的噩夢視覺化了
現在是第一次考驗戰鬥能力的時候了。在這一點上,我們有點厭倦了在灰色空間中執行的彩色立方體,因此我們用Zombie Driver中狗狗的模型替換了橙色立方體。在此片段中,您可以看到狗試圖攻擊玩家,但是途中有一些防禦塔。怪物和防禦塔進行的攻擊以您可以看到飛來飛去的紅色和綠色立方體來表示。這不僅是對尋路的測試,也是對攻擊優先順序的測試。我們可以命令敵人首先攻擊玩家、能量結構、防禦或其他建築物。玩家是這裡的重中之重,但如果有什麼阻礙,它也會被摧毀。
《銀河破裂者》中眾多史詩戰鬥的第一場
到目前為止,我們向您展示的所有內容的規模都非常小。我們並不滿足。我們希望您在玩《銀河破裂者》時能感受到玩星河戰隊的感覺——一次有成千上萬的敵人的進攻。我們設定這個場景是為了檢查各種型別的生物在地圖上的各自位置生成時的行為。紅色立方體代表將它們推開的流場,這是解決碰撞問題的一種非常快速的方法。他們都有一個共同的目標——摧毀人類基地。一路上,這些組合不可避免地會相遇——讓我們看看會發生什麼。
儘管起點不同,但這些生物在前往共同目標的途中融合在一起
儘管單位受到懸崖和深坑地形障礙的限制,但各群體仍設法融合在一起,不會阻礙彼此到達目標的道路。當他們遇到嚴重的瓶頸時,他們仍然搖擺不定,試圖將自己定位到最好的狀態。這就是最終使外星部落變得既可怕又美麗的原因——模擬一群活的有機體,而不是機器人,一個個排隊等著穿過通道。
更新模型和動畫後,一切都開始有模有樣
即使一切正常,但還是少了一樣東西。如何達到《星際爭霸》那樣酷炫的單位運動水平?在那款遊戲中,一切都如此順暢和快速,沒有移動延遲。我們嘗試了很多東西。祈禱,看電視,看漫畫書。你猜怎麼著,這對我們沒有多大幫助(哭臉)但是有一天,我們的程式設計師在和他小兒子玩耍時找到了一個解決方案。他們把小球放在桶裡搖晃。每一次,球都填滿了桶中的空隙。是什麼神奇力量促成的呢?答案是——重力。通過將每個生物獨特的重力與非常簡單的軟體模擬相結合,我們終於得到了類似於星際爭霸的移動效果。新增了適當的外觀和動畫後,這突然看起來像個遊戲了!
生物拼命地試圖到達中間的機甲
我們之前提到過,讓生物以可信的方式行事對我們來說很重要。我們最不想讓玩家看到的就是一群狂暴的太空犬僅僅因為暫時找不到到達目標的方法,而站在地面上什麼也不做。這對我們來說還不夠狂暴。取而代之的是,這些生物在目標周圍聚集,填補空白,表現得像被蜂巢控制一樣。只有一個目標,並且必須通過任何必要的手段實現。說實話,這看起來像一個活生生的細胞!
基地的蟲害。小型 Quelvers(甲殼動物)和其他單位一樣,被這套系統控制。我們用於處理《銀河破裂者》中單位行為的系統既可以支援攻擊性生物,也可以支援中立生物。我們的計劃是在遊戲發生的星球 Galatea 37 中填充各種“環境”生物。他們的工作非常簡單——只是過著普通的一天,尋找食物和水,從一個地方搬到另一個地方。這一切背後的原因是讓世界更加身臨其境和自然。Quelver 就是這樣的一種生物——一種小小的清道夫,在大多數 Galatea 生物群落中掠過地面。
幸運的是,Quelvers 害怕玩家和他們的行為,所以很容易擺脫他們
Quelvers 的動作由與其他單位相同的 AI 系統控制。為了不對 CPU 造成太大壓力,這些生物只出現在戰鬥之外。如果遊戲檢測到“進攻性”模式中的單位數量閾值已被超過,Quelvers 將立即停止生成。這並不是這些生物的唯一效能優化。遊戲會檢查 Quelvers 的位置,並僅在設定半徑之外生成它們,以避免它們聚集在一起。在這個遊戲中沒有蟲群噴泉。不過如果你真的想的話還是有可能的......
這些蟲子在 Galatea 37 的食物鏈中扮演著重要的角色,負責清理遺骸。
這些傢伙也使用與侵略性單位相同的分組機制,但原因略有不同。他們在屍體周圍成群結隊,而《銀河破裂者》中戰鬥波次後有非常多的屍體。一旦戰鬥結束並且侵略性生物數量再次低於閾值,Quelvers 將再次開始產卵並尋找可以啃食的屍體。經過一段時間後,我們溶解了屍體,但是蟲子的加入使它們看起來好像真的吃了屍體。
這些生物在追逐玩家時會盡力避開障礙物
最後,是時候推出殺手鐗了。在開發複雜系統和演算法一年後,在寫了數千行程式碼,喝了無數杯咖啡之後,我們搞定了數千個單位。話不多說,看圖片你就懂了。
相關文章
- 萬物皆可隨機化!淺談《銀河破裂者》中程式化地圖生成隨機地圖
- 千軍萬馬來相見!《爆破三國》7月17日二測
- 爬蟲養成記--千軍萬馬來相見(詳解多執行緒)爬蟲執行緒
- Flutter你竟是這樣的佈局Flutter
- 三體之後銀河紀元傳說
- 《快學 Go 語言》第 11 課 —— 千軍萬馬跑協程Go
- 短視訊系統,android Switch修改顏色修改樣式滑塊顏色Android
- 半透明色塊在PPT中的運用
- 全球首款AI的作業系統來了!像用Windows一樣簡單AI作業系統Windows
- CSS樣式中顏色與顏色值的應用CSS
- 原來YouTube推薦系統的內幕是這樣……
- [轉帖] 銀河麒麟系統安全機制-KYSEC
- 銀河麒麟系統部署keepalived.故障處理
- 【新遊推薦】組建奧術戰團,迎戰千軍萬馬!
- 國產化之Arm64 CPU+銀河麒麟系統安裝.NetCoreNetCore
- JavaScript 中的原型原來是這樣的JavaScript原型
- 針對 Linux 系統的勒索軟體感染了成千上萬的伺服器Linux伺服器
- Yann LeCun:未來的AI晶片應該這樣做Yann LeCunAI晶片
- 學習這篇總結後,你也能做出天天快報一樣的推薦系統
- 市場聞之色變的DMA究竟是什麼
- 發售一週售出50萬份 《深巖銀河:倖存者》的火爆有何啟發?
- 銀河麒麟系統如何建立rc-local.service服務?
- 銀河麒麟系統安裝mongodb副本集故障處理MongoDB
- 國產化之虛擬ARM64-CPU安裝銀河麒麟作業系統作業系統
- AI儲存的需求是什麼?未來趨勢是怎樣的?AI
- 行業軟體開發商怎樣來搶 BI 這塊蛋糕?行業
- 做出中國最好的遊戲之後,這家公司倒閉了遊戲
- 視訊直播系統開發中的資料庫建立方案資料庫
- 怎樣解題|題2.4.16:立方體染色
- 智慧水利河湖AI智慧影片分析識別系統AI
- vmware安裝銀河麒麟V10系統宿主機斷電異常關機銀河麒麟開機報錯
- 《精靈與螢火意志》:不變的銀河城體系,更加刺激的動作冒險
- 硬核科幻MMO的先驅者 《第二銀河》究竟好玩在哪裡?
- 創意堪比Gorogoa,這兩位年輕的遊戲開發者在立方體中構建了奇妙世界Go遊戲開發
- 月薪5萬和5000之間的差距,就是這樣拉開的
- dotnet 8 版本與銀河麒麟V10和UOS系統的 glib 相容性
- dotnet 8 版本與銀河麒麟V10和UOS系統的 glibc 相容性
- ProcessingJoy —— 翻滾的立方體