Readme添加语言badge
Readme排版修正
This commit is contained in:
parent
96914d39b0
commit
2b22cc92a8
12
README-JP.md
12
README-JP.md
@ -1,24 +1,23 @@
|
|||||||
# Aimbot-ParallelEnv
|
# Aimbot-ParallelEnv
|
||||||
これはUnity ML-Agentsに基づいたFPSゲームのマルチエージェントトレーニング環境で、特定の目標と対応する難易度を生成し、エージェントのアクションに基づいて報酬をフィードバックして強化学習エージェントをトレーニングするための環境です。
|
これはUnity ML-Agentsに基づいたFPSゲームのマルチエージェントトレーニング環境で、特定の目標と対応する難易度を生成し、エージェントのアクションに基づいて報酬をフィードバックして強化学習エージェントをトレーニングするための環境です。
|
||||||
|
|
||||||
---
|
[![Chinese badge](https://img.shields.io/badge/简体中文-Simplified_Chinese-blue)](./README.md)
|
||||||
|
[![Japanese badge](https://img.shields.io/badge/日本語-Japanese-blue)](./README-JP.md)
|
||||||
|
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
プロジェクトは[ML-Agents 2.0.1](https://github.com/Unity-Technologies/ml-agents/tree/develop)を基にして、Unity 2021.3.14f1を使用して開発されています。
|
プロジェクトは[ML-Agents 2.0.1](https://github.com/Unity-Technologies/ml-agents/tree/develop)を基にして、Unity 2021.3.14f1を使用して開発されています。
|
||||||
Python側では、[mlagents-envs 0.30.0](https://pypi.org/project/mlagents-envs/)を使用してゲーム環境と通信を行います。
|
Python側では、[mlagents-envs 0.30.0](https://pypi.org/project/mlagents-envs/)を使用してゲーム環境と通信を行います。
|
||||||
|
|
||||||
---
|
|
||||||
## Quick start
|
## Quick start
|
||||||
プロジェクト[Aimbot-PPO](https://koha9.asuscomm.com/yurugit/Koha9/Aimbot-PPO)では、この環境を使用してPPOアルゴリズムのトレーニングが行われています。具体的な使用例は[AimbotEnv.py](https://koha9.asuscomm.com/yurugit/Koha9/Aimbot-PPO/src/branch/OffP-FullMNN-V2/Aimbot-PPO-Python/Pytorch/AimbotEnv.py)で記載されています。
|
プロジェクト[Aimbot-PPO](https://koha9.asuscomm.com/yurugit/Koha9/Aimbot-PPO)では、この環境を使用してPPOアルゴリズムのトレーニングが行われています。具体的な使用例は[AimbotEnv.py](https://koha9.asuscomm.com/yurugit/Koha9/Aimbot-PPO/src/branch/OffP-FullMNN-V2/Aimbot-PPO-Python/Pytorch/AimbotEnv.py)で記載されています。
|
||||||
|
|
||||||
---
|
|
||||||
## ゲーム環境の概要
|
## ゲーム環境の概要
|
||||||
本環境は初代Doomの基本モードを模したFPSゲームで、エージェントには異なる目標が与えられます。エージェントは目標の種類と位置、自身の状態に基づいて、撃つかどうか、撃つ方向、移動方向を決定します。この環境には2つのモードと3種類の目標があります:訓練モードとテストモード、そして`FreeTarget`、`GotoTarget`、`AttackTarget`です。`FreeTarget`では、エージェントは武器を使ってエリア内のすべての敵を倒す必要があります。`GotoTarget`と`AttackTarget`では、エリア内に目標ブロックが生成され、エージェントはそれに応じた異なる行動を取る必要があります。さらに、`GotoTarget`と`AttackTarget`では、生成される目標ブロックの構造に応じて5つの異なる難易度に分けられています。
|
本環境は初代Doomの基本モードを模したFPSゲームで、エージェントには異なる目標が与えられます。エージェントは目標の種類と位置、自身の状態に基づいて、撃つかどうか、撃つ方向、移動方向を決定します。この環境には2つのモードと3種類の目標があります:訓練モードとテストモード、そして`FreeTarget`、`GotoTarget`、`AttackTarget`です。`FreeTarget`では、エージェントは武器を使ってエリア内のすべての敵を倒す必要があります。`GotoTarget`と`AttackTarget`では、エリア内に目標ブロックが生成され、エージェントはそれに応じた異なる行動を取る必要があります。さらに、`GotoTarget`と`AttackTarget`では、生成される目標ブロックの構造に応じて5つの異なる難易度に分けられています。
|
||||||
|
|
||||||
---
|
|
||||||
## ゲームの概要
|
## ゲームの概要
|
||||||
この環境は初代Doomの基本モードを模したFPSゲームで、エージェントには異なる目標が与えられます。エージェントは目標の種類と位置、自身の状態に基づいて、撃つかどうか、撃つ方向、移動方向を決定します。この環境には2つのモードと3種類の目標があります:訓練モードとテストモード、そして`FreeTarget`、`GotoTarget`、`AttackTarget`です。`FreeTarget`では、エージェントは武器を使ってエリア内のすべての敵を倒す必要があります。`GotoTarget`と`AttackTarget`では、エリア内に目標ブロックが生成され、エージェントはそれに応じた異なる行動を取る必要があります。さらに、`GotoTarget`と`AttackTarget`では、生成される目標ブロックの構造によって、5つの異なる難易度に分けられています。
|
この環境は初代Doomの基本モードを模したFPSゲームで、エージェントには異なる目標が与えられます。エージェントは目標の種類と位置、自身の状態に基づいて、撃つかどうか、撃つ方向、移動方向を決定します。この環境には2つのモードと3種類の目標があります:訓練モードとテストモード、そして`FreeTarget`、`GotoTarget`、`AttackTarget`です。`FreeTarget`では、エージェントは武器を使ってエリア内のすべての敵を倒す必要があります。`GotoTarget`と`AttackTarget`では、エリア内に目標ブロックが生成され、エージェントはそれに応じた異なる行動を取る必要があります。さらに、`GotoTarget`と`AttackTarget`では、生成される目標ブロックの構造によって、5つの異なる難易度に分けられています。
|
||||||
|
|
||||||
---
|
|
||||||
## モード
|
## モード
|
||||||
訓練モードとテストモードは、Python側と通信が必要で、この環境から観測されたObservationに基づいてActionを生成し、環境にフィードバックします。環境を起動する際、ゲーム内でユーザーが操作してモードを選択する必要があります。ML-Agentsにはタイムリミットが存在するため、45秒以内にモードを選択する必要があります。45秒を超えると、自動的にゲーム環境から退出します。
|
訓練モードとテストモードは、Python側と通信が必要で、この環境から観測されたObservationに基づいてActionを生成し、環境にフィードバックします。環境を起動する際、ゲーム内でユーザーが操作してモードを選択する必要があります。ML-Agentsにはタイムリミットが存在するため、45秒以内にモードを選択する必要があります。45秒を超えると、自動的にゲーム環境から退出します。
|
||||||
|
|
||||||
@ -29,7 +28,6 @@ Python側では、[mlagents-envs 0.30.0](https://pypi.org/project/mlagents-envs/
|
|||||||
### テストモード
|
### テストモード
|
||||||
テストモードでは、ユーザーが手動でエージェントに命令を指定する必要があります。画面右上のメニューをクリックすることで、目標ブロックや敵を生成したり、目標モードを切り替えたりすることができます。このモードでは、訓練モードにはない新しいターゲット`StayTarget`が追加されています。ユーザーが特定の目標を指定しない場合やゲームをクリアした場合、`StayTarget`がエージェントに割り当てられます。右上隅のメニューをクリックすると、マウスモードを切り替えて敵(Enemy)を生成するモードや、特定の難易度のターゲットブロックを生成するモードに変更できます。マウスがブロック生成モードで、マウスをゲームエリアに移動すると、生成するオブジェクトのプレビューが表示され、マウスの右クリックで指定した位置に対応する敵やブロックを生成できます。ターゲットブロックを生成すると、対応するターゲットが自動的にエージェントに割り当てられます。`FreeTarget`を割り当てる必要がある場合は、`FreeMode`ボタンをクリックします。`ClearGame`をクリックすると、すべての敵とブロックがクリアされ、エージェントのターゲットが`StayTarget`に設定されます。`StayMode`をクリックすると、エージェントのターゲットを強制的に`StayTarget`に設定できます。
|
テストモードでは、ユーザーが手動でエージェントに命令を指定する必要があります。画面右上のメニューをクリックすることで、目標ブロックや敵を生成したり、目標モードを切り替えたりすることができます。このモードでは、訓練モードにはない新しいターゲット`StayTarget`が追加されています。ユーザーが特定の目標を指定しない場合やゲームをクリアした場合、`StayTarget`がエージェントに割り当てられます。右上隅のメニューをクリックすると、マウスモードを切り替えて敵(Enemy)を生成するモードや、特定の難易度のターゲットブロックを生成するモードに変更できます。マウスがブロック生成モードで、マウスをゲームエリアに移動すると、生成するオブジェクトのプレビューが表示され、マウスの右クリックで指定した位置に対応する敵やブロックを生成できます。ターゲットブロックを生成すると、対応するターゲットが自動的にエージェントに割り当てられます。`FreeTarget`を割り当てる必要がある場合は、`FreeMode`ボタンをクリックします。`ClearGame`をクリックすると、すべての敵とブロックがクリアされ、エージェントのターゲットが`StayTarget`に設定されます。`StayMode`をクリックすると、エージェントのターゲットを強制的に`StayTarget`に設定できます。
|
||||||
|
|
||||||
---
|
|
||||||
## Target
|
## Target
|
||||||
|
|
||||||
### FreeTarget
|
### FreeTarget
|
||||||
@ -75,7 +73,6 @@ Python側では、[mlagents-envs 0.30.0](https://pypi.org/project/mlagents-envs/
|
|||||||
|
|
||||||
*注:nは各エージェントのRaycast数、MaxDistanceは各エージェントのレイキャストの最大探知距離を指します。*
|
*注:nは各エージェントのRaycast数、MaxDistanceは各エージェントのレイキャストの最大探知距離を指します。*
|
||||||
|
|
||||||
---
|
|
||||||
## Action Space
|
## Action Space
|
||||||
FPSゲームにおけるプレイヤーのキーボードとマウスの同時操作をシミュレートするため、本環境のActionSpaceは`Discrete Action`(離散動作)と`Continuous Action`(連続動作)の2つの部分に分かれています。`Discrete Action`はプレイヤーのキーボードによる離散的な操作を模擬し、`Continuous Action`はマウスによる連続的な操作を模擬します。両方のActionSpaceに対応する操作は[`MLAgentsCustomController.cs`](https://koha9.asuscomm.com/yurugit/Koha9/Aimbot-ParallelEnv/src/branch/main/Assets/Script/GameScript/MLAgentsCustomController.cs)内のoverrideされた`Heuristic`関数で参照できます。具体的な実装は[`AgentController.cs`](https://koha9.asuscomm.com/yurugit/Koha9/Aimbot-ParallelEnv/src/branch/main/Assets/Script/GameScript/Character/AgentController.cs)内の`MoveAgent`関数と`CameraControl`関数にあります。
|
FPSゲームにおけるプレイヤーのキーボードとマウスの同時操作をシミュレートするため、本環境のActionSpaceは`Discrete Action`(離散動作)と`Continuous Action`(連続動作)の2つの部分に分かれています。`Discrete Action`はプレイヤーのキーボードによる離散的な操作を模擬し、`Continuous Action`はマウスによる連続的な操作を模擬します。両方のActionSpaceに対応する操作は[`MLAgentsCustomController.cs`](https://koha9.asuscomm.com/yurugit/Koha9/Aimbot-ParallelEnv/src/branch/main/Assets/Script/GameScript/MLAgentsCustomController.cs)内のoverrideされた`Heuristic`関数で参照できます。具体的な実装は[`AgentController.cs`](https://koha9.asuscomm.com/yurugit/Koha9/Aimbot-ParallelEnv/src/branch/main/Assets/Script/GameScript/Character/AgentController.cs)内の`MoveAgent`関数と`CameraControl`関数にあります。
|
||||||
|
|
||||||
@ -93,7 +90,6 @@ FPSゲームにおけるプレイヤーのキーボードとマウスの同時
|
|||||||
|------|-------------------|----------------|---------------------------------------------------------------------------------|
|
|------|-------------------|----------------|---------------------------------------------------------------------------------|
|
||||||
| 0 | 水平回転 | -Inf ~ Inf | エージェントの水平方向(左右)の視角回転を制御。正の値で右に、負の値で左に回転する。 |
|
| 0 | 水平回転 | -Inf ~ Inf | エージェントの水平方向(左右)の視角回転を制御。正の値で右に、負の値で左に回転する。 |
|
||||||
|
|
||||||
---
|
|
||||||
## Reward
|
## Reward
|
||||||
与えられた各ターゲットにおいて、エージェントが異なるタスクを達成することに注力するため、リワードの設計もそれぞれ異なります。訓練モードでは、リワードは共通リワード「Common Reward」と各ターゲット専用のリワードで構成されています。
|
与えられた各ターゲットにおいて、エージェントが異なるタスクを達成することに注力するため、リワードの設計もそれぞれ異なります。訓練モードでは、リワードは共通リワード「Common Reward」と各ターゲット専用のリワードで構成されています。
|
||||||
|
|
||||||
|
13
README.md
13
README.md
@ -1,20 +1,19 @@
|
|||||||
# Aimbot-ParallelEnv
|
# Aimbot-ParallelEnv
|
||||||
这是一个基于Unity ML-Agents的基于FPS游戏的多智能体训练环境,用于生成指定目标和对应难度,并且根据Agent的Action反馈Reward来训练强化学习Agent的环境。
|
这是一个基于Unity ML-Agents的基于FPS游戏的多智能体训练环境,用于生成指定目标和对应难度,并且根据Agent的Action反馈Reward来训练强化学习Agent的环境。
|
||||||
|
|
||||||
---
|
[![Chinese badge](https://img.shields.io/badge/简体中文-Simplified_Chinese-blue)](./README.md)
|
||||||
|
[![Japanese badge](https://img.shields.io/badge/日本語-Japanese-blue)](./README-JP.md)
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
项目基于[ML-Agents 2.0.1](https://github.com/Unity-Technologies/ml-agents/tree/develop),使用Unity 2021.3.14f1开发。
|
项目基于[ML-Agents 2.0.1](https://github.com/Unity-Technologies/ml-agents/tree/develop),使用Unity 2021.3.14f1开发。
|
||||||
Python侧则使用[mlagents-envs 0.30.0](https://pypi.org/project/mlagents-envs/)与环境进行通信。
|
Python侧则使用[mlagents-envs 0.30.0](https://pypi.org/project/mlagents-envs/)与环境进行通信。
|
||||||
|
|
||||||
---
|
|
||||||
## 快速开始
|
## 快速开始
|
||||||
在项目[Aimbot-PPO](https://koha9.asuscomm.com/yurugit/Koha9/Aimbot-PPO)中,使用了本环境进行了PPO算法的训练,其中在[AimbotEnv.py](https://koha9.asuscomm.com/yurugit/Koha9/Aimbot-PPO/src/branch/OffP-FullMNN-V2/Aimbot-PPO-Python/Pytorch/AimbotEnv.py)中给出了本环境的使用方法。
|
在项目[Aimbot-PPO](https://koha9.asuscomm.com/yurugit/Koha9/Aimbot-PPO)中,使用了本环境进行了PPO算法的训练,其中在[AimbotEnv.py](https://koha9.asuscomm.com/yurugit/Koha9/Aimbot-PPO/src/branch/OffP-FullMNN-V2/Aimbot-PPO-Python/Pytorch/AimbotEnv.py)中给出了本环境的使用方法。
|
||||||
|
|
||||||
---
|
|
||||||
## 游戏简介
|
## 游戏简介
|
||||||
这是一个模仿初代Doom的基本模式的FPS游戏环境,Agent将会被给到不同的目标,Agent需要根据目标的类型和位置,以及自身的状态,来决定是否开枪射击,射击的方向,以及移动方向。环境内包含两种模式和3种目标,分别是:训练模式和测试模式,以及`FreeTarget`,`GotoTarget`和`AttackTarget`。`FreeTarget`需要Agent使用武器击倒区域内所有的敌人,`GotoTarget`和`AttackTarget`会在区域内生成一个目标区块,Agent需要对目标区块进行不同的对应来完成任务。同时`GotoTarget`和`AttackTarget`中,根据生成目标区块的构造不同,分为了5种不同的难度。
|
这是一个模仿初代Doom的基本模式的FPS游戏环境,Agent将会被给到不同的目标,Agent需要根据目标的类型和位置,以及自身的状态,来决定是否开枪射击,射击的方向,以及移动方向。环境内包含两种模式和3种目标,分别是:训练模式和测试模式,以及`FreeTarget`,`GotoTarget`和`AttackTarget`。`FreeTarget`需要Agent使用武器击倒区域内所有的敌人,`GotoTarget`和`AttackTarget`会在区域内生成一个目标区块,Agent需要对目标区块进行不同的对应来完成任务。同时`GotoTarget`和`AttackTarget`中,根据生成目标区块的构造不同,分为了5种不同的难度。
|
||||||
|
|
||||||
---
|
|
||||||
## 模式介绍
|
## 模式介绍
|
||||||
训练模式和测试模式都需要与Python侧进行通信,根据从本环境中观测到的Observation生成Action并传递回本环境。在环境启动时需要使用者在游戏内进行操作来选择模式,由于ML-Agents存在Time limit,所以需要在45s内进行模式选择,超过45s后将自动退出游戏环境。
|
训练模式和测试模式都需要与Python侧进行通信,根据从本环境中观测到的Observation生成Action并传递回本环境。在环境启动时需要使用者在游戏内进行操作来选择模式,由于ML-Agents存在Time limit,所以需要在45s内进行模式选择,超过45s后将自动退出游戏环境。
|
||||||
|
|
||||||
@ -25,7 +24,6 @@ Python侧则使用[mlagents-envs 0.30.0](https://pypi.org/project/mlagents-envs/
|
|||||||
### 测试模式
|
### 测试模式
|
||||||
测试模式中,用户需要手动来对Agent下达命令,用户可以通过点击右上角的菜单来执行生成目标区块或敌人,切换目标模式等。在该模式中,比训练模式多出一个新的Target为StayTarget,当用户未指定目标或者清空游戏时将会以将该Target指派给Agent。通过点击右上角的菜单,可以将鼠标的模式切换为生成Enemy,或者生成对应难度Target区块的模式,此时鼠标移动到游戏区域内后将会出现生成物件的预览,内点击鼠标右键则可以在对应的位置生成对应的Enemy或者区块。当生成Target区块时会自动指派对应target给agent,需要指派`FreeTarget`时则需要点击`FreeMode`按钮。通过点击`ClearGame`可以清空所有enemy和区块并将Agent的目标指派为`StayTarget`,通过点击`StayMode`则可以强制将Agent目标指派为`StayTarget`。
|
测试模式中,用户需要手动来对Agent下达命令,用户可以通过点击右上角的菜单来执行生成目标区块或敌人,切换目标模式等。在该模式中,比训练模式多出一个新的Target为StayTarget,当用户未指定目标或者清空游戏时将会以将该Target指派给Agent。通过点击右上角的菜单,可以将鼠标的模式切换为生成Enemy,或者生成对应难度Target区块的模式,此时鼠标移动到游戏区域内后将会出现生成物件的预览,内点击鼠标右键则可以在对应的位置生成对应的Enemy或者区块。当生成Target区块时会自动指派对应target给agent,需要指派`FreeTarget`时则需要点击`FreeMode`按钮。通过点击`ClearGame`可以清空所有enemy和区块并将Agent的目标指派为`StayTarget`,通过点击`StayMode`则可以强制将Agent目标指派为`StayTarget`。
|
||||||
|
|
||||||
---
|
|
||||||
## 目标介绍
|
## 目标介绍
|
||||||
|
|
||||||
### FreeTarget
|
### FreeTarget
|
||||||
@ -69,9 +67,9 @@ Python侧则使用[mlagents-envs 0.30.0](https://pypi.org/project/mlagents-envs/
|
|||||||
|
|
||||||
*注:n为每个Agent的RayCast数量,MaxDistance为每个Agent的RayCast最大探测距离*
|
*注:n为每个Agent的RayCast数量,MaxDistance为每个Agent的RayCast最大探测距离*
|
||||||
|
|
||||||
---
|
|
||||||
## Action Space
|
## Action Space
|
||||||
为了模拟FPS游戏中玩家对于键盘和鼠标的同时操作,本环境中的Action Space分为两个部分,分别是`Discrete Action`和`Continuous Action`。其中`Discrete Action`用于模拟玩家对于键盘的离散操作,`Continuous Action`用于模拟玩家对于鼠标的连续操作。两个Action Space的对应操作可以参考于[`MLAgentsCustomController.cs`](https://koha9.asuscomm.com/yurugit/Koha9/Aimbot-ParallelEnv/src/branch/main/Assets/Script/GameScript/MLAgentsCustomController.cs)中被override的`Heuristic`函数。具体实现则于[`AgentController.cs`](https://koha9.asuscomm.com/yurugit/Koha9/Aimbot-ParallelEnv/src/branch/main/Assets/Script/GameScript/Character/AgentController.cs)中的`MoveAgent`和`CameraControl`函数中。
|
为了模拟FPS游戏中玩家对于键盘和鼠标的同时操作,本环境中的Action Space分为两个部分,分别是`Discrete Action`和`Continuous Action`。其中`Discrete Action`用于模拟玩家对于键盘的离散操作,`Continuous Action`用于模拟玩家对于鼠标的连续操作。两个Action Space的对应操作可以参考于[`MLAgentsCustomController.cs`](https://koha9.asuscomm.com/yurugit/Koha9/Aimbot-ParallelEnv/src/branch/main/Assets/Script/GameScript/MLAgentsCustomController.cs)中被override的`Heuristic`函数。具体实现则于[`AgentController.cs`](https://koha9.asuscomm.com/yurugit/Koha9/Aimbot-ParallelEnv/src/branch/main/Assets/Script/GameScript/Character/AgentController.cs)中的`MoveAgent`和`CameraControl`函数中。
|
||||||
|
|
||||||
### Discrete Action
|
### Discrete Action
|
||||||
在`Discrete Action`中,Agent可以对各方向的移动和攻击进行离散操作,其中移动操作包括垂直移动操作和水平移动操作,攻击操作可以对武器进行操。
|
在`Discrete Action`中,Agent可以对各方向的移动和攻击进行离散操作,其中移动操作包括垂直移动操作和水平移动操作,攻击操作可以对武器进行操。
|
||||||
| Num | Action | Action Space | Description |
|
| Num | Action | Action Space | Description |
|
||||||
@ -79,13 +77,13 @@ Python侧则使用[mlagents-envs 0.30.0](https://pypi.org/project/mlagents-envs/
|
|||||||
| 0 | Vertical Move | 0,1,-1 | 用于控制Agent在其正面方向的垂直轴上移动。0=停止,1=向前移动,-1=向后移动 |
|
| 0 | Vertical Move | 0,1,-1 | 用于控制Agent在其正面方向的垂直轴上移动。0=停止,1=向前移动,-1=向后移动 |
|
||||||
| 1 | Horizontal Move | 0,1,-1 | 用于控制Agent在其正面方向的水平轴上移动。0=停止,1=向右移动,-1=向左移动 |
|
| 1 | Horizontal Move | 0,1,-1 | 用于控制Agent在其正面方向的水平轴上移动。0=停止,1=向右移动,-1=向左移动 |
|
||||||
| 2 | Attack | 0,1 | 用于控制Agent的攻击操作。0=不攻击,1=执行攻击 |
|
| 2 | Attack | 0,1 | 用于控制Agent的攻击操作。0=不攻击,1=执行攻击 |
|
||||||
|
|
||||||
### Continuous Action
|
### Continuous Action
|
||||||
在`Continuous Action`中,可以对Agent的视角进行操作。由于本环境是模拟早期Doom的FPS环境,所以Agent的视角被设定为仅能在水平方向上进行旋转。
|
在`Continuous Action`中,可以对Agent的视角进行操作。由于本环境是模拟早期Doom的FPS环境,所以Agent的视角被设定为仅能在水平方向上进行旋转。
|
||||||
| Num | Action | Action Space | Description |
|
| Num | Action | Action Space | Description |
|
||||||
|-----|-------------------|--------------|---------------------------------------------------------------------------------|
|
|-----|-------------------|--------------|---------------------------------------------------------------------------------|
|
||||||
| 0 | Vertical Rotation | -Inf~Inf | 控制Agent在水平方向(左右)上的视角旋转。正值使视角向右,负值则使视角向左旋转。 |
|
| 0 | Vertical Rotation | -Inf~Inf | 控制Agent在水平方向(左右)上的视角旋转。正值使视角向右,负值则使视角向左旋转。 |
|
||||||
|
|
||||||
---
|
|
||||||
## Reward
|
## Reward
|
||||||
在各给定的目标中,为了让Agent注重于完成不同的任务,Reward的设计也有所不同。在训练模式中,Reward由共同Reward`Common Reward`和各个目标的专用Reward组成。
|
在各给定的目标中,为了让Agent注重于完成不同的任务,Reward的设计也有所不同。在训练模式中,Reward由共同Reward`Common Reward`和各个目标的专用Reward组成。
|
||||||
### Common Reward
|
### Common Reward
|
||||||
@ -142,6 +140,5 @@ $$
|
|||||||
| SuppressiveReward | 5 | Agent对`FireBase`进行压制攻击时获得奖励 |
|
| SuppressiveReward | 5 | Agent对`FireBase`进行压制攻击时获得奖励 |
|
||||||
| FacingAreaReward | 2 | Agent面朝目标时获得的持续奖励 |
|
| FacingAreaReward | 2 | Agent面朝目标时获得的持续奖励 |
|
||||||
|
|
||||||
---
|
|
||||||
## Side Channel
|
## Side Channel
|
||||||
为了方便对于环境的调试和实现Unity与Python间非实时通信,本环境中使用了ML-Agents提供的Side Channel,用于向Python侧传递一些额外的信息。这里我参考了huggingface的[Custom Side Channels](https://github.com/huggingface/ml-agents-patch/blob/develop/docs/Custom-SideChannels.md)。在Unity端,Side Channel的实现位于[`AimbotSideChannel.cs`](https://koha9.asuscomm.com/yurugit/Koha9/Aimbot-ParallelEnv/src/branch/main/Assets/Script/GameScript/SideChannel/AimbotSideChannel.cs)和[`AimBotSideChannelController.cs`](https://koha9.asuscomm.com/yurugit/Koha9/Aimbot-ParallelEnv/src/branch/main/Assets/Script/GameScript/SideChannel/AimBotSideChannelController.cs)中。每个Log信息将会以`|`来分隔字段,其中第一个字段为Log的类型,随后字段为自定义Log信息。在本环境中,Unity的SideChannel将会发送所有`LogType.Warning`和`LogType.Error`类型的Log到Python侧。其中`LogType.Warning`会传递一回合结束后的的胜败信息和从Unity发送至Python的指令。胜败信息将类似于`Warning|Result|Win`和`Warning|Result|Lose`。而指令则传递了在下一训练结束后保存模型的命令,它的内容为`Warning|Command`。
|
为了方便对于环境的调试和实现Unity与Python间非实时通信,本环境中使用了ML-Agents提供的Side Channel,用于向Python侧传递一些额外的信息。这里我参考了huggingface的[Custom Side Channels](https://github.com/huggingface/ml-agents-patch/blob/develop/docs/Custom-SideChannels.md)。在Unity端,Side Channel的实现位于[`AimbotSideChannel.cs`](https://koha9.asuscomm.com/yurugit/Koha9/Aimbot-ParallelEnv/src/branch/main/Assets/Script/GameScript/SideChannel/AimbotSideChannel.cs)和[`AimBotSideChannelController.cs`](https://koha9.asuscomm.com/yurugit/Koha9/Aimbot-ParallelEnv/src/branch/main/Assets/Script/GameScript/SideChannel/AimBotSideChannelController.cs)中。每个Log信息将会以`|`来分隔字段,其中第一个字段为Log的类型,随后字段为自定义Log信息。在本环境中,Unity的SideChannel将会发送所有`LogType.Warning`和`LogType.Error`类型的Log到Python侧。其中`LogType.Warning`会传递一回合结束后的的胜败信息和从Unity发送至Python的指令。胜败信息将类似于`Warning|Result|Win`和`Warning|Result|Lose`。而指令则传递了在下一训练结束后保存模型的命令,它的内容为`Warning|Command`。
|
Loading…
Reference in New Issue
Block a user