战时年龄
战争年龄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%较小)
您可以从这里下载我用于游戏的档案