浏览代码

[cherry-pick][docs] Add Dungeon Escape Environment (#5133)

* Add DungeonEscape POCA Environment (#5128)

* Add DungeonEscape assets from working branch

* Add Dungeon Escape docs

* Create dungeon_escape.png

* Add to docs

Co-authored-by: Hunter-Unity <hunter@unity3d.com>
/release_15_branch
GitHub 4 年前
当前提交
f7ab0cb0
共有 45 个文件被更改,包括 7228 次插入3 次删除
  1. 2
      com.unity.ml-agents/CHANGELOG.md
  2. 9
      docs/Learning-Environment-Design-Agents.md
  3. 22
      docs/Learning-Environment-Examples.md
  4. 8
      Project/Assets/ML-Agents/Examples/DungeonEscape.meta
  5. 77
      Project/Assets/ML-Agents/Examples/SharedAssets/Materials/Brown.mat
  6. 8
      Project/Assets/ML-Agents/Examples/SharedAssets/Materials/Brown.mat.meta
  7. 77
      Project/Assets/ML-Agents/Examples/SharedAssets/Materials/Door.mat
  8. 8
      Project/Assets/ML-Agents/Examples/SharedAssets/Materials/Door.mat.meta
  9. 143
      Project/Assets/ML-Agents/Examples/SharedAssets/Scripts/CollisionCallbacks.cs
  10. 11
      Project/Assets/ML-Agents/Examples/SharedAssets/Scripts/CollisionCallbacks.cs.meta
  11. 26
      config/poca/DungeonEscape.yaml
  12. 1001
      docs/images/dungeon_escape.png
  13. 8
      Project/Assets/ML-Agents/Examples/DungeonEscape/Meshes.meta
  14. 43
      Project/Assets/ML-Agents/Examples/DungeonEscape/Meshes/Cave.fbx
  15. 103
      Project/Assets/ML-Agents/Examples/DungeonEscape/Meshes/Cave.fbx.meta
  16. 58
      Project/Assets/ML-Agents/Examples/DungeonEscape/Meshes/Door.fbx
  17. 107
      Project/Assets/ML-Agents/Examples/DungeonEscape/Meshes/Door.fbx.meta
  18. 8
      Project/Assets/ML-Agents/Examples/DungeonEscape/Prefabs.meta
  19. 379
      Project/Assets/ML-Agents/Examples/DungeonEscape/Prefabs/Column.prefab
  20. 7
      Project/Assets/ML-Agents/Examples/DungeonEscape/Prefabs/Column.prefab.meta
  21. 1001
      Project/Assets/ML-Agents/Examples/DungeonEscape/Prefabs/DungeonEscapeAgent.prefab
  22. 7
      Project/Assets/ML-Agents/Examples/DungeonEscape/Prefabs/DungeonEscapeAgent.prefab.meta
  23. 1001
      Project/Assets/ML-Agents/Examples/DungeonEscape/Prefabs/DungeonEscapePlatform.prefab
  24. 7
      Project/Assets/ML-Agents/Examples/DungeonEscape/Prefabs/DungeonEscapePlatform.prefab.meta
  25. 578
      Project/Assets/ML-Agents/Examples/DungeonEscape/Prefabs/Sword.prefab
  26. 7
      Project/Assets/ML-Agents/Examples/DungeonEscape/Prefabs/Sword.prefab.meta
  27. 8
      Project/Assets/ML-Agents/Examples/DungeonEscape/Scenes.meta
  28. 1001
      Project/Assets/ML-Agents/Examples/DungeonEscape/Scenes/DungeonEscape.unity
  29. 9
      Project/Assets/ML-Agents/Examples/DungeonEscape/Scenes/DungeonEscape.unity.meta
  30. 8
      Project/Assets/ML-Agents/Examples/DungeonEscape/Scripts.meta
  31. 260
      Project/Assets/ML-Agents/Examples/DungeonEscape/Scripts/DungeonEscapeEnvController.cs
  32. 11
      Project/Assets/ML-Agents/Examples/DungeonEscape/Scripts/DungeonEscapeEnvController.cs.meta
  33. 137
      Project/Assets/ML-Agents/Examples/DungeonEscape/Scripts/PushAgentEscape.cs
  34. 12
      Project/Assets/ML-Agents/Examples/DungeonEscape/Scripts/PushAgentEscape.cs.meta
  35. 45
      Project/Assets/ML-Agents/Examples/DungeonEscape/Scripts/SimpleNPC.cs
  36. 11
      Project/Assets/ML-Agents/Examples/DungeonEscape/Scripts/SimpleNPC.cs.meta
  37. 8
      Project/Assets/ML-Agents/Examples/DungeonEscape/TFModels.meta
  38. 1001
      Project/Assets/ML-Agents/Examples/DungeonEscape/TFModels/DungeonEscape.onnx
  39. 14
      Project/Assets/ML-Agents/Examples/DungeonEscape/TFModels/DungeonEscape.onnx.meta

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


#### com.unity.ml-agents (C#)
- The `BufferSensor` and `BufferSensorComponent` have been added. They allow the Agent to observe variable number of entities. For an example, see the [Sorter environment](https://github.com/Unity-Technologies/ml-agents/blob/release_15_docs/docs/Learning-Environment-Examples.md#sorter). (#4909)
- The `SimpleMultiAgentGroup` class and `IMultiAgentGroup` interface have been added. These allow Agents to be given rewards and
end episodes in groups. For an example, see the [Cooperative Push Block](https://github.com/Unity-Technologies/ml-agents/blob/release_15_docs/docs/Learning-Environment-Examples.md#cooperative-push-block) and [Soccer](https://github.com/Unity-Technologies/ml-agents/blob/release_15_docs/docs/Learning-Environment-Examples.md#soccer-twos) environments. (#4923)
end episodes in groups. For examples, see the [Cooperative Push Block](https://github.com/Unity-Technologies/ml-agents/blob/release_15_docs/docs/Learning-Environment-Examples.md#cooperative-push-block), [Dungeon Escape](https://github.com/Unity-Technologies/ml-agents/blob/release_15_docs/docs/Learning-Environment-Examples.md#dungeon-escape) and [Soccer](https://github.com/Unity-Technologies/ml-agents/blob/release_15_docs/docs/Learning-Environment-Examples.md#soccer-twos) environments. (#4923)
#### ml-agents / ml-agents-envs / gym-unity (Python)
- The MA-POCA trainer has been added. This is a new trainer that enables Agents to learn how to work together in groups. Configure
`poca` as the trainer in the configuration YAML after instantiating a `SimpleMultiAgentGroup` to use this feature. (#5005)

9
docs/Learning-Environment-Design-Agents.md


- [Agent Properties](#agent-properties)
- [Destroying an Agent](#destroying-an-agent)
- [Defining Multi-agent Scenarios](#defining-multi-agent-scenarios)
-[Teams for Adversarial Scenarios](#teams-for-adversarial-scenarios)
-[Groups for Cooperative Scenarios](#groups-for-cooperative-scenarios)
- [Teams for Adversarial Scenarios](#teams-for-adversarial-scenarios)
- [Groups for Cooperative Scenarios](#groups-for-cooperative-scenarios)
- [Recording Demonstrations](#recording-demonstrations)
An agent is an entity that can observe its environment, decide on the best

configuring MA-POCA. When using MA-POCA, agents which are deactivated or removed from the Scene
during the episode will still learn to contribute to the group's long term rewards, even
if they are not active in the scene to experience them.
See the [Cooperative Push Block](Learning-Environment-Examples.md#cooperative-push-block) environment
for an example of how to use Multi Agent Groups, and the
[Dungeon Escape](Learning-Environment-Examples.md#dungeon-escape) environment for an example of
how the Multi Agent Group can be used with agents that are removed from the scene mid-episode.
**NOTE**: Groups differ from Teams (for competitive settings) in the following way - Agents
working together should be added to the same Group, while agents playing against each other

22
docs/Learning-Environment-Examples.md


and counterclockwise, move along four different face directions, or do nothing.
- Float Properties: None
- Benchmark Mean Reward: 11 (Group Reward)
## Dungeon Escape
![DungeonEscape](images/dungeon_escape.png)
- Set-up: Agents are trapped in a dungeon with a dragon, and must work together to escape.
To retrieve the key, one of the agents must find and slay the dragon, sacrificing itself
to do so. The dragon will drop a key for the others to use. The other agents can then pick
up this key and unlock the dungeon door. If the agents take too long, the dragon will escape
through a portal and the environment resets.
- Goal: Unlock the dungeon door and leave.
- Agents: The environment contains three Agents in a Multi Agent Group and one Dragon, which
moves in a predetermined pattern.
- Agent Reward Function:
- +1 group reward if any agent successfully unlocks the door and leaves the dungeon.
- Behavior Parameters:
- Observation space: A Ray Perception Sensor with separate tags for the walls, other agents,
the door, key, the dragon, and the dragon's portal. A single Vector Observation which indicates
whether the agent is holding a key.
- Actions: 1 discrete action branch with 7 actions, corresponding to turn clockwise
and counterclockwise, move along four different face directions, or do nothing.
- Float Properties: None
- Benchmark Mean Reward: 1.0 (Group Reward)

8
Project/Assets/ML-Agents/Examples/DungeonEscape.meta


fileFormatVersion: 2
guid: 9ee1af8bad0b14bfcb4eb70491929ffa
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

77
Project/Assets/ML-Agents/Examples/SharedAssets/Materials/Brown.mat


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Brown
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords: _GLOSSYREFLECTIONS_OFF _SPECULARHIGHLIGHTS_OFF
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0
- _GlossyReflections: 0
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 0
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 0.294, g: 0.294, b: 0.294, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}

8
Project/Assets/ML-Agents/Examples/SharedAssets/Materials/Brown.mat.meta


fileFormatVersion: 2
guid: 16fb7514bd09f43f8ae773b97bf3819d
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:

77
Project/Assets/ML-Agents/Examples/SharedAssets/Materials/Door.mat


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Door
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 0.2830189, g: 0.22119384, b: 0.16153437, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}

8
Project/Assets/ML-Agents/Examples/SharedAssets/Materials/Door.mat.meta


fileFormatVersion: 2
guid: daf629e39cc0f4521b64c93cd9604da9
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:

143
Project/Assets/ML-Agents/Examples/SharedAssets/Scripts/CollisionCallbacks.cs


using UnityEngine;
using Random = UnityEngine.Random;
using Unity.MLAgents;
using UnityEngine.Events;
namespace Unity.MLAgentsExamples
{
/// <summary>
/// Utility class to allow target placement and collision detection with an agent
/// Add this script to the target you want the agent to touch.
/// Callbacks will be triggered any time the target is touched with a collider tagged as 'tagToDetect'
/// </summary>
public class CollisionCallbacks : MonoBehaviour
{
// [System.Serializable] public class BoolEvent : UnityEvent<bool> { }
// [SerializeField] BoolEvent boolEvent = new BoolEvent();
// public void OnBoolEvent(bool value)
// {
// Debug.Log($"OnBoolEvent {value}");
// }
[Header("Collider Tag To Detect")]
public string tagToDetect = "agent"; //collider tag to detect
// [Header("Target Placement")]
// public float spawnRadius; //The radius in which a target can be randomly spawned.
// public bool respawnIfTouched; //Should the target respawn to a different position when touched
//
// [Header("Target Fell Protection")]
// public bool respawnIfFallsOffPlatform = true; //If the target falls off the platform, reset the position.
// public float fallDistance = 5; //distance below the starting height that will trigger a respawn
//
//
// private Vector3 m_startingPos; //the starting position of the target
// private Agent m_agentTouching; //the agent currently touching the target
[System.Serializable]
// public class TriggerEvent : UnityEvent<string>
public class TriggerEvent : UnityEvent<Collider>
{
}
[Header("Trigger Callbacks")]
public TriggerEvent onTriggerEnterEvent = new TriggerEvent();
public TriggerEvent onTriggerStayEvent = new TriggerEvent();
public TriggerEvent onTriggerExitEvent = new TriggerEvent();
[System.Serializable]
public class CollisionEvent : UnityEvent<Collision, Transform>
{
}
[Header("Collision Callbacks")]
public CollisionEvent onCollisionEnterEvent = new CollisionEvent();
public CollisionEvent onCollisionStayEvent = new CollisionEvent();
public CollisionEvent onCollisionExitEvent = new CollisionEvent();
// // Start is called before the first frame update
// void OnEnable()
// {
// m_startingPos = transform.position;
// if (respawnIfTouched)
// {
// MoveTargetToRandomPosition();
// }
// }
// void Update()
// {
// if (respawnIfFallsOffPlatform)
// {
// if (transform.position.y < m_startingPos.y - fallDistance)
// {
// Debug.Log($"{transform.name} Fell Off Platform");
// MoveTargetToRandomPosition();
// }
// }
// }
// /// <summary>
// /// Moves target to a random position within specified radius.
// /// </summary>
// public void MoveTargetToRandomPosition()
// {
// var newTargetPos = m_startingPos + (Random.insideUnitSphere * spawnRadius);
// newTargetPos.y = m_startingPos.y;
// transform.position = newTargetPos;
// }
private void OnCollisionEnter(Collision col)
{
if (col.transform.CompareTag(tagToDetect))
{
onCollisionEnterEvent.Invoke(col, transform);
// if (respawnIfTouched)
// {
// MoveTargetToRandomPosition();
// }
}
}
private void OnCollisionStay(Collision col)
{
if (col.transform.CompareTag(tagToDetect))
{
onCollisionStayEvent.Invoke(col, transform);
}
}
private void OnCollisionExit(Collision col)
{
if (col.transform.CompareTag(tagToDetect))
{
onCollisionExitEvent.Invoke(col, transform);
}
}
private void OnTriggerEnter(Collider col)
{
if (col.CompareTag(tagToDetect))
{
onTriggerEnterEvent.Invoke(col);
}
}
private void OnTriggerStay(Collider col)
{
if (col.CompareTag(tagToDetect))
{
onTriggerStayEvent.Invoke(col);
}
}
private void OnTriggerExit(Collider col)
{
if (col.CompareTag(tagToDetect))
{
onTriggerExitEvent.Invoke(col);
}
}
}
}

11
Project/Assets/ML-Agents/Examples/SharedAssets/Scripts/CollisionCallbacks.cs.meta


fileFormatVersion: 2
guid: df05ec10e50114a9d92106879d04d89d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

26
config/poca/DungeonEscape.yaml


behaviors:
DungeonEscape:
trainer_type: poca
hyperparameters:
batch_size: 1024
buffer_size: 10240
learning_rate: 0.0003
beta: 0.01
epsilon: 0.2
lambd: 0.95
num_epoch: 3
learning_rate_schedule: constant
network_settings:
normalize: false
hidden_units: 256
num_layers: 2
vis_encode_type: simple
reward_signals:
extrinsic:
gamma: 0.99
strength: 1.0
keep_checkpoints: 5
max_steps: 20000000
time_horizon: 64
summary_freq: 60000
threaded: true

1001
docs/images/dungeon_escape.png
文件差异内容过多而无法显示
查看文件

8
Project/Assets/ML-Agents/Examples/DungeonEscape/Meshes.meta


fileFormatVersion: 2
guid: 52cc95bb0ae204a03b020b5e25025f92
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

43
Project/Assets/ML-Agents/Examples/DungeonEscape/Meshes/Cave.fbx


Kaydara FBX Binary �MFBXHeaderExtension\FBXHeaderVersionI�x
FBXVersionI��EncryptionTypeI�CreationTimeStamp�VersionI��YearI��MonthIDayI 'HourI?MinuteI9WSecondIt MillisecondI��.CreatorS)Blender (stable FBX IO) - 2.91.0 - 4.21.3@' SceneInfoSGlobalInfoSceneInfoSUserData TypeSUserData7VersionIdMetaDataeVersionId|TitleS�SubjectS�AuthorS�KeywordsS�RevisionS�CommentS3 Properties70g9PS DocumentUrlSKStringSUrlSS /foobar.fbx�<PSSrcDocumentUrlSKStringSUrlSS /foobar.fbx�$PSOriginalSCompoundSS=LPSOriginal|ApplicationVendorSKStringSSSBlender Foundation�OPSOriginal|ApplicationNameSKStringSSSBlender (stable FBX IO)�APSOriginal|ApplicationVersionSKStringSSS2.91.0DMPSOriginal|DateTime_GMTSDateTimeSSS01/01/1970 00:00:00.000�<PSOriginal|FileNameSKStringSSS /foobar.fbx�%PS LastSavedSCompoundSSMPSLastSaved|ApplicationVendorSKStringSSSBlender FoundationzPPSLastSaved|ApplicationNameSKStringSSSBlender (stable FBX IO)�BPSLastSaved|ApplicationVersionSKStringSSS2.91.0&NPSLastSaved|DateTime_GMTSDateTimeSSS01/01/1970 00:00:00.000uFileIdR(�*��$�¿Ȱ*�+��� CreationTimeS1970-01-01 10:00:00:000�.CreatorS)Blender (stable FBX IO) - 2.91.0 - 4.21.3j GlobalSettings VersionI�] Properties70p)PSUpAxisSintSIntegerSI�-PS
UpAxisSignSintSIntegerSI�,PS FrontAxisSintSIntegerSI# 0PS FrontAxisSignSintSIntegerSI] ,PS CoordAxisSintSIntegerSI� 0PS CoordAxisSignSintSIntegerSI� 1PSOriginalUpAxisSintSIntegerSI����
5PSOriginalUpAxisSignSintSIntegerSIc
8PSUnitScaleFactorSdoubleSNumberSDY@�
@PSOriginalUnitScaleFactorSdoubleSNumberSDY@ HPS AmbientColorSColorRGBSColorSDDDV APS DefaultCameraSKStringSSSProducer Perspective� %PSTimeModeSenumSSI � 3PS TimeSpanStartSKTimeSTimeSL
2PS TimeSpanStopSKTimeSTimeSL����
P 8PSCustomFrameRateSdoubleSNumberSD8@� Documents� CountI� DocumentLr�zSSceneSScened Properties70 &PS SourceObjectSobjectSSW 3PSActiveAnimStackNameSKStringSSS�  RootNodeL�
References�+ Definitions� VersionIdCountIV
ObjectTypeSGlobalSettingsICountI�
ObjectTypeSGeometry�CountI� PropertyTemplateSFbxMesh� Properties70"APSColorSColorRGBSColorSD�������?D�������?D�������?tDPSBBoxMinSVector3DSVectorSDDD�DPSBBoxMaxSVector3DSVectorSDDD/PSPrimary VisibilitySboolSSI;*PS Casts ShadowsSboolSSIu,PSReceive ShadowsSboolSSI?$
ObjectTypeSModel�CountI2$ PropertyTemplateSFbxNode%$ Properties70V2PSQuaternionInterpolateSenumSSI�KPSRotationOffsetSVector3DSVectorSDDDJPS RotationPivotSVector3DSVectorSDDD_JPS ScalingOffsetSVector3DSVectorSDDD�IPS ScalingPivotSVector3DSVectorSDDD�.PSTranslationActiveSboolSSIKKPSTranslationMinSVector3DSVectorSDDD�KPSTranslationMaxSVector3DSVectorSDDD�,PSTranslationMinXSboolSSI,PSTranslationMinYSboolSSIR,PSTranslationMinZSboolSSI�,PSTranslationMaxXSboolSSI�,PSTranslationMaxYSboolSSI,PSTranslationMaxZSboolSSI8*PS RotationOrderSenumSSI|6PSRotationSpaceForLimitOnlySboolSSI�;PSRotationStiffnessXSdoubleSNumberSD;PSRotationStiffnessYSdoubleSNumberSDW;PSRotationStiffnessZSdoubleSNumberSD�0PSAxisLenSdoubleSNumberSD$@�HPS PreRotationSVector3DSVectorSDDDBIPS PostRotationSVector3DSVectorSDDD{+PSRotationActiveSboolSSI�HPS RotationMinSVector3DSVectorSDDD'HPS RotationMaxSVector3DSVectorSDDD^)PS RotationMinXSboolSSI�)PS RotationMinYSboolSSI�)PS RotationMinZSboolSSI)PS RotationMaxXSboolSSI:)PS RotationMaxYSboolSSIq)PS RotationMaxZSboolSSI�(PS InheritTypeSenumSSI�*PS ScalingActiveSboolSSI4GPS
ScalingMinSVector3DSVectorSDDD�GPS
ScalingMaxSVector3DSVectorSD�?D�?D�?�(PS ScalingMinXSboolSSI�(PS ScalingMinYSboolSSI+(PS ScalingMinZSboolSSIa(PS ScalingMaxXSboolSSI�(PS ScalingMaxYSboolSSI�(PS ScalingMaxZSboolSSI,QPSGeometricTranslationSVector3DSVectorSDDD�NPSGeometricRotationSVector3DSVectorSDDD�MPSGeometricScalingSVector3DSVectorSD�?D�?D�?'6PS MinDampRangeXSdoubleSNumberSDk6PS MinDampRangeYSdoubleSNumberSD�6PS MinDampRangeZSdoubleSNumberSD�6PS MaxDampRangeXSdoubleSNumberSD76PS MaxDampRangeYSdoubleSNumberSD{6PS MaxDampRangeZSdoubleSNumberSD�9PSMinDampStrengthXSdoubleSNumberSD 9PSMinDampStrengthYSdoubleSNumberSDP9PSMinDampStrengthZSdoubleSNumberSD�9PSMaxDampStrengthXSdoubleSNumberSD�9PSMaxDampStrengthYSdoubleSNumberSD% 9PSMaxDampStrengthZSdoubleSNumberSDj 7PSPreferedAngleXSdoubleSNumberSD� 7PSPreferedAngleYSdoubleSNumberSD� 7PSPreferedAngleZSdoubleSNumberSD*!(PSLookAtPropertySobjectSSb!*PSUpVectorPropertySobjectSS�!!PSShowSboolSSI�!8PSNegativePercentShapeSupportSboolSSI"8PSDefaultAttributeIndexSintSIntegerSI����N"#PSFreezeSboolSSI"#PSLODBoxSboolSSI�"NPSLcl TranslationSLcl TranslationSSADDD1#HPS Lcl RotationS Lcl RotationSSADDD�#FPS Lcl ScalingS Lcl ScalingSSAD�?D�?D�?�#2PS
VisibilityS
VisibilitySSAD�?$EPSVisibility InheritanceSVisibility InheritanceSSI�+
ObjectTypeSMaterialz$CountI�+PropertyTemplateSFbxSurfacePhong�+ Properties70%1PS ShadingModelSKStringSSSPhong8%'PS
MultiLayerSboolSSI�%BPS EmissiveColorSColorSSADDD�%2PSEmissiveFactorSNumberSSAD�?&APS AmbientColorSColorSSAD�������?D�������?D�������?V&1PS AmbientFactorSNumberSSAD�?�&APS DiffuseColorSColorSSAD�������?D�������?D�������?�&1PS DiffuseFactorSNumberSSAD�?7'EPSTransparentColorSColorSSADDD{'6PSTransparencyFactorSNumberSSAD�'+PSOpacitySNumberSSAD�?(FPS NormalMapSVector3DSVectorSDDDW(APSBumpSVector3DSVectorSDDD�(3PS
BumpFactorSdoubleSNumberSD�?�(MPSDisplacementColorSColorRGBSColorSDDD<);PSDisplacementFactorSdoubleSNumberSD�?�)SPSVectorDisplacementColorSColorRGBSColorSDDD�)APSVectorDisplacementFactorSdoubleSNumberSD�?<*BPS SpecularColorSColorSSAD�������?D�������?D�������?|*2PSSpecularFactorSNumberSSAD�?�*-PS ShininessSNumberSSAD4@�*5PSShininessExponentSNumberSSAD4@L+DPSReflectionColorSColorSSADDD�+4PSReflectionFactorSNumberSSAD�?�KObjects
?.GeometryL?IbSRoundcube.014GeometrySMesh?, Properties70`,GeometryVersionI|^0�Verticesd��x%TkLTG�ce�Ri�zh$ђ��܁ҪU�J�T��`ӪQ�i��ʐ"m�3m7����a565��s��HĂ�,,t)8��*�"�n�ƾ�|������y|��0Ɯ��C6K���]nuG��h�}�x+��٪��![��ʒ=���������A;��LV�P��yD����s���ձ(�"��A��5ww���I��V��f���s"��7�x���^�u]��{`:�Ҿ>M�Uvw���7�c��~9��K���9�:x��)��Yʙ��o��{���{�-��x�~{�l��e�8��^"�Ⰾ�7���N���h�#��}J[�`ח> �B��.aYa��9: �X�������%���ȯ��f�?w�Xs�F�ܺ��e�S�wF�ىW�'�)t�?�~%[����W��뗉g�S���y�M�jIV%��f_#��껁o}�m'mVV�:T���˙[b�kO��rd �Sc��;���A=���!��f.����ye�q詆��˽M)�1�d>��œ[��:�L��+m���w=���BG�_l�����8o�j���m�A�r̓��A/�����;2L��� ����.�2|�zX�y���I�+ �S|�)@�jE'��u�W�O�ž��왬i�~�W �n����YYS���m1�۾�~�����w�]D?V� ������yI%�L� �>��"��oļt����+���S R<��8�����-^�m�-��Pn�5���A''��=�!ϼ� K�^y��_�^�{U.�{���_�@^���:��]��l��Q��w������������Ty;��^��ئ�^�u�:��9��V�ݳ�G�jF#�[�#x��� �R���t_E�����O�YP���c*.Q^˞���[s��|.���t�-�^�'D���1��9���95By؄/��� Ÿ�^�?h�5�O���������ܭD�&[��\�)�����)�u�te �b/Tf;�� ZЯ��E~gF6��'^��券�?��
��2KPolygonVertexIndexiY>x5ԅ�TW���ݽ@�p�����ww�mJ 4-,Ϗ\6y3Ϟ�s����h4+�;��Ick�B,�K��?�g��[���D�o)�Lc����xiq~�ۻ(�/(����9�����鏸0Z���+ӹ�W�/b�/O��M����>�rW%�3����گ�Il�@:{Κ�4�����?���,oH�c�8�y칾c�LN�xZQ�z����xsў�c��R8^_ܚ�z�;]���̼�OM�v֗�L���};��ۊ��Ys�u��I�c���\~(��������.6G�}��<^�|w�k߰�|w83�ό�,ڋ�苞�|�o��{WcwQ'��] <�K��g�K|�3�є�6v/9f�w��4s��?���J���}>Ǽ�f=�%��1�xF�7,����<^y뻯&b����?��Ţb��O=��.�_�� |d|�O��W�?�x@/�W?y�ݼ#��O���{�k��[|�#�¼�[Δ��o(�ٺ;����,��f�,�5#g^��C�� ���Ň�Ust'�y�����Y��9\<�N�G��҉�`�H:[�mX��{:޺h��ΐ���o�,�+�I�4>Edgesi�1x ��/���"��"eT��gSޯȐ�jc����9=&mEkT�.M���6�́u������9�w���/�8A0!�r�S��i"�$�hb8C,qē@"gI"�s�p� ��F:��e2�B&Yd�C.y\��PHŔp�Rnp�r*���jj���z�E#Mܦ�Zi��ܥ�N�q�.�顗>�y�C��b�Fc� &�b�fy�S���9^0�K^��y�[�X����
��*���W�X���`�-~��Ov��o���]�����#��%�DRɥ�r*���jj���zh��fZh��c�>��<LayerElementNormalIU4VersionIek4NameS�4MappingInformationTypeSByPolygonVertex�4 ReferenceInformationTypeSDirect�<�Normalsd �x���S���S56c�`SM(��1TKb�P�!cyl&�M�b#�v
��$�d�h����j�
��@�* �Ā�j�}7�`D��/�eU@�b�I���|��������}��=��>�y��{��8��t���`ߨ~uc͹\����o���׸��F.�^� ?��a�������4����6�<�s ���2� .�]c�NU� Ag��v�L�A�Ō���l��n�s��T�N�j�Z���7�t�ܾڛAvv̅+[>���2�~;�yQ+���6�4F.O�<Hv6l �H�����x�Ӌ���tL��F��� 1�rY�����N�L:*ԍ}�r�'�"S#QWv�
̹܋��'#r�[��֝��!{�}3�w��㗭@q�jJĺ���z�։���?j��l�:W�/������A����s��N�[H�\�7�Kv�������`���������t:j��9�{��\� |�4�a^��"�p�H�w��DL�%9s0�#�˺��d/z~�|�?_��t�\��~ry=�w͹ܤ�A�ty������ro�<�8~�%�����i�r�x����.���zs�H.� {��{�����3���.��q��^��[�3.W�f���偡�/1��1��r��M�-�߇F\�L�7F;m@}������r��76���~ ��&������\>wL�?:l���r��tQ}D�n��� ~1�ɛ�Jv&�{�K��}�t�܏����Tb ��z�-�9���ŝ����� ٷ =Os.WW����5��t�Ws.@���� ������do�"�\?��>�a�T�hƷ��gr���3��l��nE�Tw/cr��0����u�[WszL���8�y����6rt�ܔEn ����R/���'}�˽1 p�{F��ضՈ����]?[���Qï�?r�w�6�Ŧn�Nx����eԓX��������s� �}޾�1�3�]�2�Ln�=W�\�sU��)������G�������b�o.���L�-�F������P�� �h���#��\G��N~��e��a0�r���$�h����� �\n�� )�v1�I>�J5�r�~�Ed'�Ng�o�_��d��S5u���z�1�?o��g��#��)�p��� �B?��zoV� .�rQ��sw���ȏu�����~�"g�мp� .�>�s�����˜�G����������/��zyL._ �NOJF>����?�ɽ7B�O2G*��6�����m�uԁ]/i(��l�~ }]�����$,��̚�靥�ѧ�º3��������Os����r�_���Q�f��^��c�����k�u*ᕤ�3�x&�g���;�ZUJ�p�;u �D|���V��r�M���MI�{��a-�����>�7f�d��]�z�t�ܜM�>��5�/������/[q~j[�:���!����2ZW�z:��?9��\6
aL�{�����<��1
�,S���Ė�:�3�{���;�� W�����f]���<��y|�>���o7/�NgB!������rݼ�b�8�#��V�c\����q��.�3 �����q}�� �8=�<�e.���ބ��
���?�Wh�墵y�f֭#{ё��ǘܴX�#��Y�#'�!>.���������8�gp���L.�su�敡��s��H������ݘ��#ʟ������}S8n=�'�qq�nkj }��%�m�Ч��~6r'�{5�=4ڥm%���fl=��ɨs9�v�q��zg;٩�Y������ɽ��\<��p�Q�Y�k\.?z痈]�����{8���U�i]��Z�S�}�Ln�ν@v~��N�gFT����o`}ͦ ����Ȇ���E�G�\��;cp.r��� ܗEw��tl��|����׳ϒ��|����ޏ������HNt�Hv�{G�r37 }]6��>f3�ང�U�{G���H���ͳJ��jt���]?TL.�%��27��w����v�Y�-9�4�3̕��wr�Z���kwCO���)�۶�wS�xSn���l����<C��=LayerElementMaterialI=VersionIe,=NameS]=MappingInformationTypeS ByPolygon�=ReferenceInformationTypeS IndexToDirect�=3 Materialsis&xcd```�� �>d<�݋�}����% �o�t�>LayerI>VersionId�> LayerElement[>TypeSLayerElementNormalw>
TypedIndexI�> LayerElement�>TypeSLayerElementMaterial�>
TypedIndexI*A&ModelL~�;SCave.002ModelSMesh[?VersionI��@ Properties70�?NPSLcl TranslationSLcl TranslationSSAD��C �D
�@D$@FPS Lcl ScalingS Lcl ScalingSSAD�?D�?DL��?j@8PSDefaultAttributeIndexSintSIntegerSI�@(PS InheritTypeSenumSSI�@
MultiLayerI�@ MultiTakeI�@ShadingCACullingS
CullingOff�D$MaterialLƽ;SCave_InMaterialS|AVersionIf�A
ShadingModelSPhong�A
MultiLayerI�D Properties70#BAPS DiffuseColorSColorSSAD����?D����?D����?rBAPS AmbientColorSColorSSAD@n �?D@n �?D@n �?�B1PS AmbientFactorSNumberSSAD�B3PS
BumpFactorSdoubleSNumberSDBCBPS SpecularColorSColorSSAD����?D����?D����?�C2PSSpecularFactorSNumberSSAD�?�C-PS ShininessSNumberSSAD9@D5PSShininessExponentSNumberSSAD9@RDDPSReflectionColorSColorSSAD����?D����?D����?�D4PSReflectionFactorSNumberSSAD3H%MaterialL�{i5SCave_OutMaterialSEVersionIf$E
ShadingModelSPhong@E
MultiLayerI&H Properties70�EAPS DiffuseColorSColorSSAD����?D����?D����?�EAPS AmbientColorSColorSSAD@n �?D@n �?D@n �?6F1PS AmbientFactorSNumberSSADwF3PS
BumpFactorSdoubleSNumberSD�FBPS SpecularColorSColorSSAD����?D����?D����?G2PSSpecularFactorSNumberSSAD�?BG-PS ShininessSNumberSSAD9@�G5PSShininessExponentSNumberSSAD9@�GDPSReflectionColorSColorSSAD����?D����?D����?H4PSReflectionFactorSNumberSSAD�K"MaterialL%��%SBlackMaterialS�HVersionIf�H
ShadingModelSPhong�H
MultiLayerI�K Properties70*IAPS DiffuseColorSColorSSAD����?D����?D����?yIAPS AmbientColorSColorSSAD@n �?D@n �?D@n �?�I1PS AmbientFactorSNumberSSAD�I3PS
BumpFactorSdoubleSNumberSDIJBPS SpecularColorSColorSSAD����?D����?D����?�J2PSSpecularFactorSNumberSSAD�?�J-PS ShininessSNumberSSAD9@K5PSShininessExponentSNumberSSAD9@YKDPSReflectionColorSColorSSAD����?D����?D����?�K4PSReflectionFactorSNumberSSAD�L ConnectionsLCSOOL~�;L(LCSOOL?IbL~�;OLCSOOLƽ;L~�;vLCSOOL�{i5L~�;�LCSOOL%��%L~�;�LTakes�LCurrentS��� ���f�v���&~��Z�j���~�� �u�)

103
Project/Assets/ML-Agents/Examples/DungeonEscape/Meshes/Cave.fbx.meta


fileFormatVersion: 2
guid: 1a4b9dc81d687497caac7ac380e5acdd
ModelImporter:
serializedVersion: 23
fileIDToRecycleName:
100000: //RootNode
400000: //RootNode
2100000: Cave_Out
2100002: Cave_In
2100004: Black
2100006: Brown
2300000: //RootNode
3300000: //RootNode
4300000: Cave
4300002: Cave.001
4300004: Cave.002
4300006: Door
externalObjects: {}
materials:
importMaterials: 1
materialName: 0
materialSearch: 1
materialLocation: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 1
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 1
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
importVisibility: 1
importBlendShapes: 1
importCameras: 1
importLights: 1
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
optimizeMeshForGPU: 1
keepQuads: 0
weldVertices: 1
preserveHierarchy: 0
indexFormat: 0
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVPackMargin: 4
useFileScale: 1
previousCalculatedGlobalScale: 1
hasPreviousCalculatedGlobalScale: 0
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 4
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
importAnimation: 1
copyAvatar: 0
humanDescription:
serializedVersion: 2
human: []
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
animationType: 0
humanoidOversampling: 1
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

58
Project/Assets/ML-Agents/Examples/DungeonEscape/Meshes/Door.fbx


Kaydara FBX Binary �MFBXHeaderExtension\FBXHeaderVersionI�x
FBXVersionI��EncryptionTypeI�CreationTimeStamp�VersionI��YearI��MonthIDayI 'HourI?MinuteIWSecondIt MillisecondI��.CreatorS)Blender (stable FBX IO) - 2.91.0 - 4.21.3@' SceneInfoSGlobalInfoSceneInfoSUserData TypeSUserData7VersionIdMetaDataeVersionId|TitleS�SubjectS�AuthorS�KeywordsS�RevisionS�CommentS3 Properties70g9PS DocumentUrlSKStringSUrlSS /foobar.fbx�<PSSrcDocumentUrlSKStringSUrlSS /foobar.fbx�$PSOriginalSCompoundSS=LPSOriginal|ApplicationVendorSKStringSSSBlender Foundation�OPSOriginal|ApplicationNameSKStringSSSBlender (stable FBX IO)�APSOriginal|ApplicationVersionSKStringSSS2.91.0DMPSOriginal|DateTime_GMTSDateTimeSSS01/01/1970 00:00:00.000�<PSOriginal|FileNameSKStringSSS /foobar.fbx�%PS LastSavedSCompoundSSMPSLastSaved|ApplicationVendorSKStringSSSBlender FoundationzPPSLastSaved|ApplicationNameSKStringSSSBlender (stable FBX IO)�BPSLastSaved|ApplicationVersionSKStringSSS2.91.0&NPSLastSaved|DateTime_GMTSDateTimeSSS01/01/1970 00:00:00.000uFileIdR(�*��$�¿Ȱ*�+��� CreationTimeS1970-01-01 10:00:00:000�.CreatorS)Blender (stable FBX IO) - 2.91.0 - 4.21.3j GlobalSettings VersionI�] Properties70p)PSUpAxisSintSIntegerSI�-PS
UpAxisSignSintSIntegerSI�,PS FrontAxisSintSIntegerSI# 0PS FrontAxisSignSintSIntegerSI] ,PS CoordAxisSintSIntegerSI� 0PS CoordAxisSignSintSIntegerSI� 1PSOriginalUpAxisSintSIntegerSI����
5PSOriginalUpAxisSignSintSIntegerSIc
8PSUnitScaleFactorSdoubleSNumberSDY@�
@PSOriginalUnitScaleFactorSdoubleSNumberSDY@ HPS AmbientColorSColorRGBSColorSDDDV APS DefaultCameraSKStringSSSProducer Perspective� %PSTimeModeSenumSSI � 3PS TimeSpanStartSKTimeSTimeSL
2PS TimeSpanStopSKTimeSTimeSL����
P 8PSCustomFrameRateSdoubleSNumberSD8@� Documents� CountI� DocumentLr�zSSceneSScened Properties70 &PS SourceObjectSobjectSSW 3PSActiveAnimStackNameSKStringSSS�  RootNodeL�
References�+ Definitions� VersionIdCountIV
ObjectTypeSGlobalSettingsICountI�
ObjectTypeSGeometry�CountI� PropertyTemplateSFbxMesh� Properties70"APSColorSColorRGBSColorSD�������?D�������?D�������?tDPSBBoxMinSVector3DSVectorSDDD�DPSBBoxMaxSVector3DSVectorSDDD/PSPrimary VisibilitySboolSSI;*PS Casts ShadowsSboolSSIu,PSReceive ShadowsSboolSSI?$
ObjectTypeSModel�CountI2$ PropertyTemplateSFbxNode%$ Properties70V2PSQuaternionInterpolateSenumSSI�KPSRotationOffsetSVector3DSVectorSDDDJPS RotationPivotSVector3DSVectorSDDD_JPS ScalingOffsetSVector3DSVectorSDDD�IPS ScalingPivotSVector3DSVectorSDDD�.PSTranslationActiveSboolSSIKKPSTranslationMinSVector3DSVectorSDDD�KPSTranslationMaxSVector3DSVectorSDDD�,PSTranslationMinXSboolSSI,PSTranslationMinYSboolSSIR,PSTranslationMinZSboolSSI�,PSTranslationMaxXSboolSSI�,PSTranslationMaxYSboolSSI,PSTranslationMaxZSboolSSI8*PS RotationOrderSenumSSI|6PSRotationSpaceForLimitOnlySboolSSI�;PSRotationStiffnessXSdoubleSNumberSD;PSRotationStiffnessYSdoubleSNumberSDW;PSRotationStiffnessZSdoubleSNumberSD�0PSAxisLenSdoubleSNumberSD$@�HPS PreRotationSVector3DSVectorSDDDBIPS PostRotationSVector3DSVectorSDDD{+PSRotationActiveSboolSSI�HPS RotationMinSVector3DSVectorSDDD'HPS RotationMaxSVector3DSVectorSDDD^)PS RotationMinXSboolSSI�)PS RotationMinYSboolSSI�)PS RotationMinZSboolSSI)PS RotationMaxXSboolSSI:)PS RotationMaxYSboolSSIq)PS RotationMaxZSboolSSI�(PS InheritTypeSenumSSI�*PS ScalingActiveSboolSSI4GPS
ScalingMinSVector3DSVectorSDDD�GPS
ScalingMaxSVector3DSVectorSD�?D�?D�?�(PS ScalingMinXSboolSSI�(PS ScalingMinYSboolSSI+(PS ScalingMinZSboolSSIa(PS ScalingMaxXSboolSSI�(PS ScalingMaxYSboolSSI�(PS ScalingMaxZSboolSSI,QPSGeometricTranslationSVector3DSVectorSDDD�NPSGeometricRotationSVector3DSVectorSDDD�MPSGeometricScalingSVector3DSVectorSD�?D�?D�?'6PS MinDampRangeXSdoubleSNumberSDk6PS MinDampRangeYSdoubleSNumberSD�6PS MinDampRangeZSdoubleSNumberSD�6PS MaxDampRangeXSdoubleSNumberSD76PS MaxDampRangeYSdoubleSNumberSD{6PS MaxDampRangeZSdoubleSNumberSD�9PSMinDampStrengthXSdoubleSNumberSD 9PSMinDampStrengthYSdoubleSNumberSDP9PSMinDampStrengthZSdoubleSNumberSD�9PSMaxDampStrengthXSdoubleSNumberSD�9PSMaxDampStrengthYSdoubleSNumberSD% 9PSMaxDampStrengthZSdoubleSNumberSDj 7PSPreferedAngleXSdoubleSNumberSD� 7PSPreferedAngleYSdoubleSNumberSD� 7PSPreferedAngleZSdoubleSNumberSD*!(PSLookAtPropertySobjectSSb!*PSUpVectorPropertySobjectSS�!!PSShowSboolSSI�!8PSNegativePercentShapeSupportSboolSSI"8PSDefaultAttributeIndexSintSIntegerSI����N"#PSFreezeSboolSSI"#PSLODBoxSboolSSI�"NPSLcl TranslationSLcl TranslationSSADDD1#HPS Lcl RotationS Lcl RotationSSADDD�#FPS Lcl ScalingS Lcl ScalingSSAD�?D�?D�?�#2PS
VisibilityS
VisibilitySSAD�?$EPSVisibility InheritanceSVisibility InheritanceSSI�+
ObjectTypeSMaterialz$CountI�+PropertyTemplateSFbxSurfacePhong�+ Properties70%1PS ShadingModelSKStringSSSPhong8%'PS
MultiLayerSboolSSI�%BPS EmissiveColorSColorSSADDD�%2PSEmissiveFactorSNumberSSAD�?&APS AmbientColorSColorSSAD�������?D�������?D�������?V&1PS AmbientFactorSNumberSSAD�?�&APS DiffuseColorSColorSSAD�������?D�������?D�������?�&1PS DiffuseFactorSNumberSSAD�?7'EPSTransparentColorSColorSSADDD{'6PSTransparencyFactorSNumberSSAD�'+PSOpacitySNumberSSAD�?(FPS NormalMapSVector3DSVectorSDDDW(APSBumpSVector3DSVectorSDDD�(3PS
BumpFactorSdoubleSNumberSD�?�(MPSDisplacementColorSColorRGBSColorSDDD<);PSDisplacementFactorSdoubleSNumberSD�?�)SPSVectorDisplacementColorSColorRGBSColorSDDD�)APSVectorDisplacementFactorSdoubleSNumberSD�?<*BPS SpecularColorSColorSSAD�������?D�������?D�������?|*2PSSpecularFactorSNumberSSAD�?�*-PS ShininessSNumberSSAD4@�*5PSShininessExponentSNumberSSAD4@L+DPSReflectionColorSColorSSADDD�+4PSReflectionFactorSNumberSSAD�?�`Objects�:%GeometryL��SCubeGeometrySMesh6, Properties70W,GeometryVersionI|.�Verticesd��x��1KA�D�� ��*A;I{���V$�����F�,�.���x(J"b)�;w�}��un3̷o��L.���~csD�s��������?�H�WQ��$x���e�wջs���^��|��x{!�#��|�������~X���?s�QNsA����x^�<�r���d=���i������Jmn�P8�%\�$<����Ξ���s�=|x.ԉ���p���Cߡ�ۣ�����p��]���e��}x��}Wr�{f3�q���\yq������� č����Ej��=x<��{��Ld�����X��͗ �~q�S���ǻ��\�����h�I�}=����x��{���ٟ��R��_�Ov�ޤ>i��5��M����=������z�h}Z��>q>��?8����՞�f�/�PolygonVertexIndexi��x5��/�aFo)����s�Jk�vZ7�"�jiI��Fh�:G�~x2���3sg��&�����S�T�}@�l�;������6ԉ��|b9�D�u�{~�?!L٫��'�:���o���,���3��~����#���l�;����~`� �s������#=�:����VtW����~�߁������K�9ݷ ]�e὏���F��.�|��}֡t�w^����� ��߇w~��������O�_�����{�{���}�ٝ��v`��;�.�ۺ�s���{�ל��������{���v���������{��w=�?���w� ���D}ڄ{�[����]6�^�o���!�����ljK�Q?�V���֬E�9~�͵����qM��T�Y����������,F�9~�͵���� �����0�Edgesix�x �I+��Ͼ� Y�R�)��A���$$! M3H�������Br���\-!$�{�� b�5�xL4�dSL5�t3�4�ls�5�| ,��bK,��r+���jk�5d��6�h�Ͷ�j��v�i����k��8��Î8���N8����8�����u�E�\v�U�\w�M��v�]����C�<��S�<��K����[����G�|��W�|��O����_����/��3LayerElementNormalI 1VersionIe61NameSm1MappingInformationTypeSByPolygonVertex�1 ReferenceInformationTypeSDirect�3�Normalsd��x՗�N�0�=��@�+OQ? fK&^�-{W�;������ꐬ���]Z|�\qm�)�x��W���ܓ�D)Z�����Sa�.����;���(�N�L�������Z.�Uz}y�㹉]:����t�����V����/<G~؟\}��/ս���'���i�?d_Q\o/��Kq��)�Q\�5ҭևS��̈́�ש>�W����?���ټ������98��K�������J�Q�ø�g���:��(.��ԇ��087�1��q����Bq�����v��~�?�ox��n����0�Q�: ������_/������s�SW��k����洿@\��� ������D�o]~H�w��K���.?�~��S�~wR~e�?�z_h/���^������N7�s����׮~�7��G����9z�2 ^T?�T7/wzY�c���6?(N�K_��ȏq�G���P\�J�P�|�uK�A\H������'�>_^Ѿ���}�0���+8LayerElementUVI�3VersionIe4
NameSUVMapG4MappingInformationTypeSByPolygonVertex~4ReferenceInformationTypeS IndexToDirect�6UVd�x��MN1 �� p��E9JO1�n�=�,F�;�@ ]�[Z� �˫?���Dgc9�{~q�LӤ�aj�܄�î�:�hۧ����n4> ۴~��,#������Ro~Q�����Ճ�^uӀ'N=�׊��#���O]����$�5~�u�I����ꈞc���k[됾�1��d���e���������³��x�����8�8?��9�ޗJ��Y�ɇ�:�]��p�-�.x_ �g�5�� <|��"���&���g}�j����������xp%?������#>��������Wv^����W>��R��J��:��)�G�����,ꋩ�����/�3;��\i��'�Y��=_*�^����Os���˘�"_��������wN�����=������G����)����/ ��1��Qs�wL��|꣏8>��z���I���%��S�u4��s��B:j�y��c�'��������䡗|�=��*�?s����3��� ���Za�8}UVIndexi�px5҉S�q��m����6d���;R�Pѝn�����~�|vg^3���3�}��n"��m�b ���G|F3��*�8D
�F9Z��fp��;���p�x�lE�� �Q�QT�Nv��R$��c7;�N ���F��}��E�a�P��x�Z�� �c�w������s_�f�������������$����i{��n0���P�Y�܇{� �p������4��U0{V��w��M�{0{�)L�7Ҏ��\
�ȷ�����`�-�ûK�E��A �_�^��2�p��܃�`����܉b4�9����<t���(�<�?�_T�cL�W�#��� �.�
���A�@W0��N0��~0?�%t�9����%�s��<m+9LayerElementMaterialIj8VersionIe�8NameS�8MappingInformationTypeS ByPolygon�8ReferenceInformationTypeS IndexToDirect9 Materialsi<xcd```�D��+�:LayerI[9VersionId�9 LayerElement�9TypeSLayerElementNormal�9
TypedIndexI+: LayerElement:TypeSLayerElementUV:
TypedIndexI�: LayerElementn:TypeSLayerElementMaterial�:
TypedIndexI5U)GeometryL�t(SCube.001GeometrySMesh; Properties706;GeometryVersionI|�=�Verticesd��xuS1hQ�z�q1M��� �`�o  ���iN�����B>�"
j�:,"�(("BH���Dɱ`��!$FID��۹b�T�üy��8碫/�;��}G�����E���“���w���oz�Z�5&�������ࡧ�R~���L��Qej���g}��gE����� ��O�^�����`8�0���&���͙|"w�{J}d���H�M�ޜ�����H�5o��(��ȏ���Ò��ߞ~u�WY����g�p�eW��*���Q�7�cs�O��Pܝ4��k~r>O��<��� g�n��e�[ݳE}&�*��4j{����Dn���O���ޥ���C�xY�8��Mt/��������d~rs������`K���W�.�j�e_�&����s������]1��|����?��;��n����U��������������{#�����W����>�����)yp]:��9Qߡ��t(��O?��)
�}�>�~�Hs�����w��#�����K}wimUp�QXػ�8���w�uArྃ��o����dnj����i8�t���2�{훶�q�|"�v��>�����yˁ{
}�5��'u��:��}o����3tȾ�>fyr���w� ��'�#�#���}�{�ި����{�⢠��@�PolygonVertexIndexi��x5��-EE�� ���� .�p׿����ww n֗��dg�骺���z�X,v.������)O;��wϿ�3�q��������/�uq��y�>�U>ͷ�{��s{�S�ȭݯ|�[{@�$����Qn�!��|۸T�ɷ����������|�xDy#�1Y�Ώ�Ǖ_�]7��Ə-�p��7���1�n_P'n��b�SgtܸN����'������6�9�����Ш�����{9�����1�9�������ߟ���9����K��q���u�����޽G\?��N�p��{�u����w��\;��N�p�й�5��y��!wn�%t��nQ��ǝ�or�y���g��.��Q�U��߹�;�>G��}�g/��M�?n�{�o���3�}� ���l�q���~j�?9~V���9�S3����|S<�<�o�g��-��r_~|<�ܓ�k�<�[{~�?���ron������K��� ��rk~b��ܜ��,7�'ǫʍ�)��rK~m��<7��9h 7~}1������Ư+�p���:q��s��:�{��u2��/=Qo�5�����p[�:�ˢ~/�{n���3�$�����|G�:���~/�{/w��3� ����r~W�:s�t҇{��#n�M'}�s����q�t҇;W� n�M'}�s�\�����9z�ܹu����gF�^w��Q�U��չ��x,G�W]�������u������o�7���w��Zc�������[�B�Edgesi��x�GK��m�e���i��92K�,i" B�(!R�H!"��RHH!E�R�H!��(BD�t�Ҥ(���^ L��A$QD�
bYE��&�D֐D2kI!�4�� �,��!�<�)��"6S�J��6J)c;;(g'�b7�TQ�>�s��p���r�S�QO#M4s�Zi��t��%�覇+�r�>��� �����x��y�(c����a�I������#s|�3_��7������7��?�3�K�&�P�'�H�E4ˉa%��O�$�L
����t2XO&Yl �6�K�ȧ�B�(��R�(��J�P�^p�s�ZNp�:�i� M4s�Zi�<�t��E�覇����5��&��.��!��)#�2�s^2�k&�b�����9ͣ\coKLayerElementNormalI�BVersionIe�BNameS
CMappingInformationTypeSByPolygonVertex:C ReferenceInformationTypeSDirectbKNormalsd�x͚]��Eǧ�>��*P���n�>�r�ꢂ.�&F��"�����L7k�B�t����> Wz'u��V��
���u����&�h�s�ӛ�n����������y�|��s��c���}]Ƙtx�D�<������r7���.��������;�����yp�8���9=���V�;��9=��r����ɻ毃��.G?�c'����ay�b�f�q�n����~���,89?���_���e�Y�V�9����=��s��}<i~�%�]�]�$��]�Ƈ��}�� �qk�}���ɻ6���a��:>��탰���q&��٪�z.L��|Xn?Ұ����{,o�!����pצ�?�N�}vw�*����R��ݍ�xgy���0~?�}��G/���<��`'��v��Ek�;�ӲMҏ�u�AY�,�Om�����՟�-��Ӗ��O.��i��c$����rǯ���V��
Ƈ�y��{8,��6o���L�P�����A�����,7'�� ;��Y�7���<�:t��|� ��YW��=�=��\Ç�ᜅGj?�/<��i>,O�����w9wX���|���O� �G���eo:��G�;%N��i����j����h�4���v��p���5�r�/�gy�}���W�?,�9��7�|�3����w�;�'���{��;$�X�K�����=����d_e��ی~���T;��9���%�����u_ K���ܕ���)y � ������߷KN����_��v͢�oĹ3vV;�U>,G^Z�\����c��V����I���!��<��|�C2_vI�;,�s���c��s��u,ݲ��,Y�iX��7����2��~����Ļ��x7#ZǑ<�<�����A<�<����W��2_�bǬ��b����N�z'ϐxg9�^�����)����y/�m����|��o����M�e�|�Nj��x��7��گ�h�ށ�Ny~E�e�_��Q]�ɱ�����LG�q��X�,��-���l�S���oT;��r�7X��>;yT�����c4/�`��ԃx6Or��hﯚ���)O��.�sv서;��ȓ��g����g�ے��7q֥�E��Ԧ���C�5^�7ZǑܖ�v̑+���K��rW�C�A~�g\,���� ��u%?���V�A���gV�NR���A�����S���H��u�K] ;�#�XnU��P���L�X�/�#�[xv��/���s���5�����m��}�w���Z�U���B���*_߮�(������hIn�E_�;q���$G=��G� ;F�g��I:sԸ`�W�9���5NY>����M1>�đ���i��I�����I��;C�e�;՟Ә�?�O���J�7��|C�J���n�r�c<3ɣꨦ[�U�L����3{՟�_���)gu������|+�sֺ��:�9՟�q딇r^���:�G� �'������~��<���or��<?)��Q]˩��r�:��Z�g��3˃�̸��x{՟YnT���Y՟Y�|~d�w��I>���[�L�{ž�/����ԁ8O���g��=��.���?՟Yng���&��,w����K��~5�{՟��ϱ���˓�Ws_`Uf9�3O�W�q�=�m�g���~�i�{Y5��9=#y8��i�?�����W���V��X���ԃ,S��4W=3���} ���N�T:*��\���MN��ϝr��|V}�}���Fgv:_��S��N�S�9�������<���f�z6��������?[�Wr%���Z՟Y?W��;��l�g�<���8B<D՟Y�K��?I�g��3ˑ��䷰�Ufy��ڟ%?�������'����?�/���Ufy��I�5I��ʽ �ی�N�����!���wP֡����V�gS��?�?���C�֧��c9�3O�}Zg�N�&u��ti����g����,O%������'�<�c��Ȫ?烒o�ܨ.�]�%��U� ��:՟Q��NyT�8�nlU�by������� џ�c����#��4��/��\t���:d����_��&��,wO�?�<�*��D]/e=�?��~��Ɨ/��w��:������d��LLayerElementColorI�KVersionIe�KNameSCol�KMappingInformationTypeSByPolygonVertex2LReferenceInformationTypeS IndexToDirectrL-Colorsd �?�?�?�?�L*
ColorIndexi�xc`�!0�!0�!0��HRLayerElementUVI�LVersionIeM
NameSUVMapKMMappingInformationTypeSByPolygonVertex�MReferenceInformationTypeS IndexToDirect�O�UVd��x���JCA��)�#�����E��P�w0/`��%�`a%�V
��&Aԫ��'Pg��7��(�J����ݙ=sfB���})����܏g1���8t��6/�o7n+x�w����E<�`�Sϭ��x��a����|�7��Ɠ����;�~ؽ�g��*�]֗�z8̭j݂�>y��G�b�hb��|��1?�?H��7Nqaz/��R>tJ��'q_�罅�˱Ǜ�I�ڟ�ċ�Z��~�F�A����
�� �����p8y��`���������=<��ϱ��x�G���Bo���������y���������_¨���g�S/���m���?���S���?��Ϋ�!o�?��^��?U�˼�����~��l����>:��O~����/̓�����#�g�_����v}l?��_����'����/�g�OLx���%���?��?��|��V/�T�m�O��~�/��������y�����d_���y���2S�i���O�(�?�;R�UVIndexi��x5ӉWMa��2e�E� �eH����L*Sd�3���c��Z�����������}�����ph��m
�û0����+�
�w��p6���ak ª�����c�̚[̚� f�
f��f͝���p9��'�J8��0?t�m�{�>ۣ���^�fx3�~G�������fyϕ���:� ���L������vy뒩޼5�'��A�:����2o�d�3oO��y�,S��ɠ_[y�"S�yg���;G���릇~�s��s�u�C��2����8^?=�W2=W^7=��[*�����;�x��L�[�����wU�:��?��̏U�:��?3R��Luvm6��ŷW��F��l�;*S�rmM>3a"�kCc�օ��?�aGp�{;�T �COx΄��7� M�9< f�]
S���`�ܳ`���`��\��]ac����[�N�k�n8.��Ž��򾗩�̯���ߑ�g���(,+��2}U^��ay����5��p$�(o]2՛�f�d�>�Tg��'�++S�]{��y�,S�yg��}坋Lu杙~2�Y����nz��7W���G=�ѳ7ȴ��n[�~��J���u�C~�2�)��\Џ��ʴ��wZ?��Luv�?�'�_+S�]������t���� ��OT��G��e��g<X�)� v�FSLayerElementMaterialI�RVersionIe�RNameS�RMappingInformationTypeS ByPolygonSReferenceInformationTypeS IndexToDirect9S Materialsi�xc`�!0p!�(ULayerIvSVersionId�S LayerElement�STypeSLayerElementNormal�S
TypedIndexIIT LayerElement TTypeSLayerElementColor<T
TypedIndexI�T LayerElement�TTypeSLayerElementUV�T
TypedIndexIU LayerElement�TTypeSLayerElementMaterialU
TypedIndexIQW"ModelL��5S DoorModelSMesh�UVersionI��V Properties70�UNPSLcl TranslationSLcl TranslationSSAD�7'@D��Y�?D�9��?KVFPS Lcl ScalingS Lcl ScalingSSAD�?D�?D�x]�?�V8PSDefaultAttributeIndexSintSIntegerSI�V(PS InheritTypeSenumSSI�V
MultiLayerI W MultiTakeI!WShadingCDWCullingS
CullingOffqY&ModelL+�SDoor.001ModelSMesh�WVersionI��X Properties70XNPSLcl TranslationSLcl TranslationSSAD�7'@D��Y�?D�9��?kXFPS Lcl ScalingS Lcl ScalingSSAD�?D�?D�x]�?�X8PSDefaultAttributeIndexSintSIntegerSI�X(PS InheritTypeSenumSSIY
MultiLayerI+Y MultiTakeIAYShadingCdYCullingS
CullingOff�\"MaterialL%��%SBlackMaterialS�YVersionIf�Y
ShadingModelSPhongZ
MultiLayerI�\ Properties70hZAPS DiffuseColorSColorSSAD����?D����?D����?�ZAPS AmbientColorSColorSSAD@n �?D@n �?D@n �?�Z1PS AmbientFactorSNumberSSAD7[3PS
BumpFactorSdoubleSNumberSD�[BPS SpecularColorSColorSSAD����?D����?D����?�[2PSSpecularFactorSNumberSSAD�?\-PS ShininessSNumberSSAD9@E\5PSShininessExponentSNumberSSAD9@�\DPSReflectionColorSColorSSAD����?D����?D����?�\4PSReflectionFactorSNumberSSADu`"MaterialL<��6SBrownMaterialSC]VersionIff]
ShadingModelSPhong�]
MultiLayerIh` Properties70�]APS DiffuseColorSColorSSAD�wb�?D� O�?D9^APS AmbientColorSColorSSAD@n �?D@n �?D@n �?x^1PS AmbientFactorSNumberSSAD�^3PS
BumpFactorSdoubleSNumberSD _BPS SpecularColorSColorSSAD�wb�?D� O�?DI_2PSSpecularFactorSNumberSSAD�?�_-PS ShininessSNumberSSAD9@�_5PSShininessExponentSNumberSSAD9@`DPSReflectionColorSColorSSAD�wb�?D� O�?D[`4PSReflectionFactorSNumberSSAD�a Connections�`CSOOL��5L�`CSOOL+�LaCSOOL��L��56aCSOOL�t(L+�]aCSOOL%��%L��5�aCSOOL%��%L+��aCSOOL<��6L��5�aCSOOL<��6L+�bTakes
bCurrentS��� ���f�v���&~��Z�j���~�� �u�)

107
Project/Assets/ML-Agents/Examples/DungeonEscape/Meshes/Door.fbx.meta


fileFormatVersion: 2
guid: 5803970ff94c74f61a1cd918fde282f3
ModelImporter:
serializedVersion: 23
fileIDToRecycleName:
100000: //RootNode
100002: Door
100004: Door.001
400000: //RootNode
400002: Door
400004: Door.001
2100000: Brown
2100002: Black
2300000: //RootNode
2300002: Door
2300004: Door.001
3300000: //RootNode
3300002: Door
3300004: Door.001
4300000: Door
4300002: Door.001
externalObjects: {}
materials:
importMaterials: 1
materialName: 0
materialSearch: 1
materialLocation: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 1
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 1
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
importVisibility: 1
importBlendShapes: 1
importCameras: 1
importLights: 1
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
optimizeMeshForGPU: 1
keepQuads: 0
weldVertices: 1
preserveHierarchy: 0
indexFormat: 0
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVPackMargin: 4
useFileScale: 1
previousCalculatedGlobalScale: 1
hasPreviousCalculatedGlobalScale: 0
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 4
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
importAnimation: 1
copyAvatar: 0
humanDescription:
serializedVersion: 2
human: []
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
animationType: 0
humanoidOversampling: 1
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

8
Project/Assets/ML-Agents/Examples/DungeonEscape/Prefabs.meta


fileFormatVersion: 2
guid: 182a0bae21aa344beaf59b06aa99949e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

379
Project/Assets/ML-Agents/Examples/DungeonEscape/Prefabs/Column.prefab


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &5170350252622397370
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7328666170508585541}
- component: {fileID: 6568014831067932417}
- component: {fileID: 7278222074700544653}
- component: {fileID: 2815987982214703338}
m_Layer: 0
m_Name: Column
m_TagString: wall
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7328666170508585541
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5170350252622397370}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 1.74, z: 0}
m_LocalScale: {x: 1.4362822, y: 1.7236917, z: 1.4362822}
m_Children: []
m_Father: {fileID: 390460369537414899}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &6568014831067932417
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5170350252622397370}
m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &7278222074700544653
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5170350252622397370}
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: 66163cf35956a4be08e801b750c26f33, 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!136 &2815987982214703338
CapsuleCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5170350252622397370}
m_Material: {fileID: 13400000, guid: 8c6374adc4d814c2eb5ecdfe810d813b, type: 2}
m_IsTrigger: 0
m_Enabled: 1
m_Radius: 0.5000001
m_Height: 2
m_Direction: 1
m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697}
--- !u!1 &5184265935082300294
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 390460369537414899}
m_Layer: 0
m_Name: Column
m_TagString: wall
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &390460369537414899
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5184265935082300294}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 4884441527609926036}
- {fileID: 2901603255210522549}
- {fileID: 7328666170508585541}
- {fileID: 885181397963073148}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &7429498452301802124
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2901603255210522549}
- component: {fileID: 4130230494857075820}
- component: {fileID: 197902968593208654}
- component: {fileID: 4263965291085057186}
m_Layer: 0
m_Name: Base
m_TagString: wall
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2901603255210522549
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7429498452301802124}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1.6948129, y: 0.36920372, z: 1.6948129}
m_Children: []
m_Father: {fileID: 390460369537414899}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &4130230494857075820
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7429498452301802124}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &197902968593208654
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7429498452301802124}
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: 66163cf35956a4be08e801b750c26f33, 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!65 &4263965291085057186
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7429498452301802124}
m_Material: {fileID: 13400000, guid: 8c6374adc4d814c2eb5ecdfe810d813b, type: 2}
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!1 &7775582511060856483
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 885181397963073148}
- component: {fileID: 848763209821142729}
m_Layer: 0
m_Name: Point Light
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &885181397963073148
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7775582511060856483}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 5.52, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 390460369537414899}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!108 &848763209821142729
Light:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7775582511060856483}
m_Enabled: 1
serializedVersion: 8
m_Type: 2
m_Color: {r: 0.73393774, g: 0, b: 1, a: 1}
m_Intensity: 3
m_Range: 10
m_SpotAngle: 30
m_CookieSize: 10
m_Shadows:
m_Type: 0
m_Resolution: -1
m_CustomResolution: -1
m_Strength: 1
m_Bias: 0.05
m_NormalBias: 0.4
m_NearPlane: 0.2
m_Cookie: {fileID: 0}
m_DrawHalo: 0
m_Flare: {fileID: 0}
m_RenderMode: 1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_Lightmapping: 4
m_LightShadowCasterMode: 0
m_AreaSize: {x: 1, y: 1}
m_BounceIntensity: 1
m_ColorTemperature: 6570
m_UseColorTemperature: 0
m_ShadowRadius: 0
m_ShadowAngle: 0
--- !u!1 &9201545320674351572
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4884441527609926036}
- component: {fileID: 3395963178530386893}
- component: {fileID: 2734607649822643584}
- component: {fileID: 1667004977327845187}
m_Layer: 0
m_Name: Top
m_TagString: wall
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4884441527609926036
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9201545320674351572}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 3.504, z: 0}
m_LocalScale: {x: 1.6948129, y: 0.36920372, z: 1.6948129}
m_Children: []
m_Father: {fileID: 390460369537414899}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &3395963178530386893
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9201545320674351572}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &2734607649822643584
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9201545320674351572}
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: 66163cf35956a4be08e801b750c26f33, 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!65 &1667004977327845187
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9201545320674351572}
m_Material: {fileID: 13400000, guid: 8c6374adc4d814c2eb5ecdfe810d813b, type: 2}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 2
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}

7
Project/Assets/ML-Agents/Examples/DungeonEscape/Prefabs/Column.prefab.meta


fileFormatVersion: 2
guid: 69a64861a32794a5db3bcea0cae3bef2
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

1001
Project/Assets/ML-Agents/Examples/DungeonEscape/Prefabs/DungeonEscapeAgent.prefab
文件差异内容过多而无法显示
查看文件

7
Project/Assets/ML-Agents/Examples/DungeonEscape/Prefabs/DungeonEscapeAgent.prefab.meta


fileFormatVersion: 2
guid: f3c5280e4ae094a9a9b8b6702630c941
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

1001
Project/Assets/ML-Agents/Examples/DungeonEscape/Prefabs/DungeonEscapePlatform.prefab
文件差异内容过多而无法显示
查看文件

7
Project/Assets/ML-Agents/Examples/DungeonEscape/Prefabs/DungeonEscapePlatform.prefab.meta


fileFormatVersion: 2
guid: 5878a6d7527854d0a84b133c7c6efe55
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

578
Project/Assets/ML-Agents/Examples/DungeonEscape/Prefabs/Sword.prefab


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &880523008701045142
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6336432208962364492}
- component: {fileID: 7171523569959246079}
- component: {fileID: 7979107975059020850}
m_Layer: 0
m_Name: Cube
m_TagString: key
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6336432208962364492
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 880523008701045142}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.16384082, y: 0.69100887, z: 0.04210779}
m_Children: []
m_Father: {fileID: 8772105788424992950}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &7171523569959246079
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 880523008701045142}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &7979107975059020850
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 880523008701045142}
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: 6fdf8e49597ff42648c9e99d7ecfc005, 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!1 &2981109370270338809
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3509013554597332474}
- component: {fileID: 5798697336692697841}
- component: {fileID: 7290655559508665360}
m_Layer: 0
m_Name: symbol_circle
m_TagString: key
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3509013554597332474
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2981109370270338809}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: -0.378, z: 0}
m_LocalScale: {x: 0.12343061, y: 0.12343061, z: 0.32400537}
m_Children: []
m_Father: {fileID: 8772105788424992950}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &5798697336692697841
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2981109370270338809}
m_Mesh: {fileID: 4300000, guid: 809601725d53c41fb9c7a75071bfbf51, type: 3}
--- !u!23 &7290655559508665360
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2981109370270338809}
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: 66163cf35956a4be08e801b750c26f33, 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!1 &3926071613285613986
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8893163176571066595}
- component: {fileID: 5916335186314198833}
- component: {fileID: 3298868567831570272}
m_Layer: 0
m_Name: Cylinder (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8893163176571066595
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3926071613285613986}
m_LocalRotation: {x: -0.70710677, y: 2.8421706e-14, z: -0, w: 0.7071069}
m_LocalPosition: {x: 0, y: -0.38, z: 0}
m_LocalScale: {x: 0.1681245, y: 0.060624015, z: 0.1681245}
m_Children: []
m_Father: {fileID: 8772105788424992950}
m_RootOrder: 6
m_LocalEulerAnglesHint: {x: -90.00001, y: 0, z: 0}
--- !u!33 &5916335186314198833
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3926071613285613986}
m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &3298868567831570272
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3926071613285613986}
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: c67450f290f3e4897bc40276a619e78d, 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!1 &4906921352773174966
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7831757270307252616}
- component: {fileID: 3220919968159847475}
- component: {fileID: 5435862911997543179}
m_Layer: 0
m_Name: symbol_tri (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7831757270307252616
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4906921352773174966}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0.413, z: 0}
m_LocalScale: {x: 0.090800464, y: 0.11799568, z: 0.11799568}
m_Children: []
m_Father: {fileID: 8772105788424992950}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &3220919968159847475
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4906921352773174966}
m_Mesh: {fileID: 4300000, guid: 09e2da39770c24cc9a71e5dbf05a1e85, type: 3}
--- !u!23 &5435862911997543179
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4906921352773174966}
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: 6fdf8e49597ff42648c9e99d7ecfc005, 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!1 &4997696087336533843
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5561100400066123843}
- component: {fileID: 895235124130169443}
- component: {fileID: 452513402949209409}
m_Layer: 0
m_Name: Cube (3)
m_TagString: key
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &5561100400066123843
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4997696087336533843}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: -0.381, z: 0}
m_LocalScale: {x: 0.3745031, y: 0.094451435, z: 0.10686698}
m_Children: []
m_Father: {fileID: 8772105788424992950}
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &895235124130169443
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4997696087336533843}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &452513402949209409
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4997696087336533843}
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: 52eab8ab5010f438fab93da85735ba1d, 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!1 &5531443850584416103
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2663616659132156189}
- component: {fileID: 6946795223150584703}
- component: {fileID: 4550853145762769995}
m_Layer: 0
m_Name: Cube (1)
m_TagString: key
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!4 &2663616659132156189
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5531443850584416103}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: -0.559, z: 0}
m_LocalScale: {x: 0.15990455, y: 0.39524767, z: 0.08766782}
m_Children: []
m_Father: {fileID: 8772105788424992950}
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &6946795223150584703
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5531443850584416103}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &4550853145762769995
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5531443850584416103}
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: c9fa44c2c3f8ce74ca39a3355ea42631, 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!1 &6285520391000694526
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8772105788424992950}
m_Layer: 0
m_Name: Sword
m_TagString: key
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8772105788424992950
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6285520391000694526}
m_LocalRotation: {x: -0, y: -0.00000043213362, z: -0, w: 1}
m_LocalPosition: {x: -5.06, y: 5.33, z: -1.86}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 3496700650422646169}
- {fileID: 7831757270307252616}
- {fileID: 3509013554597332474}
- {fileID: 6336432208962364492}
- {fileID: 2663616659132156189}
- {fileID: 5561100400066123843}
- {fileID: 8893163176571066595}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &7618810706562414047
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3496700650422646169}
- component: {fileID: 2938354221899943890}
- component: {fileID: 4767159747164160553}
m_Layer: 0
m_Name: Cylinder
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3496700650422646169
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7618810706562414047}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: -0.595, z: 0}
m_LocalScale: {x: 0.15200818, y: 0.15200818, z: 0.10670974}
m_Children: []
m_Father: {fileID: 8772105788424992950}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &2938354221899943890
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7618810706562414047}
m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &4767159747164160553
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7618810706562414047}
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: c9fa44c2c3f8ce74ca39a3355ea42631, 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

7
Project/Assets/ML-Agents/Examples/DungeonEscape/Prefabs/Sword.prefab.meta


fileFormatVersion: 2
guid: 2e7a35edaf71a428eb9473e1e0dd60d8
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

8
Project/Assets/ML-Agents/Examples/DungeonEscape/Scenes.meta


fileFormatVersion: 2
guid: 18bd62bca21784541a3ef42aff1e4950
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

1001
Project/Assets/ML-Agents/Examples/DungeonEscape/Scenes/DungeonEscape.unity
文件差异内容过多而无法显示
查看文件

9
Project/Assets/ML-Agents/Examples/DungeonEscape/Scenes/DungeonEscape.unity.meta


fileFormatVersion: 2
guid: d00d2995d83c94f5da81bb19644a00ac
timeCreated: 1506808980
licenseType: Pro
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

8
Project/Assets/ML-Agents/Examples/DungeonEscape/Scripts.meta


fileFormatVersion: 2
guid: d1aeac7dad8bb42fb92cfa7dc7bc3d3f
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

260
Project/Assets/ML-Agents/Examples/DungeonEscape/Scripts/DungeonEscapeEnvController.cs


using System.Collections;
using System.Collections.Generic;
using Unity.MLAgents;
using UnityEngine;
public class DungeonEscapeEnvController : MonoBehaviour
{
[System.Serializable]
public class PlayerInfo
{
public PushAgentEscape Agent;
[HideInInspector]
public Vector3 StartingPos;
[HideInInspector]
public Quaternion StartingRot;
[HideInInspector]
public Rigidbody Rb;
[HideInInspector]
public Collider Col;
}
[System.Serializable]
public class DragonInfo
{
public SimpleNPC Agent;
[HideInInspector]
public Vector3 StartingPos;
[HideInInspector]
public Quaternion StartingRot;
[HideInInspector]
public Rigidbody Rb;
[HideInInspector]
public Collider Col;
public Transform T;
public bool IsDead;
}
/// <summary>
/// Max Academy steps before this platform resets
/// </summary>
/// <returns></returns>
[Header("Max Environment Steps")] public int MaxEnvironmentSteps = 25000;
private int m_ResetTimer;
/// <summary>
/// The area bounds.
/// </summary>
[HideInInspector]
public Bounds areaBounds;
/// <summary>
/// The ground. The bounds are used to spawn the elements.
/// </summary>
public GameObject ground;
Material m_GroundMaterial; //cached on Awake()
/// <summary>
/// We will be changing the ground material based on success/failue
/// </summary>
Renderer m_GroundRenderer;
public List<PlayerInfo> AgentsList = new List<PlayerInfo>();
public List<DragonInfo> DragonsList = new List<DragonInfo>();
private Dictionary<PushAgentEscape, PlayerInfo> m_PlayerDict = new Dictionary<PushAgentEscape, PlayerInfo>();
public bool UseRandomAgentRotation = true;
public bool UseRandomAgentPosition = true;
PushBlockSettings m_PushBlockSettings;
private int m_NumberOfRemainingPlayers;
public GameObject Key;
public GameObject Tombstone;
private SimpleMultiAgentGroup m_AgentGroup;
void Start()
{
// Get the ground's bounds
areaBounds = ground.GetComponent<Collider>().bounds;
// Get the ground renderer so we can change the material when a goal is scored
m_GroundRenderer = ground.GetComponent<Renderer>();
// Starting material
m_GroundMaterial = m_GroundRenderer.material;
m_PushBlockSettings = FindObjectOfType<PushBlockSettings>();
//Reset Players Remaining
m_NumberOfRemainingPlayers = AgentsList.Count;
//Hide The Key
Key.SetActive(false);
// Initialize TeamManager
m_AgentGroup = new SimpleMultiAgentGroup();
foreach (var item in AgentsList)
{
item.StartingPos = item.Agent.transform.position;
item.StartingRot = item.Agent.transform.rotation;
item.Rb = item.Agent.GetComponent<Rigidbody>();
item.Col = item.Agent.GetComponent<Collider>();
// Add to team manager
m_AgentGroup.RegisterAgent(item.Agent);
}
foreach (var item in DragonsList)
{
item.StartingPos = item.Agent.transform.position;
item.StartingRot = item.Agent.transform.rotation;
item.T = item.Agent.transform;
item.Col = item.Agent.GetComponent<Collider>();
}
ResetScene();
}
// Update is called once per frame
void FixedUpdate()
{
m_ResetTimer += 1;
if (m_ResetTimer >= MaxEnvironmentSteps && MaxEnvironmentSteps > 0)
{
m_AgentGroup.GroupEpisodeInterrupted();
ResetScene();
}
}
public void TouchedHazard(PushAgentEscape agent)
{
m_NumberOfRemainingPlayers--;
if (m_NumberOfRemainingPlayers == 0 || agent.IHaveAKey)
{
m_AgentGroup.EndGroupEpisode();
ResetScene();
}
else
{
agent.EndEpisode();
agent.gameObject.SetActive(false);
}
}
public void UnlockDoor()
{
m_AgentGroup.AddGroupReward(1f);
StartCoroutine(GoalScoredSwapGroundMaterial(m_PushBlockSettings.goalScoredMaterial, 0.5f));
print("Unlocked Door");
m_AgentGroup.EndGroupEpisode();
ResetScene();
}
public void KilledByBaddie(PushAgentEscape agent, Collision baddieCol)
{
baddieCol.gameObject.SetActive(false);
m_NumberOfRemainingPlayers--;
agent.EndEpisode();
agent.gameObject.SetActive(false);
print($"{baddieCol.gameObject.name} ate {agent.transform.name}");
//Spawn Tombstone
Tombstone.transform.SetPositionAndRotation(agent.transform.position, agent.transform.rotation);
Tombstone.SetActive(true);
//Spawn the Key Pickup
Key.transform.SetPositionAndRotation(baddieCol.collider.transform.position, baddieCol.collider.transform.rotation);
Key.SetActive(true);
}
/// <summary>
/// Use the ground's bounds to pick a random spawn position.
/// </summary>
public Vector3 GetRandomSpawnPos()
{
var foundNewSpawnLocation = false;
var randomSpawnPos = Vector3.zero;
while (foundNewSpawnLocation == false)
{
var randomPosX = Random.Range(-areaBounds.extents.x * m_PushBlockSettings.spawnAreaMarginMultiplier,
areaBounds.extents.x * m_PushBlockSettings.spawnAreaMarginMultiplier);
var randomPosZ = Random.Range(-areaBounds.extents.z * m_PushBlockSettings.spawnAreaMarginMultiplier,
areaBounds.extents.z * m_PushBlockSettings.spawnAreaMarginMultiplier);
randomSpawnPos = ground.transform.position + new Vector3(randomPosX, 1f, randomPosZ);
if (Physics.CheckBox(randomSpawnPos, new Vector3(2.5f, 0.01f, 2.5f)) == false)
{
foundNewSpawnLocation = true;
}
}
return randomSpawnPos;
}
/// <summary>
/// Swap ground material, wait time seconds, then swap back to the regular material.
/// </summary>
IEnumerator GoalScoredSwapGroundMaterial(Material mat, float time)
{
m_GroundRenderer.material = mat;
yield return new WaitForSeconds(time); // Wait for 2 sec
m_GroundRenderer.material = m_GroundMaterial;
}
public void BaddieTouchedBlock()
{
m_AgentGroup.EndGroupEpisode();
// Swap ground material for a bit to indicate we scored.
StartCoroutine(GoalScoredSwapGroundMaterial(m_PushBlockSettings.failMaterial, 0.5f));
ResetScene();
}
Quaternion GetRandomRot()
{
return Quaternion.Euler(0, Random.Range(0.0f, 360.0f), 0);
}
void ResetScene()
{
//Reset counter
m_ResetTimer = 0;
//Reset Players Remaining
m_NumberOfRemainingPlayers = AgentsList.Count;
//Random platform rot
var rotation = Random.Range(0, 4);
var rotationAngle = rotation * 90f;
transform.Rotate(new Vector3(0f, rotationAngle, 0f));
//Reset Agents
foreach (var item in AgentsList)
{
var pos = UseRandomAgentPosition ? GetRandomSpawnPos() : item.StartingPos;
var rot = UseRandomAgentRotation ? GetRandomRot() : item.StartingRot;
item.Agent.transform.SetPositionAndRotation(pos, rot);
item.Rb.velocity = Vector3.zero;
item.Rb.angularVelocity = Vector3.zero;
item.Agent.MyKey.SetActive(false);
item.Agent.IHaveAKey = false;
item.Agent.gameObject.SetActive(true);
m_AgentGroup.RegisterAgent(item.Agent);
}
//Reset Key
Key.SetActive(false);
//Reset Tombstone
Tombstone.SetActive(false);
//End Episode
foreach (var item in DragonsList)
{
if (!item.Agent)
{
return;
}
item.Agent.transform.SetPositionAndRotation(item.StartingPos, item.StartingRot);
item.Agent.SetRandomWalkSpeed();
item.Agent.gameObject.SetActive(true);
}
}
}

11
Project/Assets/ML-Agents/Examples/DungeonEscape/Scripts/DungeonEscapeEnvController.cs.meta


fileFormatVersion: 2
guid: 7f0d060d8c3074edf80fc69e847d4c60
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

137
Project/Assets/ML-Agents/Examples/DungeonEscape/Scripts/PushAgentEscape.cs


using System.Collections;
using UnityEngine;
using Unity.MLAgents;
using Unity.MLAgents.Sensors;
using Unity.MLAgents.Actuators;
public class PushAgentEscape : Agent
{
public GameObject MyKey; //my key gameobject. will be enabled when key picked up.
public bool IHaveAKey; //have i picked up a key
private PushBlockSettings m_PushBlockSettings;
private Rigidbody m_AgentRb;
private DungeonEscapeEnvController m_GameController;
public override void Initialize()
{
m_GameController = GetComponentInParent<DungeonEscapeEnvController>();
m_AgentRb = GetComponent<Rigidbody>();
m_PushBlockSettings = FindObjectOfType<PushBlockSettings>();
MyKey.SetActive(false);
IHaveAKey = false;
}
public override void OnEpisodeBegin()
{
MyKey.SetActive(false);
IHaveAKey = false;
}
public override void CollectObservations(VectorSensor sensor)
{
sensor.AddObservation(IHaveAKey);
}
/// <summary>
/// Moves the agent according to the selected action.
/// </summary>
public void MoveAgent(ActionSegment<int> act)
{
var dirToGo = Vector3.zero;
var rotateDir = Vector3.zero;
var action = act[0];
switch (action)
{
case 1:
dirToGo = transform.forward * 1f;
break;
case 2:
dirToGo = transform.forward * -1f;
break;
case 3:
rotateDir = transform.up * 1f;
break;
case 4:
rotateDir = transform.up * -1f;
break;
case 5:
dirToGo = transform.right * -0.75f;
break;
case 6:
dirToGo = transform.right * 0.75f;
break;
}
transform.Rotate(rotateDir, Time.fixedDeltaTime * 200f);
m_AgentRb.AddForce(dirToGo * m_PushBlockSettings.agentRunSpeed,
ForceMode.VelocityChange);
}
/// <summary>
/// Called every step of the engine. Here the agent takes an action.
/// </summary>
public override void OnActionReceived(ActionBuffers actionBuffers)
{
// Move the agent using the action.
MoveAgent(actionBuffers.DiscreteActions);
}
void OnCollisionEnter(Collision col)
{
if (col.transform.CompareTag("lock"))
{
if (IHaveAKey)
{
MyKey.SetActive(false);
IHaveAKey = false;
m_GameController.UnlockDoor();
}
}
if (col.transform.CompareTag("dragon"))
{
m_GameController.KilledByBaddie(this, col);
MyKey.SetActive(false);
IHaveAKey = false;
}
if (col.transform.CompareTag("portal"))
{
m_GameController.TouchedHazard(this);
}
}
void OnTriggerEnter(Collider col)
{
//if we find a key and it's parent is the main platform we can pick it up
if (col.transform.CompareTag("key") && col.transform.parent == transform.parent && gameObject.activeInHierarchy)
{
print("Picked up key");
MyKey.SetActive(true);
IHaveAKey = true;
col.gameObject.SetActive(false);
}
}
public override void Heuristic(in ActionBuffers actionsOut)
{
var discreteActionsOut = actionsOut.DiscreteActions;
discreteActionsOut[0] = 0;
if (Input.GetKey(KeyCode.D))
{
discreteActionsOut[0] = 3;
}
else if (Input.GetKey(KeyCode.W))
{
discreteActionsOut[0] = 1;
}
else if (Input.GetKey(KeyCode.A))
{
discreteActionsOut[0] = 4;
}
else if (Input.GetKey(KeyCode.S))
{
discreteActionsOut[0] = 2;
}
}
}

12
Project/Assets/ML-Agents/Examples/DungeonEscape/Scripts/PushAgentEscape.cs.meta


fileFormatVersion: 2
guid: 78c960fbbc7844c269d4d14ae68abfc8
timeCreated: 1506829537
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

45
Project/Assets/ML-Agents/Examples/DungeonEscape/Scripts/SimpleNPC.cs


// using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SimpleNPC : MonoBehaviour
{
public Transform target;
private Rigidbody rb;
public float walkSpeed = 1;
// public ForceMode walkForceMode;
private Vector3 dirToGo;
// private Vector3 m_StartingPos;
// Start is called before the first frame update
void Awake()
{
rb = GetComponent<Rigidbody>();
// m_StartingPos = transform.position;
}
// Update is called once per frame
void Update()
{
}
void FixedUpdate()
{
dirToGo = target.position - transform.position;
dirToGo.y = 0;
rb.rotation = Quaternion.LookRotation(dirToGo);
// rb.AddForce(dirToGo.normalized * walkSpeed * Time.fixedDeltaTime, walkForceMode);
// rb.MovePosition(rb.transform.TransformDirection(Vector3.forward * walkSpeed * Time.deltaTime));
// rb.MovePosition(rb.transform.TransformVector() (Vector3.forward * walkSpeed * Time.deltaTime));
rb.MovePosition(transform.position + transform.forward * walkSpeed * Time.deltaTime);
}
public void SetRandomWalkSpeed()
{
walkSpeed = Random.Range(1f, 7f);
}
}

11
Project/Assets/ML-Agents/Examples/DungeonEscape/Scripts/SimpleNPC.cs.meta


fileFormatVersion: 2
guid: 9685bac759362440ea71765cdece3305
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

8
Project/Assets/ML-Agents/Examples/DungeonEscape/TFModels.meta


fileFormatVersion: 2
guid: 28cc4e23163ed4144be9a5100f66585b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

1001
Project/Assets/ML-Agents/Examples/DungeonEscape/TFModels/DungeonEscape.onnx
文件差异内容过多而无法显示
查看文件

14
Project/Assets/ML-Agents/Examples/DungeonEscape/TFModels/DungeonEscape.onnx.meta


fileFormatVersion: 2
guid: b56a13a0e996e4f719001b218cb87d5a
ScriptedImporter:
fileIDToRecycleName:
11400000: main obj
11400002: model data
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 683b6cb6d0a474744822c888b46772c9, type: 3}
optimizeModel: 1
forceArbitraryBatchSize: 1
treatErrorsAsWarnings: 0
正在加载...
取消
保存