Goofish Optimization Tools

This document details the custom Goofish Optimization tools available to the game, that can allow automatically setting cull distances based on mesh size placed in the world, perform world composition common tasks, such as adding actors to the correct streaming world tile, breaking up the world into tiles, setting light fade distances and more.

Tool Usage


This section documents tool UI elements and general use.

 

  • World Composition

    • This tool allows the world to be divided into streamable tiles, ensure the World Composition checkbox is ticked under world settings

    • Create World Tiles

      • Will create streamable levels as tiles, named “GridLevel_[X]_[Y]” as according to the settings of the tool.

      • After creating the tiles, you should use the “Reposition Tiles” button immediately after, and ensure the tool settings are the same as it was for creating the tiles, currently it does not persist tool UI values, between level saves for some reason. Thanx Epic.

      • Ensure NO tiles exist before running this, it does not automatically add actors to the tiles, that can done by the “Move Actors to Levels by Position“ button.

    • Move Actors To Folder

      • This will organize actors in the Scene Outliner, and ensure actors that belong to a tiled level, is moved into a folder with the same name as the grid level. Example: GridLevel_[X]_[Y]

    • Move Actors to Levels by Position

    • WARNING THIS IS BROKEN: UNREAL DELETES ACTORS WHEN MOVING BETWEEN LEVELS SO DONT DO IT AND I DONT HAVE THE PATIENCE OR THE TIME TO FIX IT IN THE ENGINE SOURCE

      • This function will look at the tools settings ( World Size, Tile Size, offset etc) and use that to determine if any actors that are in the persistent level ( only actors that contain static meshes, or static mesh components ) will then be moved to their corresponding grid level. Such that the actor will then be “moved” or “exist” in that level, and no longer in the persistent level.

      • Actors with the “persistent" will not be considered, and remain whereever they are manually placed.

      • This can be verified by selecting the actor ion the Scene Outliner, and looking at the Actor Selected In.

    • Reposition Tiles

      • PRESS THIS TWICE BECAUSE UNREAL THATS WHY

      • This button should be used directly after using the “Create World Tiles”, and will use the settings as specified by the tool, such as World Size, Tile Size and offsets to position the world tiles in the World Composition view, so that they are in the correct place, and contain the correct extents, once the tiles are in place, do not use this button again, as it will move the tiles incorrectly, as world composition uses offsets, that have a tendency to go out of whack.

      •  

    • List All Actors and Levels

      • does what it says, adds it to the log

    • Resolve name conflicts

      • I mean really who even knows why this is a thing, but it is, it makes sure actors have unique names if numbers were stripped

 

 

This section details some UI elements on the tool.

 

  • Debug

    • Debug Content Browser Asset Name

      • Will print out the selected assets from the content browser full path to the log

    • Show Actor Hierarchy

      • Will show all actors who’s parents dont have staticmesh components, or are not static meshes

        • This was primarily used while working with Epic’s seriously defunct instanced foliage actors, and has since been replaced by our custom foliage spawners.

  • Optimization

    • Analyze Scene

      • Useful when working with tiled worlds, to quickly remove certain actors from the tiled worlds, such as directional lights, postprocessing volumes, not typically used in game maps, more for super large tiled test maps.

    • Layout All Assets

      • Will layout all static and skeletal meshes from the content browser in rows/columns in the world.

        • Used for test maps.

  • World Composition

    • Tile Size

      • An individual cell/grid/level, will be this size ( tile extent = size / 2 )

    • World Tile Start Offset

      • Where to place the first tile ( position expressed in world space and denotes the center of the tile )

    • World Tile Columns

      • How many “columns” to place tiles, then wrap to a new row, starting from “World Tile Start Offset”, and placing each tile under each other going along the “Y” axis in the World Composition view. ( First +Y=DOWN, then +X=RIGHT=COLUMNS ) ( Columns = X, and TILES are placed along Y first. not really important but kind of is )

    • Max Tile Count

      • Do not exceed this many tiles in total.

 

Example Usage


An example of how to use this tool to create tiles for a large open world.

Import and Setup Landscape(s) and their Materials

World Creator 2.3 f1. World Creator 2022 not tested yet

  • Design the landscape first, clearly indicate where grass, rock, snow, mud ( for underwater ), cobble ( for roads ) will be.

  • Import the landscape and setup the material.

    • World Creator: Terrain: Export the HeightMap RAW, for Unreal Engine, Flip Y

    • World Creator: Terrain Layers: Export Heat Maps, Flip Y

    • Right click on each terrain layer after setting the Lunei Landscape material on the landscape

      • Weight Blended to 1

      • Import from File: browse to the heatmap

      • Open the layer in Content Browser, set the Physical Material.

  • Ensure the material layers have the correct physical material on them for the spawners to work.

  • Ensure the Editor has “Procedural Foliage” checked, as we rely on the Foliage Blockers to block spawners.

    • Add ProceduralFoliageBlockerVolume’s to the map, where things like towns and built up areas would be, any areas that should not contain foliage

  • Multiple landscapes may be imported, the tools impose no limit on landscape size, nor count.

  • Design principals for Lunei.

    • Landscapes do not have a size limitation, other than RAM budget set for the game.

    • Landscapes will always live in the persistent level, and never get streamed in tiles.

      • DO NOT TILE LANDSCAPES FOR WORLD COMPOSITION IN LUNEI

      • DO NOT SET ANY CULLING ON LANDSCAPES OR LANDSCAPE COMPONENTS

      • Landscapes must always exist and always be visible infinitely far away, as it uses LOD and the materials are optimized for this.

 

Use the Tool to Generate World Tiles

  • Example ( single ) landscape: ~800, 000 square Unreal Units in total ( from side to side, centered in the world )

  • Surrounded by near infinite water plane

  • We require the world to be broken up into tiles of 100K each, using the tool.

    • 100K is a good size as the streaming size for world composition by default is 50K

    • Which means if we stand in a tile, then not all the tiles around it would even need to be loaded, only the ones where we are over the half way mark to that tile gets loaded.

  • Specify

    • World Size: 800,000 ( extent = 400K )

    • Tile Size: 1,00,000 ( extent = 50K )

    • Offset: X: -4,000,00, Y: -4,00,000 ( our landscape is centered to the world origin )

    • Columns: 9

    • Max Tile Count: 81 ( 9 rows x 9 columns ), as we want the tiles to overlap the ocean slightly as well.

  • Choose “Create World Tiles

  • Remember to reopen the tool and specify the same values again, then enter “Reposition Tiles” twice.

    • Currently the UI gets reset and looses it’s values between level saves. This is a known issue and getting fixed.