Skip to main content

Errant Paths 0.10

· 5 min read

MountainsScreenshot

Errant Paths 0.10 introduces MacOS and Linux development support, adds new features like multiple sub-actors per Path for enhanced streaming, improved handling of RVT and more powerful Generation Callbacks, plus many other fixes and improvements.

New Platforms

  • The plugin compiles and runs correctly on Unreal Engine 5.4 Preview. We will provide precompiled binaries as soon UE 5.4 is officially released.

  • Users who own Errant Paths source code can now develop on MacOS and Linux! We plan to start providing precompiled binaries in the near future.

    Apple Linux Logo

New Features

  • Each Path is now spawned as multiple actors to improve streaming performance and reduce hitches. Paths can be divided into sub-actors based on distance along the Path or based on 2D/3D grid. Custom splines can also be spawned as separate sub-actors. For more details, see our documentation.

SubActors

This feature introduced an ambiguity when selecting Paths - it wasn't clear whether user wants to select a Path or one of its sub-actors. We solved it by adding a toggle button in UI that switches between selecting Paths and sub-actors.

SubActors Toggle

  • Paths can now adjust multiple landscapes. It works even if two landscapes are overlapping.

SubActors

  • Path smoothing can now be controlled separately horizontally and vertically.

Horizontal Vertical Smoothing

  • We added a new PathTemplateDecalComponent that adds Path related properties to decals (such as randomization, spawning multiple copies, etc).

Decal Example

  • GenerationCallbacks can now access PathLabels which allows for all kinds of interesting procedural effects. You could for example automatically adjust material parameters of meshes on the outside of sharp turns (such as scratches on the guardrails).

Generation Callback Accessing Labels

  • Generation Callbacks can now be set not just for a mesh, but also for the entire Path (set in PathDescription). Callbacks set this way are run for all the meshes spawned by the Path. Our first use-case for them is to conditionally disable RVT in places where multiple Paths overlap vertically.

Per-Path Generation Callbacks

Improvements

  • We added a fallback server for license validation which is used in case of the main infrastructure failure. Aside from minimizing the chance of failure it also gives us more control in mitigating the situation.

  • We optimized various stages of Path generation and siginificantly improved landscape adjustment speed (5-50x).

  • Auto-regeneration can now be restricted to selected Paths. It solves the problem of having to wait for all the Paths to generate when we only care about one or two Paths we are working on right now.

Auto Generation Selection

  • We solved the problem of Paths that use RVT and overlap vertically (elevated highway passing over another road). Previously, both road/highway would write and read from RVT, causing duplicated lane markings on both of them. Now we detect such areas using a PathLabel "IsPathAboveOrBelow" and run a Generation Callback that disables RVT for meshes in the area.

Fixed RVT Overlap

  • We also managed to fix incorrect rendering of meshes using RVT in the Blueprint Editor.

RVT in Blueprint Editor

To learn how these RVT-related improvements work, see our documentation.

info

Getting these improvements requires updating to Errant Paths 0.10 and the Asset Library 1.1.

  • We added a warning when RVT is used in Paths but isn't enabled or fully configured in the level. RVT can now be configured with a single button click.

RVT Warning

  • Connecting multiple Paths to one end of another Path is now possible. Previously, multiple Paths could be aligned with another Path, but couldn't be permanently connected.

Multiple Paths Connected to one Path

  • We now revert changes in BiomeMasks/Biomes when a Path is deleted. We also warn when we can't cleanup Biomes because Landscape/Biomes adjustment is disabled.

  • We switched from using GameplayTags to our own Tag assets. The problem with GameplayTags was that they were saved in the project configuration and couldn't be transfered or added to projects together with Path assets. They had to manually copied to the correct configuration file. Our new TagAssets can be moved like all the other assets, are easy to manage/rename and can be organized hierarchically via folder structure.

Tag Assets

Tag Widget

info

Paths Templates that use GameplayTags will now fail to compile and you will be forced to replace them with TagAssets. We describe this process in the documentation.

  • Path Adjustment (Projection, smoothing, etc) is now performed incrementally (in the background, over many frames) in order to improve editing performance and responsivness for long Paths.

  • Editing a Path now dirties its Dependant Paths, making it easier to keep Dependant Paths up to date.

  • Improved reliability of SpawnAtInterval for connected Paths

Fixes

  • DirtyPath visualization is now hidden when Path is hidden in the Outliner.
  • When editing a Path, generation of connected Paths is now postponed until th edition is finished.
  • Fixed infinite loop when searching for nearest spawned Tag in Paths that create a closed loop.
  • Reversing a Path now handles connections correctly.
  • Fixed unnecessary regenerations of Paths that were only affecting the landscape (no spawned components).
  • Fixed freezing when landscape adjustment is performed on unloaded landscape tiles.
  • Fixed landscape adjustment when MainPathSpline is very long in the PathTemplate.
  • Fixed a crash when UWorld and UEpDirtyPathsWorldSubsystem are not present.
  • Clearing a Path now regenerates BiomeMasks/Biomes if needed.
  • Dependant Path generation now waits for the primary Path generation to finish.
  • Fixed Path occasionally connecting to another path/intersection backwards.
  • Path no longer sinks in during forced generation when "Project Onto Geometry" is enabled.
  • Spawned HISM components now have their mobility set to match the template component they are based on.
  • Fixed LandscapeAdjustment timout not working reliably.