Major Changes
- `Agent.CollectObservations` now takes a VectorSensor argument. (3352, 3389)
- Added `Agent.CollectDiscreteActionMasks` virtual method with a `DiscreteActionMasker` argument to specify which discrete actions are unavailable to the Agent. (3525)
- We consolidated our API for `DiscreteActionMasker`. `SetMask` takes two arguments : the branch index and the list of masked actions for that branch. (3525)
- Beta support for ONNX export was added. If the `tf2onnx` python package is installed, models will be saved to `.onnx` as well as `.nn` format. Note that Barracuda 0.6.0 or later is required to import the `.onnx` files properly. (3101)
- Multi-GPU training and the `--multi-gpu` option has been removed temporarily. (3345)
- All Sensor related code has been moved to the namespace `MLAgents.Sensors`. (3519)
- All SideChannel related code has been moved to the namespace `MLAgents.SideChannels`. (3533)
- The following methods in the `Agent` class have been deprecated and will be removed in a later release (3557):
- `InitializeAgent()` was renamed to `Initialize()`
- `AgentAction()` was renamed to `OnActionReceived()`
- `AgentReset()` was renamed to `OnEpisodeBegin()`
- `Done()` was renamed to `EndEpisode()`
- `GiveModel()` was renamed to `SetModel()`
Minor Changes
- Monitor.cs was moved to Examples. (3372)
- Automatic stepping for Academy is now controlled from the AutomaticSteppingEnabled property. (3376)
- The GetEpisodeCount, GetStepCount, GetTotalStepCount and methods of Academy were changed to EpisodeCount, StepCount, TotalStepCount properties respectively. (3376)
- Several classes were changed from public to internal visibility. (3390)
- Academy.RegisterSideChannel and UnregisterSideChannel methods were added. (3391)
- A tutorial on adding custom SideChannels was added. (3391)
- The stepping logic for the Agent and the Academy has been simplified. (3448)
- Update Barracuda to 0.6.1-preview. (3584)
- The interface for `RayPerceptionSensor.PerceiveStatic()` was changed to take an input class and write to an output class, and the method was renamed to `Perceive()`. (3527)
- The checkpoint file suffix was changed from `.cptk` to `.ckpt`. (3470)
- The command-line argument used to determine the port that an environment will listen on was changed from `--port` to `--mlagents-port`. (3477)
- `DemonstrationRecorder` can now record observations outside of the editor. (3354)
- `DemonstrationRecorder` now has an optional path for the demonstrations. This will default to `Application.dataPath` if not set. (3354)
- `DemonstrationStore` was changed to accept a `Stream` for its constructor, and was renamed to `DemonstrationWriter`. (3354)
- The method `GetStepCount()` on the Agent class has been replaced with the property getter `StepCount`. (3476)
- `RayPerceptionSensorComponent` and related classes now display the debug gizmos whenever the Agent is selected (not just Play mode). (3484)
- Most fields on `RayPerceptionSensorComponent` can now be changed while the editor is in Play mode. The exceptions to this are fields that affect the number of observations. (3484)
- Most fields on `CameraSensorComponent` and `RenderTextureSensorComponent` were changed to private and replaced by properties with the same name. (3564)
- Unused static methods from the `Utilities` class (ShiftLeft, ReplaceRange, AddRangeNoAlloc, and GetSensorFloatObservationSize) were removed. (3495)
- The `Agent` class is no longer abstract. (3528)
- SensorBase was moved out of the package and into the Examples directory. (3528)
- `AgentInfo.actionMasks` has been renamed to `AgentInfo.discreteActionMasks`. (3539)
- `DecisionRequester` has been made internal (you can still use the DecisionRequesterComponent from the inspector). `RepeatAction` was renamed to`TakeActionsBetweenDecisions` for clarity. (3555)
- The `IFloatProperties` interface has been removed. (3570)
- Improved inference performance for models with multiple action branches. (3598)
- The interfaces to the `SideChannel` classes (on C and python) have changed to use new `IncomingMessage` and `OutgoingMessage` classes. These should make reading and writing data to the channel easier. (3596)
Bug Fixes and Improvements
- Various documentation changes and additions. (3603, 3574, 3577, 3568, 3567, 3551, 3582)
- Fixed logging issue with SAC. (3606)
- Fixed an issue when using GAIL with less than `batch_size` number of demonstrations. (3591)
- Made Unity lifecycle methods protected (`OnEnable`,` OnDisable`). (3590)
- SideChannel messages were lost if sent before the first call to reset from Python. (3573)
- Updated the ExpertPyramid.demo example demonstration file. (3613)
- Updated project version for example environments to 2018.4.18f1. (3618)
- Changed the `Product Name` in the example environments to remove spaces, so that the default build executable file doesn't contain spaces. (3612)