Explore how the Shadows of the Abbey island template uses Quixel Megascans assets to build a realistic horror environment in Unreal Editor for Fortnite (UEFN). The island features an abbey, cemetery, catacombs, forest, windmill, and coastline under a stormy night sky. It also includes dynamic assets, lighting, weather, and water.
Use the template as a starter island for your own gameplay.
Get Started
You can find the template in the Feature Examples section of the Project Browser. To learn more about accessing the project and explore the other templates in UEFN, see UEFN Feature Examples.
To get the best experience from the template, use the editor and an instance of the Fortnite game client together. You can enable live edit to test features while you explore.
You can also use the Outliner to explore the different environment setups and review all the assets used to design the project. Right-click an asset in the Outliner and select Browse to Asset(s) to open the location in the Content Browser.
Project Assets
The full Quixel Megascans library is free on Fab. Use this template to learn how its assets were optimized, then apply the same optimizations to any Megascans asset on your own island. To learn how to bring Fab assets into your project, see Import from Fab.
The table below, provides an overview of the primary assets the design team used in the project.
| Asset | Value |
|---|---|
Placed actors | 15,056 |
Static meshes placed | 12,747, from only 306 unique meshes |
Placed geometry | About 38.3 million triangles, made workable by Nanite |
Textures | 439, none above 1024x1024 except the sky |
Local lights | 187 (161 point, 26 spot) |
Foliage | About 62,400 instances across 14 types |
Verse | 1 script: rain_follower.verse |
This overview covers techniques you can apply to your own islands:
Low-Frequency and Overlay Textures
Most of the assets on the island started as Megascans scans. Each Megascans asset includes its own set of high-resolution textures, such as base color, normal, roughness, and ambient occlusion. These textures provide photorealistic detail, but each new asset adds to texture memory. When you fill an island with scanned rocks, walls, and props, you can run out of the UEFN memory budget before the island is finished.
The template solves this by splitting each surface into two layers:
A tiny low-frequency (LF) texture for each asset. It holds only the asset's overall color, so it stays small.
An overlay texture that holds the fine detail, such as cracks, grain, and wear, in a single grayscale channel. Four assets share one texture file, one channel each, so each asset's detail costs a quarter of a texture.
To learn how UEFN measures memory use, see Memory Management.
Low-Frequency (LF) Textures
The template has 163 LF textures. Almost all are between 16 × 16 and 128 × 128 pixels, and each takes only a few KB.
Channel-Packed Overlay Textures
The detail comes from 42 overlay textures. Each one packs the grayscale detail of four assets, one per channel (red, green, blue, and alpha), so one file serves four assets.
The Parent Material
One parent material, M_LFOverlay, combines the two layers. The template makes 161 of its 224 material instances from M_LFOverlay:
Color: The LF color, with the overlay detail blended on top. Two values set how strong the detail is.
Roughness: Calculated from the color and the overlay, so there is no roughness texture. A minimum and a maximum value set the range. The Wet instances work by changing this range.
Normals: The mesh's own normals, plus a tiling detail normal and a shared world-space detail layer.
Vertex color: Stores baked ambient occlusion and a moss mask, so neither needs a texture.
To learn how materials and material instances work in UEFN, see Materials.
Detail Fade with Distance
The overlay detail fades out beyond about 40 m, leaving only the LF color layer. One shared setting, MPC_DistanceFade, controls the fade for every material on the island, so you change it in one place.
Fallback for Mobile
On mobile, the material switches to faked lighting. It blends a ground color and a sky color, using lighting information stored in the mesh's vertex colors. The result looks like realistic lighting without the performance cost of real-time lighting.
To learn how to optimize islands for mobile devices, see Mobile Optimization.
Texture Memory Savings
The whole island uses 439 textures. Apart from the sky, none is larger than 1024 × 1024, and most are 512 × 512 or smaller. Each asset's color costs only a few KB in its LF texture, and its fine detail costs a quarter of an overlay texture, with no separate roughness or ambient occlusion maps.
To learn how to size and set up textures for UEFN, see Textures Best Practices.
Building with Kits
Nearly every structure and prop on the island, from the catacombs and windmill to the cemetery walls and wooden objects, uses a small set of reusable assets that share materials and textures. The same idea repeats throughout: keep the base meshes plain, place them many times, and get variety from material instances instead of new textures.
| Kit | Meshes | Placed | Textures |
|---|---|---|---|
Catacomb modules | 25 | 675 shell, about 970 dressing | 2 tiny LF textures per wall look |
Wood Kit and windmill | 44 | 602 | About 1.1 MB for all wood |
To learn how to prepare assets for UEFN, see Fortnite-Ready Assets Best Practices.
Mesh Reuse
The template reuses meshes across the island to save memory:
The island places 306 unique meshes 12,747 times, about 42 times each on average. The curb stone alone is placed 1,200 times.
The island uses 351 decals to add damage, moss, mud, leaks, and bricks instead of extra geometry.
Nanite and Levels of Detail (LODs)
Every mesh uses Nanite, which makes about 38 million placed triangles workable. Because some devices that run Fortnite do not support Nanite, the meshes also keep low triangle counts and have fallback options:
A typical mesh has about 1,400 triangles, and none has more than 50,000.
Most meshes have hand-made LODs for devices without Nanite.
On Low and Medium quality, meshes skip their most detailed LODs.
To learn how Nanite works, see Nanite Virtualized Geometry in the Unreal Engine documentation.
The Catacomb Shell and Dressing
The catacombs are built in two layers. The shell is the walls, floors, and ceilings, and it snaps to a 512-unit grid. Pieces come in multiples of 256 units, with their pivots on a corner, so they snap edge to edge in UEFN. A full wall is a plain 12-triangle box.
The detail comes from about 970 dressing pieces placed on top: columns, arches, floor ribs, and stairs. They are placed off the grid and sometimes tilted, so the catacombs look hand-carved rather than modular. That way the triangle budget goes into the dressing, where players look.
To learn how to build modular architecture on the UEFN grid, see Architectural Modeling Guidelines.
One Wall Material
The shell can stay plain because the wall material carries the look. The catacombs, the windmill, and the cemetery wall all use the same material family, M_Catacomb_Wall. It mixes a plaster layer and a stone layer, each built from a tiny LF texture. A noise pattern sets where the plaster has fallen off.
Details are projected in world space, so they run across the joins between modules with no visible seams. Seven material instances turn the 25 modules into clean plaster, exposed stone, rough masonry, and darker areas. The windmill uses vertex painting to control where the plaster is worn away. The cemetery's round central wall reuses a catacomb material instance unchanged. To learn how vertex painting works, see Mesh Paint Mode in the Unreal Engine documentation.
The Wood Kit
The Wood Kit applies the same idea to props. It starts with a small library of beams, planks, and poles, including broken ones, all UV-mapped to one wood texture set. Coffins, crates, fences, the dam, and the bridge were assembled in the level from these pieces, then merged into single meshes. All 29 kit meshes and 15 windmill parts share one material. Instances change only the tint, the roughness, and a moss switch. From the same meshes you get dark coffins, sun-bleached gray fences, and a dam that looks wet.
The Cost of a New Look
A new wall look costs one material instance and a few tiny LF textures. A new wooden prop built from the kit adds no textures at all. The larger textures, such as the overlay atlases, shared normals, and noise, load once and are reused across the island.
Rain
The template creates rain in two parts, because particle rain across a whole island is performance-intensive:
Player rain: One small rain effect that follows the player.
Hand-placed rain: Effects placed where rain meets the buildings, such as gutters, roof edges, and doorways.
Rain That Follows the Player
The template's only Verse script, rain_follower.verse, moves a single VFX Spawner device 20 times a second, so the rain always sits slightly above and ahead of the player. Tune the script with these options:
| Option | Value | What it does |
|---|---|---|
| 200 | Spawns the rain 2 m above the player |
| 40 | Spawns it 0.4 m ahead of the player |
| (10, 2, 0) | Adds a small sideways drift, so the rain falls at a slight angle |
| 100,000 | Moves the spawner 1 km underground while the player is indoors |
| 1.8 s | Waits this long before turning off the moved spawner |
The rain only has to cover the space around the player, so the effect stays small, at about 960 particles at a time.
To learn how Verse devices work, see Create Your Own Device Using Verse.
Rain Shutoff Indoors
The template marks indoor areas with 17 Mutator Zone devices. When the player enters one, the rain spawner moves 1 km underground (ParkDepth), so raindrops already in the air keep falling instead of disappearing. After 1.8 seconds (FadeTime), the spawner turns off. It turns back on when the player steps outside.
Hand-Placed Rain
The template adds 83 hand-placed Niagara systems where players notice rain most:
| Effect | Count | Where |
|---|---|---|
Drips | 28 | Gutters |
Rain curtains | 4 | Roof edges |
Rain sheets | 25 | Seen from doorways |
Splashes | 26 | On the ground |
These effects keep their rendering cost low. They skip collision and sorting and turn off beyond 25 to 50 m. The most performance-intensive graphics processing unit (GPU) effects run only on High quality and above.
To learn how to create Niagara effects in UEFN, see Visual Effects.
Splashes, Ripples, and Wet Surfaces
Three effects put the rain on the ground:
Splashes: Short splash animations, plus a few flat sprites whose ripples are animated in the material.
Ripples: The landscape puddles and the lakes reuse the same ripple effect.
Rain decals: 10 decals add moving water to the ground.
Wetness Control
Wet surfaces do not need extra textures. Wetness is a value on the material instance.
Water on Floors
The catacomb and stone floors share one floor material, M_Floors, which has a water layer that fills the joints and hollows. Water_Level sets how high the water rises. Below zero the floor is dry, and slightly above zero water starts collecting in the joints. A few other values set how soft the puddle edges are and what the water looks like. The template has four floor instances, ranging from fully dry to puddles in every joint, and they differ only in these values.
Wet Stone and Rocks
The outdoor stone floor and the ground rocks use Wet instances of the standard M_LFOverlay material. These instances change only the roughness range, so most of the surface turns glossy while some patches stay rough. The stone looks wet in places instead of looking like plastic, and it adds no texture memory.
The Ocean
The ocean uses a custom material on a grid of flat water planes instead of the Unreal Engine Water system. This approach renders large water surfaces efficiently. To learn about the water tools available in UEFN, see Water Tools.
Water Planes
The ocean is made of 261 copies of one 64x64 m water plane, covering about 1 km². The planes use Nanite and stop drawing beyond 320 m.
The Water Material
The water material, M_OceanWater, is opaque. It does not use translucency or refraction, which are the most performance-intensive parts of most water shaders. Instead, it fakes the look of deep water, as the next sections explain.
Waves
The ocean material combines four layered Gerstner waves, using world position offset to simulate water movement. Gerstner waves are a classic way to fake ocean waves. They move the surface sideways as well as up and down, so the crests get sharp and the troughs get wide, like real water.
Each of the four waves has its own size and direction. Because they do not line up, the sea looks irregular instead of repeating. Two moving normal maps add small ripples on top.
Water Color
The material blends between a deep and a shallow water color based on wave height. It adds the sky color at glancing angles, and in the distance it fades into the fog color so it meets the horizon cleanly.
Shoreline Foam
The water material generates shoreline foam where waves meet the cliffs. Using distance fields, it detects geometry within 5.8 meters and adds foam along the shoreline.
Lakes
The lakes use a separate water material with more features, including rain ripples. This puts the extra rendering cost on the smaller water surfaces and keeps the larger ocean opaque and efficient. To learn how to add lakes to an island, see Creating a Body of Water for Your Custom Landscape.
Landscape and Cliffs
The landscape uses one material, M_Landscape. You paint three layers: grass, forest, and mud. Cliffs appear on their own wherever the ground gets steep. It is one of the most performance-intensive materials on the island, but it also handles puddles and rain ripples, so the ground needs no extra effects. To learn how landscape materials work in UEFN, see Editing Landscape Material.
| Layer | How it is placed |
|---|---|
Grass | Everywhere by default |
Forest | Painted |
Mud | Painted, with edges broken up by stones |
Cliffs | Automatic, based on slope |
Only three of the layers are painted, which reduces the landscape's rendering cost. To learn how to paint landscape layers, see Painting the Terrain.
Mud Around Stones
When you paint mud, a stone height texture fills the gaps between stones first, which creates irregular edges. This affects only the brush edges and leaves fully painted areas unchanged. The EdgeHardness parameter controls how sharp the edges are.
Puddles and Rain Ripples
Puddles form automatically in low-lying mud on flat terrain, with reflective, muddy water and animated rain ripples. The Puddle_Level parameter controls water coverage. Puddles, lakes, and rain decals share ripple effects, so the rain looks consistent across the island.
Automatic Cliffs
The material generates cliffs based on terrain slope, switching to rock on steep surfaces. Noise creates irregular boundaries, and triplanar texture projection prevents stretching on vertical faces. When you sculpt the terrain, cliff textures update automatically. To learn how to sculpt landscapes in UEFN, see Sculpting the Terrain.
Shared Detail Textures
The landscape cliffs, the rock and cliff meshes, and the catacomb walls all share one world-space detail layer, MF_Global_Overlay. Because they share the same detail, rock meshes blend into the ground around them with no visible change where they meet. To learn how to reuse material logic across materials, see Material Functions.
Fewer Textures
The landscape saves texture memory in three ways:
No roughness textures: Roughness is stored in a channel of the color textures.
Reused textures: Some noise textures come from Fortnite and the engine's base textures instead of being made new.
Mobile: Ambient occlusion is replaced by a fixed value.
Trees and Ground Foliage
Trees and ground plants use little dedicated texture memory. They rely on tiny LF textures, shared atlases, and a wind effect that does not need a texture.
Nanite Trees
All trees use Nanite, so you do not need to set cull distances for each tree. Triangle counts are modest: most trees have 10,000 to 12,000 triangles, and the hero tree has about 30,000. Each tree also has hand-made LODs as a fallback for devices without Nanite. On Low and Medium quality, trees skip their most detailed LODs, so lower-end devices never load them. To learn how to set up LODs for your own meshes, see Level of Detail (LOD) Best Practices.
Tree Materials
Every tree splits its materials into the same three parts:
Trunk: A tiny LF color texture unique to each tree, with a shared tiling bark texture blended on top.
Branches and limbs: Shared tiling bark.
Cards: Flat, two-sided cards for the branches and needles.
Branch Cards
Branch cards reuse pine bark textures for color and a channel from the shared tree atlas for opacity, so they need no dedicated textures. The dead pine, Hornbeam 02, and the hero tree share the same branch material, and pine needles use a single small color and normal texture.
Wind
The trees, needles, and ground plants share one wind effect. The material calculates it, so there is no wind texture. Each tree or clump gets its own random timing, so neighbors do not sway together. Vertex paint keeps the trunks and roots still while the tips move.
Ground Foliage
The ground plants get variety without extra textures:
Color variety: Each clump picks a slightly different color from a strip of 32 colors, so a field of grass does not look repeated.
Darker roots: Vertex color darkens the base of each plant, so no ambient occlusion textures are needed.
Light through the blades: The blades glow slightly when lit from behind.
The plant meshes are small, from a few hundred to about 6,500 triangles, and they use Nanite. Each plant type uses one 512x512 texture atlas.
| Plant | Visible up to | Casts shadows | Thins out on lower quality |
|---|---|---|---|
Wild grass | 70 m | No | Yes |
Bearberry | 50 m | No | Yes |
Fern | 70 m | Yes | No |
Downy willow | 80 m | Yes | No |
Small, dense plants do not cast shadows and thin out at lower quality settings, which reduces performance cost. To learn how to paint foliage in UEFN, see Foliage Mode.
Bounce Light and Flickering Lights
The island uses 187 local lights, organized into groups that simulate bounced light, light candles, and create moonlight shafts. To learn about the lighting tools in UEFN, see Lighting.
Fake Bounce Light
The island uses 48 small point lights to stand in for bounced light. They cast no shadows, have a short range, and have increased indirect lighting intensity. This adds soft fill light to interiors without the cost of more shadow-casting lights.
Moon Shafts in the Fog
The island uses 21 spotlights that point down into the pit with volumetric scattering enabled, so they draw visible beams of blue moonlight through the fog.
Firelight
Candles and fires use a warm color temperature mixed with a slightly bluish light color. The result is a muted orange that looks more believable than pure orange.
Flickering Lights
One light function material, LF_LightFlicker, creates all the flicker, with no Verse or Blueprint involved. In LF_LightFlicker, LF stands for light function, not low frequency. Each light flickers at its own rhythm based on where it sits in the world, so a row of candles never pulses together. One instance tunes the flicker for candles and another for torches, which flicker faster and dip lower. To learn how to create light effects with materials, see Light Effects.
Distant Lights
Two materials with a low rendering cost simulate distant lighting: a glowing point for faraway lights and a soft light beam that fades as the camera approaches.
Lighting for Each Quality Setting
The template uses two independently optimized lighting setups and switches between them automatically based on the player's Global Illumination Quality setting. To learn how global illumination works in UEFN, see Lighting and Lumen Quick Start Guide.
The switch uses the Lighting Scalability Manager, a UEFN tool you can use in your own islands. Find it in the Content Browser under All > Fortnite > Lighting > Tools. Drag it into the level, then set it up in the Details panel: add the actors to its list, then select the quality levels where each actor appears (Low, Medium, High, Epic, Cinematic).
Actors appear only on the quality levels you select. Click Refresh Scalability to preview the result in the editor.
The template uses a single manager with 25 entries to switch moonlight, sky lighting, fog, and 18 post process volumes based on quality settings.
Low quality settings might not match higher settings visually, so we recommend testing on several platforms. To learn how to preview your island on mobile devices, see Mobile Preview.
| Element | High and above | Low and Medium |
|---|---|---|
Moonlight | Brighter | Dimmer |
Sky light | Updates from the sky in real time | Fixed, with a bluish tint |
Fog | Volumetric | Non-volumetric fog |
Post-processing | Higher-quality bloom | Standard bloom, adjusted exposure |
With separate setups, you can art-direct each quality level on its own. Otherwise, lower settings look like the high-end setup with features missing.
Moonlight
The moon is a directional light with a cold blue color. Its Source Angle is set to 50° instead of the default 0.5°, which makes the moon shadows soft and diffuse. The sky light takes its color from the skydome, so the sky and ambient lighting stay consistent.
Color Grading per Zone
One global post process volume sets the base look for the island. Each zone then blends in its own color grade as you walk into it:
| Zone | Look |
|---|---|
Forest | Cooler, slightly desaturated |
Windmill | Cooler, more desaturated, higher contrast |
Cemetery | Cooler, with darker shadows |
Catacombs | Exposure opens up a lot |
In the catacombs, exposure opens up, so the view adjusts to the dark as the player goes underground. To learn how post process volumes work in UEFN, see Intro to Post-Processing.
Fog Cards
Besides standard height fog, the island uses 44 fog effects with slowly drifting sprites, called fog cards, to create dense, low-lying fog. Each effect keeps about 20 to 30 cards. Low and Medium quality settings use a more efficient unlit version with half the cards.
The Fog Material
The fog material, M_Fog, is lit, so torches light up the fog as players walk through it. Several techniques keep the cards from looking like flat planes:
The edges fade softly where the cards meet walls and the ground.
The cards fade out when the camera gets close and when they are far away.
A moving distortion and some noise break up any visible repetition.
The Sky
A slowly rotating skydome uses a cloud texture that blends into the horizon fog. Real-time sky light capture ensures the island's ambient lighting matches the sky.
Techniques for Your Own Islands
With the full Megascans library free on Fab, you can apply this template's techniques to any scanned asset you import into UEFN:
Give each asset a tiny LF texture for its overall color.
Pack each asset's fine detail, such as cracks, grain, and wear, into one grayscale channel, four assets per texture.
Build new looks with material instances instead of new textures.