RIDE - 2023.1

Overview

Details new changes made since the previous release of the RIDE platform to external collaborators and developers.

Page Contents

Release Notes – 2023.1 (January)

New versions from this release forward will adopt a year.quarter naming scheme. Please read the below Release Notes and related changes for this version.

IMPORTANT

In order to access Terrain datasets, you must have a terrain key.  Please contact us directly in order to acquire a key.

If you wish to use the ExampleNLP scene and related web services, you must update your local RIDE config file (ride.json). Please back-up any local changes to the file, including your terrain key. Next, restore your Config to default using the corresponding option in the Config debug menu at run-time, then reapply any customization and terrain key. Refer to the Config File page within Support for more information. 

Release Highlights

  • Added RIDE NeuralNetworkInterface and new API-based MLAgents code with ability to intake trained reinforcement learning models. 
  • Improvements to Photon Fusion integration and handling of legacy PUN multiplayer networking solution.
  • Restructured TerrainLoader code for increased flexibility and reliability, which includes expanded no-code setup options in corresponding prefab.
  • Further reduced size of minimal standalone (binary) build dataset through ResourceLoaderSystem refactoring and asset reorganization.
  • New and enhanced Example scenes for distinct RIDE capabilities: ExampleBarracudaAPI, ExampleBehaviourComparison, ExampleNLP, and ExampleWebServices.

A* Pathing

  • Fix for A* agents pathing underground if they were spawned under the terrain collider.
  • A* movement system now uses agent bounds height as custom offset in its call to GetTerrainHeight().

Barracuda API

  • Deprecated old version of script, NeuralNetworkInference_OLD.cs.
  • Deprecated old version of scene, ExampleBarracudaAPI_OLD.unity, now that “new” version has been integrated.
  • Internal classifier, models and test data assets temporarily removed from external code distribution until next release. If you wish to demo the complete ExampleBarracudaAPI scene, please contact us to request a standalone (binary) build.

Cameras

  •  Updated SimpleTerrainCamera to support camera rotation using gamepad.

Fonts

  • Added new DroidSans SDF Outline font asset.

ML Agents

  • Deprecated old MLAgents and replaced with new API-based MLAgents code.
  • Added RIDE NeuralNetworkInterface API and updated code.
  • MLAgents API initial deployment with ability to read in trained Reinforcement Learning models.
  • Updated scripts for new (Reinforcement Learning) RLAgent type.
  • Made explicit reference to Unity.MLAgents.Policies.BehaviorType to avoid potential conflicts.
  • Added preprocessor directives for RIDE_ML_AGENTS to files that are broken when MLAgents is not included in the project.
  • Removed references to Resources folder.
  • Fixed issues with running NeuralNetworkInterface.
  • Add new namespaces for Reinforcement Learning (Ride.AI.RL) and Barracuda-like Neural Network Inference (Ride.AI.NNInference).

Natural Language Processing

  • ExampleNLP, added support for OpenAI GPT-3. Cycle through the NLP providers in ExampleNLP to try. Currently set to the best AI model, low temperature, and medium max return text.
  • Internal Google Dialogflow key not included with external code distribution. If you wish to demo the complete ExampleNLP scene, please contact us to request a standalone (binary) build.

NewProjectTemplate

  • Updated project settings to be in-line with a default new 2022.1.12f1 unity project with the standard 3d template.
    • Various modifications include:
      • Added com.unity.feature.development
      • Updated com.unity.inputsystem to 1.4.4
      • Removed explicit references to com.unity.ide.rider, com.unity.ide.visualstudio, com.unity.test-framework; these are included in com.unity.feature.development
      • Added testtools Settings.json
      • Minor addition to UnityConnectSettings.asset
    • See RIDE QuickStart for further requirements.

Networking

  • Default method of instantiating objects in PUN networking is to have the object prefab placed in a Resources folder, which increases standalone build size. Implemented new function which takes an object in the RideSystems prefab’s ResourceLoader and adds it to the PUN’s prefab pool in Awake(); removing any need for Resources folder.
    Reference: https://forum.unity.com/threads/solved-photon-instantiating-prefabs-without-putting-them-in-a-resources-folder.293853/.
  • PhotonNetwork – RegisterPrefabPool()
    • When checking for Photon components, search for PUN’s PhotonView, not Ride’s.
    • Replace items in the dictionary, rather than calling Add().
    • Photon.Pun.PhotonNetwork.PrefabPool is a static var that persists across scenes. This ensures that the latest version of the asset is assigned properly.
  • PhotonView, added attachUserInputControllerOnInstantiate boolean (true by default). The new boolean allows us to defer attaching UserInputController components until later.

Prefabs

  • Added new OCP player unit prefab, ChrUsaArmyInfantryNewCamo Variant.
  • Added HEMTT_M977_AI_Network.prefab, JLTV_AI_Network.prefab and JLTV_User_Network.prefab for machinima and Timeline usage. Note, corresponding source assets not included with external RIDE distribution.

Ride Core

ResourceLoaderSystem

  • Split Built-In arrays vs Project Specific arrays.
    • Background: If items are added to an array in the parent prefab, and the child prefab has modifications, then the new additions fail to properly get ‘merged’ in with the child additions. The child additions overwrite the newly added items in the parent.
    • Solution: For the ResourceLoader prefab, there now will be two arrays for each section. A ‘Built In’ section which will have the default items, and a ‘Project Specific’ section for projects to add to. Projects may clear entries in the ‘Built In’ section if unused.
    • Adjusted all the functions that check these arrays to look in both sections.
  • Updated ResourceLoader prefab fields and options.
    • Available arrays from script:
      • Scene Objects Built In
      • Scene Objects Project Specific
      • Unit Prefabs Built In
      • Unit Prefabs Project Specific
      • Items Built In
      • Items Project Specific
    • Added various prefabs for spawn at runtime, including:  NetworkSoldierBlue, NetworkSoldierRed, NetworkSoldierBlueBot, NetworkSoldierRedBot, NetworkVehicleHumV, ItmProximityIEDNetworkPrefab, and NetworkSpectator.
    • Cleared terrain path entry.
  • UnityAudioClipCache – Separated the audio clip array into 2 separate sections, Built-In and Project Specific. 
  • Updated ResourceLoader arrays in scenes as needed to resolve any runtime errors.
  • Marked RideDefines.RideEntitiesResourceFolder as [Obsolete].
  • Changed networkSystem.CreateNetworkObject() calls to pass only the object name, not the path. No longer required now that assets are defined in ResourceLoader.

RIDE Dependencies

  • Add preprocessor directives for RIDE_ML_AGENTS to files that are broken when MLAgents is not included in the project.
  • Apache.NMS – Commented out references to Ionic.Zlib.dll. The built-in package Visual Scripting (com.unity.visualscripting) has a different reference to Ionic.Zlib.dll which causes a conflict with this dependency.
  • AstarPathfindingProject – Further ensure that update checking is not performed. Also disabled auto-update window that appears if new version is available
  • Fusion – Fixed error when showing the Fusion Hub, if Fusion is in a different folder than default.
  • Fusion – Implemented OverrideNetworkProjectConfigPath(), pointing to where Fusion exists in RIDE. Prevents warning: “…\Ride_Dependencies\Photon\FusionCodeGen\Fusion.CodeGen.cs(3316,0): warning; The weaver had to use Directory.GetFiles to locate the config Assets\Ride_Dependencies\Photon\Fusion\Resources\NetworkProjectConfig.fusion.”
    This is potentially slow and might happen if you moved the config to a non-standard location and editor scripts did not get the chance to run yet. If you see this message while running in a batch mode, implement ILWeaverSettings.OverrideNetworkProjectConfigPath in Fusion.CodeGen.User.cs
  • Photon – Removed duplicate Resources folder; merged content from Resources into PrefabsResources to reduce build size.
  • StandaloneFileBrowser – Fixed build errors under WebGL. Added missing plugin library .so for Linux. Removed CanvasSampleOpenFile.cs, placing it inside the BarracudaAPI folder, as it was not included in the original distribution.

Ride IO Controllables

  • InputController – InputActionAsset changes and additions to handle UI maneuvering using Gamepad.
  • Added boost and boostRelease inputs to Vehicle input map (PlayerInput.inputactions).
  • Added vehicular boost handling to IVehicleInputControllable, WheeledVehicle, VehicleUserInputController, and InputSystem.
  • Added OnDisable function to UserInputControllerDataMono to nullify actions map in any existing PlayerInput components.
  • PlayerInputController and PlayerInputControllerOld will no longer set their PlayerInput component’s actions to null on OnDisable(). This was causing input to be non functional if disabling an agent’s input, then resuming input later.

RIDE Systems

  • Deprecation of functions and variables that allow using Resources folders for loading assets. Assets should be loaded through either scene objects or through ResourceLoader.
    • Marked the following items with [Obsolete] that are to be removed in a future RIDE release:
      UnityGameObjectSystem.CreateFromResource()
      Ride.MSDL
      CreationType.Resource
      Ride.IO.ScenarioParser
      ResourceLoaderSystem.terrainPaths
      ResourceLoaderSystem.InstantiateResource()
      LoadTerrainParams.pathIndex
      ITerrainSystem.LoadTerrain(int pathIndex…)
      TerrainSystemMono.LoadTerrain(int pathIndex…)
  • ObjectCacheList – Marked deprecated; use List<> instead.
  • Fixed warning due to multiple curRaster vars.

AttackSystemMono

  • Fixed warning due to multiple curRaster vars.
  • Debug log improvements.

InputSystem

  • Removed reference to controllables when entity is destroyed.

ITerrainSystem, TerrainSystemMono

  • Added default parameter to GetTerrainHeight to allow for custom offsets. Customs offsets are intended for use to avoid raycasting from too high up and hitting an arch over where an agent is standing.

WeaponSystemMono

  • Fixed bug where system failed to update primaryWeapons table properly upon weapon destruction.

UnityAudioSystem

  • Assign m_clipCache to the built-in UnityAudioClipCache. This fixes stray ‘UnityAudioClipCache not found in the scene.’ warning in various scenes.

Standalone (Empty project w/distributed Ride, Ride_Art, and Ride_Dependencies folders)

  • Continued reorganization of various sub-folders to reduce indices of automatic includes with standalone builds due to inadvertent use of Unity “special folder” naming conventions. This includes assets from sub-folders such as: Items, Misc, TeamMatch, ML, RideEntities, SimpleControls, Terrain and UnitData.

Terrain Maps

  • Added Cape Canaveral Bing Split LMAB L19 dataset.
  • Added YPG Trigo Segt Split LMAB L17, L19 and L21 dataset.
  • Updated Sadajan dataset, which fixes some pathing issues.

Terrain System

  • Added TerrainSO scriptable object as an eventual replacement for TerrainDatasets and TerrainInfo.
  • Added TerrainSO instances for each RIDE terrain dataset.
  • Replaced static class TerrainDatasets with Scriptable Objects TerrainDatasetsSO, which contains a list of TerrainSO.
    • Added Scriptable Object TerrainSO, which contains the name, tile path, LMAB path, and LODs available for a given terrain.
    • Added reference to the TerrainDatasetsSO project instance to TerrainLoader.
    • Added TerrainLoader to scenes that relied on TerrainDatasets (These scenes contain scripts that derive from ExampleLoadTerrain).
    • Modified ExampleLoadTerrain to use TerrainLoader instead of the removed static class TerrainDatasets.
    • Updated TerrainSO values.
    • TerrainLoaders now use their TerrainSO reference to know what scene to load. Scenes that already have a TerrainLoader will attempt to find a TerrainSO in absence of one using the existing path, and will warn the user to update the reference in the inspector.
      • Completed pass updating scenes using TerrainLoader prefab for TerrainDatasetsSO (resolves warning at run-time).
      • Updated TerrainLoader prefab in affected scenes for TerrainDatasetsSO; resolves run-time errors. 
  • Add CachedSplitTrees component to TreeReplacement in the prefab. Recommend this instead of adding it in Start().
  • TerrainRootTracker – Assign m_terrainDataModelManager in Awake().
  • Renamed TerrainManager to TerrainDataModelManager; made it a MonoBehaviour.
    • This class had several static variables, which can lead to issues when moving from scene to scene. It is now a GameObject, and added to RideSystems under TerrainSystemMono. Added necessary references to this gameobject for various classes under Additions.
    • TerrainRootTracker.m_forceUpdate was made not static.
    • TreeReplacement.WeatherZone was made not static.
  • SimpleTerrainCamera, joystick trigger (L3) now toggles camera sprint/boost speed.

Timeline

  • FollowCurve – Removed reference to entity selector.
  • Added logic to set gameObject active, set sprite in image.
  • Added a clip that will play a Timeline director.
  • Added functionality to play Cutscene(Machinima).
  • Added functionality to play video from UI canvas via RawImage + VideoPlayer.

Unity

  • Suppressed unwanted network logging statements in editor.
  • MLAgents – Fix for when RIDE_ML_AGENTS is not defined.
  • Photon – Fixes for when PHOTON_UNITY_NETWORKING is not defined.
  • runUnity – Properly handle Apple OS versions of Unity installed
  • Changed packages to be similar to NewProjectTemplate:
    Added testtools Settings.json
    Added com.unity.feature.development 1.0.1
    Removed com.unity.ide.rider, com.unity.ide.visualstudio
    Updated com.unity.inputsystem to 1.4.4
    *New* added com.unity.visualscripting 1.7.8 since it no longer causes conflicts with Apache.NMS
  • Note, recommend clearing your local checkout \Library directories under \RideUnity and \NewProjectTemplate Unity projects prior to updating.

Vehicles

  • Added directional rotation for WheeledVehicle and AutonomousVehicles_WheelAnimator vehicles.
  • Moved vehicle related scripts within RIDE to be incorporated with RIDE external assets.

Documentation

New Examples and Tutorials content added to RIDE website.

Examples

Added Example scenes that highlight new RIDE capabilities, such as:

  • ExampleWebServices, shows how to create, send, and receive GET, PUT, and POST web requests. (Related, added Post() override in RIDE utilities.)

Additions or refinements to existing Example scenes:

  • ExampleBarracudaAPI, added interfaces and classes to remove dependence upon Unity MLAgents Barracuda API in this scene demonstrating NeuralNetworkInference.
  • ExampleLoadTerrain
    • Load Terrain button reverts to using terrainSystem.LoadTerrain() again. This is because not all variables are set properly in TerrainLoader via the UI. TerrainLoader is meant primarily for user interactive purposes, via the Inspector.
    • Improved collider LOD loading process and resolved Clear Terrain command error.
  • ExampleOauth, clarifications to labels in UI (“Redirect Uri” to “Redirect/SaveAuthToken URI” and “GetAuthToken Uri” to “GetAuthToken URI”).
  • ExampleParticleEffectSystem, moved BlueParticleSystem.prefab out of Resources, and added RedParticleSystem and BlueParticleSystem to ResourceLoader.
  • RazishTAB, use hard-coded paths for terrain URL rather than using terrainPaths in ResourceLoader.

Fixed Issues

This release contains numerous bug fixes, including code refactoring and optimizations. Selected items of interest listed below.

  • Fixed AttributeSystem errors upon destruction in certain situations.
  • Fixed WaypointVisualizer showing non-smoothed paths.
  • Fixed issue in Follow behavior where units would get stuck when they would be trying to path to a position that does not exist on the navmesh.

Examples

  • ExampleBehaviourComparison and ExampleTrainingTakeCoverML
    • Updated references in TrainingArea.prefab in order to address warnings with BehaviourComparison scene at run-time.
    • Updated CoverPoint to remove old references and remove meta file for Deprecated folder.
    • Fixed bugs with behavior comparison scene; relocated assets.
  • ExampleFace, added non-RGB camera filter; resolves error when cycling cameras with virtual (capture) cameras present.
  • ExampleGroundClassificationWeather, fixed rain event not causing pathing penalties to update.
  • ExampleLoadTerrain
    • Improved collider LOD loading process and resolved Clear Terrain command error.
    • Fixed bug where switching between tabs would make the Collider LOD section disappear.
  • ExampleSession, added SessionObjectManager class to remove static variables and functions.  This prevents errors when re-loading the scene in the same session. Removed missing CommandLineParser gameobjects from scenes.
  • ExampleTeamMatch, fixed “Input controller type not handled: Agent” warning, “Failed to GetName” & “There are no audio listeners” messages upon player spawn.
  • ExampleTeamMatch, fixed errors after Disconnect once player or spectator spawned under UnityAStarPathingMovement.
  • ExampleTerrainDestruction, fixed error when triggering destruction event over tree objects.

Terrain

  • Fixed bug where in some cases, DestroyTerrain() wouldn’t destroy the collider gameobjects.
  • Fixed ComputeOverallProgress() to properly increment when loading physics colliders. This implementation assumes physics is loaded first, then render objs.
  • TerrainLoader – LoadTerrain() – Fixed null ref bug where in some cases, MonoTerrain object wouldn’t get returned to the caller.

Known Issues

New defects or regressions of interest to be addressed in a future release.

Examples

  • ExampleAgentCommandsEchelonFormationMovement and _Terrain, agents scatter and increase speed with combat behaviors.
  • ExampleLoadTerrain, exception upon select of Center Camera w/o terrain present.
  • ExampleSessionRecordingNetworked, PhotonVoiceNetwork, UnassignedReferenceException errors with join and spawn of client.
  • ExampleTerrainDestruction, error when triggering destruction event over certain structures.
  • ExampleTerrainDestruction, SpeedTree objects upon destroy appear to then shard offset and below terrain map.
  • Team Match, UnassignedReferenceException occurs upon connect to host; however, this error appears innocuous from our testing.
  • Team Match Razish and Korabela, AI bots when spawned fail to patrol automatically.
  • PlayerInputControllerDataMono, inconsistencies with PlayerInputController scene: various missing anims (crouch, etc.), name text horizontal.
  • UnityAStarMovementSystem enabled, large terrain datasets, such as Razish20 and FtHoodJack L21, may experience long loading times and a period of unresponsiveness from editor/executable.

SpeedTree Asset Bundles

  • SpeedTree objects appear low-poly and flicker LODs at run-time.
    Note, Unity version 2022.1.12f1 is the latest compatible version with the RIDE API until we resolve the issue by creating version and platform specific SpeedTree Asset Bundles.