Add ParameterContainer

Add Parameter Container. make environment parameter adjustment easier.
This commit is contained in:
Koha9 2022-11-08 00:58:47 +09:00
parent b53612d3c6
commit 6e32da8b64
6 changed files with 117 additions and 87766 deletions

View File

@ -1 +1 @@
{"count":1,"self":8.160965599999999,"total":8.231556,"children":{"InitializeActuators":{"count":2,"self":0.0015023999999999999,"total":0.0015023999999999999,"children":null},"InitializeSensors":{"count":2,"self":0.0030142999999999997,"total":0.0030142999999999997,"children":null},"AgentSendState":{"count":176,"self":0.0009995,"total":0.020033199999999998,"children":{"CollectObservations":{"count":88,"self":0.0165288,"total":0.0165288,"children":null},"WriteActionMask":{"count":88,"self":0.00049909999999999993,"total":0.00049909999999999993,"children":null},"RequestDecision":{"count":88,"self":0.0020058,"total":0.0020058,"children":null}}},"DecideAction":{"count":176,"self":0.0020007,"total":0.0020007,"children":null},"AgentAct":{"count":176,"self":0.043032299999999996,"total":0.043032299999999996,"children":null}},"gauges":{},"metadata":{"timer_format_version":"0.1.0","start_time_seconds":"1667331712","unity_version":"2020.3.19f1","command_line_arguments":"C:\\Program Files\\Unity\\Hub\\Editor\\2020.3.19f1\\Editor\\Unity.exe -projectpath C:\\Users\\UCUNI\\OneDrive\\Unity\\ML-Agents\\Aimbot-ParallelEnv -useHub -hubIPC -cloudEnvironment production -licensingIpc LicenseClient-UCUNI -hubSessionId 9205a1d0-5903-11ed-a18e-43477c3fd94f -accessToken 3O56wEHFLEyooHjWIfIq9yr7Acppo-u7wcbPlNAKIyI00ef","communication_protocol_version":"1.5.0","com.unity.ml-agents_version":"2.0.1","scene_name":"InGame","end_time_seconds":"1667331720"}}
{"count":1,"self":16.103486399999998,"total":16.3423828,"children":{"InitializeActuators":{"count":2,"self":0.0010612,"total":0.0010612,"children":null},"InitializeSensors":{"count":2,"self":0.0009988,"total":0.0009988,"children":null},"AgentSendState":{"count":587,"self":0.0040049,"total":0.085422,"children":{"CollectObservations":{"count":587,"self":0.076905199999999993,"total":0.076905199999999993,"children":null},"WriteActionMask":{"count":587,"self":0.0020049,"total":0.0020049,"children":null},"RequestDecision":{"count":587,"self":0.0025069999999999997,"total":0.0025069999999999997,"children":null}}},"DecideAction":{"count":587,"self":0.0025057,"total":0.0025057,"children":null},"AgentAct":{"count":587,"self":0.1474095,"total":0.1474095,"children":null}},"gauges":{},"metadata":{"timer_format_version":"0.1.0","start_time_seconds":"1667836409","unity_version":"2020.3.19f1","command_line_arguments":"C:\\Program Files\\Unity\\Hub\\Editor\\2020.3.19f1\\Editor\\Unity.exe -projectpath C:\\Users\\UCUNI\\OneDrive\\Unity\\ML-Agents\\Aimbot-ParallelEnv -useHub -hubIPC -cloudEnvironment production -licensingIpc LicenseClient-ltWC4XfMOryOcf6Rv5M_v -hubSessionId 51c1abf0-5eb2-11ed-8466-df699ac2cf5e -accessToken WUTYJ4m1taxrd8ECwP_t1NT5DeGPnRQj_eaEtoYw7Ps00ef","communication_protocol_version":"1.5.0","com.unity.ml-agents_version":"2.0.1","scene_name":"InGame","end_time_seconds":"1667836425"}}

File diff suppressed because it is too large Load Diff

View File

@ -15,6 +15,7 @@
public class AgentWithGun : Agent
{
public GameObject ParameterContainerObj;
public GameObject EnviromentObj;
public GameObject EnemyContainerObj;
public GameObject thisAgentObj;
@ -30,34 +31,6 @@ public class AgentWithGun : Agent
public GameObject edgeAgent_Enemy;
[Header("Rewards")]
[Tooltip("Nothing happened reward")]
public float nonRewardDefault = -0.05f;
[Tooltip("Agent Do shoot action reward")]
public float shootRewardDefault = -0.1f;
[Tooltip("Agent Do shoot action but gun is not read")]
public float shootWithoutReadyRewardDefault = -0.15f;
[Tooltip("Hit Enemy reward")]
public float hitRewardDefault = 2.0f;
[Tooltip("Episode Win reward")]
public float winRewardDefault = 10.0f;
[Tooltip("Episode Lose reward")]
public float loseRewardDefault = -0.05f;
[Tooltip("Enemy down reward")]
public float killRewardDefault = 5.0f;
[Tooltip("Kill bonus reward stack to nothing happend reward")]
public float killBonusRewardDefault = 1.0f;
[Header("Env")]
public bool lockMouse = false;
public float Damage = 50; // damage to enemy
public float fireRate = 0.5f;
public int enemyNum = 3;
public int timeLimit = 30;
public bool lockCameraX = false;
public bool lockCameraY = true;
//public Vector3 startPosition = new Vector3(9, 1, 18);
[Header("GetAxis() Simulate")]
public float MoveSpeed = 2.0f;
public float vX = 0f;
@ -67,6 +40,16 @@ public class AgentWithGun : Agent
public float mouseYSensitivity = 200;
public float yRotation = 0.1f;//定义一个浮点类型的量记录围绕X轴旋转的角度
[Header("Env")]
private bool lockMouse;
private float Damage;
private float fireRate;
private int enemyNum;
private int timeLimit;
private bool lockCameraX;
private bool lockCameraY;
//public Vector3 startPosition = new Vector3(9, 1, 18);
private float startTime = 0;
private int shoot = 0;
private float lastShootTime = 0.0f;
@ -78,6 +61,7 @@ public class AgentWithGun : Agent
private bool gunReadyToggle = true;
private RaySensors rayScript;
private EnviromentUIControl EnvUICon;
private parameterContainer paramContainer;
[System.NonSerialized] public float minEnemyAreaX;
[System.NonSerialized] public float maxEnemyAreaX;
@ -102,17 +86,26 @@ public class AgentWithGun : Agent
private void Start()
{
paramContainer = ParameterContainerObj.GetComponent<parameterContainer>();
EnvUICon = EnvironmentUIControlObj.GetComponent<EnviromentUIControl>();
rayScript = GetComponent<RaySensors>();
// give default Reward to Reward value will be used.
nonReward = nonRewardDefault;
shootReward = shootRewardDefault;
shootWithoutReadyReward = shootWithoutReadyRewardDefault;
hitReward = hitRewardDefault;
winReward = winRewardDefault;
loseReward = loseRewardDefault;
killReward = killRewardDefault;
killBonusReward = killBonusRewardDefault;
nonReward = paramContainer.nonRewardDefault;
shootReward = paramContainer.shootRewardDefault;
shootWithoutReadyReward = paramContainer.shootWithoutReadyRewardDefault;
hitReward = paramContainer.hitRewardDefault;
winReward = paramContainer.winRewardDefault;
loseReward = paramContainer.loseRewardDefault;
killReward = paramContainer.killRewardDefault;
killBonusReward = paramContainer.killBonusRewardDefault;
// Environment parameters
lockMouse = paramContainer.lockMouse;
Damage = paramContainer.Damage;
fireRate = paramContainer.fireRate;
enemyNum = paramContainer.enemyNum;
timeLimit = paramContainer.timeLimit;
lockCameraX = paramContainer.lockCameraX;
lockCameraY = paramContainer.lockCameraY;
//initialize remainTime
remainTime = (int)(timeLimit - Time.time + startTime);
@ -330,9 +323,9 @@ float ballistic()
// destroyEnemy消除EnemyContainer内所有Enemy
public void destroyAllEnemys()
{
foreach(Transform childObj in EnemyContainerObj.transform)
foreach (Transform childObj in EnemyContainerObj.transform)
{
if(childObj.tag == "Enemy")
if (childObj.tag == "Enemy")
{
Destroy(childObj.gameObject);
}
@ -439,14 +432,6 @@ public override void OnEpisodeBegin()
nowEnemyNum = getEnemyNum(); // Reset Enemy number
// give default Reward to Reward value will be used.
EnvUICon.initChart();
nonReward = nonRewardDefault;
shootReward = shootRewardDefault;
shootWithoutReadyReward = shootWithoutReadyRewardDefault;
hitReward = hitRewardDefault;
winReward = winRewardDefault;
loseReward = loseRewardDefault;
killReward = killRewardDefault;
killBonusReward = killBonusRewardDefault;
}
// ML-AGENTS处理-------------------------------------------------------------------------------------------ML-AGENTS

View File

@ -1,27 +0,0 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class gameFlowController : MonoBehaviour
{
public GameObject Agent;
AgentWithGun agentWithGun;
// Start is called before the first frame update
void Start()
{
agentWithGun = Agent.GetComponent<AgentWithGun>();
}
// Update is called once per frame
void Update()
{
if (Input.GetKey(KeyCode.Escape))
{
Application.Quit();
}
if (Input.GetKey(KeyCode.L))
{
agentWithGun.lockMouse = !agentWithGun.lockMouse;
}
}
}

View File

@ -0,0 +1,33 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class parameterContainer : MonoBehaviour
{
[Header("Env")]
public bool lockMouse = false;
public float Damage = 50; // damage to enemy
public float fireRate = 0.5f;
public int enemyNum = 3;
public int timeLimit = 30;
public bool lockCameraX = false;
public bool lockCameraY = true;
[Header("Rewards")]
[Tooltip("Nothing happened reward")]
public float nonRewardDefault = -0.05f;
[Tooltip("Agent Do shoot action reward")]
public float shootRewardDefault = -0.1f;
[Tooltip("Agent Do shoot action but gun is not read")]
public float shootWithoutReadyRewardDefault = -0.15f;
[Tooltip("Hit Enemy reward")]
public float hitRewardDefault = 30.0f;
[Tooltip("Episode Win reward")]
public float winRewardDefault = 50.0f;
[Tooltip("Episode Lose reward")]
public float loseRewardDefault = -0.05f;
[Tooltip("Enemy down reward")]
public float killRewardDefault = 40.0f;
[Tooltip("Kill bonus reward stack to nothing happend reward")]
public float killBonusRewardDefault = 0.0f;
}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 9a8fb4d12d4b8fc4784f3e142e7fdcf8
guid: ec48577b239fca544a51411c6c49b68a
MonoImporter:
externalObjects: {}
serializedVersion: 2