Changelog
What changed, and when. Newest first. Bugs are described as
what they actually were, not as "various improvements and optimisations".
6 September 2026
白书 — online play, and six notes from the artist
- Online play was broken after about four seconds, and the way
it broke was the worst one. Remote inputs live in a ring of 256
slots, and the flag saying whether a slot held a real input was never
cleared as the ring came round again. Past that point every slot looked
already known: a frame that had been guessed at was treated as confirmed,
so the correction arrived and nothing was rewound, and the guess itself
quietly became the input from 256 frames earlier. Both machines then ran
on inputs the other had never sent, neither corrected, and each watched
itself win. Slots now carry the frame number they belong to.
- The desync warning was going off constantly because it compared a
hash of the newest frame, which is nearly always a guess and gets
re-simulated the moment the truth lands. It compares the newest frame
both machines have settled now — and still fires when something is
genuinely wrong.
- Killing with an ultimate cost nothing. A knockout
filled the winner's meter, which was decoration while meters reset each
round and became a free ultimate the moment they started carrying
over.
- The fish's undertow hit you while it was under the paper.
Its box was open for all ninety frames of the dive, so you were cut by
something invisible and the drawing caught up later. The dive is the
wind-up now; the damage lands as it comes back out.
- Its roll is its own run gone to a blur, trailing afterimages, instead
of the teleport arc it had been borrowing.
- The sprites are cut again. The pigeon's guard pose
was a hollow outline — a pen line photographed off paper is not
watertight, and one pale pixel lets the background pour into the body.
And the FlipaClip badge was being removed by filling the whole corner
with paper, sixteen times the area it occupies, taking anything drawn
there with it. The badge cannot be picked out by colour, being the same
ink as the characters, but it is the one thing on screen that never
moves — so it is now found by comparing several clips and keeping only
what is dark in every frame of all of them.
6 September 2026
白书 — something to do other than swing back
- A guard you hold. It is free, it is always there,
and it takes a fifth of the damage — and none of the burning, freezing,
slowing or knocking down a move might also have carried. The price is
that you cannot move behind it, cannot attack from it, lose six frames
when you let go, and get your mana back at half rate while it is up.
- It does not stop everything, on purpose. A throw
goes straight through it — the fish's tongue always was one and now says
so — and an ultimate breaks it for the whole amount. Those two are what
the roll is for.
- A roll. Ten mana, three units of ground, fourteen
frames of which the first seven cannot be touched and the last seven very
much can, then four frames before you can roll again.
- And a parry, which is the interesting one. Raise the
guard in the last three frames before a hit and nothing lands at all: no
damage, no shove, no block stun, five mana back, and the one who swung is
bounced off and stunned for ten frames while you have eight to answer in.
It works on an ultimate, which is the only thing in the game that
does.
- The parry was specified as a white flash and a white ring. On a sheet
of white paper a white ring is nothing at all, so the ring is drawn in ink
with a white core and it is the ink that carries it; the flash stayed, and
earns its keep on the new photographic stage. The ding is
the first sound this game has ever made — synthesised rather than played,
because there was no audio in the project to play.
- Two new keys. They could not be Shift and Space as suggested: two
people share this keyboard and both Shift keys report as the same key, so
one player's guard would have been the other's. Guard and roll sit beside
each player's own hand and can be rebound like everything else. A binding
you saved before today keeps working — the two new actions fall back to
their defaults rather than to nothing.
- 鱼夜杀人狂 is drawn. Every move it has, apart from the
rising cut, which was never drawn and borrows the teleport's arc. It is
the only fighter drawn in colour, and it is staying that way: flattened to
ink like the other two, its head turned to grey mud. The pigeon and the
pot also stop borrowing a pose for being hit, and the pigeon has a drawn
knockdown at last.
- Two more sheets of paper to fight on — a blank page
and a photograph — picked per match from the same seed both machines in an
online game already agree on, so nobody has to send it. Both arrived dark
and both are washed most of the way out towards paper: every fighter here
is drawn in black ink and the interface is dark text, and on the untouched
pictures neither could be seen.
- Ten buttons no longer fit in the one byte an online input used to be,
so an input is two bytes now.
- Checked the same way as last time and then some: every number above
against the document it came from, every drawing of every character driven
across the whole length of its move and checked against the file on disk,
and four hundred frames of four match-ups played twice and then again
rewinding seven frames out of every thirteen — with guard and roll pressed
on purpose — every frame identical both ways.
6 September 2026
白书 — everyone comes back down to the ground
- Jump heights are roughly halved, for all four. Four
body heights put the pigeon's head near the top of the screen, and that
made the floor optional: any exchange you did not fancy could be answered
by leaving, and the size of the stage stopped meaning anything. At about
two body heights a jump is a commitment again. There are still two of
them.
- The pot is properly heavy now — slowest on the ground
and lowest off it, by a clear margin rather than by a hair.
- The dog's arc of piss is a stream you hold down. It
was one shot for 55. Hold the key and it keeps arcing until you let go,
run dry, or somebody hits you. Each drop is worth a fraction of the old
shot, because at eight drops a second the old number would have emptied a
health bar in three of them, and it bills by the drop rather than up
front, so a tap is cheap and leaning on it is not.
- Mana refills at three a second rather than five. At
the old rate a skill paid for itself while you walked back into range,
which made the bar decoration.
- The ultimate meter now survives the end of a round.
What you save in the first game of a best-of-three is still there in the
second. Resetting it made the last thirty seconds of a round the only time
it was worth spending anything, because whatever was left evaporated.
- Online, holding a button did nothing. Your fighter
took a single step per press and stopped dead. The keyboard and the
netcode's input buffer were the same store: every frame, the buffered
value was written back over the live keyboard state, and a key you are
already holding sends no second press to restore it. So the button read
as released one frame after you pressed it, for as long as you held it.
The two are separate stores now, which is what they should have been.
- If the matchmaker put you second, none of your keys worked.
The game read whichever side you had been given, so a player handed the
second slot had to move to the arrow keys without being told. You now
always play on your own bindings, whichever side you are, and the bar at
the bottom says which side that is.
- An ultimate refilled the meter it had just spent.
Every hit builds meter, and nothing said an ultimate's own hits should
not: the dog's twenty licks at five apiece handed back a full bar, so the
correct way to play it was to never stop. Throwing one now builds nothing
for you. Being on the receiving end still builds yours — that is the
comeback, and it stays.
- The fish settles its ultimate in one stroke. Ten cuts
used to come off the health bar as ten separate deductions, which read as
a bar flickering under a strobe. They are counted as they land and taken
together at the end, along with the knockdown. Same total.
- The pot's ultimate cooks for longer. The boil is the
reason to pick the move and it was over before the drawing had gone round
once; it now runs about four times through. The damage is unchanged — the
interval between ticks was stretched to match, so a longer hold is not
also a bigger one.
- Every ultimate gets a close-up. The camera pushes in
on whoever threw it, holds while it plays, waits a beat after it finishes
and eases back out. It is a camera and nothing else: it never touches the
fight, and online it is left out of the rewind entirely, because where the
lens is pointing cannot be allowed to change who wins.
- Checked with a script that plays the same match twice and compares the
world frame by frame, then plays it again rewinding seven frames out of
every thirteen: four match-ups, four hundred frames, twenty-nine rewinds
each, every frame identical. That is the test that says two machines will
see the same fight.
5 September 2026
白书 — online play
- Two ways to find someone: random, against whoever is
waiting, or a four-letter room code you send to a friend.
No account, nothing installed.
- It uses rollback netcode — the same approach fighting
games use, and for the same reason. It never waits for the other machine:
your fighter moves on the frame you press the button, and the game corrects
the other player's position when their input actually arrives. You feel
your own inputs land instantly.
- The two computers connect directly where the network allows it. Where
it does not — school wifi frequently does not — the inputs go through our
server instead. The corner of the screen says which you got and the delay.
- Getting there meant making the fight reproducible to the last decimal
on two different machines. Two things were in the way: the pot's random
food, and the explosion radius test, which used a function browsers are not
required to answer identically — a blast that landed on one screen and
missed on the other would have split the match in two.
- Tested between two real browsers over the live server: every sampled
frame identical on both sides after more than a hundred rollbacks between
them.
4 September 2026
白书 FIGHT WHITE TO DIE — a fourth game
- A two-player fighting game drawn in pencil on white paper, which is
where the name came from. Four fighters, best of three, ninety-nine seconds
a round. How it plays.
- It needs a keyboard and a second person. Both players
share one board, there is no computer opponent, and a phone cannot run it.
It says so on the title screen rather than after you have picked a fighter.
- Every number in it — health, mana, each move's damage, startup and
recovery — comes from a written design table, and every move was measured
against a practice dummy to confirm it lands on the number it was given.
- Mana is a real resource: five a second, and not until two seconds after
you last spent any. Being thrown into the wall costs fifty health; walking
into it costs nothing, which took some care to keep true.
- Five bugs found while getting it ready, four of them older than the
rework. The game had no clock — every duration was a count
of animation frames, so on a 144Hz laptop the whole thing ran at two and a
half times speed and two people on different screens were not playing the
same game. Keys stayed stuck down if you switched tabs mid-dash. On any
window narrower than 960 pixels the entire stage sat pushed to the right
with P2's health bar off the edge of the screen. The page had no viewport
tag, so a phone laid it out at desktop width. And multiplying every damage
number by ten pinned the impact freeze at its ceiling, so a jab shook the
screen as hard as a super.
4 September 2026
Gull Force One — a hunt for the bugs nobody reports
- Your high score could stop recording, permanently. If
the save file ever held the wrong kind of value in that one field, every
later comparison against it quietly failed, so no score ever beat it again
— and nothing on screen said so. Every saved number is now checked before
anything reads it.
- Fixed a save holding a bird that does not exist. It slipped past the
check because an unknown name fell back to the first bird, so the flock
screen showed nobody flying and no bird trait applied.
- One key could end up doing two jobs, for good. Bind
Climb to Space and Drop It — whose only key was Space — was handed it
straight back, so one key flew and fired at once, saved, and stayed that
way. Defaults now only return for keys nothing else is using, and an
action left with nothing says so on its own row.
- On a 320-pixel-wide phone the key screen ran off the bottom of the
screen: the last rows were not clipped, they were drawn outside it. If
that was your phone, you could not rebind Pause at all. Rows give up
height before they give up existing.
- Screen titles were drawn straight through the back button on short
screens, long hints ran off both edges, and a bird's description could
spill out of its card and across the one beside it.
- Escape now leaves the loadout screen, which was the one screen it
did not.
- Checked and found clean: 20,000 frames without a single fault, a full
fleet at 0.36ms a frame with no drift, shop prices, and every tap target
on every screen.
4 September 2026
Gull Force One — the charge, and the language it comes in
- The red bar is gone. Everyone said the same thing
about it and everyone was right: while charging you are watching the bird,
so a readout up in the corner is one nobody reads, and red read as damage.
It is a ring around the bird now — pale blue as it fills, gold with a halo
when it is ready.
- The bar had also been drawing backwards, which is why some weapons
looked like they could not charge at all. They all could.
- English and Chinese no longer leak into each other.
Forty-six lines still came out in English while the game was set to
Chinese, not because the translations were missing but because those
places forgot to ask for them. Asking is no longer optional — text is
translated on its way to the screen, so no future line can forget.
4 September 2026
Gull Force One — six things a player reported
- The Throne never did anything. It is the fastest
weapon in the game, and nothing ever actually put it in your hands — so
all you got was a shell that soaked two hits. Riding one now arms it and
getting off gives back what you were holding. It is tougher, and ordinary
shots are free, because at one point a shot a held trigger destroyed it in
under half a second.
- New food displaced the wrong weapon: it overwrote whatever was in hand
and left the starting turd sitting in the belt. The house blend is now
always the first thing to go.
- Rebinding was a one-way door — binding an action replaced its whole
key list with no way back short of wiping every key. Backspace now
restores just the one row.
- Dropping something that heavy shoves the bird now. Small, capped, and
heavier on a charged shot.
- A charged shot costs less cooldown than it did. Paying the squeeze
and then the full wait made charging worse than just tapping.
- The seventy-two Chinese lines the thirty-sea expansion forgot — every
new upgrade, fusion and boss — are in.
4 September 2026
Board rules
- The chat board has written rules now, and a
summary sits above the box you type into.
- They say what gets removed, and how it is enforced: a word filter, rate
limits, and the fact that anything can be taken down.
4 September 2026
The site carries ads now — the games still do not
- Advertising was added to the pages around the games. Not to the
games. They still load nothing from anyone once they start, and
there are no ads inside them.
- The chat board and the report page carry no advertising either.
- The privacy page was rewritten the same day to
say exactly what that means, including how to opt out of personalised ads.
3 September 2026
Gull Force One — the thirty-sea expansion
- The run now stretches across thirty named seas instead of a repeating
palette. Fifteen stretches of water, two depths each, from the Shallows to
the Final Passage — each with its own sky, water and weather.
- Ten new bosses, and the boss pools were rebuilt: five pools now, one
every six seas, so the back half of a run stops repeating itself. Older
pools still show up occasionally to keep the mix honest.
- Twenty new upgrades, each levelling to five. Levelling one costs no
extra slot, so the belt decision stays about breadth, not stacking.
- Ten new fusion recipes, taking the total to twenty.
- Fixed a belt that could quietly creep past its own six-slot cap when
taking a two-slot epic.
2 September 2026
Gull Force One — the trigger, and three real bugs
- Holding fire is rapid fire again. It had been changed so
that holding only built a charge and nothing fired until you let go, which
took rapid fire out of the game entirely and made every weapon feel broken.
Charging now lives on its own input — the E key, the right mouse button, or
a SQUEEZE button on screen — so the two can never eat each other.
- Fixed a hard freeze when entering a new sea. A stray line threw an error
the moment an enemy shot existed, which killed the animation loop outright
and locked the picture in place with no explanation.
- Fixed the swap screen dropping the wrong upgrade. It only drew the mouse
hover state and never the keyboard selection, so hovering one card and
pressing Enter dropped whatever sat first in the belt instead.
- Fixed a treasure room that could be farmed forever by walking out and
back in, and a charged shot on the Throne that was impossible to pay for.
30 August 2026
Gull Force One — first public build
- Twenty birds, all free, unlocking by how deep you have ever been.
- Thirty-three weapons, each with a charged second form.
- Seventeen room types, twelve bosses, forty upgrades and ten fusions.
- Full touch support — every menu, dialog and choice works with a finger.
August 2026
CHEERS and FOUR
- CHEERS went up with a complete chess rules engine, verified against
known-correct position counts sixteen million nodes deep.
- FOUR replaced an earlier duelling game, and is now the running game on
the beam.