Laying out the shell

How the inside of the world is built from a seed.

Where things stand

  • decidedThe inside of the shell is a dream world. The real machinery, the ear and the hull, stays outside, in the lore and out of play for now.
  • decidedEverything is procedural. Every idea on this page is a rule for the generator, and the same rules check what it makes.
  • decidedTowns stay as simple blocks for now. Later they become a mix of rustic, garden and urban pieces, with walls that suit parkour.
  • decidedRegions differ subtly in their flowers and their townscape.
  • decidedThe layout starts roughly symmetric, with north and south clearly different.
  • builtThe prototype has towns on the frame (twelve sites, plus a hamlet on each face from 1×), hidden panels under the ground, each region's flowers, the painter and the plants, and a Look section in the pause menu for the sky, the band, the panels and the old or new ground.
  • proposedThe shell map, its two grids, and shapes written as a radius for every direction.
  • proposedTwelve sites at the corners of an icosahedron, with the poles at one opposite pair and a band around the middle.
  • decidedThe sky is blue.
  • openWhat the band looks like, and whether worlds change every match or rotate through named seeds.

The shell map

Every layer is drawn on one map, the unit sphere, which works like a globe's latitude and longitude. The world's shape comes in only at the last step, which places each point of the map on the ground, so when the world morphs, everything drawn on the map moves with the ground.

  • Panels, for structure. The panels form a Goldberg tiling of hexagons and exactly twelve pentagons, made by cutting each face of an icosahedron into a triangular grid and taking the dual. The panels are nearly equal in size, no cells crowd together at poles, and the twelve pentagons, about half a hexagon's size, fall where the frame wants its twelve sites. Each panel stores its charge, height, region, building and how much of it shows. With panels about 10 m across, there are 1,442 at 0.65× (frequency 12) and 5,762 at full size (frequency 24).
  • Texels, for detail. A cube map, six square grids that the graphics card reads by direction and blends without seams, holds what is finer than a panel: flower density and colour, grass height, paths and the band. With faces of 1024 × 1024, each texel covers about 15 cm of ground at 0.65×.
Shape
Layers
Panels drawn
642
Ground area
1.00 × sphere
Hexagon size
–
Hexagon stretch
–
Pull, spare unused
22.0 m/s²
Fits the spare
yes
You're looking into the far half of the shell with the near half lifted away, and the dark band is the cut through the hull. Drag to turn it. It's drawn at frequency 8 (642 panels) so the seams stay readable. Lens and Rama are the game's presets at 0.65×, and the waist and the free shape are examples. "Fits the spare" means the shape needs no more than 1.5 times the sphere's ground, so its panels can keep the pull at 22 m/s² (Making gravity, Any shape).

Any shape

A shape is a radius for every direction: from the centre, the ground lies at distance r(u) along each direction u. Lens and Rama are ellipsoids, a waist pinches an ellipsoid at the middle, and a free shape adds soft bulges and dents. Anything written as a signed distance field works too, by stepping out from the centre until you meet the surface. A morph blends two radius functions.

  • One rule: every point of the ground can be seen from the centre. A radius for every direction guarantees it, and the Lantern needs it to light the whole ground. A ring or an overhang would need a different map.
  • On a long shape, the sphere's panels can't keep both their size and their shape. Projected straight out from the centre, they stay round but vary in size: on Rama the hexagons range from 0.5 to 2.2 times the mean. The sphere's tiling has a fixed number of rows and a long shape needs more, so evening out the sizes stretches the hexagons, up to 1.6 times longer than they are wide on Rama and 2.6 times on the waist. On a nearly round shape like the Lens, a setting about halfway keeps both close to even, and on long shapes no setting does.
  • The proper fix is to tile each shape on its own surface. Panels laid out on the real ground at a fixed size give a longer world more rows. A morph then adds and removes panels, which in the story is the spare ground unfolding from the seams, and a new panel takes its values from the shell map. A first test gave rounder hexagons, but about one panel in seven had five or seven sides, so this needs a careful remesher in the engine.
  • The seams take up the extra ground. A shape with more ground has bigger panels, and the spare ground folded inside the hull opens along the seams. Past 1.5 times the sphere's area, the pull drops.
  • The field follows the ground on any shape. The pull depends on your height above the nearest ground and points toward it, and on a general shape the distance field gives both. Each panel's charge then scales the pull above it.

The layers

Ian McHarg read a landscape as a stack of layers. Here every layer is drawn on the same shell map, so any layer can change and the others stay lined up with it.

The generator builds the layers from the bottom up. The analysis on top is computed from all of them and never drawn.
LayerHoldsWhat it can do in play
1ShapeThe form and its panels, with the spare ground folded in the hull.Morphs. A panel tilted to 90° becomes a wall you can walk up, since the pull follows the panel. Panels rising into a ridge or sinking into a ditch.
2FieldEach panel's charge, the falloff height, the events moving through.Heavy and light ground, 16 to 33 m/s². Sweeps, lulls, tides. The ground going light before an event.
3FrameThe poles, the band, the sites and their regions, the opposite pairs.The zone as a set of regions. Gates between opposite sites. The director choosing where.
4ReliefLow hills, knolls, ridges, hollows and sunken edges.Cover from nearby players. Hills you go over or around. Rock that a shape event can raise or flatten.
5Ground coverGrass, flower drifts, field patches, the band, the few trees.The field made visible: grass leaning, petals lifting, the painted wave. Each region's character.
6RoutesPaths between the sites, wider where they arrive.Bots' routes. Crossings, where fights happen. A map you can read overhead.
7PlacesTowns as blocks for now, spires, launch pads and gates.Roofs for cover, high ground, launches, gates, loot.
8SkyHaze, clouds, drifters and the Lantern.Haze that softens long sightlines. Stepping stones and moving cover in the void. Shade under drifters. Time of day.

During a match, the director changes the layers: morphs change the shape, events change the field, the zone moves across the frame, light and weather change the sky, and the ground cover responds to all of them. Every new event idea starts with the question of which layer it moves.

Building a world

The generator builds a world from a seed and a preset in ten steps.

StepUsesGives
1ShapeThe preset and the world's sizeA radius for every direction
2PanelsA frequency from the size, about R ÷ 8The Goldberg tiling, evened out on the shape
3FrameThe tiling turned by the seedNorth and south at an opposite pair of pentagons, ten sites in two rings, the band between them, a region round each site
4FieldThe charge budgetA charge on every panel, 22 m/s² to start
5ReliefNoise shaped by the framePanel heights, flattened under sites and paths, hills placed where routes would cross open ground
6RoutesThe thirty sides of the icosahedronPaths over the panels between neighbouring sites, bent a little, wider where they arrive; crossings marked
7Ground coverEach region's flowers, a slow drift from north to southFlowers, grass and fields in the texels; the band; trees only where they do a job
8PlacesThe sites and an allowance of spires and launchesBlocks on the panels round each site, spires, pads, gates between opposite sites
9SkyThe haze setting and the seedClouds, drifters, shade under them
10ChecksEverything aboveKeep the seed, or throw it away

The checks are the analysis layer. Every site can be reached in three ways: by ground, by launch and through the void. Every open spot that most of the shell can see has cover nearby. Neighbouring sites are close enough to walk between in the time the zone allows. Launch arcs clear the drifters and the Lantern.

With the sites at the corners of an icosahedron, neighbouring sites are 108 m apart along the ground at 0.65× and 221 m apart at full size. The ring sites lie 26.6° north and south of the band, so every route between the two rings crosses the band once, and cover goes at those ten crossings.

Showing and hiding the panels

Like the tiles of any terrain system, the panels carry the layers and stay out of sight unless something uses them. Each panel has a value from 0 to 1 for how much it shows, with a finer mask in the texels.

  • Hidden, the default: grass, flowers, relief, noise and flower drifts all run straight across the seams, so the ground looks like one meadow with no trace of a seam.
  • Disguised: the seams become the meadow's own edges, such as field boundaries, hedgerows and flower borders. The patchwork of fields seen overhead in the art can be groups of panels.
  • Shown: fine seams and a slight bevel, so the panels look built. Panels that tilt, rise or turn over are shown this way.
  • Shown by the director: just before an event, the seams brighten across the panels it will use, then fade once it has passed.

Seeing and cover

Someone who is an angle θ away from you around the shell sees you from θ/2 above your ground, because a chord meets the circle at half the angle of the arc it cuts off. So nearby players look along the ground and are stopped by walls and hedges, and far ones look down from high above and are stopped by roofs and canopy.

Shooting across the world stays part of the game. The haze softens the far side without hiding it: in the Hollow a target 120° away keeps about half its contrast, and one directly opposite keeps about a fifth (the Game page has the numbers). Cover is local: roofs and canopy belong to towns and groves, and most of the meadow is open, so a player crossing it can be seen from the whole far side.

From research on released battle royales and arena maps:

  • About one named place per squad, with two or three unnamed outposts each, spread at an even density, which matters more than the total.
  • Strongholds just off busy junctions, and three ways up to every high place.
  • Keep launches few, loud and in pairs, so nobody arrives at a fight unheard.
  • Surprise is local. The far side is always in view, so mystery comes from what's near: a knoll, a bend in a path, a patch of tall flowers.
  • Give the world a clear north, with distinct poles and landmarks that look different from each side where players choose a direction.

Haze as sky

A blue sky makes the void look like sky and the far side look distant, the way painters show distance by making far things bluer. This depth cue helps players judge distance and keep their bearings.

The blue haze is pale and sits mostly in a core around the Heart, so it shows most across the middle of the far side and blends into the Heart's glow. It is as thick as the warm haze, so targets across the shell are just as visible.

A stronger blue has a cost, because haze can only colour something by hiding it a little. Enough blue haze to colour the whole far side would leave a target 120° away with 29% of its contrast, down from 54%. "Far blue" in the pause menu tries another way: distant things shift toward blue but keep their lightness, so nobody gets harder to see. It's off by default, and at full strength it turns the whole far side sky blue.

The warm haze stays in the pause menu, perhaps as the director's late-day light.

Looking up from the meadow past the Heart through the warm haze: the far side is lime green with a cream glare round the Heart.
Warm
The same view through the pale blue haze: the far side stays green, with a pale blue-white glow round the Heart.
Blue
Looking up past the Heart from the meadow, Hollow at 0.65×.

Painting the shell

The look we are aiming for is the hero picture on Inside the Shell, with painted flowers at your feet, brush strokes in the middle distance and a painted map of fields overhead. In a hollow world most of the screen shows far-away ground, with no horizon to hide it, so the ground is painted once into maps that are cheap to read, and real plants grow only in a small ring around you.

  1. The painter. When a world is built, one shader paints the shell map into two cube maps: a ground map with the grass swathes, the band and where plants may grow, and a flower map with where flowers grow and what kind. A morph needs no new painting, because the maps are stored by direction.
  2. The ground. For each pixel, the ground shader reads both maps, adds a little grain and faint brush strokes along the wind, and then adds the light and the haze.
  3. The plants. Grass blades grow within 14 m of you and flowers within 22 m, made on the graphics card from a grid on the cube's faces. Each plant's position comes from its grid cell, so plants stay in place as you move and the CPU stores nothing for them. Blades take the ground map's colour, so at the edge of their ring they blend into the ground.
  4. The flowers grow in clumps, a metre or two across, one kind to a clump: the region's own, white daisies or small yellow ones. Clumps are more common and bigger in the drifts. Beyond the flower ring, the ground shader paints the same clumps as dabs of colour, so the drifts are still visible from far away.

The Heart sits at the centre and never moves, so the light on every spot never changes and the shadows of trees and buildings fall straight beneath them. Those shadows can be painted in once, and only moving things need a shadow drawn every frame.

A southern meadow at eye level before: flat lime ground with a few coral flower dots, a town and rocks floating beyond.
Live ground, no plants
The same view after: grass blades with small clumps of white daisies and coral flowers, and drifts of colour in the distance.
Painted ground and plants
A southern meadow at eye level, Hollow at 0.65×.
ShaderRunsReadsDraws
PainterOnce per world, and on events that change the groundFrame, relief, ground cover, routes, placesThe ground map and the flower map
GroundEvery frameBoth maps, shape (panels), field, skyThe meadow
Grass and flowersEvery frame, near youShape, both maps, fieldPlants at your feet
Trees and buildingsEvery framePlaces, ground coverSoft-shaded blobs and blocks, flat stand-ins far away
SkyEvery frameSkyThe haze (inside every shader), clouds, the Heart's glow

The wind, how far the grass leans and which way the strokes run all come from the gravity field, so a heavy patch can flatten the grass and a sweep can swirl the strokes like the vortex in the picture, at almost no cost.

The research behind this is on The look. Things to avoid:

  • Full-screen painterly filters, the Kuwahara kind. They cost dozens of samples per pixel and smear small, far-off players into blobs, which hurts the shooting.
  • Grass geometry past about 20 m, where a blade is thinner than a pixel and brush strokes look the same.
  • Blended transparency on plants. Cut-outs with alpha-to-coverage need no sorting.

Next

  1. Measure the painter and the plants on real hardware with the pause menu's frame readout, against the live ground.
  2. Choose a band from the takes in the pause menu.
  3. More for the painter: fields, paths and flower beds, trees with their shadows painted in, flat clouds (in order on The look).
  4. Pole landmarks, so north and south differ at a glance.
  5. Routes: paths between neighbouring towns, crossing the band.
  6. Relief: knolls and hollows, flattened under towns and paths.
  7. A remesher, so long shapes keep round panels.
  8. Then the field as play: heavy and light patches, and a panel that tilts into a wall you can walk.

References

Tiling a sphere

  • Goldberg, M. (1937). A class of multi-symmetric polyhedra. Tohoku Math. J. 43, 104–108.
  • Caspar, D. L. D. and Klug, A. (1962). Physical principles in the construction of regular viruses. Cold Spring Harb. Symp. Quant. Biol. 27, 1–24. Why a sphere of hexagons needs exactly twelve pentagons.
  • Wales, D. J. et al. (2006). Structure and dynamics of spherical crystals characterized for the Thomson problem. Phys. Rev. B 74, 212101. PDF
  • Uber Technologies. H3, a hexagonal hierarchical index on an icosahedron. h3geo.org
  • Górski, K. M. et al. (2005). HEALPix: a framework for high-resolution discretization and fast analysis of data distributed on the sphere. Astrophys. J. 622, 759. arXiv:astro-ph/0409513 An equal-area alternative for the data grid.
  • Quilez, I. Distance functions. iquilezles.org

Landscape and level design

  • McHarg, I. (1969). Design with Nature. Natural History Press.
  • Lynch, K. (1960). The Image of the City. MIT Press.
  • Christaller, W. (1933). Die zentralen Orte in Süddeutschland. Summary
  • Martin, P. (2014). Visibility and accessibility in Splinter Cell levels. Entertainment Computing 5(1). Repository
  • Vinson, N. G. (1999). Design guidelines for landmarks to support navigation in virtual environments. CHI '99. arXiv:cs/0304001
  • Respawn. Kings Canyon and Olympus map updates. Kings Canyon, Olympus
  • Epic Games (2018). Fortnite map update deep dive. fortnite.com
  • Landscape research notes, with all sources for this page. with.md