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.
Use the Landscape Technical Guide for the most optimal component breakup from Epic.
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.