File size: 2,745 Bytes
05c9ac2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | # Unity Environment Registry [Experimental]
The Unity Environment Registry is a database of pre-built Unity environments that can be easily used without having to install the Unity Editor. It is a great way to get started with our [UnityEnvironment API](Python-LLAPI.md).
## Loading an Environment from the Registry
To get started, you can access the default registry we provide with our [Example Environments](Learning-Environment-Examples.md). The Unity Environment Registry implements a _Mapping_, therefore, you can access an entry with its identifier with the square brackets `[ ]`. Use the following code to list all of the environment identifiers present in the default registry:
```python
from mlagents_envs.registry import default_registry
environment_names = list(default_registry.keys())
for name in environment_names:
print(name)
```
The `make()` method on a registry value will return a `UnityEnvironment` ready to be used. All arguments passed to the make method will be passed to the constructor of the `UnityEnvironment` as well. Refer to the documentation on the [Python-API](Python-LLAPI.md) for more information about the arguments of the `UnityEnvironment` constructor. For example, the following code will create the environment under the identifier `"my-env"`, reset it, perform a few steps and finally close it:
```python
from mlagents_envs.registry import default_registry
env = default_registry["my-env"].make()
env.reset()
for _ in range(10):
env.step()
env.close()
```
## Create and share your own registry
In order to share the `UnityEnvironemnt` you created, you must :
- [Create a Unity executable](Learning-Environment-Executable.md) of your environment for each platform (Linux, OSX and/or Windows)
- Place each executable in a `zip` compressed folder
- Upload each zip file online to your preferred hosting platform
- Create a `yaml` file that will contain the description and path to your environment
- Upload the `yaml` file online
The `yaml` file must have the following format :
```yaml
environments:
- <environment-identifier>:
expected_reward: <expected-reward-float>
description: <description-of-the-environment>
linux_url: <url-to-the-linux-zip-folder>
darwin_url: <url-to-the-osx-zip-folder>
win_url: <url-to-the-windows-zip-folder>
additional_args:
- <an-optional-list-of-command-line-arguments-for-the-executable>
- ...
```
Your users can now use your environment with the following code :
```python
from mlagents_envs.registry import UnityEnvRegistry
registry = UnityEnvRegistry()
registry.register_from_yaml("url-or-path-to-your-yaml-file")
```
__Note__: The `"url-or-path-to-your-yaml-file"` can be either a url or a local path.
|