To help your islands run on all supported platforms, Fortnite has some memory limitations in place.
In Unreal Editor for Fortnite (UEFN), you can use expanded memory capabilities to make larger and more diverse experiences. To fully take advantage of this, it helps to understand the way that memory use is calculated in UEFN.
World Partition
World Partition is the magic behind building a large island experience. This feature automatically divides the world into a grid, and streams only the necessary cells.
World Partition uses Streaming, which loads and unloads cells, and Hierarchical Level of Detail (HLOD), that groups and decreases the amount of detail on assets as the player camera moves away.
For more information on World Partition, Streaming, and HLODs, see Streaming and HLODs.
How Memory Gets Calculated
UEFN calculates your island's publishing memory from data produced at cook time, and recalculates it on every cook. Each session launch and each pushed change produces a new value, so you can track your island against the publishing memory budget while you work instead of finding out when you publish.
Calculating memory from cooked data gives you:
Fast results on large islands.
Consistent numbers every time you run the calculation on the same island version and Fortnite build.
Support for more asset types, including Scene Graph.
The memory calculation does not measure memory during gameplay. It verifies that the baseline memory usage of your island is under the publishing memory budget.
However, custom runtime logic can lead to high memory use that can cause issues for players, limiting their ability to play your island. We advocate using Spatial Profiler to get a better idea of how your island uses memory and performs at Play time, to avoid causing stability or performance issues for your players.
Check Memory Usage
UEFN tracks two kinds of memory budget:
| Budget | What it measures | Where to see it | How to investigate |
|---|---|---|---|
Publishing memory budget (300 MiB) | Memory calculated from your project's cooked data. You cannot publish if your island is over this budget. | Map Memory Budget in the Game Performance report and in the Spatial Profiler Editor tab. | The per-asset breakdown in the Memory Calculation. See Launch a Memory Calculation. |
Runtime memory budgets (per platform) | What a running client has loaded while you play. | Memory Usage in the Game Performance report and in the Spatial Profiler Live view. |
The values for the two budgets generally correlate, but they do not match exactly.
The Game Performance report at the bottom of the editor shows a warning when your island is over budget.
Memory now displays in MiB instead of thermometer memory units. The way memory is calculated has not changed. The memory thermometer (the Current Memory Usage bar) no longer appears on the HUD in running sessions.
All assets referenced by the level count toward total memory usage. This includes devices, landscapes, and custom meshes and textures.
You cannot publish your island if it exceeds the 300 MiB publishing memory budget.
You can exceed the publishing memory budget while you build, as long as you do not publish. People who collaborate with you on a console can hit the console's hardware memory limit, which removes them from the session. They can reconnect after you fix the issue.
Making Content Changes
The publishing memory value comes from cooked data, so it is up to date only after a cook. After you make content changes with Live Edit or the Phone Tool, the Push Changes prompt appears even if the Edit Mode indicator shows Up to Date. Live Edit does not refresh the cooked data used for memory calculations.
Click Push Changes or Refresh Session to cook your changes and get a new value. Until you do, the value does not include the cost of your content changes.
To get an updated value without a running session, launch a memory calculation manually. See Launch a Memory Calculation.
Launch a Memory Calculation
Your island must be under the 300 MiB publishing memory budget before you can publish it. UEFN recalculates the publishing value on every cook, so Map Memory Budget in the Game Performance report updates each time you launch a session, click Refresh Session, or push changes.
If your island is over budget, a warning appears in the Game Performance report. Click the warning to open the Spatial Profiler.
Open the Memory Calculation
To open the Memory Calculation, from the menu bar, select Tools > Memory Calculation.
You can also open the Memory Calculation from the Spatial Profiler:
Open the Spatial Profiler.
To open the Spatial Profiler, from the menu bar, select Tools > Spatial Profiler or from the Game Performance report, click Map Memory Budget or Spatial Profiler.
Click the Editor tab.
Click a memory metric, such as Niagara Memory.
In the description panel, click Open Memory Calculation.
Editor Tab Memory Metrics
The Editor tab shows memory metrics calculated from your project's cooked data. These metrics do not require a play session.
| Metric | Description |
|---|---|
Map Memory Budget | Shows the memory your map uses, calculated from cooked data for each cell of the map. This is the value checked against the 300 MiB publishing memory budget. |
Map Memory by Type | Shows memory by asset type, such as Static Mesh or Texture, for each cell of the map. Use it to find the areas of your island where an asset type uses the most memory. |
To see what is in a high-memory cell, teleport to it from the Spatial Profiler.
Review the Memory Calculation
The Memory Calculation window shows the per-asset breakdown behind your publishing memory value: every asset that contributes to it.
The breakdown bar at the top shows how much of the budget each asset category uses, such as Static Mesh or Texture. Click a category in the bar to filter the list to that asset type.
Select an asset to see where it is referenced in your project. Follow the references to find the actor or device that loads it.
Launch a Memory Calculation Manually
To get an updated value sooner while you iterate, especially without a running session, force an upload and cook:
From the Project menu, select Launch Memory Calculation.
In the dialog, click Upload Private Version.
(Optional) Add a description for the project version.
When the upload and cook finish, Map Memory Budget updates.
My Island Is Over Budget. What Can I Do?
There are many strategies to save on memory once you hit the limit. Try any combination of the following:
Open the Memory Calculation to see the per-asset breakdown of your publishing memory value. Start with the largest assets and asset categories. See Review the Memory Calculation.
If your island is over a runtime memory budget, ask an AI agent to help. With an agent connected through the UEFN MCP, you can describe the problem in your own words. The agent takes a Memory Snapshot, recommends changes, and can make the changes and measure again. The agent cannot open the Memory Calculation, so it cannot check the 300 MiB publishing memory budget. See Profile and Fix Memory with an AI Agent.
Stream textures where possible. This means authoring textures to be streaming-friendly (power of two dimensions), and configuring the textures so mipmaps are generated. If textures can’t be streamed, they will always use the maximum amount of memory, regardless of how far away it is being used. More information can be found on Resizing Textures.
Turn Streaming ON in the World Partition panel. Although this is a must for large islands, smaller islands may also benefit from streaming, especially if the content gets too dense.
When streaming is turned on, make sure that actors have Is Spatially Loaded enabled where possible. If not, they will be cooked into the main level package and will always be loaded. This is specially relevant for Landscape streaming proxy actors, as these can contain a lot of collision data that you generally want to stream in on demand.
Spread your island's content evenly. Concentrating too many actors in a small area will not allow content to be streamed out, and will contribute to exceeding your memory budget.
Reduce the number of devices your island is using. Devices are among the most expensive actors you can place. However, placing instances of the same device incurs a much lower memory cost.
Take a look at the Project Size window. If you see some memory-heavy objects on disk, chances are they’ll also be heavy on memory at runtime. To check your project size, click the Project dropdown and select Project Size.
Reduce the quality level on custom asset LODs, especially on those assets that are only visible from a distance.
Reuse assets multiple times. In a forest made of 100 trees, use 5 variations and duplicate them around instead of using 100 unique trees. This will make a huge difference on the memory footprint.
If using HLODs, generate them throughout the process of the project and ensure that you're only generating them for objects you can see from far away.
Make use of Data Layers if your islands can be subdivided into configurations that aren't all meant to be displayed all at once. For example, an underground dungeon that isn't reachable unless the player enters a shrine.
Lower the mesh complexity of your custom content. High-poly meshes incur a higher memory cost. Edit the mesh by double-clicking on it in the Content Browser, and adjust the Keep Triangle Percent value under Nanite Settings. Using a lower value will lower the complexity of the mesh and reduce the actor's memory cost.
Use Profiling and Analysis Tools
Use UEFN's profiling and analysis tools to find the assets and systems contributing to memory usage. To investigate the publishing memory budget, use the Memory Calculation. See Launch a Memory Calculation.
To investigate runtime memory while you play, use the tools in this section.
To use Spatial Profiler and Memory Snapshot the Monitor Performance option must be enabled from the Launch Session menu before starting a play session. This is enabled by default.
Investigate High Memory Usage
Use Memory Snapshot to see what a running client has loaded right now. Memory Snapshot is the best tool for investigating the Memory Usage metric in the Spatial Profiler Live view and the Game Performance report.
You can review memory usage by asset type, filter by persistent level objects or Scene Graph objects, locate actors that reference high-memory assets, and navigate directly to those actors in your project.
Memory Snapshot does not report against the publishing memory budget.
To learn more, see Memory Snapshot.
Analyze Memory Hotspots
Use Spatial Profiler to visualize memory and performance metrics across your island. Spatial Profiler helps identify where memory usage occurs during gameplay and highlights areas that may require optimization.
When used together, Spatial Profiler and Memory Snapshot can help connect performance warnings with the assets and locations contributing to memory usage.
To learn more, see Spatial Profiler.
Profile and Fix Memory with an AI Agent
If you have an AI agent connected through the UEFN MCP, the agent can use Memory Snapshot for you. You describe the problem in your own words, and the agent finds what is using memory, explains it, and can make the fix in the editor.
The agent can only help with runtime memory: the Memory Usage metric and its per-platform budgets. The agent cannot open the Memory Calculation, so it cannot check the 300 MiB publishing memory budget. To check the publishing budget, see Launch a Memory Calculation.
To fix high memory usage with an agent:
Start a play session of your island.
Describe the problem to the agent. For example:
Command LineMy island Memory Usage is over budget. How can we fix this?The agent takes a Memory Snapshot, lists the assets that use the most memory, and recommends changes.
Ask the agent to explain any recommendation you are not sure about, then approve the changes.
The agent makes the changes, pushes them to the play session, and takes another Memory Snapshot to confirm the Memory Usage metric is within its platform budget.
Check Map Memory Budget in the Game Performance report to confirm your island is also under the publishing memory budget.
The changes the agent makes are regular edits in the editor. You can open the affected assets to review or undo them.
AI agents do not always take the same steps, so results can vary by agent, model version, and how you word your questions.
To learn more, see Profiling Your Island with the UEFN MCP.
Optimize Assets for Lower Memory Usage
After identifying high-memory assets, review them for opportunities to reduce their impact on your island.
Common optimization techniques include:
Reducing texture resolutions where high-detail textures are not required.
Simplifying complex static meshes.
Removing unused assets and actors from the project.
Reviewing assets that are loaded frequently across multiple areas of the island.
Static meshes with high vertex counts can increase memory usage and impact performance. UEFN includes asset validation warnings that help identify meshes that may require optimization.
To learn more about optimizing meshes, See Simplify Static Meshes.
If your island targets mobile devices, see Designing for Mobile for additional guidance on best practices for optimization.
Reduce Memory Usage and Recalculate
Use this workflow to find and fix the assets that put your island over the publishing memory budget:
In the Game Performance report, check the Map Memory Budget value.
In the Spatial Profiler Editor tab, select Map Memory by Type to find the areas and asset types that use the most memory.
Open the Memory Calculation and click the asset type in the breakdown bar to filter the list.
Find the largest assets, and check their references to find where they are used.
Reduce, replace, or remove the asset. See My Island Is Over Budget. What Can I Do?
Click Refresh Session, or launch a memory calculation manually, to cook your changes and update Map Memory Budget.
Troubleshooting Other Issues
For proper validation, creators are expected to have streaming enabled, and also expected to have mipmaps being generated for textures. If any of your textures had the MipGenSettings option set to No Mipmaps, previously it was not flagged when your island is submitted for publishing. However, now if a texture in your project has MipGenSettings set to No Mipmaps, it will fail validation.