RIDE - 2023.2

Overview

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

Page Contents

Release Notes – 2023.2 (June)

 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 tools for custom scene creation and other capabilities, including dynamic update of prefabs with different networking components.
  • Generated _Base, _Ride, _PUN prefab variants of NetworkSoldierBlue and NetworkSoldierRed with common components; variants for more entities to be included in futures releases.
  • Added OCP Soldier assets and prefabs; OCP units now appear as default when called at run-time with certain scenes, including Team Match.
  • Significant refactoring to handle other networking solutions besides Photon PUN.
  • New and enhanced Example scenes for distinct RIDE capabilities: display of art assets in RideAssetLineUp, and addition of ChatGPT-4 support in ExampleNLP.

Editor Ride Menu

Expanded tools within the custom Ride Unity editor top menu:  

  • FindPrefabs.cs editor script added to Ride/Editor/ which grants the user the menu option Ride/Tools/Find Component Usages in Prefabs.
    Input a monobehavior and find all prefab instances that include that monobehavior in the project. Click the prefab in the editor window to highlight its location in the project window.
  • AddRemoveObjectsInScenes.cs, found in Ride/Editor produces the menu option Ride/Scene/Bulk Edit Scenes.
    Can be used to provide a list of objects to include and a list of object to remove from a list of provided scenes. Functionality can be leveraged for future tools to make changes to scenes in bulk.
  • CreateRideScene.cs gives the asset (project window) right-click option: Assets/Create/Ride/Scene. 
    Brings up an editor window that allows you to click to toggle on/off any of the ride systems found in the RideSystems.prefab as well as leverage the bulk scene editor tool to include a user specified list of GameObjects to the new scene in addition to the configured RideSystems.prefab. A toggle option allows the user to also automatically include all networking related objects for the active networking solution. Scenes saved to Ride/Scenes by default.
  • Menu item for Ride Entity creation added to the top menu bar under Ride/Entity/Create Entity. It will know what the user has selected in the Project window and allow for bulk selection and entity creation.
  • Base, Ride Variant and Networked Variant creation tools:
    • Base, CreateEntityBase.cs found at Ride/Editor, is the window that allows for a user specified list of GameObjects to be converted to base prefabs for variants to be created from.
      • Performed using the menu option Assets/Create/Ride/Entity/Base or from Ride/Entity/Create Entity at the top menu bar.
      • Toggle options included to also create Ride and Networked variants at this time. This will take the newly created base prefab, stored currently at Ride_Art/Prefabs, and use it to build the specified variants.
    • Ride Variants, CreateEntityRideVariant.cs found at Ride/Editor, adds Ride Components needed to use the agent in the ExampleAgents scene and saves the variant at Ride_Art/Prefabs.
    • Networked Variants, CreateNetworkedVariantEntities.cs found at Ride/Networking/Editor, creates variants and saves them in Ride_Art/Prefabs. 
      • All networking related components and proper configurations of things like rigidbody are done in this script before saving the variants.
      • When generating prefabs using the base prefab creation tool, the created game objects follow a prefab variant hierarchy of Base -> Ride, PUN, etc., where any changes made to the base prefab will propagate to the other variants, but any changes to the variants stay local.
      • Menu options for Ride Variant and Networked variant creation are only available when a prefab is selected within the project window, as they create variants based on the selected objects, without first making a base entity. Note, this is not recommended because the explicit prefab variant hierarchy is not created. Its intended use is for quick testing purposes.

Natural Language Processing

  • Added ChatGPT-4 support (in addition to the previously added general OpenAI GPT API). New mode in ExampleNLP allows for more conversational interactions. Currently prompted to be an AI assistant as part of RIDE. It can now talk coherently about RIDE, but it makes up most of its “facts”. Requires update of config file.
  • Expanded ChatGPT API to allow for more detailed client input (i.e., prompts, chat history).
  • Note, 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.
  • Updated NLP systems that extend from INLPSystem “SystemInit.” Exposed properties in GPT3System to allow for customization.  
  • Updated OpenAI System’s to take in scriptable objects as prompts and cleaned up public fields. 
  • Updated OpenAIGPT3System to use default prompt if scriptable object is not provided.

NewProjectTemplate

  • RunUnity.cs, added entry for 2020.3.46f1; existing Unity version unchanged.

Networking

  • If NetworkAgent is attached to AgentMono, its health init will default to the AgentMono’s max health value: NetworkAgent.cs.
  • ExampleNetworkBase, made Awake() virtual so that derived classes can override it.
  • PhotonNetwork, in CreateNetworkObject(), use the prefab as the gameobject name rather than the player’s nickname.
  • Updates to NetworkObjectPrefabEditor.cs to now leverage the bulk scene editor to swap networking related game objects in the scene instead of the script components on networked objects. 
    Persistent understanding of which networking solution is currently active also added. Uses the same Menu options as before. Now with a checkmark to indicate which is active.
    Now includes GameObject menu option for adding the relevant networking objects to the currently active scene using menu option GameObject/Ride/Networking/Configure for Active Networking Solution.
    Networking Solution Prefabs included: Networking.prefab as base, and Networking_PUN.prefab for PUN as variant.
  • Fixed bugs with RPC Calls: Added missing ‘RPC_’ prefix for RPCC call in Photon Networking, and changed position data type from RideVector3 to Vector3.
  • Fixes for when PHOTON_UNITY_NETWORKING is not defined.
  • Removed unneeded using UnityEngine.Networking.Types.

Prefabs

  • ChrDavisArmyOCP_GearLOD.prefab, updated pouches, helmet, backpack and armor to OCP, along with rank patch to reflect E8_MasterSergeant. Updated LOD percentages (no culling).
  • Set the health and max health values of NetworkSoldierBlue and NetworkSoldierRed prefabs to 1000.
  • New Ride_Art/Prefabs folder to organize all built-in units and to house new units spawned with RIDE entity creation scripts.
  • Ride_Art/Prefabs folder with the following hierarchies: /Characters/Civilian/Afghanistan, /Characters/Civilian/Iraq, /Characters/Military/OPFOR, /Characters/Military/USA/OCP, /Characters/Military/USA/ACU added. Currently intentionally left empty as prefab creation tools are to be updated.
  • Created a new prefab variant, NetworkSoldierBlue, copied from ChrUsaArmyInfantryOCP01_PUN made with the entity creation tools and based on ChrUsaArmyInfantryOcp01Prefab, with the intention of using it as the new NetworkSoldierBlue moving forward.
  • NetworkSoldierRed changed to be a variant of ChrIrqInsurgentMleAdultAvg01_PUN made with the entity creation tools.
  • CreateEntityBase.cs updated to have all baseline components required to function in RIDE local and Networked scenes. This includes Capsule Collider, NavMeshAgent, PlayerInputControllerOld components as well as prefabs created specifically for this base prefab with preset references based on the existing networked soldier: CameraParent, Master Coordinator, Sound Node, NametagParent, and Throw Point.
  • Networked prefabs updated to include Agent Mono. Note, not all attributes may configure as expected.
  • Added setter functions in AgentMono to allow for the setting of serialized fields via script during entity creation.
  • NetworkObjectPrefabEditor now properly queries the Ride_Art/Prefabs folder and all subdirectories to look for assets ending in “_PUN” to reset the resource loader when swapping network solutions. 
  • HealthBarQuad.prefab added to base prefabs of new NetworkSoldierBlue and Red.
  • Updates to OCP and new Red base prefabs to only have LOD0 enabled and all other LOD disabled (propagates to all variants).
  • ResourceLoader.prefab updated to reference new NetworkSoldierBlue and NetworkSoldierRed prefabs. 

Ride Art

  • ChrUsaArmyInfantryOcp01 related assets:
    • Added folder for ChrUsaArmyInfantryOcp01 assets.
    • Moved and renamed ChrUsaArmyInfantryOcp01 assets for consistency.
    • Added ChrUsaArmyInfantryOcp01Prefab using ChrUsaArmyInfantryAcu01Prefab as starting point.
    • Added ChrUsaArmyInfantryOcp01 variants with different rank patches.
  • ChrUsaMle ACU, BDU and OCP related assets, renamed for consistency.
  • Reduced Glossiness from 0.5 to 0 for consistency with other OCP materials:
    • PatchRank_E2_Private_Ocp.mat thru PatchRank_E9_SergeantMajor_Ocp.mat
    • ChrUsaMleBackpackFilbe01_Ocp01_Mat.mat
    • ChrUsaMleBodyArmor02_Ocp01_Dif.mat
  • ChrUsaMleBodyArmor02_Ocp01_Mat.mat, changed material from Double Sided to Standard in order to eliminate transparency effect in armor.

RIDE Dependencies

  • Photon – PhotonServerSettings.asset Updated with the following new RPC calls:
    • RPC_ChangeWeaponFiringMode
    • RPC_InflictDamage
    • RPC_MissedAttack
    • RPC_ReceiveDamage
    • RPC_ResetAgent
    • RPC_Respawn
    • RPC_ShotFired
    • RPC_StopUsingWeapon
    • RPC_UsingWeapon
  • StandaloneFileBrowser – Recompiled native plugin to be compatible with Apple Silicon builds (created Universal binary).
  • VHAssets – Backward compatibility fixes for Unity 2020.x.
  • AssetUsageDetector – Fixes for Unity 2022.2.x and higher.
  • vhAssetsBezierCurveSystem – Changed Curve.cs::FollowCurveCoroutine() Transform parameter to Vector3 so that vhAssetsBezierCurveSystem.cs::MoveAlong() to be overridden with RideVector3 instead of RideID. This allows more precision on where the camera should look at when moving along the curve.
  • VHWebCam.cs – Slight adjustment to handle materials for RawImage.

RIDE Systems

PauseSystemMono

  • Added PauseSystemMono to RideSystems.prefab as a built-in system. Eliminates risk of having multiple versions of this system at startup from ExitPromptMenu.

UnityAudioSystem

  • Generated AudioSourceParent gameobject now under UnityAudioSystem gameobject as parent in order to reduce top level clutter.

UnityGroupBillboardSystem

  • Generated “Group Billboard Parent” gameobject now under the UnityGroupBillboardSystem gameobject as parent in order to reduce top level clutter.

UnityNavMeshMovementSystem

  • In OnAgentHealthModified(), set the areaMask as follows:
    navMeshAgent.areaMask = 1 << NavMesh.GetAreaFromName(“Walkable”);
    This is an attempt to solve: ‘Failed to create agent because it is not close enough to the NavMesh’ which causes errors further after the unit is created. This should probably be moved somewhere closer to when the unit actually is spawned and the NavMeshAgent is created, but this is currently where the message appears, so initial attempt is to fix locally here.
    Ref: https://forum.unity.com/threads/failed-to-create-agent-because-it-is-not-close-enough-to-the-navmesh.125593/#post-8795737

ViewSystemMono

  •  Generated ViewSystemMenu gameobject now under ViewSystemMono gameobject as parent in order to reduce top level clutter.

Level Select (Standalone or full-source distributions only)

  • AddedExampleWebServices and RideAssetLineUp scenes to the Tutorials listing.

Terrain Maps

  • Added FtPickettCACTF Split LMAB L21 and L22 dataset.

Unity

  • Packages, updated Timeline to v1.7.4.
  • ProjectSettings, enabled ‘Incremental Garbage Collection’ setting.
        Note: This setting distributes the workload of garbage collection process; mitigating GC-related performance spike.
        Reference: https://docs.unity3d.com/Manual/performance-incremental-garbage-collection.html
  • Backward compatibility fixes for Unity 2020.x.
  • Note, recommend clearing your local checkout \Library directories under \RideUnity and \NewProjectTemplate Unity projects prior to updating.

Documentation

New Examples and Tutorials content added to RIDE website.

Examples

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

  • Initial version of new RideAssetLineUp scene. Inclusion of prefabs strictly limited to DoD distribution of Ride, Ride_Art, and if useful, Ride_Dependencies directories. Prefab variants of soldiers and other units non-exhaustive. Certain _Network prefabs have been hidden for the time being due to run-time errors. LODs and unit properties unmodified except where to prevent combat engagement.
    • Added new OCP prefabs, including OCP chest rank insignia variation prefabs to scene. ACU versions present, but hidden by default.

Additions or refinements to existing Example scenes:

  • ExampleNLP, added chat history, expanded initial RIDE prompt, removed “entities” from UI if empty result, to allow for more space to show GPT results without overlap.
  • ExampleTeamMatch Korabela and Razish scenes, adjustments to spawned bots:
    • Reduced bot difficulty from 2 to 1
    • Added LODs to Blue and Red bots
    • Reduced starting health of Blue bot to 500
    • Reduced starting health of Red bot to 250

Fixed Issues

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

  • Updated M203 scriptable to use correct fire, reload and empty SFX.

Examples

  • DefenseOfCatalinaIsland, added RideBaseMinimal script for Exit prompt.
  • ExampleGroundClassificationWeather, fixed invalid state condition by checking if the terrain has been loaded before processing input.
  • ExampleLOS, filled Mount Magazine Holder value to resolve magazine objects (3) spawning elsewhere within scene at run-time upon instance of agent.
  • ExampleNLP, updated scene to pull objects from a gameobject rather than adding them at runtime. 
  • ExampleTeamMatch, fixed issue where blue/red bots were not executing behaviors.
  • ExampleTeamMatch, fixed UnassignedReferenceException on client side upon connect to host.
  • ExampleTeamMatch_RedBeach, added prefab with speaker component. Fix to avoid null reference for missing speaker prefab in Photon Voice. Overridden PhotonVoice prefab with speaker reference added.

Terrain

  • ExampleLoadTerrain, Reset Camera button will also reset camera rotation. Fixed exception upon select of Center Camera w/o terrain present.
  • ExampleTeamMatch, fixed A* reporting it’s unable to find terrain for AI objects placed in the scene prior to terrain streaming completion.

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.
  • ExampleTerrainDestruction, error when triggering destruction event over certain structures.
  • 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.