浏览代码

Create ML-Agents Package (#3267)

Convert the UnitySDK to a Packman Package.

- Separate Examples into a sample project.
- Move core UnitySDK Code into com.unity.ml-agents.
- Create asmdefs for the ml-agents package.
- Add package validation tests for win/linux/max.
- Update protobuf generation scripts.
- Add Barracuda as a package dependency for ML-Agents. (users no longer have to install it themselves).
/asymm-envs
GitHub 5 年前
当前提交
0ff8f9af
共有 144 个文件被更改,包括 1625 次插入406 次删除
  1. 2
      .circleci/config.yml
  2. 26
      .gitignore
  3. 2
      README.md
  4. 16
      config/gail_config.yaml
  5. 4
      config/sac_trainer_config.yaml
  6. 4
      docs/Basic-Guide.md
  7. 4
      docs/Installation-Windows.md
  8. 6
      docs/Installation.md
  9. 10
      docs/Learning-Environment-Create-New.md
  10. 4
      docs/Learning-Environment-Examples.md
  11. 4
      docs/Learning-Environment-Executable.md
  12. 2
      docs/Reward-Signals.md
  13. 2
      docs/Training-Curriculum-Learning.md
  14. 2
      docs/Training-PPO.md
  15. 2
      docs/Training-SAC.md
  16. 8
      docs/dox-ml-agents.conf
  17. 221
      docs/images/mlagents-NewProject.png
  18. 4
      docs/localized/KR/README.md
  19. 2
      docs/localized/zh-CN/README.md
  20. 2
      docs/localized/zh-CN/docs/Learning-Environment-Examples.md
  21. 4
      ml-agents/mlagents/trainers/tests/test_bcmodule.py
  22. 2
      ml-agents/mlagents/trainers/tests/test_reward_signals.py
  23. 2
      ml-agents/tests/yamato/editmode_tests.py
  24. 2
      ml-agents/tests/yamato/standalone_build_tests.py
  25. 2
      protobuf-definitions/README.md
  26. 6
      protobuf-definitions/make.sh
  27. 6
      protobuf-definitions/make_for_win.bat
  28. 2
      utils/validate_meta_files.py
  29. 2
      com.unity.ml-agents/CONTRIBUTING.md
  30. 5
      com.unity.ml-agents/Plugins/ProtoBuffer/Grpc.Core.dll.meta
  31. 5
      com.unity.ml-agents/Plugins/ProtoBuffer/runtimes/win/native/grpc_csharp_ext.x64.dll.meta
  32. 5
      com.unity.ml-agents/Plugins/ProtoBuffer/runtimes/win/native/grpc_csharp_ext.x86.dll.meta
  33. 5
      com.unity.ml-agents/Plugins/ProtoBuffer/runtimes/linux/native/libgrpc_csharp_ext.x64.so.meta
  34. 247
      com.unity.ml-agents/Plugins/ProtoBuffer/runtimes/osx/native/libgrpc_csharp_ext.x64.bundle.meta
  35. 26
      com.unity.ml-agents/Runtime/Grpc/GrpcExtensions.cs
  36. 4
      com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/AgentAction.cs
  37. 4
      com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/AgentInfo.cs
  38. 4
      com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/AgentInfoActionPair.cs
  39. 4
      com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/BrainParameters.cs
  40. 4
      com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/Command.cs
  41. 4
      com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/CustomResetParameters.cs
  42. 4
      com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/DemonstrationMeta.cs
  43. 4
      com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/EngineConfiguration.cs
  44. 4
      com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/Header.cs
  45. 8
      com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/Observation.cs
  46. 4
      com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/SpaceType.cs
  47. 4
      com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/UnityInput.cs
  48. 4
      com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/UnityMessage.cs
  49. 4
      com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/UnityOutput.cs
  50. 4
      com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/UnityRlInitializationInput.cs
  51. 4
      com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/UnityRlInitializationOutput.cs
  52. 6
      com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/UnityRlInput.cs
  53. 6
      com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/UnityRlOutput.cs
  54. 2
      com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/UnityToExternalGrpc.cs
  55. 6
      Project/ProjectSettings/ClusterInputManager.asset
  56. 5
      Project/ProjectSettings/GraphicsSettings.asset
  57. 295
      Project/ProjectSettings/InputManager.asset
  58. 2
      Project/ProjectSettings/NavMeshAreas.asset
  59. 9
      Project/ProjectSettings/TimeManager.asset
  60. 1
      Project/ProjectSettings/EditorBuildSettings.asset
  61. 1
      Project/ProjectSettings/ProjectVersion.txt
  62. 13
      .yamato/com.unity.ml-agents-pack.yml
  63. 44
      .yamato/com.unity.ml-agents-test.yml
  64. 69
      Project/.gitignore
  65. 8
      Project/Assets/ML-Agents/Editor.meta
  66. 8
      Project/Assets/ML-Agents/Editor/Tests.meta
  67. 45
      Project/Packages/manifest.json
  68. 19
      Project/ProjectSettings/AudioManager.asset
  69. 33
      Project/ProjectSettings/DynamicsManager.asset
  70. 23
      Project/ProjectSettings/EditorSettings.asset
  71. 56
      Project/ProjectSettings/Physics2DSettings.asset
  72. 229
      Project/ProjectSettings/QualitySettings.asset
  73. 66
      Project/ProjectSettings/TagManager.asset
  74. 34
      Project/ProjectSettings/UnityConnectSettings.asset
  75. 10
      Project/ProjectSettings/XRSettings.asset
  76. 27
      com.unity.ml-agents/.gitignore
  77. 19
      com.unity.ml-agents/.npmignore
  78. 11
      com.unity.ml-agents/CHANGELOG.md
  79. 7
      com.unity.ml-agents/CHANGELOG.md.meta
  80. 7
      com.unity.ml-agents/CONTRIBUTING.md.meta
  81. 3
      com.unity.ml-agents/Documentation~/TableOfContents.md
  82. 1
      com.unity.ml-agents/Documentation~/index.md
  83. 8
      com.unity.ml-agents/Editor.meta
  84. 201
      com.unity.ml-agents/LICENSE.md
  85. 7
      com.unity.ml-agents/LICENSE.md.meta
  86. 8
      com.unity.ml-agents/Plugins.meta
  87. 7
      com.unity.ml-agents/README.md.meta
  88. 8
      com.unity.ml-agents/Runtime.meta
  89. 8
      com.unity.ml-agents/Tests.meta
  90. 3
      com.unity.ml-agents/Tests/.tests.json

2
.circleci/config.yml


chmod +x Grpc.Tools.1.14.1/tools/linux_x64/protoc
chmod +x Grpc.Tools.1.14.1/tools/linux_x64/grpc_csharp_plugin
COMPILER=Grpc.Tools.1.14.1/tools/linux_x64 ./make.sh
CS_PROTO_PATH=UnitySDK/Assets/ML-Agents/Scripts/Grpc/CommunicatorObjects
CS_PROTO_PATH=com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects
git diff --exit-code --quiet -- :/ ":(exclude,top)$CS_PROTO_PATH/*.meta" \
|| { GIT_ERR=$?; echo "protobufs need to be regenerated, apply the patch uploaded to artifacts."; \
echo "Apply the patch with the command: git apply proto.patch"; \

26
.gitignore


/UnitySDK/[Ll]ibrary/
/UnitySDK/Logs/
/UnitySDK/[Tt]emp/
/UnitySDK/[Oo]bj/
/UnitySDK/[Bb]uild/
/UnitySDK/[Bb]uilds/
/UnitySDK/Assets/AssetStoreTools*
/UnitySDK/Assets/Plugins*
/UnitySDK/Assets/Demonstrations*
/UnitySDK/csharp_timers.json
# Tensorflow Model Info
/models
/summaries

/UnitySDK/.vs/
# Autogenerated VS/MD/Consulo solution and project files
/UnitySDKExportedObj/
/UnitySDK.consulo/
/com.unity.ml-agentsExportedObj/
/com.unity.ml-agents.consulo/
*.csproj
*.unityproj
*.sln

*.pidb.meta
# Unity3D Generated File On Crash Reports
/UnitySDK/sysinfo.txt
/com.unity.ml-agents/sysinfo.txt
# Builds
*.apk

*.x86_64
*.x86
# Tensorflow Sharp Files
/UnitySDK/Assets/ML-Agents/Plugins/Android*
/UnitySDK/Assets/ML-Agents/Plugins/iOS*
/UnitySDK/Assets/ML-Agents/Plugins/Computer*
/UnitySDK/Assets/ML-Agents/Plugins/System.Numerics*
/UnitySDK/Assets/ML-Agents/Plugins/System.ValueTuple*
/UnitySDK/Assets/ML-Agents/VideoRecorder*
/com.unity.ml-agents/VideoRecorder*
# Generated doc folders
/docs/html

2
README.md


The ML-Agents toolkit is an open-source project and we encourage and welcome
contributions. If you wish to contribute, be sure to review our
[contribution guidelines](CONTRIBUTING.md) and
[contribution guidelines](com.unity.ml-agents/CONTRIBUTING.md) and
[code of conduct](CODE_OF_CONDUCT.md).
If you run into any problems using the ML-Agents toolkit,

16
config/gail_config.yaml


max_steps: 5.0e5
num_epoch: 3
behavioral_cloning:
demo_path: UnitySDK/Assets/ML-Agents/Examples/Pyramids/Demos/ExpertPyramid.demo
demo_path: Project/Assets/ML-Agents/Examples/Pyramids/Demos/ExpertPyramid.demo
strength: 0.5
steps: 10000
reward_signals:

strength: 0.01
gamma: 0.99
encoding_size: 128
demo_path: UnitySDK/Assets/ML-Agents/Examples/Pyramids/Demos/ExpertPyramid.demo
demo_path: Project/Assets/ML-Agents/Examples/Pyramids/Demos/ExpertPyramid.demo
CrawlerStatic:
normalize: true

num_layers: 3
hidden_units: 512
behavioral_cloning:
demo_path: UnitySDK/Assets/ML-Agents/Examples/Crawler/Demos/ExpertCrawlerSta.demo
demo_path: Project/Assets/ML-Agents/Examples/Crawler/Demos/ExpertCrawlerSta.demo
strength: 0.5
steps: 5000
reward_signals:

encoding_size: 128
demo_path: UnitySDK/Assets/ML-Agents/Examples/Crawler/Demos/ExpertCrawlerSta.demo
demo_path: Project/Assets/ML-Agents/Examples/Crawler/Demos/ExpertCrawlerSta.demo
PushBlock:
max_steps: 5.0e4

strength: 1.0
gamma: 0.99
encoding_size: 128
demo_path: UnitySDK/Assets/ML-Agents/Examples/PushBlock/Demos/ExpertPush.demo
demo_path: Project/Assets/ML-Agents/Examples/PushBlock/Demos/ExpertPush.demo
Hallway:
use_recurrent: true

strength: 0.1
gamma: 0.99
encoding_size: 128
demo_path: UnitySDK/Assets/ML-Agents/Examples/Hallway/Demos/ExpertHallway.demo
demo_path: Project/Assets/ML-Agents/Examples/Hallway/Demos/ExpertHallway.demo
FoodCollector:
batch_size: 64

strength: 0.1
gamma: 0.99
encoding_size: 128
demo_path: UnitySDK/Assets/ML-Agents/Examples/FoodCollector/Demos/ExpertFood.demo
demo_path: Project/Assets/ML-Agents/Examples/FoodCollector/Demos/ExpertFood.demo
demo_path: UnitySDK/Assets/ML-Agents/Examples/FoodCollector/Demos/ExpertFood.demo
demo_path: Project/Assets/ML-Agents/Examples/FoodCollector/Demos/ExpertFood.demo
strength: 1.0
steps: 0

4
config/sac_trainer_config.yaml


gamma: 0.99
encoding_size: 128
use_actions: true
demo_path: UnitySDK/Assets/ML-Agents/Examples/Pyramids/Demos/ExpertPyramid.demo
demo_path: Project/Assets/ML-Agents/Examples/Pyramids/Demos/ExpertPyramid.demo
VisualPyramids:
time_horizon: 128

gamma: 0.99
encoding_size: 128
use_actions: true
demo_path: UnitySDK/Assets/ML-Agents/Examples/Pyramids/Demos/ExpertPyramid.demo
demo_path: Project/Assets/ML-Agents/Examples/Pyramids/Demos/ExpertPyramid.demo
3DBall:
normalize: true

4
docs/Basic-Guide.md


1. Launch Unity
2. On the Projects dialog, choose the **Open** option at the top of the window.
3. Using the file dialog that opens, locate the `UnitySDK` folder
3. Using the file dialog that opens, locate the `Project` folder
within the ML-Agents toolkit project and click **Open**.
4. Go to **Edit** > **Project Settings** > **Player**
5. For **each** of the platforms you target (**PC, Mac and Linux Standalone**,

[above](#running-a-pre-trained-model).
1. Move your model file into
`UnitySDK/Assets/ML-Agents/Examples/3DBall/TFModels/`.
`Project/Assets/ML-Agents/Examples/3DBall/TFModels/`.
2. Open the Unity Editor, and select the **3DBall** scene as described above.
3. Select the **3DBall** prefab Agent object.
4. Drag the `<behavior_name>.nn` file from the Project window of

4
docs/Installation-Windows.md


If you don't want to use Git, you can always directly download all the files
[here](https://github.com/Unity-Technologies/ml-agents/archive/latest_release.zip).
The `UnitySDK` subdirectory contains the Unity Assets to add to your projects.
It also contains many [example environments](Learning-Environment-Examples.md)
The `com.unity.ml-agents` subdirectory contains the core code to add to your projects.
The `Project` subdirectory contains many [example environments](Learning-Environment-Examples.md)
to help you get started.
The `ml-agents` subdirectory contains a Python package which provides deep reinforcement

6
docs/Installation.md


The `--branch latest_release` option will switch to the tag of the latest stable release.
Omitting that will get the `master` branch which is potentially unstable.
The `UnitySDK` subdirectory contains the Unity Assets to add to your projects.
It also contains many [example environments](Learning-Environment-Examples.md)
The `com.unity.ml-agents` subdirectory contains the core code to add to your projects.
The `Project` subdirectory contains many [example environments](Learning-Environment-Examples.md)
If you intend to copy the `UnitySDK` folder in to your project, ensure that
If you intend to copy the `com.unity.ml-agents` folder in to your project, ensure that
you have the [Barracuda preview package](https://docs.unity3d.com/Packages/com.unity.barracuda@0.3/manual/index.html) installed.
To install the Barracuda package in later versions of Unity, navigate to the Package

10
docs/Learning-Environment-Create-New.md


but is the default as of 2018.3.)
3. In a file system window, navigate to the folder containing your cloned
ML-Agents repository.
4. Drag the `ML-Agents` folder from `UnitySDK/Assets` to the Unity
Editor Project window. If you see console errors about Barracuda, make sure
you've installed Barracuda from the Unity Package Manager. More information
can be found in the [installation instructions](Installation.md) under
4. Open the `manifest.json` file in the `Packages` directory of your project.
Add the following line to your project's package dependencies:
```
"com.unity.ml-agents" : "file:<path_to_local_ml-agents_repo>/com.unity.ml-agents"
```
More information can be found in the [installation instructions](Installation.md) under
**Package Installation**.
Your Unity **Project** window should contain the following assets:

4
docs/Learning-Environment-Examples.md


The Unity ML-Agents toolkit contains an expanding set of example environments
which demonstrate various features of the platform. Environments are located in
`UnitySDK/Assets/ML-Agents/Examples` and summarized below. Additionally, our
`Project/Assets/ML-Agents/Examples` and summarized below. Additionally, our
[first ML Challenge](https://connect.unity.com/challenges/ml-agents-1) contains
environments created by the community.

researchers.
If you would like to contribute environments, please see our
[contribution guidelines](../CONTRIBUTING.md) page.
[contribution guidelines](../com.unity.ml-agents/CONTRIBUTING.md) page.
## Basic

4
docs/Learning-Environment-Executable.md


1. Launch Unity.
2. On the Projects dialog, choose the **Open** option at the top of the window.
3. Using the file dialog that opens, locate the `UnitySDK` folder within the
3. Using the file dialog that opens, locate the `Project` folder within the
ML-Agents project and click **Open**.
4. In the **Project** window, navigate to the folder
`Assets/ML-Agents/Examples/3DBall/Scenes/`.

into your Agent by following the steps below:
1. Move your model file into
`UnitySDK/Assets/ML-Agents/Examples/3DBall/TFModels/`.
`Project/Assets/ML-Agents/Examples/3DBall/TFModels/`.
2. Open the Unity Editor, and select the **3DBall** scene as described above.
3. Select the **3DBall** prefab from the Project window and select **Agent**.
5. Drag the `<behavior_name>.nn` file from the Project window of

2
docs/Reward-Signals.md


strength: 0.01
gamma: 0.99
encoding_size: 128
demo_path: UnitySDK/Assets/ML-Agents/Examples/Pyramids/Demos/ExpertPyramid.demo
demo_path: Project/Assets/ML-Agents/Examples/Pyramids/Demos/ExpertPyramid.demo
```
Each reward signal should define at least two parameters, `strength` and `gamma`, in addition

2
docs/Training-Curriculum-Learning.md


Once our curriculum is defined, we have to use the reset parameters we defined
and modify the environment from the Agent's `AgentReset()` function. See
[WallJumpAgent.cs](https://github.com/Unity-Technologies/ml-agents/blob/master/UnitySDK/Assets/ML-Agents/Examples/WallJump/Scripts/WallJumpAgent.cs)
[WallJumpAgent.cs](https://github.com/Unity-Technologies/ml-agents/blob/master/Project/Assets/ML-Agents/Examples/WallJump/Scripts/WallJumpAgent.cs)
for an example.

2
docs/Training-PPO.md


```
behavioral_cloning:
demo_path: ./UnitySDK/Assets/ML-Agents/Examples/Pyramids/Demos/ExpertPyramid.demo
demo_path: ./Project/Assets/ML-Agents/Examples/Pyramids/Demos/ExpertPyramid.demo
strength: 0.5
steps: 10000
```

2
docs/Training-SAC.md


```
behavioral_cloning:
demo_path: ./UnitySDK/Assets/ML-Agents/Examples/Pyramids/Demos/ExpertPyramid.demo
demo_path: ./Project/Assets/ML-Agents/Examples/Pyramids/Demos/ExpertPyramid.demo
strength: 0.5
steps: 10000
```

8
docs/dox-ml-agents.conf


# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
# Note: If this tag is empty the current directory is searched.
INPUT = ../UnitySDK/Assets/ML-Agents/Scripts/Academy.cs \
../UnitySDK/Assets/ML-Agents/Scripts/Agent.cs \
../UnitySDK/Assets/ML-Agents/Scripts/Monitor.cs \
../UnitySDK/Assets/ML-Agents/Scripts/Decision.cs
INPUT = ../Project/Assets/ML-Agents/Scripts/Academy.cs \
../Project/Assets/ML-Agents/Scripts/Agent.cs \
../Project/Assets/ML-Agents/Scripts/Monitor.cs \
../Project/Assets/ML-Agents/Scripts/Decision.cs
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses

221
docs/images/mlagents-NewProject.png

之前 之后
宽度: 193  |  高度: 345  |  大小: 20 KiB

4
docs/localized/KR/README.md


## 커뮤니티 그리고 피드백
ML-Agents toolkit은 오픈소스 프로젝트이며 컨트리뷰션을 환영합니다. 만약 컨트리뷰션을 원하시는 경우
[컨트리뷰션 가이드라인](CONTRIBUTING.md)과 [행동 규칙](CODE_OF_CONDUCT.md)을 검토해주십시오.
[컨트리뷰션 가이드라인](com/unity.ml-agents/CONTRIBUTING.md)과 [행동 규칙](CODE_OF_CONDUCT.md)을 검토해주십시오.
만약 ML-Agents toolkit을 사용하며 문제가 생긴다면, 가능한 많은 세부 사항을 포함하여 [이슈 제출](https://github.com/Unity-Technologies/ml-agents/issues)을 해주십시오.

장현준: totok682@naver.com
민규식: kyushikmin@gmail.com
민규식: kyushikmin@gmail.com

2
docs/localized/zh-CN/README.md


ML-Agents 是一个开源项目,我们鼓励并欢迎大家贡献自己的力量。
如果您想做出贡献,请务必查看我们的
[贡献准则](/CONTRIBUTING.md)和
[贡献准则](/com.unity.ml-agents/CONTRIBUTING.md)和
[行为准则](/CODE_OF_CONDUCT.md)。
您可以通过 Unity Connect 和 GitHub 与我们以及更广泛的社区进行交流:

2
docs/localized/zh-CN/docs/Learning-Environment-Examples.md


页面。
如果您想提交自己的环境,请参阅我们的
[贡献指南](/CONTRIBUTING.md)页面。
[贡献指南](/com.unity.ml-agents/CONTRIBUTING.md)页面。
## Basic

4
ml-agents/mlagents/trainers/tests/test_bcmodule.py


use_recurrent: false
memory_size: 8
behavioral_cloning:
demo_path: ./UnitySDK/Assets/ML-Agents/Examples/Pyramids/Demos/ExpertPyramid.demo
demo_path: ./Project/Assets/ML-Agents/Examples/Pyramids/Demos/ExpertPyramid.demo
strength: 1.0
steps: 10000000
reward_signals:

use_recurrent: false
vis_encode_type: simple
behavioral_cloning:
demo_path: ./UnitySDK/Assets/ML-Agents/Examples/Pyramids/Demos/ExpertPyramid.demo
demo_path: ./Project/Assets/ML-Agents/Examples/Pyramids/Demos/ExpertPyramid.demo
strength: 1.0
steps: 10000000
reward_signals:

2
ml-agents/mlagents/trainers/tests/test_reward_signals.py


use_recurrent: false
vis_encode_type: simple
behavioral_cloning:
demo_path: ./UnitySDK/Assets/ML-Agents/Examples/Pyramids/Demos/ExpertPyramid.demo
demo_path: ./Project/Assets/ML-Agents/Examples/Pyramids/Demos/ExpertPyramid.demo
strength: 1.0
steps: 10000000
reward_signals:

2
ml-agents/tests/yamato/editmode_tests.py


"-logfile",
"-",
"-projectPath",
f"{base_path}/UnitySDK",
f"{base_path}/Project",
"-testResults",
f"{base_path}/results.xml",
"-testPlatform",

2
ml-agents/tests/yamato/standalone_build_tests.py


test_args = [
unity_exe,
"-projectPath",
f"{base_path}/UnitySDK",
f"{base_path}/Project",
"-logfile",
"-",
"-batchmode",

2
protobuf-definitions/README.md


2. Un-comment line 7 in `make.sh` (for Windows, use `make_for_win.bat`), and set to correct Grpc.Tools sub-directory.
3. Run the protobuf generation script from the terminal by navigating to `$MLAGENTS_ROOT\protobuf-definitions` and entering `make.sh` (for Windows, use `make_for_win.bat`)
4. Note any errors generated that may result from setting the wrong directory in step 2.
5. In the generated `UnityToExternalGrpc.cs` file in the `$MLAGENTS_ROOT/UnitySDK/Assets/ML-Agents/Scripts/CommunicatorObjects` folder, check to see if you need to add the following to the beginning of the file:
5. In the generated `UnityToExternalGrpc.cs` file in the `$MLAGENTS_ROOT/com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects` folder, check to see if you need to add the following to the beginning of the file:
```csharp
# if UNITY_EDITOR || UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_STANDALONE_LINUX

6
protobuf-definitions/make.sh


# COMPILER=[DIRECTORY]
SRC_DIR=proto/mlagents_envs/communicator_objects
DST_DIR_C=../UnitySDK/Assets/ML-Agents/Scripts/Grpc/CommunicatorObjects
DST_DIR_C=../com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects
DST_DIR_P=../ml-agents-envs
PROTO_PATH=proto
PYTHON_PACKAGE=mlagents_envs/communicator_objects

# generate proto objects in python and C#
$COMPILER/protoc --proto_path=proto --csharp_out=$DST_DIR_C $SRC_DIR/*.proto
$COMPILER/protoc --proto_path=proto --csharp_opt=internal_access --csharp_out $DST_DIR_C $SRC_DIR/*.proto
$COMPILER/protoc --proto_path=proto --python_out=$DST_DIR_P --mypy_out=$DST_DIR_P $SRC_DIR/*.proto
# grpc

$COMPILER/protoc --proto_path=proto --csharp_out $DST_DIR_C --grpc_out $DST_DIR_C $SRC_DIR/$GRPC --plugin=protoc-gen-grpc=$COMPILER/grpc_csharp_plugin
$COMPILER/protoc --proto_path=proto --csharp_out=$DST_DIR_C --grpc_out=internal_access:$DST_DIR_C $SRC_DIR/$GRPC --plugin=protoc-gen-grpc=$COMPILER/grpc_csharp_plugin
python3 -m grpc_tools.protoc --proto_path=proto --python_out=$DST_DIR_P --grpc_python_out=$DST_DIR_P $SRC_DIR/$GRPC

6
protobuf-definitions/make_for_win.bat


rem set COMPILER=[DIRECTORY]
set SRC_DIR=proto\mlagents_envs\communicator_objects
set DST_DIR_C=..\UnitySDK\Assets\ML-Agents\Scripts\Grpc\CommunicatorObjects
set DST_DIR_C=..\com.unity.ml-agents\Runtime\Grpc\CommunicatorObjects
set DST_DIR_P=..\ml-agents-envs
set PROTO_PATH=proto

rem generate proto objects in python and C#
for %%i in (%SRC_DIR%\*.proto) do (
%COMPILER%\protoc --proto_path=proto --csharp_out=%DST_DIR_C% %%i
%COMPILER%\protoc --proto_path=proto --csharp_opt=internal_access --csharp_out=%DST_DIR_C% %%i
%COMPILER%\protoc --proto_path=proto --python_out=%DST_DIR_P% %%i
)

%COMPILER%\protoc --proto_path=proto --csharp_out %DST_DIR_C% --grpc_out %DST_DIR_C% %SRC_DIR%\%GRPC% --plugin=protoc-gen-grpc=%COMPILER%\grpc_csharp_plugin.exe
%COMPILER%\protoc --proto_path=proto --csharp_out %DST_DIR_C% --grpc_out=internal_access:%DST_DIR_C% %SRC_DIR%\%GRPC% --plugin=protoc-gen-grpc=%COMPILER%\grpc_csharp_plugin.exe --csharp_opt=internal_access
python -m grpc_tools.protoc --proto_path=proto --python_out=%DST_DIR_P% --grpc_python_out=%DST_DIR_P% %SRC_DIR%\%GRPC%
rem Generate the init file for the python module

2
utils/validate_meta_files.py


def main():
asset_path = "UnitySDK/Assets"
asset_path = "Project/Assets"
meta_suffix = ".meta"
python_suffix = ".py"

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


## Communication
First, please read through our [code of conduct](CODE_OF_CONDUCT.md), as we
First, please read through our [code of conduct](https://github.com/Unity-Technologies/ml-agents/blob/master/CODE_OF_CONDUCT.md), as we
expect all our contributors to follow it.
Second, before starting on a project that you intend to contribute to the

5
com.unity.ml-agents/Plugins/ProtoBuffer/Grpc.Core.dll.meta


serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
'': Any

second:
enabled: 1
settings:
CPU: x86_64
CPU: AnyCPU
- first:
Standalone: LinuxUniversal
second:

5
com.unity.ml-agents/Plugins/ProtoBuffer/runtimes/win/native/grpc_csharp_ext.x64.dll.meta


serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
'': Any

second:
enabled: 1
settings:
CPU: x86_64
CPU: AnyCPU
- first:
Standalone: LinuxUniversal
second:

5
com.unity.ml-agents/Plugins/ProtoBuffer/runtimes/win/native/grpc_csharp_ext.x86.dll.meta


serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
'': Any

second:
enabled: 1
settings:
CPU: x86_64
CPU: AnyCPU
- first:
Standalone: LinuxUniversal
second:

5
com.unity.ml-agents/Plugins/ProtoBuffer/runtimes/linux/native/libgrpc_csharp_ext.x64.so.meta


serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
'': Any

second:
enabled: 1
settings:
CPU: x86_64
CPU: AnyCPU
- first:
Standalone: LinuxUniversal
second:

247
com.unity.ml-agents/Plugins/ProtoBuffer/runtimes/osx/native/libgrpc_csharp_ext.x64.bundle.meta


fileFormatVersion: 2
guid: 7eeb863bd08ba4388829c23da03a714f
PluginImporter:
externalObjects: {}
defineConstraints: []
isExplicitlyReferenced: 0
validateReferences: 1
data:
first:
'': Any
second:
enabled: 0
settings:
Exclude Android: 1
Exclude Editor: 0
Exclude Linux: 1
Exclude Linux64: 1
Exclude LinuxUniversal: 1
Exclude OSXIntel: 0
Exclude OSXIntel64: 0
Exclude OSXUniversal: 0
Exclude Win: 1
Exclude Win64: 1
Exclude iOS: 1
data:
first:
'': OSXIntel
second:
enabled: 1
settings: {}
data:
first:
'': OSXIntel64
second:
enabled: 1
settings: {}
data:
first:
Android: Android
second:
enabled: 0
settings:
CPU: ARMv7
data:
first:
Any:
second:
enabled: 0
settings: {}
data:
first:
Editor: Editor
second:
enabled: 1
settings:
CPU: x86_64
DefaultValueInitialized: true
OS: OSX
data:
first:
Facebook: Win
second:
enabled: 0
settings:
CPU: AnyCPU
data:
first:
Facebook: Win64
second:
enabled: 0
settings:
CPU: AnyCPU
data:
first:
Standalone: Linux
second:
enabled: 0
settings:
CPU: x86
data:
first:
Standalone: Linux64
second:
enabled: 0
settings:
CPU: x86_64
data:
first:
Standalone: LinuxUniversal
second:
enabled: 0
settings:
CPU: None
data:
first:
Standalone: OSXIntel
second:
enabled: 1
settings:
CPU: AnyCPU
data:
first:
Standalone: OSXIntel64
second:
enabled: 1
settings:
CPU: AnyCPU
data:
first:
Standalone: OSXUniversal
second:
enabled: 1
settings:
CPU: AnyCPU
data:
first:
Standalone: Win
second:
enabled: 0
settings:
CPU: AnyCPU
data:
first:
Standalone: Win64
second:
enabled: 0
settings:
CPU: AnyCPU
data:
first:
iPhone: iOS
second:
enabled: 0
settings:
AddToEmbeddedBinaries: false
CompileFlags:
FrameworkDependencies:
- first:
'': Any
second:
enabled: 0
settings:
Exclude Android: 1
Exclude Editor: 0
Exclude Linux: 1
Exclude Linux64: 1
Exclude LinuxUniversal: 1
Exclude OSXIntel: 0
Exclude OSXIntel64: 0
Exclude OSXUniversal: 0
Exclude Win: 1
Exclude Win64: 1
Exclude iOS: 1
- first:
'': OSXIntel
second:
enabled: 1
settings: {}
- first:
'': OSXIntel64
second:
enabled: 1
settings: {}
- first:
Android: Android
second:
enabled: 0
settings:
CPU: ARMv7
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 1
settings:
CPU: x86_64
DefaultValueInitialized: true
OS: OSX
- first:
Facebook: Win
second:
enabled: 0
settings:
CPU: AnyCPU
- first:
Facebook: Win64
second:
enabled: 0
settings:
CPU: AnyCPU
- first:
Standalone: Linux
second:
enabled: 0
settings:
CPU: x86
- first:
Standalone: Linux64
second:
enabled: 0
settings:
CPU: AnyCPU
- first:
Standalone: LinuxUniversal
second:
enabled: 0
settings:
CPU: None
- first:
Standalone: OSXIntel
second:
enabled: 1
settings:
CPU: AnyCPU
- first:
Standalone: OSXIntel64
second:
enabled: 1
settings:
CPU: AnyCPU
- first:
Standalone: OSXUniversal
second:
enabled: 1
settings:
CPU: AnyCPU
- first:
Standalone: Win
second:
enabled: 0
settings:
CPU: AnyCPU
- first:
Standalone: Win64
second:
enabled: 0
settings:
CPU: AnyCPU
- first:
iPhone: iOS
second:
enabled: 0
settings:
AddToEmbeddedBinaries: false
CompileFlags:
FrameworkDependencies:
userData:
assetBundleName:
assetBundleVariant:

26
com.unity.ml-agents/Runtime/Grpc/GrpcExtensions.cs


using MLAgents.CommunicatorObjects;
using MLAgents.Sensor;
using UnityEngine;
using System.Runtime.CompilerServices;
[assembly: InternalsVisibleTo("Unity.ML-Agents.Editor")]
[assembly: InternalsVisibleTo("Unity.ML-Agents.Editor.Tests")]
namespace MLAgents
{

/// Converts a AgentInfo to a protobuf generated AgentInfoActionPairProto
/// </summary>
/// <returns>The protobuf version of the AgentInfoActionPairProto.</returns>
public static AgentInfoActionPairProto ToInfoActionPairProto(this AgentInfo ai)
internal static AgentInfoActionPairProto ToInfoActionPairProto(this AgentInfo ai)
{
var agentInfoProto = ai.ToAgentInfoProto();

/// Converts a AgentInfo to a protobuf generated AgentInfoProto
/// </summary>
/// <returns>The protobuf version of the AgentInfo.</returns>
public static AgentInfoProto ToAgentInfoProto(this AgentInfo ai)
internal static AgentInfoProto ToAgentInfoProto(this AgentInfo ai)
{
var agentInfoProto = new AgentInfoProto
{

/// <param name="bp">The instance of BrainParameter to extend.</param>
/// <param name="name">The name of the brain.</param>
/// <param name="isTraining">Whether or not the Brain is training.</param>
public static BrainParametersProto ToProto(this BrainParameters bp, string name, bool isTraining)
internal static BrainParametersProto ToProto(this BrainParameters bp, string name, bool isTraining)
{
var brainParametersProto = new BrainParametersProto
{

/// <summary>
/// Convert metadata object to proto object.
/// </summary>
public static DemonstrationMetaProto ToProto(this DemonstrationMetaData dm)
internal static DemonstrationMetaProto ToProto(this DemonstrationMetaData dm)
{
var demoProto = new DemonstrationMetaProto
{

/// <summary>
/// Initialize metadata values based on proto object.
/// </summary>
public static DemonstrationMetaData ToDemonstrationMetaData(this DemonstrationMetaProto demoProto)
internal static DemonstrationMetaData ToDemonstrationMetaData(this DemonstrationMetaProto demoProto)
{
var dm = new DemonstrationMetaData
{

/// </summary>
/// <param name="bpp">An instance of a brain parameters protobuf object.</param>
/// <returns>A BrainParameters struct.</returns>
public static BrainParameters ToBrainParameters(this BrainParametersProto bpp)
internal static BrainParameters ToBrainParameters(this BrainParametersProto bpp)
{
var bp = new BrainParameters
{

}
public static UnityRLInitParameters ToUnityRLInitParameters(this UnityRLInitializationInputProto inputProto)
internal static UnityRLInitParameters ToUnityRLInitParameters(this UnityRLInitializationInputProto inputProto)
{
return new UnityRLInitParameters
{

public static AgentAction ToAgentAction(this AgentActionProto aap)
internal static AgentAction ToAgentAction(this AgentActionProto aap)
{
return new AgentAction
{

public static List<AgentAction> ToAgentActionList(this UnityRLInputProto.Types.ListAgentActionProto proto)
internal static List<AgentAction> ToAgentActionList(this UnityRLInputProto.Types.ListAgentActionProto proto)
{
var agentActions = new List<AgentAction>(proto.Value.Count);
foreach (var ap in proto.Value)

return agentActions;
}
public static ObservationProto ToProto(this Observation obs)
internal static ObservationProto ToProto(this Observation obs)
{
ObservationProto obsProto = null;

/// <param name="sensor"></param>
/// <param name="writeAdapter"></param>
/// <returns></returns>
public static ObservationProto GetObservationProto(this ISensor sensor, WriteAdapter writeAdapter)
internal static ObservationProto GetObservationProto(this ISensor sensor, WriteAdapter writeAdapter)
{
var shape = sensor.GetObservationShape();
ObservationProto observationProto = null;

4
com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/AgentAction.cs


namespace MLAgents.CommunicatorObjects {
/// <summary>Holder for reflection information generated from mlagents_envs/communicator_objects/agent_action.proto</summary>
public static partial class AgentActionReflection {
internal static partial class AgentActionReflection {
#region Descriptor
/// <summary>File descriptor for mlagents_envs/communicator_objects/agent_action.proto</summary>

}
#region Messages
public sealed partial class AgentActionProto : pb::IMessage<AgentActionProto> {
internal sealed partial class AgentActionProto : pb::IMessage<AgentActionProto> {
private static readonly pb::MessageParser<AgentActionProto> _parser = new pb::MessageParser<AgentActionProto>(() => new AgentActionProto());
private pb::UnknownFieldSet _unknownFields;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]

4
com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/AgentInfo.cs


namespace MLAgents.CommunicatorObjects {
/// <summary>Holder for reflection information generated from mlagents_envs/communicator_objects/agent_info.proto</summary>
public static partial class AgentInfoReflection {
internal static partial class AgentInfoReflection {
#region Descriptor
/// <summary>File descriptor for mlagents_envs/communicator_objects/agent_info.proto</summary>

}
#region Messages
public sealed partial class AgentInfoProto : pb::IMessage<AgentInfoProto> {
internal sealed partial class AgentInfoProto : pb::IMessage<AgentInfoProto> {
private static readonly pb::MessageParser<AgentInfoProto> _parser = new pb::MessageParser<AgentInfoProto>(() => new AgentInfoProto());
private pb::UnknownFieldSet _unknownFields;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]

4
com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/AgentInfoActionPair.cs


namespace MLAgents.CommunicatorObjects {
/// <summary>Holder for reflection information generated from mlagents_envs/communicator_objects/agent_info_action_pair.proto</summary>
public static partial class AgentInfoActionPairReflection {
internal static partial class AgentInfoActionPairReflection {
#region Descriptor
/// <summary>File descriptor for mlagents_envs/communicator_objects/agent_info_action_pair.proto</summary>

}
#region Messages
public sealed partial class AgentInfoActionPairProto : pb::IMessage<AgentInfoActionPairProto> {
internal sealed partial class AgentInfoActionPairProto : pb::IMessage<AgentInfoActionPairProto> {
private static readonly pb::MessageParser<AgentInfoActionPairProto> _parser = new pb::MessageParser<AgentInfoActionPairProto>(() => new AgentInfoActionPairProto());
private pb::UnknownFieldSet _unknownFields;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]

4
com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/BrainParameters.cs


namespace MLAgents.CommunicatorObjects {
/// <summary>Holder for reflection information generated from mlagents_envs/communicator_objects/brain_parameters.proto</summary>
public static partial class BrainParametersReflection {
internal static partial class BrainParametersReflection {
#region Descriptor
/// <summary>File descriptor for mlagents_envs/communicator_objects/brain_parameters.proto</summary>

}
#region Messages
public sealed partial class BrainParametersProto : pb::IMessage<BrainParametersProto> {
internal sealed partial class BrainParametersProto : pb::IMessage<BrainParametersProto> {
private static readonly pb::MessageParser<BrainParametersProto> _parser = new pb::MessageParser<BrainParametersProto>(() => new BrainParametersProto());
private pb::UnknownFieldSet _unknownFields;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]

4
com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/Command.cs


namespace MLAgents.CommunicatorObjects {
/// <summary>Holder for reflection information generated from mlagents_envs/communicator_objects/command.proto</summary>
public static partial class CommandReflection {
internal static partial class CommandReflection {
#region Descriptor
/// <summary>File descriptor for mlagents_envs/communicator_objects/command.proto</summary>

}
#region Enums
public enum CommandProto {
internal enum CommandProto {
[pbr::OriginalName("STEP")] Step = 0,
[pbr::OriginalName("RESET")] Reset = 1,
[pbr::OriginalName("QUIT")] Quit = 2,

4
com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/CustomResetParameters.cs


namespace MLAgents.CommunicatorObjects {
/// <summary>Holder for reflection information generated from mlagents_envs/communicator_objects/custom_reset_parameters.proto</summary>
public static partial class CustomResetParametersReflection {
internal static partial class CustomResetParametersReflection {
#region Descriptor
/// <summary>File descriptor for mlagents_envs/communicator_objects/custom_reset_parameters.proto</summary>

}
#region Messages
public sealed partial class CustomResetParametersProto : pb::IMessage<CustomResetParametersProto> {
internal sealed partial class CustomResetParametersProto : pb::IMessage<CustomResetParametersProto> {
private static readonly pb::MessageParser<CustomResetParametersProto> _parser = new pb::MessageParser<CustomResetParametersProto>(() => new CustomResetParametersProto());
private pb::UnknownFieldSet _unknownFields;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]

4
com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/DemonstrationMeta.cs


namespace MLAgents.CommunicatorObjects {
/// <summary>Holder for reflection information generated from mlagents_envs/communicator_objects/demonstration_meta.proto</summary>
public static partial class DemonstrationMetaReflection {
internal static partial class DemonstrationMetaReflection {
#region Descriptor
/// <summary>File descriptor for mlagents_envs/communicator_objects/demonstration_meta.proto</summary>

}
#region Messages
public sealed partial class DemonstrationMetaProto : pb::IMessage<DemonstrationMetaProto> {
internal sealed partial class DemonstrationMetaProto : pb::IMessage<DemonstrationMetaProto> {
private static readonly pb::MessageParser<DemonstrationMetaProto> _parser = new pb::MessageParser<DemonstrationMetaProto>(() => new DemonstrationMetaProto());
private pb::UnknownFieldSet _unknownFields;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]

4
com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/EngineConfiguration.cs


namespace MLAgents.CommunicatorObjects {
/// <summary>Holder for reflection information generated from mlagents_envs/communicator_objects/engine_configuration.proto</summary>
public static partial class EngineConfigurationReflection {
internal static partial class EngineConfigurationReflection {
#region Descriptor
/// <summary>File descriptor for mlagents_envs/communicator_objects/engine_configuration.proto</summary>

}
#region Messages
public sealed partial class EngineConfigurationProto : pb::IMessage<EngineConfigurationProto> {
internal sealed partial class EngineConfigurationProto : pb::IMessage<EngineConfigurationProto> {
private static readonly pb::MessageParser<EngineConfigurationProto> _parser = new pb::MessageParser<EngineConfigurationProto>(() => new EngineConfigurationProto());
private pb::UnknownFieldSet _unknownFields;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]

4
com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/Header.cs


namespace MLAgents.CommunicatorObjects {
/// <summary>Holder for reflection information generated from mlagents_envs/communicator_objects/header.proto</summary>
public static partial class HeaderReflection {
internal static partial class HeaderReflection {
#region Descriptor
/// <summary>File descriptor for mlagents_envs/communicator_objects/header.proto</summary>

}
#region Messages
public sealed partial class HeaderProto : pb::IMessage<HeaderProto> {
internal sealed partial class HeaderProto : pb::IMessage<HeaderProto> {
private static readonly pb::MessageParser<HeaderProto> _parser = new pb::MessageParser<HeaderProto>(() => new HeaderProto());
private pb::UnknownFieldSet _unknownFields;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]

8
com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/Observation.cs


namespace MLAgents.CommunicatorObjects {
/// <summary>Holder for reflection information generated from mlagents_envs/communicator_objects/observation.proto</summary>
public static partial class ObservationReflection {
internal static partial class ObservationReflection {
#region Descriptor
/// <summary>File descriptor for mlagents_envs/communicator_objects/observation.proto</summary>

}
#region Enums
public enum CompressionTypeProto {
internal enum CompressionTypeProto {
[pbr::OriginalName("NONE")] None = 0,
[pbr::OriginalName("PNG")] Png = 1,
}

#region Messages
public sealed partial class ObservationProto : pb::IMessage<ObservationProto> {
internal sealed partial class ObservationProto : pb::IMessage<ObservationProto> {
private static readonly pb::MessageParser<ObservationProto> _parser = new pb::MessageParser<ObservationProto>(() => new ObservationProto());
private pb::UnknownFieldSet _unknownFields;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]

/// <summary>Container for nested types declared in the ObservationProto message type.</summary>
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public static partial class Types {
public sealed partial class FloatData : pb::IMessage<FloatData> {
internal sealed partial class FloatData : pb::IMessage<FloatData> {
private static readonly pb::MessageParser<FloatData> _parser = new pb::MessageParser<FloatData>(() => new FloatData());
private pb::UnknownFieldSet _unknownFields;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]

4
com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/SpaceType.cs


namespace MLAgents.CommunicatorObjects {
/// <summary>Holder for reflection information generated from mlagents_envs/communicator_objects/space_type.proto</summary>
public static partial class SpaceTypeReflection {
internal static partial class SpaceTypeReflection {
#region Descriptor
/// <summary>File descriptor for mlagents_envs/communicator_objects/space_type.proto</summary>

}
#region Enums
public enum SpaceTypeProto {
internal enum SpaceTypeProto {
[pbr::OriginalName("discrete")] Discrete = 0,
[pbr::OriginalName("continuous")] Continuous = 1,
}

4
com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/UnityInput.cs


namespace MLAgents.CommunicatorObjects {
/// <summary>Holder for reflection information generated from mlagents_envs/communicator_objects/unity_input.proto</summary>
public static partial class UnityInputReflection {
internal static partial class UnityInputReflection {
#region Descriptor
/// <summary>File descriptor for mlagents_envs/communicator_objects/unity_input.proto</summary>

}
#region Messages
public sealed partial class UnityInputProto : pb::IMessage<UnityInputProto> {
internal sealed partial class UnityInputProto : pb::IMessage<UnityInputProto> {
private static readonly pb::MessageParser<UnityInputProto> _parser = new pb::MessageParser<UnityInputProto>(() => new UnityInputProto());
private pb::UnknownFieldSet _unknownFields;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]

4
com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/UnityMessage.cs


namespace MLAgents.CommunicatorObjects {
/// <summary>Holder for reflection information generated from mlagents_envs/communicator_objects/unity_message.proto</summary>
public static partial class UnityMessageReflection {
internal static partial class UnityMessageReflection {
#region Descriptor
/// <summary>File descriptor for mlagents_envs/communicator_objects/unity_message.proto</summary>

}
#region Messages
public sealed partial class UnityMessageProto : pb::IMessage<UnityMessageProto> {
internal sealed partial class UnityMessageProto : pb::IMessage<UnityMessageProto> {
private static readonly pb::MessageParser<UnityMessageProto> _parser = new pb::MessageParser<UnityMessageProto>(() => new UnityMessageProto());
private pb::UnknownFieldSet _unknownFields;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]

4
com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/UnityOutput.cs


namespace MLAgents.CommunicatorObjects {
/// <summary>Holder for reflection information generated from mlagents_envs/communicator_objects/unity_output.proto</summary>
public static partial class UnityOutputReflection {
internal static partial class UnityOutputReflection {
#region Descriptor
/// <summary>File descriptor for mlagents_envs/communicator_objects/unity_output.proto</summary>

}
#region Messages
public sealed partial class UnityOutputProto : pb::IMessage<UnityOutputProto> {
internal sealed partial class UnityOutputProto : pb::IMessage<UnityOutputProto> {
private static readonly pb::MessageParser<UnityOutputProto> _parser = new pb::MessageParser<UnityOutputProto>(() => new UnityOutputProto());
private pb::UnknownFieldSet _unknownFields;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]

4
com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/UnityRlInitializationInput.cs


namespace MLAgents.CommunicatorObjects {
/// <summary>Holder for reflection information generated from mlagents_envs/communicator_objects/unity_rl_initialization_input.proto</summary>
public static partial class UnityRlInitializationInputReflection {
internal static partial class UnityRlInitializationInputReflection {
#region Descriptor
/// <summary>File descriptor for mlagents_envs/communicator_objects/unity_rl_initialization_input.proto</summary>

}
#region Messages
public sealed partial class UnityRLInitializationInputProto : pb::IMessage<UnityRLInitializationInputProto> {
internal sealed partial class UnityRLInitializationInputProto : pb::IMessage<UnityRLInitializationInputProto> {
private static readonly pb::MessageParser<UnityRLInitializationInputProto> _parser = new pb::MessageParser<UnityRLInitializationInputProto>(() => new UnityRLInitializationInputProto());
private pb::UnknownFieldSet _unknownFields;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]

4
com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/UnityRlInitializationOutput.cs


namespace MLAgents.CommunicatorObjects {
/// <summary>Holder for reflection information generated from mlagents_envs/communicator_objects/unity_rl_initialization_output.proto</summary>
public static partial class UnityRlInitializationOutputReflection {
internal static partial class UnityRlInitializationOutputReflection {
#region Descriptor
/// <summary>File descriptor for mlagents_envs/communicator_objects/unity_rl_initialization_output.proto</summary>

/// <summary>
/// The request message containing the academy's parameters.
/// </summary>
public sealed partial class UnityRLInitializationOutputProto : pb::IMessage<UnityRLInitializationOutputProto> {
internal sealed partial class UnityRLInitializationOutputProto : pb::IMessage<UnityRLInitializationOutputProto> {
private static readonly pb::MessageParser<UnityRLInitializationOutputProto> _parser = new pb::MessageParser<UnityRLInitializationOutputProto>(() => new UnityRLInitializationOutputProto());
private pb::UnknownFieldSet _unknownFields;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]

6
com.unity.ml-agents/Runtime/Grpc/CommunicatorObjects/UnityRlInput.cs


namespace MLAgents.CommunicatorObjects {
/// <summary>Holder for reflection information generated from mlagents_envs/communicator_objects/unity_rl_input.proto</summary>
public static partial class UnityRlInputReflection {
internal static partial class UnityRlInputReflection {
#region Descriptor
/// <summary>File descriptor for mlagents_envs/communicator_objects/unity_rl_input.proto</summary>

}
#region Messages