Written by GuillaumeTechProject Skyfall

Skyfall, part 3: rounds, rain, torches and a VHS replay

May 2026: Skyfall became a real match with rounds and scores, then got its mood: torch light and shadows, rain, lightning, a CRT filter, and a VHS replay of every round's last seconds.

Skyfall in May 2026: under the rain, an arrow sends a dwarf archer flying toward a torch-lit wall, while the shooter stands on a ledge.

Part 3 of the Skyfall story. In part 2, the dwarf learned to wall-jump, dash and draw a bow. In May, the game around him grew up.

Table of contents

A match, not a sandbox

Until May, nobody won anything. On May 2, rounds arrived: a score per player, a match overlay, a “max points” rule to end the match, and a short timer once someone is ready for the next round. Every arrow kill is credited to the archer who shot it. Between rounds, every player is reset, down to their velocity.

May 3 added player-to-player collisions and dash hits, and a short delay before an arrow stuck in a wall can be picked up. The same day, the player and arena code was split into modules, and the player module was adapted to run on the Nakama server too.

On May 4, I wrote a plan in the README, phase by phase: the next easy steps, map selection and character parts, chests and arrows, accounts and currencies, art, UI and audio, then a list of extras. Phase 1 was marked done on May 8.

Light and weather

Then the plan changed. On May 9, a new phase 2 appeared in the README, “Visual effects”, and it was already marked done: it had taken three days.

  • May 7: a performance overlay with a memory graph, a CRT filter, and spawn points and torches placed directly in the map tiles.
  • May 8: dynamic lighting with real-time shadows, and name tags above the players.
  • May 9: rain, lightning flashes and clouds, in a background layer and a foreground one, moving with the camera and its zoom. A new map came the same day.

On May 10, the next phase started with a map selection screen, fade transitions between scenes and a countdown before each round.

The whole Towerfall arena before a round: torches light the walls in orange, rain falls, clouds drift in front, and a large “2” counts down between the two archers.
May 24, 2026: torches, rain, clouds and the countdown.

The replay

On May 16, every round started ending with a replay. The last seconds rewind fast with a VHS effect, scanlines and colour fringes included, then play back in slow motion, so everyone sees the kill again.

The replay came with a change in how state is shared. One schema file lists the player fields that go over the network, with their rounding and default values; the client and the server both read it, so adding a synced field is one line. The replay works the same way: a list says which fields are recorded each tick and which ones are smoothed during playback.

The replay rewinding: the word REWIND at the top, scanlines and colour fringes over the arena, the dead archer in mid-air near the torch.
REWIND: the VHS effect, before the slow-motion replay.

A name and a face

On May 17, Skyfall got its own look. The title screen finally said SKYFALL, with a tagline: “Arrows fly. Legends fall.” Behind it came an options screen with saved settings, a top bar, a player profile and gamepad shortcuts. The Play screen offered three ways in: Quick Match, Private Lobby and Local Couch.

On May 18, the game spoke English and French.

The May title screen on a moss green background: “Arrows fly. Legends fall.”, SKYFALL, then Play, Trials, Shop, Options and Quit, with the dwarf on the right.
May 24, 2026: the new title screen.

The Play screen, “Take the field”: Quick Match, Private Lobby and Local Couch cards, with a ranked panel underneath.
Three ways in: Quick Match, Private Lobby or Local Couch.

Ready for other players

The last week of May was about letting other people in:

  • A real build pipeline (May 21). The Lua code is amalgamated into one file and minified; on Linux, it’s then compiled to bytecode with the exact LuaJIT that ships with LÖVE 11.5.
  • Public online testing (May 22). The game was configured for a public test server, and empty matches now close themselves after 5 seconds.
  • Bots (May 24). A script connects any number of bots to a match: the first one creates it, the others join with its short code, everyone readies up, then they walk left and right forever.
  • Performance. An in-game profiler, which also runs on the server, and spatial partitioning so collision checks only look at nearby platforms.

By the numbers

  • 102 commits in May, the busiest month since January.
  • About 13,300 lines of Lua on May 24, more than double the 5,700 of May 1.

The Skyfall story

  1. From a Defold cube to a fresh start in LÖVE
  2. Wall jumps, a real bow and a quiet network
  3. Rounds, rain, torches and a VHS replay (this article)
  4. The War Room and the armory
  5. A map editor, a ghost and the Champion Forge