MVP work with ml-agents python library
This commit is contained in:
27
Assets/Prefabs/Bot.prefab
generated
Executable file → Normal file
27
Assets/Prefabs/Bot.prefab
generated
Executable file → Normal file
@ -50,6 +50,7 @@ GameObject:
|
|||||||
- component: {fileID: 2756943273076691504}
|
- component: {fileID: 2756943273076691504}
|
||||||
- component: {fileID: 6638271233700792696}
|
- component: {fileID: 6638271233700792696}
|
||||||
- component: {fileID: 5988018701276467001}
|
- component: {fileID: 5988018701276467001}
|
||||||
|
- component: {fileID: 1547882613481475944}
|
||||||
m_Layer: 8
|
m_Layer: 8
|
||||||
m_Name: Bot
|
m_Name: Bot
|
||||||
m_TagString: Defender
|
m_TagString: Defender
|
||||||
@ -210,8 +211,8 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
m_SensorName: BufferSensor
|
m_SensorName: BufferSensor
|
||||||
m_ObservableSize: 0
|
m_ObservableSize: 5
|
||||||
m_MaxNumObservables: 0
|
m_MaxNumObservables: 10
|
||||||
--- !u!114 &2756943273076691504
|
--- !u!114 &2756943273076691504
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -225,19 +226,19 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
m_BrainParameters:
|
m_BrainParameters:
|
||||||
VectorObservationSize: 1
|
VectorObservationSize: 14
|
||||||
NumStackedVectorObservations: 1
|
NumStackedVectorObservations: 1
|
||||||
m_ActionSpec:
|
m_ActionSpec:
|
||||||
m_NumContinuousActions: 0
|
m_NumContinuousActions: 0
|
||||||
BranchSizes: 01000000
|
BranchSizes: 010000000100000001000000
|
||||||
VectorActionSize: 01000000
|
VectorActionSize: 010000000100000001000000
|
||||||
VectorActionDescriptions: []
|
VectorActionDescriptions: []
|
||||||
VectorActionSpaceType: 0
|
VectorActionSpaceType: 0
|
||||||
hasUpgradedBrainParametersWithActionSpec: 1
|
hasUpgradedBrainParametersWithActionSpec: 1
|
||||||
m_Model: {fileID: 0}
|
m_Model: {fileID: 0}
|
||||||
m_InferenceDevice: 0
|
m_InferenceDevice: 0
|
||||||
m_BehaviorType: 0
|
m_BehaviorType: 0
|
||||||
m_BehaviorName: My Behavior
|
m_BehaviorName: npc
|
||||||
TeamId: 0
|
TeamId: 0
|
||||||
m_UseChildSensors: 1
|
m_UseChildSensors: 1
|
||||||
m_UseChildActuators: 1
|
m_UseChildActuators: 1
|
||||||
@ -272,3 +273,17 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
navMeshAgent: {fileID: 8774702625908438859}
|
navMeshAgent: {fileID: 8774702625908438859}
|
||||||
flag: {fileID: 6818223691859422291, guid: 1685c1d9ce4ab174f95c646b1826010b, type: 3}
|
flag: {fileID: 6818223691859422291, guid: 1685c1d9ce4ab174f95c646b1826010b, type: 3}
|
||||||
|
--- !u!114 &1547882613481475944
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6171680323948707524}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 3a5c9d521e5ef4759a8246a07d52221e, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
DecisionPeriod: 5
|
||||||
|
TakeActionsBetweenDecisions: 0
|
||||||
|
2
Assets/Prefabs/Player.prefab.meta
generated
Executable file → Normal file
2
Assets/Prefabs/Player.prefab.meta
generated
Executable file → Normal file
@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 80f6c1c85e5daed4c96c70205ed5503d
|
guid: a7480b77908b042d8adcdd84e8c2c15e
|
||||||
PrefabImporter:
|
PrefabImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
userData:
|
userData:
|
||||||
|
@ -73,6 +73,7 @@ public class NPC : Agent, ICharacter
|
|||||||
|
|
||||||
public override void CollectObservations(VectorSensor sensor)
|
public override void CollectObservations(VectorSensor sensor)
|
||||||
{
|
{
|
||||||
|
// Debug.Log("Collect observations called!");
|
||||||
navPointIdDict = MapManager.Instance.IDToNavPoint;
|
navPointIdDict = MapManager.Instance.IDToNavPoint;
|
||||||
if (navPointIdDict is null)
|
if (navPointIdDict is null)
|
||||||
Debug.LogError("Cant Find Nav Point Dictionary");
|
Debug.LogError("Cant Find Nav Point Dictionary");
|
||||||
@ -88,6 +89,7 @@ public class NPC : Agent, ICharacter
|
|||||||
sensor.AddObservation(candidates.Count);
|
sensor.AddObservation(candidates.Count);
|
||||||
sensor.AddObservation(moveController.PointStartID);
|
sensor.AddObservation(moveController.PointStartID);
|
||||||
sensor.AddObservation(moveController.PointEndID);
|
sensor.AddObservation(moveController.PointEndID);
|
||||||
|
// Debug.Log("Done common!");
|
||||||
//state sensors
|
//state sensors
|
||||||
sensor.AddObservation((int)NpcState.State);
|
sensor.AddObservation((int)NpcState.State);
|
||||||
sensor.AddObservation((int)NpcBodyState.State);
|
sensor.AddObservation((int)NpcBodyState.State);
|
||||||
@ -95,6 +97,7 @@ public class NPC : Agent, ICharacter
|
|||||||
sensor.AddObservation(navPointIdDict[moveController.PointStartID].DeathAttr);
|
sensor.AddObservation(navPointIdDict[moveController.PointStartID].DeathAttr);
|
||||||
sensor.AddObservation(navPointIdDict[moveController.PointEndID].DeathAttr);
|
sensor.AddObservation(navPointIdDict[moveController.PointEndID].DeathAttr);
|
||||||
sensor.AddObservation(moveController.FlagDistance);
|
sensor.AddObservation(moveController.FlagDistance);
|
||||||
|
// Debug.Log("Done state sensors!");
|
||||||
|
|
||||||
//point sensors
|
//point sensors
|
||||||
foreach (var point in candidates)
|
foreach (var point in candidates)
|
||||||
@ -112,11 +115,14 @@ public class NPC : Agent, ICharacter
|
|||||||
point.Position).ToInt()
|
point.Position).ToInt()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
// Debug.Log("Done collect observations!");
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnActionReceived(ActionBuffers actions)
|
public override void OnActionReceived(ActionBuffers actions)
|
||||||
{
|
{
|
||||||
|
// Debug.Log("Actions recieved!");
|
||||||
var result = actions.DiscreteActions;
|
var result = actions.DiscreteActions;
|
||||||
|
// Debug.Log(result[0] + " " + result[1]);
|
||||||
if (result[0] == 0)
|
if (result[0] == 0)
|
||||||
{
|
{
|
||||||
if (navPointIdDict[moveController.PointStartID].navType != NavPointType.Cover)
|
if (navPointIdDict[moveController.PointStartID].navType != NavPointType.Cover)
|
||||||
@ -132,18 +138,26 @@ public class NPC : Agent, ICharacter
|
|||||||
default: throw new ArgumentException("Undefined Action recieved");
|
default: throw new ArgumentException("Undefined Action recieved");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Debug.Log(result[0] == 1);
|
||||||
if (result[0] == 1)
|
if (result[0] == 1)
|
||||||
{
|
{
|
||||||
|
// Debug.Log("BEFORE SOme shitty if >:(");
|
||||||
if (navPointIdDict[moveController.PointStartID].navType != NavPointType.Direction)
|
if (navPointIdDict[moveController.PointStartID].navType != NavPointType.Direction)
|
||||||
|
{
|
||||||
|
// Debug.Log("SOme shitty if >:(");
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
// Debug.Log("FUCK");
|
||||||
|
|
||||||
switch (result[1])
|
switch (result[1])
|
||||||
{
|
{
|
||||||
case 0: moveController.GoToNextNavPoint(navPointIdDict[result[2]]);
|
case 0: moveController.GoToNextNavPoint(navPointIdDict[result[2]]);
|
||||||
NpcState = RunningState; break;
|
NpcState = RunningState; Debug.Log("Go to point " + result[2]);break;
|
||||||
case 1: NpcState = DirectState; break;
|
case 1: NpcState = DirectState; break;
|
||||||
default: throw new ArgumentException("Undefined Action recieved");
|
default: throw new ArgumentException("Undefined Action recieved");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result[0] == 2)
|
if (result[0] == 2)
|
||||||
{
|
{
|
||||||
if (moveController.PointStartID == moveController.PointEndID && moveController.PointEndID != -1)
|
if (moveController.PointStartID == moveController.PointEndID && moveController.PointEndID != -1)
|
||||||
@ -155,6 +169,7 @@ public class NPC : Agent, ICharacter
|
|||||||
default: throw new ArgumentException("Undefined Action recieved");
|
default: throw new ArgumentException("Undefined Action recieved");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Debug.Log("Actions processed!");
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
0
Assets/Settings/Game Settings.asset
generated
Executable file → Normal file
0
Assets/Settings/Game Settings.asset
generated
Executable file → Normal file
@ -1,17 +1,24 @@
|
|||||||
{
|
{
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"com.unity.2d.sprite": "1.0.0",
|
||||||
|
"com.unity.2d.tilemap": "1.0.0",
|
||||||
|
"com.unity.ads": "3.7.5",
|
||||||
|
"com.unity.analytics": "3.6.12",
|
||||||
"com.unity.collab-proxy": "1.14.12",
|
"com.unity.collab-proxy": "1.14.12",
|
||||||
"com.unity.ide.rider": "1.2.1",
|
"com.unity.ide.rider": "1.2.1",
|
||||||
"com.unity.ide.visualstudio": "2.0.14",
|
"com.unity.ide.visualstudio": "2.0.14",
|
||||||
"com.unity.ide.vscode": "1.2.4",
|
"com.unity.ide.vscode": "1.2.4",
|
||||||
"com.unity.inputsystem": "1.3.0",
|
"com.unity.inputsystem": "1.3.0",
|
||||||
"com.unity.ml-agents": "2.0.1",
|
"com.unity.ml-agents": "2.0.1",
|
||||||
|
"com.unity.multiplayer-hlapi": "1.0.8",
|
||||||
"com.unity.probuilder": "4.5.2",
|
"com.unity.probuilder": "4.5.2",
|
||||||
|
"com.unity.purchasing": "4.1.2",
|
||||||
"com.unity.test-framework": "1.1.30",
|
"com.unity.test-framework": "1.1.30",
|
||||||
"com.unity.textmeshpro": "2.1.6",
|
"com.unity.textmeshpro": "2.1.6",
|
||||||
"com.unity.timeline": "1.2.18",
|
"com.unity.timeline": "1.2.18",
|
||||||
"com.unity.toolchain.win-x86_64-linux-x86_64": "2.0.0",
|
"com.unity.toolchain.win-x86_64-linux-x86_64": "2.0.0",
|
||||||
"com.unity.ugui": "1.0.0",
|
"com.unity.ugui": "1.0.0",
|
||||||
|
"com.unity.xr.legacyinputhelpers": "2.1.8",
|
||||||
"com.unity.modules.ai": "1.0.0",
|
"com.unity.modules.ai": "1.0.0",
|
||||||
"com.unity.modules.androidjni": "1.0.0",
|
"com.unity.modules.androidjni": "1.0.0",
|
||||||
"com.unity.modules.animation": "1.0.0",
|
"com.unity.modules.animation": "1.0.0",
|
||||||
|
@ -1,5 +1,35 @@
|
|||||||
{
|
{
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"com.unity.2d.sprite": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.2d.tilemap": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.ads": {
|
||||||
|
"version": "3.7.5",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.ugui": "1.0.0"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.analytics": {
|
||||||
|
"version": "3.6.12",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.ugui": "1.0.0"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
"com.unity.barracuda": {
|
"com.unity.barracuda": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"depth": 1,
|
"depth": 1,
|
||||||
@ -86,6 +116,15 @@
|
|||||||
},
|
},
|
||||||
"url": "https://packages.unity.com"
|
"url": "https://packages.unity.com"
|
||||||
},
|
},
|
||||||
|
"com.unity.multiplayer-hlapi": {
|
||||||
|
"version": "1.0.8",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"nuget.mono-cecil": "0.1.6-preview"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
"com.unity.probuilder": {
|
"com.unity.probuilder": {
|
||||||
"version": "4.5.2",
|
"version": "4.5.2",
|
||||||
"depth": 0,
|
"depth": 0,
|
||||||
@ -95,6 +134,29 @@
|
|||||||
},
|
},
|
||||||
"url": "https://packages.unity.com"
|
"url": "https://packages.unity.com"
|
||||||
},
|
},
|
||||||
|
"com.unity.purchasing": {
|
||||||
|
"version": "4.1.2",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.ugui": "1.0.0",
|
||||||
|
"com.unity.modules.unityanalytics": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequest": "1.0.0",
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0",
|
||||||
|
"com.unity.modules.androidjni": "1.0.0",
|
||||||
|
"com.unity.services.core": "1.0.1"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.services.core": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"depth": 1,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.unitywebrequest": "1.0.0"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
"com.unity.settings-manager": {
|
"com.unity.settings-manager": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.3",
|
||||||
"depth": 1,
|
"depth": 1,
|
||||||
@ -169,6 +231,23 @@
|
|||||||
"com.unity.modules.imgui": "1.0.0"
|
"com.unity.modules.imgui": "1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"com.unity.xr.legacyinputhelpers": {
|
||||||
|
"version": "2.1.8",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.vr": "1.0.0",
|
||||||
|
"com.unity.modules.xr": "1.0.0"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"nuget.mono-cecil": {
|
||||||
|
"version": "0.1.6-preview",
|
||||||
|
"depth": 1,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
"com.unity.modules.ai": {
|
"com.unity.modules.ai": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"depth": 0,
|
"depth": 0,
|
||||||
|
6
ProjectSettings/ProjectSettings.asset
generated
6
ProjectSettings/ProjectSettings.asset
generated
@ -614,7 +614,11 @@ PlayerSettings:
|
|||||||
webGLLinkerTarget: 1
|
webGLLinkerTarget: 1
|
||||||
webGLThreadsSupport: 0
|
webGLThreadsSupport: 0
|
||||||
webGLWasmStreaming: 0
|
webGLWasmStreaming: 0
|
||||||
scriptingDefineSymbols: {}
|
scriptingDefineSymbols:
|
||||||
|
1: CROSS_PLATFORM_INPUT
|
||||||
|
4: CROSS_PLATFORM_INPUT;MOBILE_INPUT
|
||||||
|
7: CROSS_PLATFORM_INPUT;MOBILE_INPUT
|
||||||
|
14: MOBILE_INPUT
|
||||||
platformArchitecture: {}
|
platformArchitecture: {}
|
||||||
scriptingBackend: {}
|
scriptingBackend: {}
|
||||||
il2cppCompilerConfiguration: {}
|
il2cppCompilerConfiguration: {}
|
||||||
|
Reference in New Issue
Block a user