Skip to main content

Errant Biomes 1.11

· 6 min read

This update focuses on improving the user experience with better UI responsiveness, enhanced mask controls, and expanded runtime spawning capabilities. It also adds support for Unreal Engine 5.7 and includes a set of stability fixes and performance optimizations.

Features

Unreal Engine 5.7 Support

  • Added UE 5.7 support.
  • Support for skinned instanced meshes is in the works and will come soon.

Species Features

  • Seed Control

    • Added option to set or change the random seed used for generation instead of the asset name hash, allowing consistent regeneration results after asset renames. Existing species will have this value set to their current name-based seed and do not require any manual intervention. runtime density scaling property
  • Custom Asset Radius

    • You can now specify a custom radius per species asset for more precise control over placement priority. runtime density scaling property
  • Runtime Spawning Enhancements

    • Added support for runtime spawning of Instanceable Blueprint components. This allows you to spawn entire blueprints or only specific parts of them as runtime-spawned instances, enabling configurations such as runtime-spawned moss growing on offline-spawned rocks, or separating individual branches from trees for runtime spawning while keeping the trunk offline.
    • Added custom scalability groups for runtime species, allowing per-species performance tuning under biomes.rt.custom[0-3].DensityScale and biomes.rt.custom[0-3].CullDistanceScale. runtime density scaling property
    • Added scalability controls for runtime spawning distance via biomes.rt.SpawnDistanceScale.

Improvements

User Interface Improvements

  • Material Mask Improvements

    • Added sort priority controls for Mask Material parameter nodes, allowing you to control the order in which parameters appear in the UI.
    • Rotation Masks can now sample all three axes (X, Y, Z) instead of only the X axis. The output of the Species Sample node is automatically converted to a vector.
  • Mask Outliner Enhancements

    • Made filter behavior consistent between the level outliner and mask debug outliner.
    • Prevented users from hiding all columns, which would make the outliner unusable.
    • Disabled species now appear grayed out in the mask debug outliner, making it clearer which masks are active during generation.
  • Quality of Life

    • Increased default brush size for biome mask painting from 100cm to a more practical size.
    • Improved clarity in tooltips throughout the plugin.
    • Organized Biomes-related components into a dedicated "Biomes" category for easier discovery.
    • Added performance warning when spacing values are set too low, preventing accidental freezes.
    • Hid the None option in mask generation settings to prevent confusion.
    • Prevented creation of Unknown type mask assets.
    • Prevented creation of BiomeMask mask assets that should only exist as a global singleton.
  • Real-time Editor Mode Override

    • Added real-time viewport override for Biomes editor mode. This prevents issues when real-time preview gets disabled (e.g., after remote desktop sessions).
  • Mask Painting

    • Palette values are no longer clamped, allowing for more flexibility.

Generation Settings Improvements

  • World Partition
    • Added option to disable World Partition loading during generation. Errant Biomes loads the required World Partition area automatically, but the plugin cannot always tell if the area is already loaded. This can lead to loading the same area twice, so in some cases it's faster to disable this feature and rely on manual loading. This option can be found under Editor Settings->Plugins->Errant Biomes->Load World Partition.

Performance Optimizations

  • Memory Management

    • Reduced FName creation by not generating new FNames for temporary component names. Each FName persists forever in memory, so this reduces memory footprint.
    • Removed unnecessary variable lookups in runtime spawning code.
    • Fixed creation of spawner components when they're not needed.
  • Runtime Spawning

    • Spawners are now fully removed from memory after being unregistered, improving memory usage.

Bug Fixes

Crash Fixes

  • Fixed crash when deleting unreferenced biome assets that failed to load.
  • Fixed crash when dragging and dropping masks in the Mask Generation Order list.
  • Fixed crash on Vulkan when using landscape alignment features.
  • Fixed RHI crash related to render pass management in landscape operations.

Runtime Spawning Fixes

  • Fixed duplicated spawners appearing in runtime generation.
  • Fixed components being created and destroyed in endless cycles.
  • Fixed issue where components were created even when they were not needed.
  • Runtime Spawning now automatically resets when the grass.DisableDynamicShadows cvar changes to reflect the update.
  • Fixed incorrect fallback value for spawn distance that prevented species from generating within the requested distance.

Generation Fixes

  • Fixed spawn points being recreated unnecessarily, improving performance and preventing memory issues.
  • Fixed incorrect BiomesPartitionActor bounds calculation.
  • Fixed Instanceable Blueprints not being considered for priority culling due to missing bounds.
  • Fixed spawn point culling in SpeciesAssets shader for consistency between offline and runtime generation.

Custom Material Fixes

  • Fixed new material parameters not showing up after being added.
  • Fixed issues with custom masks being garbage collected incorrectly.
  • Fixed custom masks incorrectly sharing materials between components.
  • Fixed ensures triggered when custom material masks contain empty entries.

UI and Workflow Fixes

  • Fixed Common Settings not showing landscape alignment parameters.
  • Fixed broken pinned widgets due to color column width issues.
  • Fixed ensures triggered when biomes contain empty pointers.
  • Fixed warnings logged after creating new species from a template.
  • Fixed debug values being visually offset in the visualizations.
  • Fixed debug colors not updating immediately when changed.
  • Fixed warning spam in logs.
  • Fixed undo/redo adding unwanted preview strokes to the painted mask.
  • Fixed tools breaking unexpectedly when world settings become invalid after undo.
  • Fixed world partition not loading correctly during generation.

Material Masks Fixes

  • Fixed species sampling not working properly with constant-value masks.
  • Fixed slider font sizes to match Unreal's standard details panel.
  • Fixed choppy slider performance when adjusting mask parameters.
  • Fixed constant-value handling in rotation masks to match texture-based values. When a species outputs a constant value, the material is skipped and the value is used directly. This optimization was not working correctly for rotation masks.
  • Set full float precision on material mask defaults to prevent undesirable optimizations on Vulkan.
  • Fixed bounds texture behavior for objects without defined bounds.
  • Fixed BiomesBoundsTexture2DSquareMask with negative EdgeFalloffDistance filling the entire world.

PCG Integration Fixes

  • Fixed PCG Species Points node throwing warnings about invalid point metadata.
  • Fixed PCG getting stuck when generation fails.
  • Fixed unnecessary empty data being created in PCG workflows.