RIDE - 0.4

Overview

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

Page Contents

Release Notes – 0.4 (August 2021)

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.

A* Pathing

  • New “A* Pathfinding” option as new movement system type for units, with parity to ATLAS.
  • Option to toggle between A*, Unity and other Movement System types via scriptable.

Entities 

  • New “DataMono” characters now being built by using bootstrappable data components for entities and no longer rely on AgentMono script (resolves many functions being too tightly coupled within a single class).
  • New data components included for the following functions: character info, character movement, entity inventory / item handling, entity animations, entity hit boxes and health, entity selection interface, entity camera views, user input and input handling.

Ground Classification Weather

  • Weather event simulation with dynamic unit re-routing based upon ground conditions. 

Licensing

  • All 3rd party art / font / software / sound assets utilized by RIDE itemized with their respective licenses and split into base and per seat costs, the latter of which is currently optional, now documented in a concise spreadsheet included with distribution.

Lighting

  • Added generic directional lighting rig to improve appearance of terrain maps.

RIDE Font and LevelSelect Updates

  • Integrate Audiowide and Orbitron fonts into RIDE.
  • Update RIDE logo and main menu buttons with Audiowide font.
  • Standalone build LevelSelect scene UI formatting and navigation improvements.

Session Recorder and Playback

  • Local user and networked versions of Session Recorder and Playback tools.

Systems Refactor

  • All RIDE systems used in a particular scene will appear in the Unity editor Hierarchy panel prior to run-time.
  • ‘RideSystems’ prefab object w/customizable options to determine which sub-set of systems will be utilized. (Terrain, networking, etc.)
  • See ‘RIDE Systems Upgrade Guide‘ below for more details. 

Terrain System

  • Process multiple new terrain maps to be available for streaming.
  • Ability to show shading options for Slope and Elevation (ATLAS feature within ExampleGridContourToggle).

Unity

  • Upgraded to support Unity 2021.1.17f1.
  • Note, recommend clearing your local checkout \Library directories under \RideUnity and \NewProjectTemplate Unity projects prior to updating.

Examples

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

  • BattleDrill_ReactToAmbush_DataMono
  • ExampleAgentCommandsFormationMovement 
  • ExampleAgentCommandsFormationMovement_Korabela
  • ExampleAstarPathing
  • ExampleGroundClassificationWeather
  • ExampleGroupsDataMono
  • ExampleMilitaryUnitsDataMono
  • ExampleMovementDataMono
  • ExampleRestNew
  • ExampleSessionPlayback
  • ExampleSessionRecording
  • ExampleSessionPlaybackNetworked
  • ExampleSessionRecordingNetworked
  • PlayerInputControllerDataMono

Fixed Issues

AI Bots

  • User instanced Blue/Red bots fail to patrol in Razish/Korabela Team Match scenes.
  • Repeating error when instanced opposing AI bot fires upon user in Razish/Korabela Team Match scenes.
  • Several lines of debug text and warnings whenever bot instanced by user in Razish/Korabela Team Match scenes.

Team Match

  • “Eliminated by…” references Agent ID value instead of NickName of network player.

Known Issues

Examples

  • ExampleDestructionYuma, M777 and Abrams projectiles fail to deform/destroy objects or impact crater terrain.
  • ExampleDebugMenu, Blue/Red unit commands induce multiple errors; Logging tests output as errors.
  • ExampleFace, error if cycling cameras; alternately, error if no camera found.
  • ExampleLogging, debug application and commandLine menu options induce multiple errors.
  • ExampleOrdnanceMenu, error upon detonation of instanced ordnance.
  • ExampleWaypointPathing, unable to instance waypoints with single unit selected; unit instanced instead.
  • TeamMatchAI, pair of errors if user selects Spectator mode.

RIDE Systems Upgrade Guide

RideSystems Prefab

When creating a scene that uses RIDE, add the RideSystems prefab to your scene. This prefab contains most prefabs commonly used in a RIDE simulation.

  • Once added, you can modify this prefab for your specific scene.
    • Remove RIDE systems that are not needed
    • Add new RIDE systems
    • Customize existing systems
  • Parameters for customizing individual systems have been exposed within the Inspector.
  • This deprecates the old method of deriving from RideBase, or calling CreateApiSystemMono() (see below).

RideSystem deprecated; use RideSystemMonoBehaviour

RIDE systems now derive from RideSystemMonoBehaviour.  This allows RIDE systems to be added to the scene and have customized parameters within the Inspector.

It is still expected for RIDE systems to use SystemInit(), SystemUpdate(), etc. functions.  Do not use the Unity Start(), Update(), etc. functions.

A new RideSystem function SystemAwake() is available for RIDE systems to use.  This function is called before all RIDE systems’ Start() function.  This behaves similar to Unity’s Awake() function. (ref: https://docs.unity3d.com/Manual/ExecutionOrder.html)

RideBase deprecated; use RideBaseMinimal or MonoBehaviour

RideBase had many built-in systems and options, however their use didn’t offer many options for configuring.  You were somewhat locked in to what it provided.  A new base class RideBaseMinimal is provided to help migrate projects away from RideBase.  And in the future most of the functionality in RideBaseMinimal will migrate to separate systems.

For scenes, this means you don’t need to derive RideBaseMinimal if you do not need to, and can simply use MonoBehaviour.

CreateAPISystem() deprecated

This function, in ApiSystemMono.cs, is marked as deprecated.  This was the old method of initializing a large amount of RIDE systems.  This method created a few problems, notably the inability to specify which RIDE systems to include in each scene, and making scene specific customizations on RIDE systems.  This method was replaced with the RideSystems prefab mentioned above.

DataMono & Bootstrapping components

  • Individual units can now be placed in the scene during author time.  When these units are initialized at scene start, they are created as RIDE units, and all the parameters and customizations are applied.  This makes it easier to place and configure units in the world.
  • In order to instantiate these units dynamically via code, ensure the respective units are added to the RideSystems prefab > ResourceLoader prefab, Unit Prefabs section.

A* Pathfinding

This is a new option for pathfinding, utilizing the A* Pathfinding Project package.  This option is available as an alternative to using Unity’s native Pathfinding solution.  Future releases may have this option be the default.

In order to enable the A* Pathfinding option, go into the RideSystems prefab.  Select the UnityNavMeshMovementSystem.  In the Inspector, at the top, to the left of its name, de-select the checkbox.  This disables the system.  Now, select the UnityAStarMovementSystem and select the checkbox.  This enables the system.

Known Issues

  • Not quite feature par with Unity’s solution
  • Still working on loading/caching features
  • Units have trouble navigating on certain terrains

Future Benefits

Since the navigation is loaded at runtime, there’s no need to generate a navmesh offline.  This eliminates the cumbersome step of generating a navmesh for each scene.  

We can now load multiple terrains within a single scene.  Instead of a TeamMatch scene for each terrain dataset, we can now have a single scene, with a menu option to choose which terrain to use.