戰時年齡
戰爭年齡AI,這是我花費大量時間的項目,變成了大量的意大利麵條代碼。這是我的第一個大項目,它向我展示了我還需要學習多少,因為我在所有領域都缺乏(而且我很可能做到)。在這個項目的背景下,我做了以下操作:
如何不做項目
- 獲取Warilla時代遊戲遊戲,製作一個模塊,隨著遊戲的進行,通過OpenCV庫提取數據並將其饋入整潔的算法。我沒有意識到的是,在沒有加快速度的遊戲中評估30至50個代理商,平均每場比賽的平均遊戲時間需要很多時間才能進行訓練,並且沒有產生顯著的結果
- 獲取作弊引擎,意識到它不適用於該特定的遊戲,因為誰知道什麼原因,然後找到閃存遊戲的反編譯器,然後將腳本注入催生文本文件以繞過整個OpenCV的內容以獲取值。由於我設法使用作弊引擎加快了X2的速度,因此結果稍好一些,但仍然缺乏很多。
- 保持團結。由於我已經找到了遊戲代碼的方法,因此我對所有IT機制進行了逆轉,並進行了一個非常忠實的模擬,該模擬與原始遊戲具有完全相同的參數。
- 以10倍的速度模擬50個環境,並通過我的python腳本通過TCP進行通信,該腳本現在為所有這些環境及其各自的行為提供了一個整潔的經理。在這裡,我實際上開始看到一些重要的結果和策略,並在正常模式下贏得了勝利。但我想要萌
- 完全放棄python腳本,訓練和代理PPO的統一ML代理,並在切換參數之後獲得它,並且其功能使其具有相當不錯的策略,可以在硬模式下贏得遊戲
- 在原始遊戲中對其進行測試,並記錄勝利,並意識到您在一個本來可以在3週內完成的項目中損失了2個月
- 仍然可以使用數學引擎手工製作一個可視化庫,因為我在該主題上找到了一些很酷的YouTube視頻,這些視頻沒有發布他們的存儲庫
您可以在這裡看到這種痛苦的概述 - 我將100%回到此頻道,以使其至少1M,但現在我還有其他目標可以追求。
在Python上運行3.7.9
輸入:
- 訓練中的部隊人數(1輸入)
- 敵人的HP-總健康的百分比(1輸入)
- 我的HP-總健康的百分比(1輸入)
- 金錢 - 通過基本單位成本歸一化(貨幣/cost_of_basic_unit)(1個輸入)
- XP-可以升級年齡是否升級(1輸入)
- 可以激活能力 - 0到1冷卻(1輸入)
- 我的部隊在地面1、2、3、4(4個輸入)上
- 地面上的敵軍1、2、3、4(4個輸入)
- 可用的大砲插槽數(1個輸入)
- 玩家年齡 - 一個熱編碼(5個輸入)
- 敵人時代 - 一個熱編碼(5個輸入)
- 帶有砲塔和砲塔年齡的陣列(最大4)(1個輸入,因為它們逐漸強大,而年齡折舊的輸入1個輸入)(每個插槽2)(8個輸入)(8個輸入)
- 當前的戰斗在哪裡發生(0-1您的基地到敵方基地)(1輸入)
輸出:
- 創建部隊第1、2、3(3個行動)
- 創建第4層的空間年齡(1行動)
- 購買大砲插槽(1個動作)
- 購買Cannon Tier 1,2,3,首先可用的插槽(3個動作)
- 在某個插槽上出售大砲(4個動作)
- 等待(1個動作)
- 使用能力
依賴性:
pip install numpy paddlepaddle paddleocr opencv-python scipy neat-python
資產僅適用於該特定分辨率,如果您想修改遊戲回复,則必須相應地更改資產規模(例如:製作遊戲和資產X%較小)
您可以從這裡下載我用於遊戲的檔案