Since we made Errant Paths publicly available 12 months ago, we've dedicated thousands of hours to bug fixes, developing new features, enhancing the UI, and refining workflows. With this progress, we’re proud to officially call this release version 1.0. While there’s still a long way to go to achieve perfection, we’re incredibly proud of what we’ve built so far.
Errant Paths 1.0 introduces a new Cables and Attachments system, a complete rework of the UI, crucial workflow improvements, enhanced Label painting, and refinements across multiple other systems. These updates focus on making this powerful yet complex plugin accessible, user-friendly and enjoyable for everyday use.
Errant Paths 1.0 introduces new asset types and settings that need to be adjusted. Make sure to follow the upgrade instructions after installing the new plugin version.
New Features:
Cables and attachments
Errant Paths now supports attaching CableComponents and meshes to points along a Path, making it easy to construct structures like power lines, suspended bridges, and banners. The plugin and our updated AssetLibrary include examples that you can adapt for your projects.
UI Rework
PathTemplate list in PathDescription and SpawnCondition UI previously felt cluttered and overwhelming, with excessive nesting and poor use of vertical space. The SpawnCondition UI also failed to clearly convey conditional spawning concepts and was hard to inspect due to its textual form.
We’ve reworked these UI elements to be more compact, use colors and shapes for Labels, hide unused features, and provide a clearer overview of SpawnConditions at a glance.
Multiple PathLayers within one PathTemplate
PathLayers organize Path components that must form a continuous surface (e.g., asphalt meshes) and determine their spawn order. Previously, each PathTemplate could assign only one PathLayer to all its components, which required creating more PathTemplates and added unnecessary complexity.
To address this, PathLayers can now be assigned per component directly in the PathTemplate/Blueprint Editor. PathLayers are now assets, not just names, enabling easier renaming and reference tracking.
You can still assign a single PathLayer to an entire PathTemplate in the PathDescription, now called a "PathLayer Override."
Previously, the spawn order was determined by the order of PathLayers in the PathDescription's list. Starting with Errant Paths 1.0, the spawn order is defined directly in the PathLayer asset.
Old PathLayer names are automatically converted to PathLayer assets, but you should review and organize these assets into appropriate folders.
We have yet to utilize this feature fully in our AssetLibrary. We plan to reduce the number of PathTemplates over time by combining the related ones together.
Use Component or PathTemplate as reference for the SpawnCondition's DetectionRange
Components' SpawnCondition DetectionRange can now be defined relatively to:
- component bounds
- PathTemplate bounds.
New way to add spline points
You can now conveniently add points to a Path by holding Ctrl + Q and clicking LMB over the landscape. The new points are projected onto the terrain and can be added to either end of the Path or its inner points.
Improved Label painting tool
In the previous versions of Errant Paths, painting Labels was frustrating due to the erratic cursor behavior caused by projection onto the nearest Path spline. We resolved this issue by introducing a circular brush with adjustable radius. Painting Labels is now reliable, smooth and precise.
Ability to ignore short Label sections
We introduced the ability to ignore short Label sections. This is particularly useful for Labels that are meaningful only when they span a certain minimum length. For example, a "Large Bridge" Label doesn't make sense when it's activated for just a few meters. The same is true for many other Labels, such as lane markings, guardrails, road signs.
Overlap Resolver
When multiple components are spawned conditionally and their SpawnConditions are satisfied within the same area, they may spawn on top of each other, especially at Label's start and end. Previously, we attempted to address this issue by fine-tuning DetectionRanges and creating complex SpawnConditions, but this approach proved unreliable.
In Errant Paths 1.0, we shifted away from relying heavily on SpawnConditions for this task. Instead, we introduced an Overlap Resolver that can remove overlapping components based on their assigned priority. This allowed us to reduce the number of possible SpawnCondition configurations and led to more intuitive UI.
Longitudinal landscape adjustment
Paths can now adjust the landscape along the spline. This feature helps smooth terrain at the ends of the Path, near the bridge entries, and in places where two Paths connect. The falloff can be controlled via a curve, just like the lateral adjustment.
We also have a solid plan on how to improve the terrain around the tunnel entries, where adjustment settings change within the Path. Improvements to that will likely come in the next release.
PCG Interoperability
When using PCG and Errant Paths together, you usually don't want both systems to generate simultaneously, to avoid processing partially updated landscape, weigthmaps, or geometry. To address this problem, Paths can now pause PCG generation within their bounds, optionally cleanup the PCG generated content, and then resume the PCG generation after the Path update is finished.
Manual license seat locking
By default, when you enter Errant Paths editor mode, a license seat is automatically acquired from the available pool and gets locked to your PC for several hours. The same applies when generating a Path via our BP API. In larger teams, this can lead to accidental or unintended use of license seats. To prevent this, we introduced a manual mode that requires pressing a button to acquire a seat.
Improvements:
- Instancing can now be disabled for individual StaticMeshes in the PathTemplate.
- Labels can now be quickly filled with Manual Editions (with True or False values) via the Label context menu.
- We now allow for clearing PathDesc, PathAdjustment and first PathDesc's PathTemplateGroup. This is needed to avoid warnings when creating a class derived from AEpPath.
- Restrict "EpLabelLibrary" BP function library availability to Label Blueprints to avoid clutter.
- Switched from using from PIXUtilities to IRenderCaptureProvider.
Fixes:
- Fixed Landscape Adjustment setting changes being ignored sometimes
- Labels can no longer be selected or deselected during painting to prevent accidental changes
- Improved performance when moving/removing Tag assets while PathTemplate was opened
- Fixed TagPicker displaying the same Tags assets multiple times if they were moved
- Fix Path bounds calculation for empty SubActors.