
‹ ›ClassicRemasteredDeath Island's beach, remastered
The classic maps came to Halo Campaign Evolved looking like Halo CE, and lighting them with Unreal Engine kept them that way: the same surfaces, the same colours, real light. This update goes further on nine of them and on Yoyorast Island. Their ground, rock, grass, trees and water are now drawn the way Campaign Evolved draws its own levels. The layout and every weapon, vehicle and flag spawn stay exactly where Halo CE put them. The new rocks and tree trunks are solid where they stand, as Halo CE's boulders and trees were.
The ten are Blood Gulch, Death Island, Ice Fields, Sidewinder, Timberland, Infinity, Gephyrophobia, Battle Creek and Rat Race, plus the Custom Edition community's Yoyorast Island.
Every comparison below is the current hub version of a map (left) against the remastered one (right), from the same camera. Drag the divider to compare.
What changed
- Real terrain. The ground under each outdoor map is rebuilt as an Unreal Engine landscape from Halo CE's own heights. Sand turns to earth and gravel inland, banks go green as they steepen, and the beaches get ripples you can see from eye level.
- Grass that grows. Several kinds of grass, weeds and tufts, at different heights, on the ground Halo CE painted green, moving in the wind. Pebbles and driftwood scatter where it painted sand. Nothing grows under a roof, where it would only stand in the dark.
- Campaign Evolved's rock and trees. Cliffs are drawn in the game's own layered rock with real depth, instead of one tiled texture, and the campaign's cliff stones are set into the walls. Halo CE's boulders and trees become the campaign's own, sized to match.
- Water that moves. Death Island and Yoyorast sit in a real ocean that swells and breaks on the sand, over a sea floor that falls away from the shore. Timberland's and Battle Creek's streams are now rivers that run along their beds and over their falls.
- Tracks in the sand. Drive a Warthog across a beach and it leaves tyre tracks, as the campaign's own beaches do. Footprints follow you too.
- Halo CE's lamps, lit by Unreal. The light fixtures Halo CE placed now cast real light and shadow.
- Snow. Ice Fields, Sidewinder and Gephyrophobia get snow-covered ground and rock, and Ice Fields and Sidewinder get falling snow.
- Metal. The metal the bases share has the game's Forerunner finish: fine scratches and wear that catch the light, without changing Halo CE's colours.
- Life. Birds over the cliffs, gulls along the shore, falling leaves and wind.
Blood Gulch
The canyon walls are the campaign's desert rock, the paths are packed earth, and grass covers the valley floor. Halo CE's boulders and trees are the campaign's own.

‹ ›ClassicRemasteredBlood Gulch from the cliff top

‹ ›ClassicRemasteredBlood Gulch's red base

‹ ›ClassicRemasteredThe valley path

‹ ›ClassicRemasteredA boulder by the blue base
Death Island
Sand beaches with ripples and pebbles, a real ocean with surf, grass on the banks and layered cliffs. The island's trees have full canopies, and its twenty light fixtures light the bases.

‹ ›ClassicRemasteredDeath Island from above the bay

‹ ›ClassicRemasteredThe beach at eye level

‹ ›ClassicRemasteredThe shore

‹ ›ClassicRemasteredA cliff over the beach
Yoyorast Island
The Custom Edition community map gets the same ocean as Death Island. The sea floor rises into shallows around the pillars standing in the water, so the waves feel them and break around them. Sand rings its islets and grass climbs its terraces.

‹ ›ClassicRemasteredYoyorast from the bay

‹ ›ClassicRemasteredThe islet's beach, across the channel

‹ ›ClassicRemasteredGrass against the cliff

‹ ›ClassicRemasteredThe islet
Ice Fields
Snow on the ground and on the rock, glacial stone in the walls and snow falling across the bridge.

‹ ›ClassicRemasteredThe bridge

‹ ›ClassicRemasteredThe tunnel gate

‹ ›ClassicRemasteredThe snow field below
Sidewinder
The frozen canyon under the ring: snow-covered ground, frozen pools, and rock and trees in the campaign's winter look.

‹ ›ClassicRemasteredUnder the ring

‹ ›ClassicRemasteredBy the glacier wall

‹ ›ClassicRemasteredThe rock ridge
Timberland
A forest floor of grass and weeds, and a river that finally runs: from the falls down the whole valley.

‹ ›ClassicRemasteredThe river

‹ ›ClassicRemasteredThe valley

‹ ›ClassicRemasteredThrough the trees

‹ ›ClassicRemasteredA lone pine
Infinity
The huge open map gets real terrain and grass from end to end, and land and haze out to the horizon. In Halo CE, Infinity's rim ended in a black band under the sky.

‹ ›ClassicRemasteredOut to the horizon, from above the blue base

‹ ›ClassicRemasteredA canyon path under the bridges

‹ ›ClassicRemasteredGrass along the canyon floor
Gephyrophobia
The canyon is the campaign's glacial rock under snow. Halo CE drew the fog in the chasm below the bridge as a flat sheet, so the rock stopped dead at a hard line. Now it is real height fog, and the walls fade into it.

‹ ›ClassicRemasteredThe bridge

‹ ›ClassicRemasteredThe cliff fading into the chasm's fog

‹ ›ClassicRemasteredThe red end of the bridge
Battle Creek
The creek is real water now. It runs the length of the canyon in its bed, under the overhangs and into the pools at either end. The walls are the campaign's rock and the banks are grass.

‹ ›ClassicRemasteredThe creek at water level

‹ ›ClassicRemasteredThe creek under the overhangs
Rat Race
Rat Race has no outdoor ground, so it gets no landscape or grass. Its tunnels are cut through the same rock as Battle Creek's cliffs, and that rock is now the game's own, with real depth, lit by Halo CE's own light as the original was.

‹ ›ClassicRemasteredA tunnel through the rock

‹ ›ClassicRemasteredThe cave room beside it
How it was made
None of this is placed by hand. Each map goes through one pipeline, from the converted Halo CE map to a finished map pack, and running it again after a change rebuilds the map exactly. A map's entry in one config file says which of its shaders are ground and which are cliffs, where its rivers run and what its sea does. Everything below is driven from there.
From triangles to a heightmap
Halo CE has no terrain system. Blood Gulch's ground is a few thousand triangles in the same mesh as its bases and cliffs, painted with blended textures and Bungie's baked light. Campaign Evolved's beaches are Unreal Engine landscapes: a grid of heights that gets grass, footprints, tyre tracks and the game's own ground materials.
So the first step samples Halo CE's ground onto a regular grid, one height every metre over Blood Gulch, and writes it out as a 16-bit heightmap. Where two layers of ground overlap, such as a plateau whose lip overhangs the cliff below, the grid takes the lower one. Wherever the grid can't follow the shape (cliffs, overhangs, bases, steps of more than two metres between neighbouring samples), the landscape is cut away and Halo CE's own mesh draws that spot instead. In the picture below the dark areas are cut away, and you can still see Bungie's triangles in the shading.
Blood Gulch's heightmap
The landscape's material is Campaign Evolved's own: Megascans sand, earth, gravel and grass, blended by what Halo CE painted at each point and by the slope. It also reads a top-down bake of Halo CE's light, so the shadows of the cliffs and bases fall exactly where they did in 2001.
Procedural grass, pebbles and wall rock
The grass, weeds, pebbles, driftwood and the rocks set into the cliffs are placed by a procedural generator we wrote for this, which runs when the map is built. Its rules come from Campaign Evolved itself: we read the B30 beach's placements straight out of the game's World Partition cells and copied its densities, sizes and heights above the sea.
For each rule, the generator:
- Asks Halo CE what the ground is. Halo CE's ground shaders blend two detail textures, such as sand and grass, by the base texture's alpha. The generator works that blend out at every point, so it knows how much grass and how much sand is there. Grass grows where Halo CE drew grass, pebbles lie where it drew sand, and tufts line the edge between them.
- Clusters it. A smooth noise field decides where clumps gather and where the ground stays bare, so the grass grows in patches rather than as an even carpet.
- Throws out what doesn't fit. Points on slopes too steep for the rule are dropped, and so are points under a roof, so nothing grows in a tunnel. Nothing tall goes where players walk. Halo CE's simulation knows only Halo CE's collision, so a knee-high rock would be something to walk through.
- Seeds everything. Every point is random but seeded, so every PC places the same blade of grass in the same spot. Your opponent sees the tuft you are hiding behind.
The rocks in the cliffs work the other way round. The generator walks the cliff faces, picks spots where a rock would sit against the wall, and lights each rock with the Halo CE light on the wall behind it, so a rock in shade stays in shade.
The result is one file of instances that the level loader spawns as instanced meshes when the map loads: almost 300,000 on Blood Gulch alone.
Blood Gulch's procedural scatter
Halo CE's own boulders and trees are swapped rather than scattered. Each tree is rebuilt from a real tree in B30's cells, with its trunk and canopy pieces kept in the same arrangement, and each boulder is sized to the Halo CE model it replaces. Their collision is merged into the map's own, so they are solid in game.
Rock with real depth
The cliffs use a material of our own built on the game's rock. It projects the campaign's jagged Megascans rock from three directions, so it never stretches the way Halo CE's 1024 x 256 cliff strip did over a twenty-metre wall. Halo CE's own colours come through as banding, and its baked light works as occlusion, so the clefts stay dark.
The cliff walls are then rebuilt as a Nanite mesh and tessellated, so the rock's height map pushes the surface in and out for real. Halo CE's map geometry splits every vertex where two faces meet, and moving those apart would open a crack along every edge, so all the vertices at one point are welded to a single normal first. The displacement fades out toward the edges where a wall meets the ground. Rat Race's tunnels are lit by Halo CE's lightmap instead, since no sun reaches them.
Simulated water
The ocean and rivers are Fluid Flux, the shallow-water simulation Campaign Evolved uses for its own rivers and beaches, running live in the map.
- The ocean. The landscape's floor shelves away from the shore under the sea, so the waves have something to break on, and an apron of shallows around the structures standing in the water lets the waves feel them. Splashes run along the waterline. A mask keeps the sea and its fog out of the tunnels that dip below sea level.
- Rivers. The simulation sees the ground from above, so under an overhang it would take the rock's top for the river bed. Each river gets a bed of its own that only the simulation sees: the lowest surface at every point inside the river's banks, and walls it can't climb outside them.
Death Island's heightmap shows the new sea floor: the blue around the island is ground Halo CE never had, shelving down from the beach so the surf has somewhere to break.
Death Island's heightmap, with its new sea floor
Halo CE's lamps, in Unreal
Halo CE placed its light fixtures in the map data. Each one becomes an Unreal point light in the same place, with the same colour and strength, stepped a little out of its fixture so the fixture doesn't shade its own lamp. Halo CE's walls are one-sided, and the sun leaked through every inside corner. So a copy of every wall, set slightly behind it, casts the shadows.
Help make it better
All of this is open source, and every piece is a file you can read and change. If you want to help, start here:
| What | Where |
|---|---|
| The pipeline: one command per map | tools/level/upgrade_ce_map.py |
| Each map's settings | tools/level/ce_upgrade_maps.json |
| Heightmaps, holes and bakes | tools/level/build_landscape.py |
| Procedural grass, pebbles and wall rock | tools/level/scatter_foliage.py |
| Trees and boulders swapped for the campaign's | tools/level/scenery_swap.py |
| Their collision | tools/level/b30_collision.py |
| Tessellated cliffs | tools/level/cliff_mesh.py |
| The sea floor and the wading line | tools/level/sea_zone.py |
| The materials: ground, rock, metal | unreal/MJOLNIRMaterials/Scripts/build_ce_materials.py |
| The landscape world | unreal/MJOLNIRMaterials/Scripts/build_ce_landscape.py |
| Everything at runtime: grass, rock, water, footprints, lights | mods/MJOLNIRLevelLoader/Scripts/main.lua |
| The map packs | tools/level/pack_remastered.py |
Each script opens with a description of what it does, and most decisions in the code carry a comment saying what went wrong without them. Some good first projects: another map through the pipeline (Danger Canyon has outdoor ground), new scatter rules for a biome, or better placement for the rocks on steep walls. Open an issue or a pull request on GitHub, or find us on Discord.
Getting it
The remastered maps arrive as an ordinary update to each map. Update the launcher first, then update the ten maps in it. The remastered maps carry their grass and decal files beside the level, and they need CE runtime pack 1.8.0, which the updated launcher installs for you. Maps downloaded in game update the same way.
The other ten classic maps are unchanged. They are mostly indoor or built maps, with little ground or rock to remaster.