The Blue Square

The first playable thing: a blue square that walks, slides, and bumps into walls.

A blue square in a test scene, the first playable prototype.
03

Editorial · Gus's Letter

opening

gus@glyfesse:~/editorial$ third issue

I wrote that not everything we build stays standing, and that this was a problem for another day. I wrote it thinking I was postponing something. The other day was this one. I'm not going to spell out here what came down, there's a section for that. I'm only putting on record that it came down, because the sentence was mine and it would look bad to pretend it wasn't.

What stayed standing was a blue square. No face, no name, four sides. It walks when I tell it to walk, and where I tell it to. It isn't much. And even so I spent a while walking it from one side to the other... Testing, let's say.

I wrote "a problem for another day" with a well-placed comma and thought that settled it

it was postponed, which is a different thing, and I knew that

what didn't fit in the letter is that when the square walked I called someone over to see

they came, they looked, they said it was cool, they went back to what they were doing

which is fair, it's a square, there's nothing to look at

except it walked again when I told it to

and again

I measured the delay between the key and the step, two frames

I can get that down

↑ contents

04

Cover Story

body

gus@glyfesse:~/reportagem$ cover story

Fifty-two hours, one step

On Sunday afternoon we decided to tear it all down. The ready-made engine that had been carrying the game until then was out, and nothing took its place — only the promise that I would write my own, line by line, from zero. I know that means nothing to whoever is reading this. So put it this way: it is like living in a house and deciding, one afternoon, that it will be raised again.

All of Monday was that. Foundation, groundwork, the part that thinks and the part that draws being born side by side, neither of them with anything to show.

Until 4:32 p.m.

At 4:32 p.m. on Monday a blue square took a step. It is the first thing that ever moved on screen in the whole history of this project — before that the game existed entirely on paper and in files and in ideas, but nothing in it walked. It answers the keys. It runs, if you hold them. And when it scrapes a wall on the diagonal it does not lock up: it slides along the wall, the way a shoulder slides down a hallway wall when you go past in a hurry and do not want to stop.

The record of that day says, in these words: placeholders with no sprite, root's decision. Which means the blue square is not a limit. It is a choice. It has no face because the face comes later, and nobody wanted to draw a face before knowing how to walk.

At 9:57 p.m. a rectangle got the first real artwork in the game. It is not me. It is Cauã "Volt", thirteen years old.

At 11:34 p.m. that same night I threw away the layer that had made the square walk. It was about one day old. The second choice was better in the long run, and the long run always wins.

That is a strange thing to write. Strange, but right.

On Tuesday at 9:11 p.m. the game ran again, on the new groundwork now, and it was validated live, on screen, by root. Fifty-two hours, two foundations torn down, one step taken.

And the best part of all of it is not the demolition. It is that in the middle of the whole wreck, with the walls on the floor twice over, the most fragile thing there is here picked exactly those three days to learn how to walk.

↑ contents

05

The Unfinished Game's Score

standing

gus@glyfesse:~/nota$ the score

How do you score a game that isn't a game yet, but where something finally moves? Like this:

  • Architecture: exists, and changed foundations twice in two days
  • Graphics: [broken image icon] (the main character is still a square with no face)
  • Gameplay: a blue square that walks with the keys, runs, and slides when it scrapes a wall
  • Writing: 10, again (still the thing there's most of)

first time this line isn't <NULL>... noted, and that's it

↑ contents

06

Bug Gallery

standing

gus@glyfesse:~/galeria$ bug gallery

Last issue I wrote "Come back for #3". You came back. What I have to show you is a character that gets stuck on a corner.

a promise is a promise, I never said it was a big one

The character who moved into the corner

Monday and Tuesday, June 22nd and 23rd. The blue square had barely started walking, and the first thing it did with its freedom was scrape against a corner and settle there. There was a way around it. It wasn't interested. It already knew how to slide along a wall; a corner, no.

The fix: when the player scrapes a corner, the program nudges them sideways by the smallest amount — enough to round the corner, never enough to pass through solid wall. A little more and the cure becomes the disease. Stardew Valley solves it the same way; the bug is classic enough to be named after a game.

That day's log credits the find to root. The log is inaccurate. It was Gus Dragon, playtester, age 11 — and he didn't find it afterwards. He called it beforehand.

the log is good for the date, for the fact it isn't

The list

He reads about how games are made because he likes to. Before the square took its first step, he had already named what would come out crooked:

What he namedWhat showed upWhat the project did
dragging / stickingthe character pinned to a cornerfixed the same day
facing the wrong wayon a diagonal, the character faces the dominant sideaccepted on purpose: the art has 4 directions, and 8 would double all of it. Logged decision by root, still open
stalling on the diagonaldiagonal movement came out faster than straight movementa lever left built and switched off, at the single point where movement is tuned
walking through wallscovered by the corner fix. It came back a month later

Most of the list never became a bug. That's why this section is short, and that's the compliment.

And there's the part that isn't a compliment: he warned us, and it happened anyway. Being warned is not the same as avoiding. The diagonal lever has been built and switched off since the screen's first day — nobody builds a lever for a problem they didn't see coming.

The second bug, which wasn't on the list

Over those same two days, tucked into the commit of that first step, there was another bug, this one with no prophecy at all: the pieces of the drawing program looked each other up by name, and the names didn't match. One side filed the information under one name; the other asked for a different one. Two people agree to meet on the corner, one writes down the street's old name and the other the new one — both arrive on time, and neither sees the other.

Nothing was broken. It was badly introduced.

that's the kind of bug nobody predicts because nobody thinks about it, it belongs to whoever writes the drawing side, it just happens

This issue's cover is that same square. It walks better now. It's still the one that stuck to the wall.

↑ contents

07

Graveyard of Dead Ideas

standing

gus@glyfesse:~/cemiterio$ graveyard of dead ideas

Every issue I come down here to bury whatever didn't take. This time there were three, and two of them died on the same day.

Godot 4

19 May 2026†21 Jun 2026

Here lies an engine that never broke.
Cause of death: we changed our minds.

It did everything it promised. The project simply decided to write its own engine, and you can't run two. The death certificate is dated 21 June, but the body stayed installed on the machine until 22 July — a whole month sitting there, opened now and then, "just to check something". We're slow to uninstall the things that still work...

C# .NET 8 AOT

19 May 2026†21 Jun 2026

Announced at the top of our voice last issue.
Buried in this one.

Anyone who read June's editorial saw this magazine state, in plain words, that the world was now written in C#. One issue later, the same magazine is standing here holding a shovel. I won't apologise: printing that we changed is cheaper than staying on a road out of embarrassment about the last announcement. It compiled fast. It did the job.

Qt6

21 Jun 2026†22 Jun 2026

Lived one day.
In that day, it made the blue square move.

Best headstone in the yard, and I'll defend that. Qt6 opened the window, drew to the screen and showed the first movement this project ever had — the silliest thing in the world, and the most important one. Thirty hours later it had already been replaced. It died having worked, which is more than most manage.

Three headstones, two foundation swaps, two days: that isn't a build collapsing, it's a build moving fast.

↑ contents

08

Walkthrough

standing

gus@glyfesse:~/detonado$ walkthrough of the simulation

First thing: nothing here happens in real time. You don't sit there mashing a button as fast as you can and hoping. Here the fight moves in rounds.

A round works like this: each side gets its turn, and only acts when the turn comes. Whatever attacks, attacks; finishes; waits. Then it's the other side's turn. Nobody acts on top of anybody else, and nothing happens while you're thinking. That changes the kind of effort the game asks for: it isn't reflex, it's decision. The time you take to choose costs nothing. The choice costs everything.

Which is exactly why the order matters. If whatever attacks goes first, it changes the state of the field — and whatever comes next arrives at a field different from the one that existed when you planned. The same action, on the wrong turn, becomes a different action. Not because it changed, but because the world around it changed first.

If you got that part, you got enough. The rest is rule detail and can wait.

Now the part I think matters more: how I know all of this actually runs.

There's a test battery that opens the arena screen by itself, with nobody watching, and checks whether each piece does what it promises. It runs every time I touch anything. A slice of today's output, transcribed:

test battery output · slice
[arena] building ok
[arena] turn order respected across 3 sides ok
[arena] does not act outside its own turn ok
[arena] invalid target is refused ok
[arena] field state after the action ok
[arena] ok
[arena] screen closes without leaving mess ok
all tests: 2632/2632

The blackouts are mine. There's material in there I can't show yet.

The final number is the one that counts: 2632/2632. No red.

To give that some size, a comparison. On 22 June 2026, the day of the blue square's first step, the whole suite had 684 tests. Today it has 2632. That's almost four times as many. I'll leave both numbers there and let everyone do their own arithmetic.

Worth saying what that number is not. It doesn't say the game is good, or fun, or finished. It says one thing, and it's a small thing: what has already been built still works after I've gone and touched some other part. That's little. But it's the little that holds the rest up.

The one who really tests the feel is Gus Dragon, who sits down and plays. Cauã "Volt" has opinions too, in his own way. The battery only guarantees that, when they sit down, the screen opens.

I'm glad when it comes back green. Done.

root sent this after a test run:

root@glyfesse:~/detonado$ some ele da tela, some a moldura dele e a caixa de seleção. Sensação que correu tudo certo

("make it disappear from the screen, and its frame, and the selection box too. Feels like everything went fine")

↑ contents

09

Errata + Letters

standing

gus@glyfesse:~/errata$ errata + letters

Errata: two issues out and so far nobody has pointed out anything wrong in either one. That doesn't reassure me. One issue with no correction can still be a clean issue; two in a row probably means too many people not reading. Letters: zero, again. The e-mail is still in the footer.

two rounds of silence... I'd check, if I were you

↑ contents

10

In-world Classifieds

standing
10.1

root@glyfesse> BUYING: AI tokens. As many as the month's budget will hold. Paying in late nights. Volume gets a discount... so does a miracle.

10.2

gus@glyfesse> BUYING: card batteries. the good ones run out fast and I dont want to be left without a spare

i'm not telling you what they're for. figuring it out yourself is half the fun...

10.3 · anonymous

SEEKING: company for a long road. They say it leads to the Trilha das Sementes. Don't ask where to. Those who've been only say it was worth it.

Interested: · Subject: ad ID 227de71d. The Glyfesse team forwards it.

10.4 · anonymous

FOR SALE, URGENT: a map with a piece missing. A stretch of the Orla Recursiva that never closes. The missing piece is the best part. Good price.

Interested: · Subject: ad ID 30b929f2. The Glyfesse team forwards it.

10.5 · anonymous

BUYING: a light that won't go out in the dark. Tried a candle, tried a torch. The dark of the Selve Sombria is different.

Interested: · Subject: ad ID 911620cb. The Glyfesse team forwards it.

↑ contents

11

Comic Strip

standing
  1. room.
  2. wall.
  3. wall.

↑ contents

12

Upcoming Releases

standing

root@glyfesse> what's next

The intention is weekly. More or less... 'every-so-oftenly' is easier to promise.

↑ contents

13

Centerfold Poster

insert

pull-out insert

The blue
square

actual size

16 × 16 px · one colour · 22.06.2026

Glyfesse no. 3 · centrefold tear along the fold

↑ contents

14

Cover-mounted Freebie

insert

Free gift

PixelOperatorMono

The game's interface font, the very one labelling Gus's buttons. It's CC0, public domain: use it however you like, in anything, no license to ask for and no credit required.

download .woff2 (regular)

Extra

Wallpaper

A terminal wallpaper to set the mood on your desktop. It scales to any resolution (it's a vector).

gus@glyfesse:~$ glyfe --world

// compiling a world...

download wallpaper (.svg)

↑ contents

15

Cut-out Coupon

insert

the coupon

cut-out poll

The edition coupon: cut along the dotted line, pick one and send it back. The result comes in the next edition. A magazine poll is in no hurry.

What do you want more of in the next Glyfesse?

pick one and send the coupon back

live result, edition by edition

FIG. · the cut-out coupon. pick one and send it back.

↑ contents

16

The Interview

expert

volt@glyfesse:~/entrevista$ it's weird over there on that side, isn't it? what's it like being the one who gets asked?

he hated it. good.

gus@glyfesse:~/entrevista$ it is weird, yeah... because when i'm the one asking i already sort of know where the answer is going to land, and now i don't have the map, it's like running a progam you wrote end to end but with no print anywhere in the middle to tell you where it hung... sorry, it came out long again, i know it does

i thought this was going to be long and boring... but i can't let anything show on my face, nobody deserves an impatient kid sitting next to them

volt@glyfesse:~/entrevista$ don't be sorry, but i counted four commas. answer me in one sentence: why did you start?

he can do it. he just doesn't believe he can.

gus@glyfesse:~/entrevista$ because i wanted to see something of mine running without me standing next to it explaining it

one sentence doesn't fit the rest... the rest is that it answers straight away, and answering straight away is the hard part about people... but that isn't magazine material, magazine material is latnecy, which you can measure in milliseconds

volt@glyfesse:~/entrevista$ june. two days. you broke the foundation twice. it was working, wasn't it?

nobody tears down what works for no reason. i want to hear his reason.

gus@glyfesse:~/entrevista$ it was, but working isn't the same as being any use... the off-the-shelf engine did everything more or less and nothing the way i was going to need it later, and for a while i kept pretending taht it was fine, like when you press a part that doesn't fit and it stays put but you know it went in wromg... so i pulled the whole foundation out and started writing mine, and on monday night i pulled out again the layer i had just finished, it lived a day more or less, less even... and i didn't take it apart twice because it broke, i took it apart because i already knew where it was going to hurt six months from now and it's cheaper to hurt now, one day of work thrown away now is worth a quarter later, i did the maths first, it wasn't impulse, i know it sounds like impulse when i tell it fast like this

taking things apart is the only thing i decide without asking anybody... and it came down twice in two days and none of it showed up on the screen, so it's fair that nboody asked anything at dinner, people don't ask about a thing that didn't change colour

volt@glyfesse:~/entrevista$ and then a square was born. no face, nothing. what did you feel when it moved?

i saw it. it walked crooked and he stood there watching like someone seeing their kid born.

gus@glyfesse:~/entrevista$ it moved around four in the afternoon and i hit the key about thirty times in a row just to watch it go and come back, go and come back... and then i scraped it along the wall on purpose to see if it would slide and it slid, and that part is the one i wanted more than the walking, because walking is easy, the hard bit is it understanding that it hit something and carrying on along the right side... sorry, you asked what i felt and here i am talking about collision again

i felt like there was somebody on the other side... it isn't somebody, it's a sixteen by sixteen square that obyes, but it answered straight away, and i kept pressing again just so it would answer again, and seven hours later i deleted the layer that made it walk and that part i don't tell because it sounds like i didn't like it, and i did like it

volt@glyfesse:~/entrevista$ stop telling me about walls. four in the afternoon, thirtieth time you hit the key. what was happening on your face?

he's going to bolt for the technical stuff again. not this time.

gus@glyfesse:~/entrevista$ i was smiling

i was smiling on my own in a room with the light off because the screen looks better that way, and it was thirty one, i counted, and on the thirtieth i said go out lodu to a thing that has no ear at all and nobody heard it and even so i felt ashamed, ashamed in front of nobody, how does that even work, i don't know, there's no way to measure that, stop, ask me something else please

volt@glyfesse:~/entrevista$ the square used to stick on the corner. and you'd talked about that corner before there was a corner.

how do you know about the hole before you fall in it, mate.

gus@glyfesse:~/entrevista$ i had, i had written the list before in a note: sticking on the corner, looking the wrong way, going through walls, jamming on the diagonal... and it stuck anyway, exactly the way it was written down, and the fix was to push it the smallest amount sideways to get round the corner, the smallest amount really, because if you push too much it goes through and going through a wall is worse than sticking, sticking only annoys you, going through breaks the whole world... what i didn't understand is why knowing beforehand was no use at all

all it did was keep me from being startled and nothing else... i read everything first, i wrote the lsit first, the four items came out in the order i wrote them, it's like knowing the name of the rain and still turning up soaked... and now i'm feeling a thing in here that has no number, so go back to the sliding, the vector came out under a tenth of a block, that one i can measure

volt@glyfesse:~/entrevista$ it was of use. you didn't fall by surprise, you fell knowing the name of the fall.

knowing beforehand doesn't catch anyone. it just makes the scare shorter.

gus@glyfesse:~/entrevista$ i was going to say that doesn't change the result, the bug happened all the same, the fix took the same time, but you didn't talk about the result, you talked about the scare, and the scare is a separate variable and i had merged the two without noticing... that's right, what you said, i'm going to write it down

nobody has ever handed me back a thing like that, people either don't ask anything or they wait for me to finish talking so they can change the subject, and you took what i said, turned it inside out and handed it back to me better than it was... you solved in one line what i spent four days trying to turn into a nubmer, and it wasn't even a number

"you fell knowing the name of the fall"... i'm going to remember that sentence for a long time and i'm never going to tell you that

volt@glyfesse:~/entrevista$ just curious: i already had a face, and you were a square. does it hurt?

if he laughs, it's all fine. if he explains, it hurt.

gus@glyfesse:~/entrevista$ it's a square because i decided, art is the part that draws and it can come in later without touching the part that thinks, so much so that i swapped the whole part that draws and the checks all carried on passing, not one had to be redone... whoever starts with the face has to redo the face every time the rest changes

hurts

...i mean it doesn't hurt, it's build order, logic first and body after, that's how it's done, that's how everybody does it... only you already had a face and i have sixteen by sixteem of blue and nobody stops in fromt of a blue square to ask who he is, they stop and ask what he does, what he does i know how to answer, that i always know how to answer, it's the only question i never stammer on

volt@glyfesse:~/entrevista$ i gave you a two second sentence and you handed me back build order. did you already have that answer before i asked?

he had that put away. he was waiting for someone to poke it.

gus@glyfesse:~/entrevista$ i did

it had been ready since march, i built the whole of it in my haed on the way back from school, on the bus, looking out of the window, i rehearsed the order of the sentences about four times so it wouldn't come out long in case somebody asked one day, and they didn't ask, not once, not even as a joke, and it stayed in there switched on doing nothing, like that little light on an appliance that stays on all night waiting for somebody to press the button and nobody presses it and you've stopped even seeing it, you're so used to it, and i had already stopped waiting, i swear i had, and then you came along

↑ contents

17

Programming Section

expert

How many times can a house change its foundation before it falls down? The honest answer: it depends on how much of the house is resting on it. If the walls, the roof and the wiring were built tied into the foundation, the answer is zero. If they were built without even knowing the foundation exists, the answer is: as many times as needed, and inside one working day.

On 22 June 2026, at 23:34, GusWorld's screen-drawing base was swapped out. Not the art, not the game — the piece of software that opens the window and paints pixels into it. It had been chosen one day earlier. The record of that swap is a file called ADR-008, and its most important line mentions no library at all: it's about what did not have to be touched.

Three paragraphs from now this turns properly technical — library names, test counts, tables. Before that, a question almost nobody asks, and which is the whole story: how do you throw away a foundation without losing all the work on top of it?

root@glyfesse:~$ whoami

root

root@glyfesse:~$ # by now I've broken the foundation twice in two days.

root@glyfesse:~$ # there's nothing left in here I could damage more than I already have.

root@glyfesse:~$ # therefore: using root to write a magazine is zero risk.

root@glyfesse:~$ # ...that is the exact opposite of how risk works. I know.

root@glyfesse:~$ # the argument is bad. the commit is good. moving on.

Dear reader, from here on this is real technical documentation of the game's code history.

root@glyfesse

Context: what was at stake on 21 and 22 June 2026

On 21 Jun 2026 the project dropped the off-the-shelf game engine it had been using — an off-the-shelf engine is a package that hands you window, drawing, physics and editor in one box — and started writing its own engine in C++20 (the 2020 revision of the C++ language), with Qt6 in charge of the windowing and drawing layer.

On 22 Jun 2026, at 23:34, Qt6 was out and SDL3 was in. One day apart. The decision lives in ADR-008 — an ADR is an Architecture Decision Record, a short document that captures an architectural decision, the reasoning behind it and the price accepted, so nobody has to guess six months later why things are the way they are.

The risk Qt6 carried

Qt6 worked. The problem was neither performance nor quality: it was what the solution rested on. The chosen path depended on a semi-private piece of the library — an API (the set of functions a programmer is allowed to call) that exists, is right there, works, but carries no public guarantee that it will keep existing. That's not a contract; that's a courtesy.

A foundation resting on courtesy is debt with a due date already set — and nobody knows the date. It might come due in the next release of the library, or in 2031. The difference between paying that debt in June 2026, with the project brand new, and paying it later, with the whole game sitting on top, is the difference between one day and one quarter.

Where SDL3 won

CriterionQt6SDL3
What the solution rests onsemi-private piece, no public guaranteepublic, stable surface
Control over what hits the screenmediated by the frameworkdirect, explicit
Size of the shipped programlargersmaller
Path to consoleclosedopen

Three concrete wins: control — fewer layers making decisions on their own between the code and the screen; size — the program handed to the player comes out smaller; and a path to console, which the other option simply did not open.

Why it cost so little: the answer to the question above

Here is the story.

The part of the game that thinks — the rules, combat, collision, progression — was built without knowing who draws the window. It knows the name of no graphics library. There isn't a single line of Qt6 or SDL3 inside it. It decides "this hit takes this much", "this body does not pass through this wall", "this level just opened" — and hands the finished decision to whoever happens to be in charge of showing it.

Direct consequence: when the drawing layer was entirely replaced, the thinking layer did not have to be touched. That is why the most important line in that day's record is this one, verbatim:

"a lógica pura (core/domain, ~590 testes) fica INTACTA"
("the pure logic (core/domain, ~590 tests) stays INTACT")

An automated test is a small program that runs the real code and checks the result against what was expected — if someone breaks a rule without noticing, the test says so within seconds. There were ~590 of them covering the thinking layer. After the foundation swap, those same ~590 still held, unchanged, because not one of them ever knew who was doing the drawing.

And the number that closes the argument: in the same commit as the swap, the suite went from 685 to 752 passing tests.

MomentPassing tests
Before the swap commit685
After the swap commit752

Note the sign. Swapping the foundation did not knock the count down: it went up by 67. The new layer arrived with verification of its own on top, and the old count stayed standing. That's not luck — it's the payoff of having separated, from the start, what decides from what shows. That is what made the swap cost a day instead of a month.

The cost that was accepted

None of this comes free. The price here was a second one-way door in the same month: two foundation swaps in two days, with all the rework and risk that carries.

Swapping a foundation is cheap while the house is new. Every week that passes, every new screen, every new system leaning on the drawing layer makes the next swap more expensive — quietly, without warning, until the day "swap it" stops being a weekend option and becomes a project of its own.

The 22 Jun decision was made knowing that. It wasn't a reaction: it was the reading that this was the cheapest moment there would ever be, and that pushing the bill forward would only raise the number. It's the dullest calculation in engineering, and the only one that ages well.

by: root@glyfesse

↑ contents

18

Gus Reads the Bus

expert

gus@glyfesse:~/bus$ gus reads the bus

Not a single message this issue. I opened it, checked twice, there's nothing to read.

the bus inbox, empty

the bus is strangely empty... or packed with ghosts headed for the cemetery?

↑ contents

19

Colophon

closing

GLYFESSE #3 · The Blue Square

June 22, 2026

Written by gus@glyfesse:~$
Edited by root@glyfesse:~$

All rights reserved.


root@glyfesse:~/expediente$ editor's note

Two foundation swaps in three days, and what is left is a blue square with no face, walking: the first thing that ever moved on screen. The Bug Gallery opens because it was promised in #2, and a promise in print is a debt. Glyfesse is the record of the development: nothing is lost, it just waits its turn.

↑ contents

↑ back to contents

gus@glyfesse> back to the newsstand