浏览代码

Merge master into hybrid actions staging branch (#4704)

/fix-conflict-base-env
GitHub 4 年前
当前提交
88d3ec3e
共有 82 个文件被更改,包括 4539 次插入306 次删除
  1. 3
      .yamato/com.unity.ml-agents-test.yml
  2. 10
      Project/Assets/ML-Agents/Examples/Match3/Prefabs/Match3Heuristic.prefab
  3. 14
      Project/Assets/ML-Agents/Examples/Match3/Prefabs/Match3VectorObs.prefab
  4. 14
      Project/Assets/ML-Agents/Examples/Match3/Prefabs/Match3VisualObs.prefab
  5. 695
      Project/Assets/ML-Agents/Examples/Match3/Scenes/Match3.unity
  6. 113
      Project/Assets/ML-Agents/Examples/Match3/Scripts/Match3Drawer.cs
  7. 5
      Project/Assets/ML-Agents/Examples/SharedAssets/Materials/Purple.mat
  8. 10
      README.md
  9. 2
      com.unity.ml-agents.extensions/Documentation~/Grid-Sensor.md
  10. 45
      com.unity.ml-agents.extensions/Documentation~/Match3.md
  11. 8
      com.unity.ml-agents.extensions/Documentation~/com.unity.ml-agents.extensions.md
  12. 2
      com.unity.ml-agents.extensions/package.json
  13. 21
      com.unity.ml-agents/CHANGELOG.md
  14. 10
      com.unity.ml-agents/CONTRIBUTING.md
  15. 2
      com.unity.ml-agents/Documentation~/com.unity.ml-agents.md
  16. 6
      com.unity.ml-agents/Runtime/Academy.cs
  17. 2
      com.unity.ml-agents/Runtime/Actuators/IActionReceiver.cs
  18. 2
      com.unity.ml-agents/Runtime/Actuators/IDiscreteActionMask.cs
  19. 45
      com.unity.ml-agents/Runtime/Agent.cs
  20. 4
      com.unity.ml-agents/Runtime/Agent.deprecated.cs
  21. 2
      com.unity.ml-agents/Runtime/Demonstrations/DemonstrationRecorder.cs
  22. 2
      com.unity.ml-agents/Runtime/DiscreteActionMasker.cs
  23. 4
      com.unity.ml-agents/Runtime/Sensors/ObservationWriter.cs
  24. 2
      com.unity.ml-agents/package.json
  25. 2
      config/ppo/SoccerTwos.yaml
  26. 4
      config/ppo/StrikersVsGoalie.yaml
  27. 2
      config/ppo/Tennis.yaml
  28. 4
      docs/Installation-Anaconda-Windows.md
  29. 6
      docs/Installation.md
  30. 4
      docs/Learning-Environment-Design.md
  31. 1
      docs/Learning-Environment-Examples.md
  32. 62
      docs/Training-ML-Agents.md
  33. 2
      docs/Training-on-Amazon-Web-Service.md
  34. 4
      docs/Unity-Inference-Engine.md
  35. 999
      docs/images/match3.png
  36. 2
      gym-unity/gym_unity/__init__.py
  37. 4
      gym-unity/gym_unity/tests/test_gym.py
  38. 2
      ml-agents-envs/mlagents_envs/__init__.py
  39. 2
      ml-agents/mlagents/trainers/__init__.py
  40. 3
      ml-agents/mlagents/trainers/action_info.py
  41. 5
      ml-agents/mlagents/trainers/agent_processor.py
  42. 14
      ml-agents/mlagents/trainers/policy/policy.py
  43. 8
      ml-agents/mlagents/trainers/policy/tf_policy.py
  44. 10
      ml-agents/mlagents/trainers/policy/torch_policy.py
  45. 14
      ml-agents/mlagents/trainers/ppo/optimizer_tf.py
  46. 2
      ml-agents/mlagents/trainers/ppo/trainer.py
  47. 2
      ml-agents/mlagents/trainers/sac/optimizer_torch.py
  48. 2
      ml-agents/mlagents/trainers/simple_env_manager.py
  49. 6
      ml-agents/mlagents/trainers/stats.py
  50. 2
      ml-agents/mlagents/trainers/subprocess_env_manager.py
  51. 3
      ml-agents/mlagents/trainers/tests/mock_brain.py
  52. 20
      ml-agents/mlagents/trainers/tests/tensorflow/test_nn_policy.py
  53. 8
      ml-agents/mlagents/trainers/tests/torch/test_policy.py
  54. 2
      ml-agents/mlagents/trainers/tests/torch/test_reward_providers/test_curiosity.py
  55. 2
      ml-agents/mlagents/trainers/tests/torch/test_simple_rl.py
  56. 8
      ml-agents/mlagents/trainers/tf/models.py
  57. 2
      ml-agents/mlagents/trainers/tf/tensorflow_to_barracuda.py
  58. 6
      ml-agents/mlagents/trainers/torch/action_model.py
  59. 7
      ml-agents/mlagents/trainers/torch/agent_action.py
  60. 2
      ml-agents/mlagents/trainers/torch/components/bc/module.py
  61. 29
      ml-agents/mlagents/trainers/torch/distributions.py
  62. 8
      ml-agents/mlagents/trainers/torch/encoders.py
  63. 12
      ml-agents/mlagents/trainers/torch/layers.py
  64. 10
      ml-agents/mlagents/trainers/torch/model_serialization.py
  65. 5
      ml-agents/mlagents/trainers/torch/networks.py
  66. 4
      ml-agents/mlagents/trainers/trajectory.py
  67. 1
      utils/make_readme_table.py
  68. 8
      Project/Assets/ML-Agents/Examples/Match3/Prefabs/FBX.meta
  69. 8
      Project/Assets/ML-Agents/Examples/Match3/Prefabs/Tiles.meta
  70. 57
      Project/Assets/ML-Agents/Examples/Match3/Scripts/Match3TileSelector.cs
  71. 11
      Project/Assets/ML-Agents/Examples/Match3/Scripts/Match3TileSelector.cs.meta
  72. 81
      Project/Assets/ML-Agents/Examples/SharedAssets/Materials/LightGrey.mat
  73. 8
      Project/Assets/ML-Agents/Examples/SharedAssets/Materials/LightGrey.mat.meta
  74. 1001
      com.unity.ml-agents.extensions/Documentation~/images/match3.png
  75. 45
      Project/Assets/ML-Agents/Examples/Match3/Prefabs/FBX/3.fbx
  76. 97
      Project/Assets/ML-Agents/Examples/Match3/Prefabs/FBX/3.fbx.meta
  77. 104
      Project/Assets/ML-Agents/Examples/Match3/Prefabs/FBX/Match.fbx
  78. 97
      Project/Assets/ML-Agents/Examples/Match3/Prefabs/FBX/Match.fbx.meta
  79. 1001
      Project/Assets/ML-Agents/Examples/Match3/Prefabs/Tiles/TILE_Base.prefab
  80. 7
      Project/Assets/ML-Agents/Examples/Match3/Prefabs/Tiles/TILE_Base.prefab.meta

3
.yamato/com.unity.ml-agents-test.yml


trunk_editor:
- version: trunk
enableCodeCoverage: !!bool true
# Workaround for MLA-1596 - need to make sure we load the right results.
enableCodeCoverage: !!bool false
testProject: DevProject
test_platforms:

10
Project/Assets/ML-Agents/Examples/Match3/Prefabs/Match3Heuristic.prefab


Board: {fileID: 0}
MoveTime: 0.25
MaxMoves: 500
UseSmartHeuristic: 1
HeuristicQuality: 0
--- !u!114 &3508723250470608011
MonoBehaviour:
m_ObjectHideFlags: 0

m_Script: {fileID: 11500000, guid: abebb7ad4a5547d7a3b04373784ff195, type: 3}
m_Name:
m_EditorClassIdentifier:
DebugEdgeIndex: -1
DebugMoveIndex: -1
CubeSpacing: 1.25
Board: {fileID: 0}
TilePrefab: {fileID: 4007900521885639951, guid: faee4e805953b49e688bd00b45c55f2e,
type: 3}
--- !u!114 &3508723250470608009
MonoBehaviour:
m_ObjectHideFlags: 0

m_Script: {fileID: 11500000, guid: 08e4b0da54cb4d56bfcbae22dd49ab8d, type: 3}
m_Name:
m_EditorClassIdentifier:
ActuatorName: Match3 Actuator
ForceHeuristic: 1
--- !u!114 &3508723250470608014
MonoBehaviour:

m_Script: {fileID: 11500000, guid: 530d2f105aa145bd8a00e021bdd925fd, type: 3}
m_Name:
m_EditorClassIdentifier:
SensorName: Match3 Sensor
ObservationType: 0
--- !u!1 &3508723250774301855
GameObject:

14
Project/Assets/ML-Agents/Examples/Match3/Prefabs/Match3VectorObs.prefab


Board: {fileID: 0}
MoveTime: 0.25
MaxMoves: 500
HeuristicQuality: 0
--- !u!114 &2118285884327540685
MonoBehaviour:
m_ObjectHideFlags: 0

m_Script: {fileID: 11500000, guid: abebb7ad4a5547d7a3b04373784ff195, type: 3}
m_Name:
m_EditorClassIdentifier:
DebugEdgeIndex: -1
DebugMoveIndex: -1
CubeSpacing: 1.25
Board: {fileID: 0}
TilePrefab: {fileID: 4007900521885639951, guid: faee4e805953b49e688bd00b45c55f2e,
type: 3}
--- !u!114 &2118285884327540687
MonoBehaviour:
m_ObjectHideFlags: 0

NumCellTypes: 6
NumSpecialTypes: 2
RandomSeed: -1
BasicCellPoints: 1
SpecialCell1Points: 2
SpecialCell2Points: 3
--- !u!114 &2118285884327540683
MonoBehaviour:
m_ObjectHideFlags: 0

m_Script: {fileID: 11500000, guid: 08e4b0da54cb4d56bfcbae22dd49ab8d, type: 3}
m_Name:
m_EditorClassIdentifier:
ForceRandom: 0
ActuatorName: Match3 Actuator
ForceHeuristic: 0
--- !u!114 &2118285884327540680
MonoBehaviour:
m_ObjectHideFlags: 0

m_Script: {fileID: 11500000, guid: 530d2f105aa145bd8a00e021bdd925fd, type: 3}
m_Name:
m_EditorClassIdentifier:
SensorName: Match3 Sensor
ObservationType: 0

14
Project/Assets/ML-Agents/Examples/Match3/Prefabs/Match3VisualObs.prefab


Board: {fileID: 0}
MoveTime: 0.25
MaxMoves: 500
HeuristicQuality: 0
--- !u!114 &3019509692332007778
MonoBehaviour:
m_ObjectHideFlags: 0

m_Script: {fileID: 11500000, guid: abebb7ad4a5547d7a3b04373784ff195, type: 3}
m_Name:
m_EditorClassIdentifier:
DebugEdgeIndex: -1
DebugMoveIndex: -1
CubeSpacing: 1.25
Board: {fileID: 0}
TilePrefab: {fileID: 4007900521885639951, guid: faee4e805953b49e688bd00b45c55f2e,
type: 3}
--- !u!114 &3019509692332007776
MonoBehaviour:
m_ObjectHideFlags: 0

NumCellTypes: 6
NumSpecialTypes: 2
RandomSeed: -1
BasicCellPoints: 1
SpecialCell1Points: 2
SpecialCell2Points: 3
--- !u!114 &3019509692332007780
MonoBehaviour:
m_ObjectHideFlags: 0

m_Script: {fileID: 11500000, guid: 08e4b0da54cb4d56bfcbae22dd49ab8d, type: 3}
m_Name:
m_EditorClassIdentifier:
ForceRandom: 0
ActuatorName: Match3 Actuator
ForceHeuristic: 0
--- !u!114 &3019509692332007783
MonoBehaviour:
m_ObjectHideFlags: 0

m_Script: {fileID: 11500000, guid: 530d2f105aa145bd8a00e021bdd925fd, type: 3}
m_Name:
m_EditorClassIdentifier:
SensorName: Match3 Sensor
ObservationType: 2

695
Project/Assets/ML-Agents/Examples/Match3/Scenes/Match3.unity


m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0.44657898, g: 0.49641287, b: 0.5748173, a: 1}
m_IndirectSpecularColor: {r: 0.43632728, g: 0.4747097, b: 0.51471573, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:

- target: {fileID: 3019509691567202569, guid: aaa471bd5e2014848a66917476671aed,
type: 3}
propertyPath: m_LocalPosition.x
value: 30
value: 60
value: 10
value: 20
objectReference: {fileID: 0}
- target: {fileID: 3019509691567202569, guid: aaa471bd5e2014848a66917476671aed,
type: 3}

- target: {fileID: 3019509691567202569, guid: aaa471bd5e2014848a66917476671aed,
type: 3}
propertyPath: m_RootOrder
value: 9
value: 11
objectReference: {fileID: 0}
- target: {fileID: 3019509691567202569, guid: aaa471bd5e2014848a66917476671aed,
type: 3}

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: aaa471bd5e2014848a66917476671aed, type: 3}
--- !u!1 &288081173
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 288081174}
- component: {fileID: 288081177}
- component: {fileID: 288081176}
- component: {fileID: 288081175}
m_Layer: 0
m_Name: Border (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &288081174
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 288081173}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0.202, y: 0, z: -0.07999998}
m_LocalScale: {x: 1.0625, y: 0.50279176, z: 1.0649}
m_Children:
- {fileID: 1976481842}
- {fileID: 1670850089}
m_Father: {fileID: 796197232}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!65 &288081175
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 288081173}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 2
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &288081176
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 288081173}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 69fefdd39d2b34b169e921910bed9c0d, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!33 &288081177
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 288081173}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1 &327661542
GameObject:
m_ObjectHideFlags: 0

m_GameObject: {fileID: 327661542}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 1
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
m_ClearFlags: 2
m_BackGroundColor: {r: 0.58746636, g: 0.71687025, b: 0.78431374, a: 1}
m_projectionMatrixMode: 1
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}

near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 0
orthographic size: 5
orthographic: 1
orthographic size: 6.5
m_Depth: -1
m_CullingMask:
serializedVersion: 2

m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 327661542}
m_LocalRotation: {x: -0.0071871188, y: -0.003003474, z: -0.000021621252, w: 0.9999697}
m_LocalPosition: {x: 18.701, y: 11.390508, z: -33.193497}
m_LocalRotation: {x: 0, y: 1, z: 0, w: 0}
m_LocalPosition: {x: 4.5, y: 5, z: 3.72}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
--- !u!1001 &416139953
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 288081174}
m_Modifications:
- target: {fileID: 100000, guid: 02d33201e78d54a67ac7b0734cd6d8aa, type: 3}
propertyPath: m_Name
value: 3
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 02d33201e78d54a67ac7b0734cd6d8aa, type: 3}
propertyPath: m_LocalPosition.x
value: 0.31264985
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 02d33201e78d54a67ac7b0734cd6d8aa, type: 3}
propertyPath: m_LocalPosition.y
value: 0.32276452
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 02d33201e78d54a67ac7b0734cd6d8aa, type: 3}
propertyPath: m_LocalPosition.z
value: 0.33805987
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 02d33201e78d54a67ac7b0734cd6d8aa, type: 3}
propertyPath: m_LocalRotation.x
value: 0.000000015454312
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 02d33201e78d54a67ac7b0734cd6d8aa, type: 3}
propertyPath: m_LocalRotation.y
value: 0.00000001545431
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 02d33201e78d54a67ac7b0734cd6d8aa, type: 3}
propertyPath: m_LocalRotation.z
value: -0.70710677
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 02d33201e78d54a67ac7b0734cd6d8aa, type: 3}
propertyPath: m_LocalRotation.w
value: 0.7071069
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 02d33201e78d54a67ac7b0734cd6d8aa, type: 3}
propertyPath: m_RootOrder
value: 1
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 02d33201e78d54a67ac7b0734cd6d8aa, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 02d33201e78d54a67ac7b0734cd6d8aa, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 02d33201e78d54a67ac7b0734cd6d8aa, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: -90.00001
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 02d33201e78d54a67ac7b0734cd6d8aa, type: 3}
propertyPath: m_LocalScale.x
value: 48.39589
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 02d33201e78d54a67ac7b0734cd6d8aa, type: 3}
propertyPath: m_LocalScale.y
value: 26.17337
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 02d33201e78d54a67ac7b0734cd6d8aa, type: 3}
propertyPath: m_LocalScale.z
value: 274.20087
objectReference: {fileID: 0}
- target: {fileID: 2300000, guid: 02d33201e78d54a67ac7b0734cd6d8aa, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 66163cf35956a4be08e801b750c26f33, type: 2}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 02d33201e78d54a67ac7b0734cd6d8aa, type: 3}
--- !u!1 &448464282
GameObject:
m_ObjectHideFlags: 0

m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 448464282}
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
m_LocalRotation: {x: 0.99240386, y: -0.0075961384, z: 0.08682413, w: 0.086824216}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 170, y: -10, z: 0}
--- !u!1001 &455966546
PrefabInstance:
m_ObjectHideFlags: 0

propertyPath: m_BehaviorName
value: Match3SimpleHeuristic
objectReference: {fileID: 0}
- target: {fileID: 3508723250470608011, guid: 2fafdcd0587684641b03b11f04454f1b,
type: 3}
propertyPath: cubeSpacing
value: 1.25
objectReference: {fileID: 0}
- target: {fileID: 3508723250470608012, guid: 2fafdcd0587684641b03b11f04454f1b,
type: 3}
propertyPath: UseSmartHeuristic

propertyPath: m_Name
value: Match3SimpleHeuristic (1)
objectReference: {fileID: 0}
- target: {fileID: 3508723250774301855, guid: 2fafdcd0587684641b03b11f04454f1b,
type: 3}
propertyPath: m_IsActive
value: 1
objectReference: {fileID: 0}
value: 30
value: 60
value: 20
value: 40
objectReference: {fileID: 0}
- target: {fileID: 3508723250774301920, guid: 2fafdcd0587684641b03b11f04454f1b,
type: 3}

- target: {fileID: 3508723250774301920, guid: 2fafdcd0587684641b03b11f04454f1b,
type: 3}
propertyPath: m_RootOrder
value: 13
value: 15
objectReference: {fileID: 0}
- target: {fileID: 3508723250774301920, guid: 2fafdcd0587684641b03b11f04454f1b,
type: 3}

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 2fafdcd0587684641b03b11f04454f1b, type: 3}
--- !u!1 &519872758
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 519872759}
- component: {fileID: 519872762}
- component: {fileID: 519872761}
- component: {fileID: 519872760}
m_Layer: 0
m_Name: Border
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &519872759
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 519872758}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -0.07999998}
m_LocalScale: {x: 1.0625, y: 1.0625, z: 1.0649}
m_Children: []
m_Father: {fileID: 796197232}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!65 &519872760
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 519872758}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 2
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &519872761
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 519872758}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 69fefdd39d2b34b169e921910bed9c0d, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!33 &519872762
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 519872758}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1001 &607493268
PrefabInstance:
m_ObjectHideFlags: 0

m_Modifications:
- target: {fileID: 3508723250470608010, guid: 2fafdcd0587684641b03b11f04454f1b,
- target: {fileID: 3508723250470608011, guid: 2fafdcd0587684641b03b11f04454f1b,
propertyPath: m_BehaviorName
value: Match3GreedyHeuristic
propertyPath: cubeSpacing
value: 1.25
objectReference: {fileID: 0}
- target: {fileID: 3508723250470608012, guid: 2fafdcd0587684641b03b11f04454f1b,
type: 3}

propertyPath: m_Name
value: Match3GreedyHeuristic
objectReference: {fileID: 0}
- target: {fileID: 3508723250774301855, guid: 2fafdcd0587684641b03b11f04454f1b,
type: 3}
propertyPath: m_IsActive
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3508723250774301920, guid: 2fafdcd0587684641b03b11f04454f1b,
type: 3}
propertyPath: m_LocalPosition.x

type: 3}
propertyPath: m_LocalPosition.y
value: 20
value: 40
objectReference: {fileID: 0}
- target: {fileID: 3508723250774301920, guid: 2fafdcd0587684641b03b11f04454f1b,
type: 3}

- target: {fileID: 3508723250774301920, guid: 2fafdcd0587684641b03b11f04454f1b,
type: 3}
propertyPath: m_RootOrder
value: 10
value: 12
objectReference: {fileID: 0}
- target: {fileID: 3508723250774301920, guid: 2fafdcd0587684641b03b11f04454f1b,
type: 3}

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 2fafdcd0587684641b03b11f04454f1b, type: 3}
--- !u!1 &796197228
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 796197232}
- component: {fileID: 796197231}
- component: {fileID: 796197230}
- component: {fileID: 796197229}
m_Layer: 0
m_Name: Background
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!65 &796197229
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 796197228}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 2
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &796197230
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 796197228}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 5c59bd36def9a4684be49a21cf201a2d, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!33 &796197231
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 796197228}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!4 &796197232
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 796197228}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 4.4, y: 5, z: -0.5}
m_LocalScale: {x: 10.5, y: 12, z: 1}
m_Children:
- {fileID: 519872759}
- {fileID: 288081174}
m_Father: {fileID: 0}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &802842869
PrefabInstance:
m_ObjectHideFlags: 0

- target: {fileID: 2118285883905619878, guid: 6944ca02359f5427aa13c8551236a824,
type: 3}
propertyPath: m_LocalPosition.x
value: 20
value: 40
objectReference: {fileID: 0}
- target: {fileID: 2118285883905619878, guid: 6944ca02359f5427aa13c8551236a824,
type: 3}

- target: {fileID: 2118285883905619878, guid: 6944ca02359f5427aa13c8551236a824,
type: 3}
propertyPath: m_RootOrder
value: 4
value: 6
objectReference: {fileID: 0}
- target: {fileID: 2118285883905619878, guid: 6944ca02359f5427aa13c8551236a824,
type: 3}

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 6944ca02359f5427aa13c8551236a824, type: 3}
--- !u!1001 &822340861
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 288081174}
m_Modifications:
- target: {fileID: 100000, guid: 6cb02a85514f94d7f8266348b5c021cd, type: 3}
propertyPath: m_Name
value: Match
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 6cb02a85514f94d7f8266348b5c021cd, type: 3}
propertyPath: m_LocalPosition.x
value: 0.33568624
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 6cb02a85514f94d7f8266348b5c021cd, type: 3}
propertyPath: m_LocalPosition.y
value: -0.09143946
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 6cb02a85514f94d7f8266348b5c021cd, type: 3}
propertyPath: m_LocalPosition.z
value: 0.33805987
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 6cb02a85514f94d7f8266348b5c021cd, type: 3}
propertyPath: m_LocalRotation.x
value: 0.000000015454312
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 6cb02a85514f94d7f8266348b5c021cd, type: 3}
propertyPath: m_LocalRotation.y
value: 0.00000001545431
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 6cb02a85514f94d7f8266348b5c021cd, type: 3}
propertyPath: m_LocalRotation.z
value: -0.70710677
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 6cb02a85514f94d7f8266348b5c021cd, type: 3}
propertyPath: m_LocalRotation.w
value: 0.7071069
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 6cb02a85514f94d7f8266348b5c021cd, type: 3}
propertyPath: m_RootOrder
value: 0
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 6cb02a85514f94d7f8266348b5c021cd, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 6cb02a85514f94d7f8266348b5c021cd, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 6cb02a85514f94d7f8266348b5c021cd, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: -90.00001
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 6cb02a85514f94d7f8266348b5c021cd, type: 3}
propertyPath: m_LocalScale.x
value: 37.38769
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 6cb02a85514f94d7f8266348b5c021cd, type: 3}
propertyPath: m_LocalScale.y
value: 20.219938
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 6cb02a85514f94d7f8266348b5c021cd, type: 3}
propertyPath: m_LocalScale.z
value: 211.83073
objectReference: {fileID: 0}
- target: {fileID: 2300000, guid: 6cb02a85514f94d7f8266348b5c021cd, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 66163cf35956a4be08e801b750c26f33, type: 2}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 6cb02a85514f94d7f8266348b5c021cd, type: 3}
--- !u!1001 &906566489
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 1537641056927260, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3}
propertyPath: m_Name
value: Canvas_Watermark
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_RootOrder
value: 1
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchorMax.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_Pivot.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_Pivot.y
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3}
--- !u!1001 &1218183267
PrefabInstance:
m_ObjectHideFlags: 0

- target: {fileID: 3019509691567202569, guid: aaa471bd5e2014848a66917476671aed,
type: 3}
propertyPath: m_LocalPosition.x
value: 10
value: 20
value: 10
value: 20
objectReference: {fileID: 0}
- target: {fileID: 3019509691567202569, guid: aaa471bd5e2014848a66917476671aed,
type: 3}

- target: {fileID: 3019509691567202569, guid: aaa471bd5e2014848a66917476671aed,
type: 3}
propertyPath: m_RootOrder
value: 7
value: 9
objectReference: {fileID: 0}
- target: {fileID: 3019509691567202569, guid: aaa471bd5e2014848a66917476671aed,
type: 3}

- target: {fileID: 2118285883905619878, guid: 6944ca02359f5427aa13c8551236a824,
type: 3}
propertyPath: m_LocalPosition.x
value: 10
value: 20
objectReference: {fileID: 0}
- target: {fileID: 2118285883905619878, guid: 6944ca02359f5427aa13c8551236a824,
type: 3}

- target: {fileID: 2118285883905619878, guid: 6944ca02359f5427aa13c8551236a824,
type: 3}
propertyPath: m_RootOrder
value: 3
value: 5
objectReference: {fileID: 0}
- target: {fileID: 2118285883905619878, guid: 6944ca02359f5427aa13c8551236a824,
type: 3}

propertyPath: m_BehaviorName
value: Match3SimpleHeuristic
objectReference: {fileID: 0}
- target: {fileID: 3508723250470608011, guid: 2fafdcd0587684641b03b11f04454f1b,
type: 3}
propertyPath: cubeSpacing
value: 1.25
objectReference: {fileID: 0}
- target: {fileID: 3508723250470608012, guid: 2fafdcd0587684641b03b11f04454f1b,
type: 3}
propertyPath: UseSmartHeuristic

propertyPath: m_Name
value: Match3SimpleHeuristic
objectReference: {fileID: 0}
- target: {fileID: 3508723250774301855, guid: 2fafdcd0587684641b03b11f04454f1b,
type: 3}
propertyPath: m_IsActive
value: 1
objectReference: {fileID: 0}
value: 20
value: 40
value: 20
value: 40
objectReference: {fileID: 0}
- target: {fileID: 3508723250774301920, guid: 2fafdcd0587684641b03b11f04454f1b,
type: 3}

- target: {fileID: 3508723250774301920, guid: 2fafdcd0587684641b03b11f04454f1b,
type: 3}
propertyPath: m_RootOrder
value: 12
value: 14
objectReference: {fileID: 0}
- target: {fileID: 3508723250774301920, guid: 2fafdcd0587684641b03b11f04454f1b,
type: 3}

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 2fafdcd0587684641b03b11f04454f1b, type: 3}
--- !u!4 &1670850089 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 400000, guid: 02d33201e78d54a67ac7b0734cd6d8aa,
type: 3}
m_PrefabInstance: {fileID: 416139953}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &1765917346
PrefabInstance:
m_ObjectHideFlags: 0

m_Modifications:
- target: {fileID: 3508723250470608010, guid: 2fafdcd0587684641b03b11f04454f1b,
- target: {fileID: 3508723250470608011, guid: 2fafdcd0587684641b03b11f04454f1b,
propertyPath: m_BehaviorName
value: Match3GreedyHeuristic
propertyPath: cubeSpacing
value: 1.25
objectReference: {fileID: 0}
- target: {fileID: 3508723250470608012, guid: 2fafdcd0587684641b03b11f04454f1b,
type: 3}

propertyPath: m_Name
value: Match3GreedyHeuristic (1)
objectReference: {fileID: 0}
- target: {fileID: 3508723250774301855, guid: 2fafdcd0587684641b03b11f04454f1b,
type: 3}
propertyPath: m_IsActive
value: 1
objectReference: {fileID: 0}
value: 10
value: 20
value: 20
value: 40
objectReference: {fileID: 0}
- target: {fileID: 3508723250774301920, guid: 2fafdcd0587684641b03b11f04454f1b,
type: 3}

- target: {fileID: 3508723250774301920, guid: 2fafdcd0587684641b03b11f04454f1b,
type: 3}
propertyPath: m_RootOrder
value: 11
value: 13
objectReference: {fileID: 0}
- target: {fileID: 3508723250774301920, guid: 2fafdcd0587684641b03b11f04454f1b,
type: 3}

- target: {fileID: 2118285883905619878, guid: 6944ca02359f5427aa13c8551236a824,
type: 3}
propertyPath: m_LocalPosition.x
value: 30
value: 60
objectReference: {fileID: 0}
- target: {fileID: 2118285883905619878, guid: 6944ca02359f5427aa13c8551236a824,
type: 3}

- target: {fileID: 2118285883905619878, guid: 6944ca02359f5427aa13c8551236a824,
type: 3}
propertyPath: m_RootOrder
value: 5
value: 7
objectReference: {fileID: 0}
- target: {fileID: 2118285883905619878, guid: 6944ca02359f5427aa13c8551236a824,
type: 3}

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 6944ca02359f5427aa13c8551236a824, type: 3}
--- !u!4 &1976481842 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 400000, guid: 6cb02a85514f94d7f8266348b5c021cd,
type: 3}
m_PrefabInstance: {fileID: 822340861}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &2112980636
PrefabInstance:
m_ObjectHideFlags: 0

- target: {fileID: 3019509691567202569, guid: aaa471bd5e2014848a66917476671aed,
type: 3}
propertyPath: m_LocalPosition.x
value: 20
value: 40
value: 10
value: 20
objectReference: {fileID: 0}
- target: {fileID: 3019509691567202569, guid: aaa471bd5e2014848a66917476671aed,
type: 3}

- target: {fileID: 3019509691567202569, guid: aaa471bd5e2014848a66917476671aed,
type: 3}
propertyPath: m_RootOrder
value: 8
value: 10
objectReference: {fileID: 0}
- target: {fileID: 3019509691567202569, guid: aaa471bd5e2014848a66917476671aed,
type: 3}

- target: {fileID: 2118285883905619878, guid: 6944ca02359f5427aa13c8551236a824,
type: 3}
propertyPath: m_RootOrder
value: 2
value: 4
objectReference: {fileID: 0}
- target: {fileID: 2118285883905619878, guid: 6944ca02359f5427aa13c8551236a824,
type: 3}

propertyPath: m_Name
value: Match3VectorObs
objectReference: {fileID: 0}
- target: {fileID: 2118285883905619929, guid: 6944ca02359f5427aa13c8551236a824,
type: 3}
propertyPath: m_IsActive
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2118285884327540673, guid: 6944ca02359f5427aa13c8551236a824,
type: 3}
propertyPath: m_IsActive
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2118285884327540680, guid: 6944ca02359f5427aa13c8551236a824,
type: 3}
propertyPath: UseVectorObservations
value: 1
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 6944ca02359f5427aa13c8551236a824, type: 3}
--- !u!1001 &8113351836286138288

- target: {fileID: 3019509691567202569, guid: aaa471bd5e2014848a66917476671aed,
type: 3}
propertyPath: m_LocalPosition.y
value: 10
value: 20
objectReference: {fileID: 0}
- target: {fileID: 3019509691567202569, guid: aaa471bd5e2014848a66917476671aed,
type: 3}

- target: {fileID: 3019509691567202569, guid: aaa471bd5e2014848a66917476671aed,
type: 3}
propertyPath: m_RootOrder
value: 6
value: 8
objectReference: {fileID: 0}
- target: {fileID: 3019509691567202569, guid: aaa471bd5e2014848a66917476671aed,
type: 3}

type: 3}
propertyPath: m_Name
value: Match3VisualObs
objectReference: {fileID: 0}
- target: {fileID: 3019509691567202678, guid: aaa471bd5e2014848a66917476671aed,
type: 3}
propertyPath: m_IsActive
value: 1
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: aaa471bd5e2014848a66917476671aed, type: 3}

113
Project/Assets/ML-Agents/Examples/Match3/Scripts/Match3Drawer.cs


using System.Collections.Generic;
using UnityEngine;
using Unity.MLAgents.Extensions.Match3;

static Color[] s_Colors = new[]
{
Color.red,
Color.green,
Color.blue,
Color.cyan,
Color.magenta,
Color.yellow,
Color.gray,
Color.black,
Color.red,
Color.green,
Color.blue,
Color.cyan,
Color.magenta,
Color.yellow,
Color.gray,
Color.black,
public Dictionary<(int, int), Match3TileSelector> tilesDict = new Dictionary<(int, int), Match3TileSelector>();
public float CubeSpacing = 1.25f;
public GameObject TilePrefab;
private bool m_Initialized;
private Match3Board m_Board;
void Awake()
{
if (!m_Initialized)
{
InitializeDict();
}
}
void InitializeDict()
{
m_Board = GetComponent<Match3Board>();
foreach (var item in tilesDict)
{
if (item.Value)
{
DestroyImmediate(item.Value.gameObject);
}
}
tilesDict.Clear();
for (var i = 0; i < m_Board.Rows; i++)
{
for (var j = 0; j < m_Board.Columns; j++)
{
var go = Instantiate(TilePrefab, transform.position, Quaternion.identity, transform);
go.name = $"r{i}_c{j}";
tilesDict.Add((i, j), go.GetComponent<Match3TileSelector>());
}
}
m_Initialized = true;
}
void Update()
{
if (!m_Board)
{
m_Board = GetComponent<Match3Board>();
}
if (!m_Initialized)
{
InitializeDict();
}
for (var i = 0; i < m_Board.Rows; i++)
{
for (var j = 0; j < m_Board.Columns; j++)
{
var value = m_Board.Cells != null ? m_Board.GetCellType(i, j) : Match3Board.k_EmptyCell;
var pos = new Vector3(j, i, 0);
pos *= CubeSpacing;
var specialType = m_Board.Cells != null ? m_Board.GetSpecialType(i, j) : 0;
tilesDict[(i, j)].transform.position = transform.TransformPoint(pos);
tilesDict[(i, j)].SetActiveTile(specialType, value);
}
}
}
// TODO replace Gizmos for drawing the game state with proper GameObjects and animations.
var cubeSpacing = .75f;
var matchedWireframeSize = .5f * (cubeSize + cubeSpacing);
var matchedWireframeSize = .5f * (cubeSize + CubeSpacing);
var board = GetComponent<Match3Board>();
if (board == null)
if (!m_Board)
return;
m_Board = GetComponent<Match3Board>();
for (var i = 0; i < board.Rows; i++)
for (var i = 0; i < m_Board.Rows; i++)
for (var j = 0; j < board.Columns; j++)
for (var j = 0; j < m_Board.Columns; j++)
var value = board.Cells != null ? board.GetCellType(i, j) : Match3Board.k_EmptyCell;
var value = m_Board.Cells != null ? m_Board.GetCellType(i, j) : Match3Board.k_EmptyCell;
if (value >= 0 && value < s_Colors.Length)
{
Gizmos.color = s_Colors[value];

}
var pos = new Vector3(j, i, 0);
pos *= cubeSpacing;
pos *= CubeSpacing;
var specialType = board.Cells != null ? board.GetSpecialType(i, j) : 0;
var specialType = m_Board.Cells != null ? m_Board.GetSpecialType(i, j) : 0;
if (specialType == 2)
{
Gizmos.DrawCube(transform.TransformPoint(pos), cubeSize * new Vector3(1f, .5f, .5f));

}
Gizmos.color = Color.yellow;
if (board.Matched != null && board.Matched[j, i])
if (m_Board.Matched != null && m_Board.Matched[j, i])
{
Gizmos.DrawWireCube(transform.TransformPoint(pos), matchedWireframeSize * Vector3.one);
}

// Draw valid moves
foreach (var move in board.AllMoves())
foreach (var move in m_Board.AllMoves())
{
if (DebugMoveIndex >= 0 && move.MoveIndex != DebugMoveIndex)
{

if (!board.IsMoveValid(move))
if (!m_Board.IsMoveValid(move))
var pos = new Vector3(move.Column, move.Row, 0) * cubeSpacing;
var otherPos = new Vector3(otherCol, otherRow, 0) * cubeSpacing;
var pos = new Vector3(move.Column, move.Row, 0) * CubeSpacing;
var otherPos = new Vector3(otherCol, otherRow, 0) * CubeSpacing;
var oneQuarter = Vector3.Lerp(pos, otherPos, .25f);
var threeQuarters = Vector3.Lerp(pos, otherPos, .75f);

5
Project/Assets/ML-Agents/Examples/SharedAssets/Materials/Purple.mat


Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Purple
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords: _GLOSSYREFLECTIONS_OFF _SPECULARHIGHLIGHTS_OFF

10
README.md


# Unity ML-Agents Toolkit
[![docs badge](https://img.shields.io/badge/docs-reference-blue.svg)](https://github.com/Unity-Technologies/ml-agents/tree/release_9_docs/docs/)
[![docs badge](https://img.shields.io/badge/docs-reference-blue.svg)](https://github.com/Unity-Technologies/ml-agents/tree/release_10_docs/docs/)
[![license badge](https://img.shields.io/badge/license-Apache--2.0-green.svg)](LICENSE)

## Releases & Documentation
**Our latest, stable release is `Release 9`. Click
[here](https://github.com/Unity-Technologies/ml-agents/tree/release_9_docs/docs/Readme.md)
**Our latest, stable release is `Release 10`. Click
[here](https://github.com/Unity-Technologies/ml-agents/tree/release_10_docs/docs/Readme.md)
to get started with the latest release of ML-Agents.**
The table below lists all our releases, including our `master` branch which is

| **Version** | **Release Date** | **Source** | **Documentation** | **Download** |
|:-------:|:------:|:-------------:|:-------:|:------------:|
| **master (unstable)** | -- | [source](https://github.com/Unity-Technologies/ml-agents/tree/master) | [docs](https://github.com/Unity-Technologies/ml-agents/tree/master/docs/Readme.md) | [download](https://github.com/Unity-Technologies/ml-agents/archive/master.zip) |
| **Release 9** | **November 4, 2020** | **[source](https://github.com/Unity-Technologies/ml-agents/tree/release_9)** | **[docs](https://github.com/Unity-Technologies/ml-agents/tree/release_9_docs/docs/Readme.md)** | **[download](https://github.com/Unity-Technologies/ml-agents/archive/release_9.zip)** |
| **Release 10** | **November 18, 2020** | **[source](https://github.com/Unity-Technologies/ml-agents/tree/release_10)** | **[docs](https://github.com/Unity-Technologies/ml-agents/tree/release_10_docs/docs/Readme.md)** | **[download](https://github.com/Unity-Technologies/ml-agents/archive/release_10.zip)** |
| **Release 9** | November 4, 2020 | [source](https://github.com/Unity-Technologies/ml-agents/tree/release_9) | [docs](https://github.com/Unity-Technologies/ml-agents/tree/release_9_docs/docs/Readme.md) | [download](https://github.com/Unity-Technologies/ml-agents/archive/release_9.zip) |
| **Release 3** | June 10, 2020 | [source](https://github.com/Unity-Technologies/ml-agents/tree/release_3) | [docs](https://github.com/Unity-Technologies/ml-agents/tree/release_3_docs/docs/Readme.md) | [download](https://github.com/Unity-Technologies/ml-agents/archive/release_3.zip) |
## Citation

2
com.unity.ml-agents.extensions/Documentation~/Grid-Sensor.md


An image can be thought of as a matrix of a predefined width (W) and a height (H) and each pixel can be thought of as simply an array of length 3 (in the case of RGB), `[Red, Green, Blue]` holding the different channel information of the color (channel) intensities at that pixel location. Thus an image is just a 3 dimensional matrix of size WxHx3. A Grid Observation can be thought of as a generalization of this setup where in place of a pixel there is a "cell" which is an array of length N representing different channel intensities at that cell position. From a Convolutional Neural Network point of view, the introduction of multiple channels in an "image" isn't a new concept. One such example is using an RGB-Depth image which is used in several robotics applications. The distinction of Grid Observations is what the data within the channels represents. Instead of limiting the channels to color intensities, the channels within a cell of a Grid Observation generalize to any data that can be represented by a single number (float or int).
Before jumping into the details of the Grid Sensor, an important thing to note is the agent performance and qualitatively different behavior over raycasts. Unity MLAgent's comes with a suite of example environments. One in particular, the [Food Collector](https://github.com/Unity-Technologies/ml-agents/blob/master/docs/Learning-Environment-Examples.md#food-collector), has been the focus of the Grid Sensor development.
Before jumping into the details of the Grid Sensor, an important thing to note is the agent performance and qualitatively different behavior over raycasts. Unity MLAgent's comes with a suite of example environments. One in particular, the [Food Collector](https://github.com/Unity-Technologies/ml-agents/tree/release_10_docs/docs/Learning-Environment-Examples.md#food-collector), has been the focus of the Grid Sensor development.
The Food Collector environment can be described as:
* Set-up: A multi-agent environment where agents compete to collect food.

45
com.unity.ml-agents.extensions/Documentation~/Match3.md


# Match-3 Game Support
# Match-3 with ML-Agents
<img src="images/match3.png" align="center" width="3000"/>
## Overview
One of the main feedback we get is to illustrate more real game examples using ML-Agents. We are excited to provide an example implementation of Match-3 using ML-Agents and additional utilities to integrate ML-Agents with Match-3 games.
Our aim is to enable Match-3 teams to leverage ML-Agents to create player agents to learn and play different Match-3 levels. This implementation is intended as a starting point and guide for teams to get started (as there are many nuances with Match-3 for training ML-Agents) and for us to iterate both on the C#, hyperparameters, and trainers to improve ML-Agents for Match-3.
This implementation includes:
* C# implementation catered toward a Match-3 setup including concepts around encoding for moves based on [Human Like Playtesting with Deep Learning](https://www.researchgate.net/publication/328307928_Human-Like_Playtesting_with_Deep_Learning)
* An example Match-3 scene with ML-Agents implemented (located under /Project/Assets/ML-Agents/Examples/Match3). More information, on Match-3 example [here](https://github.com/Unity-Technologies/ml-agents/tree/release_10_docs/docs/docs/Learning-Environment-Examples.md#match-3).
### Feedback
If you are a Match-3 developer and are trying to leverage ML-Agents for this scenario, [we want to hear from you](https://forms.gle/TBsB9jc8WshgzViU9). Additionally, we are also looking for interested Match-3 teams to speak with us for 45 minutes. If you are interested, please indicate that in the [form](https://forms.gle/TBsB9jc8WshgzViU9). If selected, we will provide gift cards as a token of appreciation.
### Interested in more game templates?
Do you have a type of game you are interested for ML-Agents? If so, please post a [forum issue](https://forum.unity.com/forums/ml-agents.453/) with [GAME TEMPLATE] in the title.
## Getting started
The C# code for Match-3 exists inside of the extensions package (com.unity.ml-agents.extensions). A good first step would be to familiarize with the extensions package by reading the document [here](com.unity.ml-agents.extensions.md). The second step would be to take a look at how we have implemented the C# code in the example Match-3 scene (located under /Project/Assets/ML-Agents/Examples/match3). Once you have some familiarity, then the next step would be to implement the C# code for Match-3 from the extensions package.
Additionally, see below for additional technical specifications on the C# code for Match-3. Please note the Match-3 game isn't human playable as implemented and can be only played via training.
We provide some utilities to integrate ML-Agents with Match-3 games.
## Technical specifications for Match-3 with ML-Agents
## AbstractBoard class
### AbstractBoard class
The `AbstractBoard` is the bridge between ML-Agents and your game. It allows ML-Agents to
* ask your game what the "color" of a cell is
* ask whether the cell is a "special" piece type or not

The AbstractBoard also tracks the number of rows, columns, and potential piece types that the board can have.
#### `public abstract int GetCellType(int row, int col)`
##### `public abstract int GetCellType(int row, int col)`
#### `public abstract int GetSpecialType(int row, int col)`
##### `public abstract int GetSpecialType(int row, int col)`
#### `public abstract bool IsMoveValid(Move m)`
##### `public abstract bool IsMoveValid(Move m)`
#### `public abstract bool MakeMove(Move m)`
##### `public abstract bool MakeMove(Move m)`
## Move struct
### Move struct
The Move struct encapsulates a swap of two adjacent cells. You can get the number of potential moves
for a board of a given size with. `Move.NumPotentialMoves(NumRows, NumColumns)`. There are two helper
functions to create a new `Move`:

a `Move` from a row, column, and direction (and board size).
## `Match3Sensor` and `Match3SensorComponent` classes
#### `Match3Sensor` and `Match3SensorComponent` classes
The `Match3Sensor` generates observations about the state using the `AbstractBoard` interface. You can
choose whether to use vector or "visual" observations; in theory, visual observations should perform
better because they are 2-dimensional like the board, but we need to experiment more on this.

## `Match3Actuator` and `Match3ActuatorComponent` classes
#### `Match3Actuator` and `Match3ActuatorComponent` classes
The `Match3Actuator` converts actions from training or inference into a `Move` that is sent to` AbstractBoard.MakeMove()`
It also checks `AbstractBoard.IsMoveValid` for each potential move and uses this to set the action mask for Agent.

# Setting up match-3 simulation
### Setting up Match-3 simulation
* Implement the `AbstractBoard` methods to integrate with your game.
* Give the `Agent` rewards when it does what you want it to (match multiple pieces in a row, clears pieces of a certain
type, etc).

8
com.unity.ml-agents.extensions/Documentation~/com.unity.ml-agents.extensions.md


recommended ways to install the package:
### Local Installation
[Clone the repository](../../docs/Installation.md#clone-the-ml-agents-toolkit-repository-optional) and follow the
[Local Installation for Development](../../docs/Installation.md#advanced-local-installation-for-development-1)
[Clone the repository](https://github.com/Unity-Technologies/ml-agents/tree/release_10_docs/docs/Installation.md#clone-the-ml-agents-toolkit-repository-optional) and follow the
[Local Installation for Development](https://github.com/Unity-Technologies/ml-agents/tree/release_10_docs/docs/Installation.md#advanced-local-installation-for-development-1)
![Package Manager git URL](../../docs/images/unity_package_manager_git_url.png)
![Package Manager git URL](https://github.com/Unity-Technologies/ml-agents/tree/release_10_docs/docs/images/unity_package_manager_git_url.png)
In the dialog that appears, enter
```
git+https://github.com/Unity-Technologies/ml-agents.git?path=com.unity.ml-agents.extensions

none
## Need Help?
The main [README](../../README.md) contains links for contacting the team or getting support.
The main [README](https://github.com/Unity-Technologies/ml-agents/tree/release_10_docs/README.md) contains links for contacting the team or getting support.

2
com.unity.ml-agents.extensions/package.json


"unity": "2018.4",
"description": "A source-only package for new features based on ML-Agents",
"dependencies": {
"com.unity.ml-agents": "1.5.0-preview"
"com.unity.ml-agents": "1.6.0-preview"
}
}

21
com.unity.ml-agents/CHANGELOG.md


## [Unreleased]
### Major Changes
#### com.unity.ml-agents (C#)
#### ml-agents / ml-agents-envs / gym-unity (Python)
### Minor Changes
#### com.unity.ml-agents / com.unity.ml-agents.extensions (C#)
#### ml-agents / ml-agents-envs / gym-unity (Python)
### Bug Fixes
#### com.unity.ml-agents (C#)
#### ml-agents / ml-agents-envs / gym-unity (Python)
## [1.6.0-preview] - 2020-11-18
### Major Changes
#### com.unity.ml-agents (C#)
#### ml-agents / ml-agents-envs / gym-unity (Python)

adding `framework: tensorflow` in the configuration YAML. (#4517)
### Minor Changes
#### com.unity.ml-agents (C#)
#### com.unity.ml-agents / com.unity.ml-agents.extensions (C#)
- Utilities were added to `com.unity.ml-agents.extensions` to make it easier to
integrate with match-3 games. See the [readme](https://github.com/Unity-Technologies/ml-agents/blob/master/com.unity.ml-agents.extensions/Documentation~/Match3.md)
for more details. (#4515)
#### ml-agents / ml-agents-envs / gym-unity (Python)
- The `action_probs` node is no longer listed as an output in TensorFlow models (#4613).

Previously, this would result in an infinite loop and cause the editor to hang. (#4573)
#### ml-agents / ml-agents-envs / gym-unity (Python)
- Fixed an issue where runs could not be resumed when using TensorFlow and Ghost Training. (#4593)
- Change the tensor type of step count from int32 to int64 to address the overflow issue when step
goes larger than 2^31. Previous Tensorflow checkpoints will become incompatible and cannot be loaded. (#4607)
- Remove extra period after "Training" in console log. (#4674)
## [1.5.0-preview] - 2020-10-14

10
com.unity.ml-agents/CONTRIBUTING.md


## Environments
We are also actively open to adding community contributed environments as
examples, as long as they are small, simple, demonstrate a unique feature of the
platform, and provide a unique non-trivial challenge to modern machine learning
algorithms. Feel free to submit these environments with a PR explaining the
nature of the environment and task.
We are currently not accepting environment contributions directly into ML-Agents.
However, we believe community created enviornments have a lot of value to the
community. If you have an interesting enviornment and are willing to share,
feel free to showcase it and share any relevant files in the
[ML-Agents forum](https://forum.unity.com/forums/ml-agents.453/).
## Continuous Integration (CI)

2
com.unity.ml-agents/Documentation~/com.unity.ml-agents.md


[unity ML-Agents Toolkit]: https://github.com/Unity-Technologies/ml-agents
[unity inference engine]: https://docs.unity3d.com/Packages/com.unity.barracuda@latest/index.html
[package manager documentation]: https://docs.unity3d.com/Manual/upm-ui-install.html
[installation instructions]: https://github.com/Unity-Technologies/ml-agents/blob/release_9_docs/docs/Installation.md
[installation instructions]: https://github.com/Unity-Technologies/ml-agents/blob/release_10_docs/docs/Installation.md
[github repository]: https://github.com/Unity-Technologies/ml-agents
[python package]: https://github.com/Unity-Technologies/ml-agents
[execution order of event functions]: https://docs.unity3d.com/Manual/ExecutionOrder.html

6
com.unity.ml-agents/Runtime/Academy.cs


* API. For more information on each of these entities, in addition to how to
* set-up a learning environment and train the behavior of characters in a
* Unity scene, please browse our documentation pages on GitHub:
* https://github.com/Unity-Technologies/ml-agents/tree/release_9_docs/docs/
* https://github.com/Unity-Technologies/ml-agents/tree/release_10_docs/docs/
*/
namespace Unity.MLAgents

/// fall back to inference or heuristic decisions. (You can also set agents to always use
/// inference or heuristics.)
/// </remarks>
[HelpURL("https://github.com/Unity-Technologies/ml-agents/tree/release_9_docs/" +
[HelpURL("https://github.com/Unity-Technologies/ml-agents/tree/release_10_docs/" +
"docs/Learning-Environment-Design.md")]
public class Academy : IDisposable
{

/// Unity package version of com.unity.ml-agents.
/// This must match the version string in package.json and is checked in a unit test.
/// </summary>
internal const string k_PackageVersion = "1.5.0-preview";
internal const string k_PackageVersion = "1.6.0-preview";
const int k_EditorTrainingPort = 5004;

2
com.unity.ml-agents/Runtime/Actuators/IActionReceiver.cs


///
/// See [Agents - Actions] for more information on masking actions.
///
/// [Agents - Actions]: https://github.com/Unity-Technologies/ml-agents/blob/release_9_docs/docs/Learning-Environment-Design-Agents.md#actions
/// [Agents - Actions]: https://github.com/Unity-Technologies/ml-agents/blob/release_10_docs/docs/Learning-Environment-Design-Agents.md#actions
/// </remarks>
/// <seealso cref="IActionReceiver.OnActionReceived"/>
void WriteDiscreteActionMask(IDiscreteActionMask actionMask);

2
com.unity.ml-agents/Runtime/Actuators/IDiscreteActionMask.cs


///
/// See [Agents - Actions] for more information on masking actions.
///
/// [Agents - Actions]: https://github.com/Unity-Technologies/ml-agents/blob/release_9_docs/docs/Learning-Environment-Design-Agents.md#actions
/// [Agents - Actions]: https://github.com/Unity-Technologies/ml-agents/blob/release_10_docs/docs/Learning-Environment-Design-Agents.md#actions
/// </remarks>
/// <param name="branch">The branch for which the actions will be masked.</param>
/// <param name="actionIndices">The indices of the masked actions.</param>

45
com.unity.ml-agents/Runtime/Agent.cs


/// * <see cref="BehaviorType.InferenceOnly"/>: decisions are always made using the trained
/// model specified in the <see cref="BehaviorParameters"/> component.
/// * <see cref="BehaviorType.HeuristicOnly"/>: when a decision is needed, the agent's
/// <see cref="Heuristic"/> function is called. Your implementation is responsible for
/// <see cref="Heuristic(in ActionBuffers)"/> function is called. Your implementation is responsible for
/// providing the appropriate action.
///
/// To trigger an agent decision automatically, you can attach a <see cref="DecisionRequester"/>

/// can only take an action when it touches the ground, so several frames might elapse between
/// one decision and the need for the next.
///
/// Use the <see cref="OnActionReceived(float[])"/> function to implement the actions your agent can take,
/// Use the <see cref="OnActionReceived(ActionBuffers)"/> function to implement the actions your agent can take,
/// such as moving to reach a goal or interacting with its environment.
///
/// When you call <see cref="EndEpisode"/> on an agent or the agent reaches its <see cref="MaxStep"/> count,

/// only use the [MonoBehaviour.Update] function for cosmetic purposes. If you override the [MonoBehaviour]
/// methods, [OnEnable()] or [OnDisable()], always call the base Agent class implementations.
///
/// You can implement the <see cref="Heuristic"/> function to specify agent actions using
/// You can implement the <see cref="Heuristic(in ActionBuffers)"/> function to specify agent actions using
/// your own heuristic algorithm. Implementing a heuristic function can be useful
/// for debugging. For example, you can use keyboard input to select agent actions in
/// order to manually control an agent's behavior.

/// [OnDisable()]: https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnDisable.html]
/// [OnBeforeSerialize()]: https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnBeforeSerialize.html
/// [OnAfterSerialize()]: https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnAfterSerialize.html
/// [Agents]: https://github.com/Unity-Technologies/ml-agents/blob/release_9_docs/docs/Learning-Environment-Design-Agents.md
/// [Reinforcement Learning in Unity]: https://github.com/Unity-Technologies/ml-agents/blob/release_9_docs/docs/Learning-Environment-Design.md
/// [Agents]: https://github.com/Unity-Technologies/ml-agents/blob/release_10_docs/docs/Learning-Environment-Design-Agents.md
/// [Reinforcement Learning in Unity]: https://github.com/Unity-Technologies/ml-agents/blob/release_10_docs/docs/Learning-Environment-Design.md
/// [Unity ML-Agents Toolkit manual]: https://github.com/Unity-Technologies/ml-agents/blob/release_9_docs/docs/Readme.md
/// [Unity ML-Agents Toolkit manual]: https://github.com/Unity-Technologies/ml-agents/blob/release_10_docs/docs/Readme.md
[HelpURL("https://github.com/Unity-Technologies/ml-agents/blob/release_9_docs/" +
[HelpURL("https://github.com/Unity-Technologies/ml-agents/blob/release_10_docs/" +
"docs/Learning-Environment-Design-Agents.md")]
[Serializable]
[RequireComponent(typeof(BehaviorParameters))]

/// <summary>
/// VectorActuator which is used by default if no other sensors exist on this Agent. This VectorSensor will
/// delegate its actions to <see cref="OnActionReceived(float[])"/> by default in order to keep backward compatibility
/// delegate its actions to <see cref="OnActionReceived(ActionBuffers)"/> by default in order to keep backward compatibility
/// with the current behavior of Agent.
/// </summary>
IActuator m_VectorActuator;

/// Use <see cref="AddReward(float)"/> to incrementally change the reward rather than
/// overriding it.
///
/// Typically, you assign rewards in the Agent subclass's <see cref="OnActionReceived(float[])"/>
/// Typically, you assign rewards in the Agent subclass's <see cref="OnActionReceived(ActionBuffers)"/>
/// implementation after carrying out the received action and evaluating its success.
///
/// Rewards are used during reinforcement learning; they are ignored during inference.

/// Imitation Learning (GAIL) with rewards supplied through this method.
///
/// [Agents - Rewards]: https://github.com/Unity-Technologies/ml-agents/blob/release_9_docs/docs/Learning-Environment-Design-Agents.md#rewards
/// [Reward Signals]: https://github.com/Unity-Technologies/ml-agents/blob/release_9_docs/docs/ML-Agents-Overview.md#a-quick-note-on-reward-signals
/// [Agents - Rewards]: https://github.com/Unity-Technologies/ml-agents/blob/release_10_docs/docs/Learning-Environment-Design-Agents.md#rewards
/// [Reward Signals]: https://github.com/Unity-Technologies/ml-agents/blob/release_10_docs/docs/ML-Agents-Overview.md#a-quick-note-on-reward-signals
/// </remarks>
/// <param name="reward">The new value of the reward.</param>
public void SetReward(float reward)