Field events

The world can change its own gravity for a few seconds at a time. A director, the Keeper (see Story), picks the moment. The first candidate is a sweep: a band of push that sweeps through the sphere and carries whatever it passes along with it. Every number here comes from the game's own gravity in the 0.65× Hollow.

The sweep, in a slice through the centre
0.0 s
Crosses the world in
Kick to anything still
Thrown ahead if moving with it faster than
The surfer leaves at
A crossing lands off by
A skyshell lands off by
Weight on the wall it starts from · heads for
BodiesSkyshellSame flight with no wave

The band enters on the left and leaves on the right. A player jumps off a spire deck at the bottom, a surfer drifts through the upper void, and a skyshell goes up from the lower left. The crossing and the skyshell are timed to meet the wave at their worst moment.

Reading the sketch

Three frames of one event. A band filled with arrows enters the sphere from one side, crosses it and leaves from the other. Inside the band everything is pushed the way the band travels. Things it passes get a shove, and a shot that crosses it bends. Behind it, the field goes back to normal.

In the game this is one extra term added to gravity: a push of strength A along a fixed direction, felt only inside a band w metres wide whose centre moves at speed c. The push fades smoothly to nothing at both edges of the band, so nobody feels a hard step.

push = A · cos²(π · x / w), along the band's direction x is the distance from the band's centre; zero outside the band the band's centre moves at c m/s from outside one wall to outside the other

What it does on the ground, in the void and to shots

The same push means very different things in different places, because skin gravity is 22 m/s² at the ground and nearly zero in the middle.

  • On the ground it is mild. Ground friction already stops a standing player from sliding, so the sideways part of the push does little. The part that points into or out of the ground changes your weight instead. On the wall the band starts from, the push lifts you: at 6 m/s² you weigh 16 instead of 22 and jumps go 1.4× as high. On the wall it is heading for, you weigh 28.
  • In the void it is strong. Nothing else is pulling there, so the push is the whole story. Anything floating still gets a kick of a few metres per second. A player halfway across can land tens of metres from where they aimed. They can still fight it: void swimming gives 9 m/s², more than the push.
  • Slow shots bend, fast ones barely. A skyshell (30 m/s) that meets the band can land 10–20 m off. A Skylance round (85 m/s) moves 2–4 m, because it is through the band in a fraction of a second.

Measured for four versions of the wave. Worst cases sweep the launch time across the whole event and keep the largest miss.

VersionPush · width · speedCrosses inKick when stillThrown ahead aboveCrossing off bySkyshell off bySkylance off byWeight, start wall · far wall

The wave is a moving hill

Seen from the band itself, the push is a hill standing still: it slows anything moving backwards through it. Something that meets the band slowly either climbs over the hill, which leaves it with a small kick forwards, or rolls back down the front, which throws it ahead at about twice the band's speed minus its own. That second case is a gravity slingshot, the way a spacecraft gains speed from a moving planet: a field that moves can add energy, and one that stands still, like the Heart, can only turn things.

kick to something still Δv = c − √(c² − A·w) about A·w / 2c when small thrown ahead if moving at v > c − √(A·w) and it leaves at about 2c − v most it can ever add 2 · √(A·w)

Two numbers set the feel. A·w is the height of the hill: it decides the most a surfer can gain. c decides who gets thrown. If c is well above √(A·w), people standing still or drifting slowly only get a small kick, and only someone already moving with the wave, a surfer, gets carried. That gives a skill to learn without punishing anyone who simply happens to be in the way.

The real flights in the figure don't match these formulas exactly. Skin gravity and the Heart keep acting during the event, and the formulas leave both out.

Keeping it graceful

  • Never move the camera. In the game a body's "up" follows gravity, so a wave added to gravity would tilt the view by 15° on the ground and swing it around in the void. The wave has to be added to velocity after "up" is worked out, so it changes where you go but not which way is down.
  • Always beatable. Keep the push below the void's swimming thrust (9 m/s²), so anyone in the air can hold their line if they spend their movement on it.
  • Nobody gets thrown by accident. Keep c at least 10 m/s faster than √(A·w). Then only a body already moving with the wave at more than 10 m/s gets thrown ahead.
  • No damage. The wave only moves things. The sphere is closed, so nobody can be pushed off the map. The worst case is landing somewhere else, at landing speeds that cause no damage anyway.
  • Previews include it. The fall arc, the skyshell dots and the Skylance path all step through the same field, so they would show the wave's bend before you commit. The event is a fixed function of time, so the previews stay exact.
  • Rare and announced. One event at a time, one or two a match, with 8–10 seconds of warning.

Seeing it coming

A concave world has an advantage here: you can see the whole sky, so a wave crossing the world is visible from everywhere, like weather coming over the hills.

  • The band itself: a faint sheet across the sky with streaks flowing in its direction, like the arrows in the sketch. The void line's grid ripples where it passes.
  • Things it carries: dust and loose particles in the void get swept along, and trees and lift beams lean as it goes over.
  • Your own body: while you are inside it, a small arrow at the crosshair shows the push, and your fall arc visibly slides.
  • The map: a band moving across the round map, with seconds until it reaches you.
  • The director's voice: one line when it starts, such as "The shell exhales from the Antipode." The story can supply the words later.
  • Sound: a low rumble that rises as the band gets close and drops in pitch as it passes.

More events from the same idea

Each of these is one more term in the field, defined by a few numbers and the time it started.

EventWhat happensWhat you noticeRiskBuild costVerdict
SweepA band crosses the world, pushing the way it travels.Crossings and skyshells drift, surfers ride it, the wall it starts from gets lighter.Low, if the rules above hold.One field term, one effect mesh, one HUD line.first
HeartbeatA shell of push races out from the Heart to the ground, or in from the ground to the Heart.A ring sweeping the whole sky at once. Outward clears the void; inward makes everyone light for a moment as it passes the ground.Low. It is short and the same for everyone.Low: the same as the sweep with a radius in place of a plane.second
TideGravity depth breathes over 20–30 s, so the void line rises and sinks.The void line grid moving; spire decks getting heavier or lighter; crossings easier or harder.Very low. It is slow.Very low: the Gravity depth dial already exists.cheap test
FlareThe Heart's well grows to three times its reach for 20 s.A corona around the Heart; crossings and shots near the centre whip around it.Low, local to the centre.Very low: one multiplier.cheap test
LullA ring along the ground where skin gravity drops to a fifth travels from one pole to the other.A ripple across the ground; people and loose things float up a few metres as it passes.Medium. Losing your footing mid-fight can feel unfair.Medium.later
SpinA swirl around an axis through the centre; everything in the void drifts around it.Long curved crossings, and debris circling.Medium. It can disorient.Low.maybe

Building it

  • One function per event. Each event is a fixed function of position and time, defined by a handful of numbers: kind, start time, direction, strength, width and speed. A server sends those numbers once, and every client and the server compute the same field from them, so the event costs no bandwidth while it runs.
  • Where it plugs in. In the body step, add the push to velocity after "up" is set. In the projectile step, add it to rounds, skyshells and their previews. Previews then need the absolute time of each step, not only the step count, which is a small change to the solver.
  • Bots. They share the body step, so the wave pushes them too. Their brains would learn to avoid launching into it, and later to surf it.
  • The director. At first, a pause-menu button and a timer that fires one sweep per match from a random direction. Later it could aim: toward the safe zone, or across the busiest part of the sky to break a stalemate.
  • Tests. Reuse the existing tools to check four things: crossings and skyshells in the real game land where this page predicts, the camera never rolls during an event, previews still match flights to the metre, and bots don't get stuck.

Next

Build the sweep first, with the "Start here" values: a 6 m/s² push, 30 m wide, moving at 24 m/s. It crosses the 0.65× world in about 9 seconds. Anything still gets a kick of about 4 m/s, and only someone moving with it faster than about 11 m/s gets thrown ahead. Ship it with dials for the three numbers and a button to trigger it, play it, and then decide on the Heartbeat. This would be the first build after 0.1 "Shell".

Open questions:

  • Should a wave also push people standing on the ground, like wind, or only change their weight as it does now?
  • Should the director aim waves, at the safe zone or at crowds, or pick directions at random?
  • Should the Skylance stay almost immune, as the physics gives, or should events bend it on purpose?

How the band looks is settled: whatever runs the holograms paints it on purpose, with refraction and colour fringes that follow the real push. The details are on Inside the Shell.