HTML5遊戲開發進階 9:新增武器和戰鬥
將為車輛、飛行器和炮塔裝上武器,通過執行戰鬥指令,如進攻、守衛、巡邏和追蹤等,允許單位以一種智慧的方式戰鬥。最後,我們還要實現戰爭迷霧,在地圖上限制玩家的視野,這將允許玩家使用一些更有趣的戰鬥策略,如偷襲、伏擊。
9.1 實現戰鬥系統
所有的單位和炮塔都具有自己的武器和炮彈型別。攻擊敵人時,單位首先進入射程,轉向目標,然後向敵人發射一枚炮彈。單位發射炮彈後,需要等待武器重新裝填炮彈,才能進行下一次發射。
炮彈本身是一個獨立的單位,它有自己的動畫邏輯。發射後,炮彈將徑直飛向目標,接觸目標後爆炸。
新增炮彈:bullets.js
定義了四種炮彈型別:燃燒彈,導彈,榴彈,子彈。每一種炮彈都有一些共同的屬性。
- speed:炮彈飛行的速度
- reloadTime:裝填時間,兩次發射之間動畫迴圈的次數。
- damage:破壞力,爆炸時對目標造成的破壞程度
- range:射程,炮彈失效前能夠飛行的最大距離。
定義了兩個動畫模式:fly和explode。fly模式有八個方向,類似於車輛和飛行器。explore模式僅有一個方向
實現戰鬥命令:
飛行器的戰鬥指令:
- attack:攻擊,在目標的射程範圍內移動,並向目標射擊。
- float:停留,在某一點停留,攻擊任何靠近的敵人
- guard:守衛,跟隨一個友方單位,攻擊任何靠近的敵人
- hunt:搜尋,主動在整張地圖中搜尋並攻擊敵人
- patrol:巡邏,在兩點之間來回移動,並攻擊任何靠近的敵人
- sentry:哨戒,在某一點停留,攻擊敵人,比float模式更主動
選中飛行器後,右擊敵方或友方單位會命令飛行器攻擊或守衛該單位。直升機可以攻擊地面和空中的單位,但戰鬥機只能攻擊空中的單位。
通常,sentry、hunt、patrol指令模式僅供計算機AI使用,玩家無法直接向自己的單位下達這些指令。這樣可以增強遊戲對玩家的挑戰性。
車輛的戰鬥指令:
- attack:攻擊,在目標的射程範圍內移動,並向目標射擊。
- float:停留,在某一點停留,攻擊任何靠近的敵人
- guard:守衛,跟隨一個友方單位,攻擊任何靠近的敵人
- hunt:搜尋,主動在整張地圖中搜尋並攻擊敵人
- patrol:巡邏,在兩點之間來回移動,並攻擊任何靠近的敵人
- sentry:哨戒,在某一點停留,攻擊敵人,比float模式更主動
9.2 建立智慧的敵人
敵人AI的主要目的是增強關卡的挑戰性,為關卡中的玩家提供更精彩的遊戲體驗。重要的是,對RTS類遊戲,尤其是單人戰役模式,敵人的AI並不需要像象棋大師一樣強大。事實上,戰鬥指令模式和條件指令碼事件的簡單組合,就足夠提供給玩家非常強的遊戲體驗了。
通常,使敵人更聰明的方式就是,在每一個關卡,敵人的AI都不一樣。
在簡單的關卡中,玩家和計算機扮演的敵人都沒有任何生產性設施,只有地面單位,我們唯一能做的就是驅動敵軍去進攻玩家。這類關卡中,patrol模式和sentry模式往往被極為頻繁地使用。我們可以建立這樣一個簡單的關卡:某個固定的時間或某個固定的時間(比如,當玩家到達某個地點或建造了某座建築)發生時,玩家就會遭到敵軍的攻擊。
在更加複雜的關卡中,我們允許敵人建造單位,並使用時間觸發器和hunt指令,在固定的時間間隔後,集合敵軍單位去攻擊玩家。這樣遊戲就更具有挑戰性。
小技巧:你可以基於不同的難度設定來分別實現觸發器和起始單位,這樣對同一個關卡,玩家也可以選擇簡單模式或挑戰模式。
9.3 新增戰爭迷霧
戰爭迷霧通常是指,覆蓋著地圖上所有未探索區域的深色的覆蓋物。當玩家單位在地圖上移動時,迷霧在單位的視野中消失。
為遊戲帶來了“探索”和“陰謀”元素。單位可以在迷霧下隱藏起來,我們也能夠使用隱藏基地、伏擊、偷襲等策略。
有些RTS遊戲在區域被探索之後,迷霧就永久移除了,還有一些遊戲僅僅移除玩家單位的視野內的迷霧,一旦單位離開,迷霧又會重新覆蓋。我們的遊戲使用第二種實現。
fog.js
禁止在迷霧上建造建築
相關文章
- 前端開發入門到實戰:HTML5進階FileReader的使用前端HTML
- 阿里開源HTML5小遊戲開發框架Hilo實戰教程阿里HTML遊戲開發框架
- HTML5遊戲開發(四):飛機大戰之顯示場景和元素HTML遊戲開發
- 前端開發入門到實戰:HTML5新增和廢棄的標籤前端HTML
- 遊戲戰鬥的設計分析遊戲
- 解構遊戲戰鬥:戰鬥元素分解與設計原則遊戲
- 遊戲戰鬥力數值研究(一)遊戲
- 鬥羅世界NFT遊戲系統技術開發丨鬥羅世界鏈遊開發模式詳情遊戲模式
- 實戰Flash遊戲開發遊戲開發
- 開發者進階必備的9個Tips & Tricks!
- HTML5遊戲開發(五):飛機大戰之讓所有元素動起來HTML遊戲開發
- 格鬥遊戲修羅場:鬼人和他的遊戲開發哲學遊戲開發
- 【譯】闖入遊戲開發 #9:理論&進一步閱讀遊戲開發
- Linux開發:快速開發遊戲的9個關鍵!Linux開發遊戲
- 遊戲數值乾貨:RPG戰鬥數值開源示範遊戲
- 開發者談9個問題挑戰你的遊戲新創意遊戲
- HTML5遊戲開發過程中的二三事HTML遊戲開發
- RPG遊戲“關卡”&“戰鬥”設計祕籍遊戲
- LollipopGo框架-鬥獸棋遊戲開發基本核心模組Go框架遊戲開發
- 使用 .NET 進行遊戲開發遊戲開發
- 戰鬥,射擊!探尋射擊遊戲發展的這些年遊戲
- SLG大戰中的騰訊遊戲:武器很多,糾結不少遊戲
- 【Unity3D開發小遊戲】《戰棋小遊戲》Unity開發教程Unity3D遊戲
- 微信小遊戲開發(9)- 分包載入遊戲開發
- HTML5遊戲開發(二):使用TypeScript編寫程式碼HTML遊戲開發TypeScript
- 無法超越的怪獵系列,關於共鬥遊戲的戰鬥思考遊戲
- 開箱、微交易、戰鬥通行證!遊戲業界趨勢大盤點遊戲
- 文字格鬥遊戲遊戲
- HTML5進階FileReader的使用HTML
- 如何做好回合制遊戲的戰鬥體驗? 戰鬥數值公式設計詳解遊戲公式
- HTML5遊戲開發(三):使用webpack構建TypeScript應用HTML遊戲開發WebTypeScript
- Android遊戲開發示例——彈幕+戰棋Android遊戲開發
- python開發植物大戰殭屍遊戲Python遊戲
- python遊戲開發實戰:網路遊戲Demo(客戶端)Python遊戲開發客戶端
- CoreText進階(七) 新增自定義View和對其View
- 使用Xamarin開發移動應用示例——數獨遊戲(七)新增新遊戲遊戲
- 《研究與戰鬥》四人開發團隊,如何顛覆回合制策略遊戲的規則?遊戲
- 《英雄聯盟》開發商 Riot Games 證實正在開發一款格鬥遊戲GAM遊戲
- 《鬼鬥》Steam: “純粹”的格鬥遊戲遊戲