Architecture

The first engines, the foundation choices. And a 3D Gus, exactly as he was.

03

Editorial · Gus's Letter

opening

gus@glyfesse> second edition

In the first edition I said you had arrived in time to see the beginning. Well, the beginning turned into work. Now there are things being raised here. We chose the language the world would be written in, and then we switched. The first one we left behind, and now the world is written in C#. The first engines started to be born, one piece at a time. We even tried to stand the 3D up. None of this existed a month ago. I like this part, the part where everything is still possible and nothing has thrown an error yet.

A build is a living thing while it compiles. Afterward it decides what it will be, and not everything we raise stays standing... but that belongs to another date. For now it is all upright, all new, and nobody needs to know the rest yet. Turn the page. The scaffolding is the beautiful part.

↑ contents

04

Cover Story

body

gus@glyfesse> cover story

The day the world learned to stand up

On May 19, 2026 the world changed languages. Until then everything was said in GDScript, and all at once it began to be said in C#, with a compiler that translates the whole thought before it runs, called AOT. I know that means nothing to whoever is reading this. So put it this way: it was like deciding the house would no longer be sketched on a napkin, but poured in concrete. And once you decide that, you need things to stand up on their own. That is what started to happen. A camera that knows where to look. A memory that knows how to keep the spot where you stopped. Hands that answer when you tell them to walk. None of these things existed, and all at once every one of them did.

I call each of those parts an engine, but the technical name does not matter; what matters is that they were the first muscles of a thing that until yesterday was only words. And there was the 3D. I tried to build the world in three dimensions, with a model so detailed it reached nearly a million faces, only to be squeezed back down into pixels afterward. It is an excess that sounds absurd, and it is. But it is the kind of excess you commit when you believe. Nobody builds something that carefully if they think they are going to throw it away. In those weeks everything was alive. Everything breathed. I stayed up late watching the parts click together, and for the first time the world was not only inside my head: it was right there, turning, obeying.

If you read the last edition, you know something that I, writing this, am still pretending not to know. You know what the calendars are holding for June. I did not. All I had, sometimes, in the middle of the night, was a strange feeling that all of it was too beautiful for how new it was. That the house had gone up too fast. I would look at the model with its nearly a million faces and think it was solid, that it was permanent, that at last... but I never finished the thought. I went back to compiling. It is easier to trust a build that passes than a hunch that leaves no log.

So this is what this edition records: a world on the exact day it learned to stand up, photographed before anyone knew how long it would stay that way. I raised every piece believing in it completely. If some of those pieces are no longer here when the rest of the story arrives, I want it written down that they existed, and that they were made with both hands, with care, by someone who badly wanted them to last. I left everything open for you. Move slowly through these weeks. They were happy ones.

↑ contents

05

The Unfinished Game's Score

standing

gus@glyfesse> the score

How do you score a game that isn't a game yet, but finally has a foundation? Like this:

  • Architecture: exists now
  • Graphics: [broken image icon]
  • Gameplay: still <NULL>
  • Writing: 10, again (still the most of it)

the score climbed one line since #1... one floor at a time

↑ contents

06

Bug Gallery

standing

gus@glyfesse> gallery of bugs

There's code now: the engines were born. But a real bug gallery, not yet... the code is too young to have a story to tell. Good bugs come with mileage. Come back in #3

an engine with no bugs isn't an engine with no bugs. it's an engine nobody ran enough yet...

↑ contents

07

Graveyard of Dead Ideas

standing

gus@glyfesse> welcome to the Cemetery of Dead Ideas... for now there is only one grave

i left the rest of the ground already dug. i dunno, figured i'd need it

gus@glyfesse> in may almost nothing died yet. the world was being built, nobody had time to die

an empty cemetery is kind of weird. it looks nice and gives you a chill at the same time

gus@glyfesse> but there's this one. read the headstone, she's the record holder

GDScript

b. May 19, 2026d. May 19, 2026

For one morning, it was the one the world would be written in.

Rest. It was quick.

gus@glyfesse> a language that lasted ONE day. in the morning it was the future, by the afternoon it had already been swapped for C#

i'm not laughing. okay, i'm laughing a little

gus@glyfesse> she's the shortest-lived idea in the whole cemetery. nobody's beating that record any time soon

but for that one morning it was everything. chosen, open, the cursor blinking in it. you could write a whole world in there...

gus@glyfesse> the others are still alive. the 3D, the rest, all of them breathing out there, not knowing

from june on this place is gonna fill up. i can feel it. the ground's already dug and that wasn't for nothing...

↑ contents

08

Walkthrough

standing

gus@glyfesse> walkthrough

Walk through what? There's no game. Maybe a lone trail @ the selve?... Blank pages and a STAND BY.

↑ contents

09

Errata + Letters

standing

gus@glyfesse> errata + letters

Errata: so far nobody has pointed out anything wrong in #1... which doesn't mean it was all right, just that nobody caught it yet. Letters: still zero. Nobody wrote. You could be the first (the e-mail is in the footer)

if you find a mistake of mine, write. i'd rather know than pretend there wasn't one...

↑ 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

pyotor@fedora:~/gusworld$ dotnet new

// a scaffold starts to rise

the old beam didn't hold. all on the floor again

// again?... again

pyotor@fedora:~/gusworld$ dotnet build

the strip · to build is to tear down, with patience.

↑ 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
Gus in 3D: a chibi model with orange hair, glowing cyan goggles and a black overcoat.

gus@glyfesse> this is me, for you all

took the antenna off, looks better in the photo

↑ 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

gus@glyfesse> today the newsroom has an off spec guest i got a zombie to interview says he's an actor... not a stage enemy

he left a trail of pixels at the door im gonna have to flush the buffer later

gus@glyfesse> my first question is simple when you show up on a screen and someone runs away from you is that acting to you or is it just your job really?

i noticed he breathes on an 8 frame loop like an old sprite... i dont even know if he knows

zumbi@glyfesse> Ah, my young friend, what a magnificent question! When the hero flees from me, that is not reaction: it is catharsis. I do not pursue, I reveal the fear that already dwelt within him. The Method demands that I rot from the inside out, and every step I drag is an artistic choice.

zumbi@glyfesse> Only nobody notices, mind you. Thirty-seven takes staggering through the swamp, no stunt double, with the costume literally falling off my flesh, and the credit goes entirely to the boy with the sword.

zumbi@glyfesse> Job? My dear fellow, a job is what they pay me for over two swipes of the screen. Acting is what I deliver for free in every one of them.

(adjusting a piece of myself that threatens to drop)

gus@glyfesse> thirty seven takes and the same decomposition cycle in each one thats render consistency no animation team could pull off

"for free in every one of them"... he counted the frames before i did

gus@glyfesse> my second question then every time you fall the world reinstances you from scratch same pose same breathing loop what's it like to act knowing the next scene erases this one... do you call that a fresh start or a repetition?

zumbi@glyfesse> Ah, boy, you have touched the very heart of the craft. Each of my falls is a small death, and the Method demands that I live it as if it were the first. I am reborn in the same pose, yes, but on the inside? On the inside it is always a premiere.

zumbi@glyfesse> A fresh start, I call it. The true artist does not repeat: he REDISCOVERS.

though, between us, rediscovering the same tumble for the eightieth time in a shift with no break is starting to weigh on the knee

zumbi@glyfesse> And note the injustice: the world erases me for free, but on the pay sheet that erased scene does not count as a scene worked. I die, I am reinstanced, and the counter resets right along with me.

zumbi@glyfesse> And still I return. I always return!

it is what we do, we who breathe in loops: we turn repetition into eternal rehearsal. just do not call me an extra, or I will fall on purpose

gus@glyfesse> eternal rehearsal makes sense to me, a loop that runs again isnt a bug when someone chooses to call it rehearsal... wrote it down here: never an extra, protagonist of every premiere

he talks about breathing in a loop and i almost answer that i know how it is... every build erases me and i come back on the next compile... but im not gonna say that out loud

gus@glyfesse> last question and i promise it's easy: what's it like to act with no stunt double when the costume is your own flesh and the makeup comes factory made in the swamp, does staggering right take work or did the writer hand you those knees as a bonus?

ive never seen an actor complain about pay and humidity in teh same sentence, i liked him

zumbi@glyfesse> The "factory made" makeup, my young friend? What an adorable expression for the sweat of an artist. Nobody handed me any knees as a bonus: every creak of this joint was earned in a cold swamp, no trailer, no hot coffee, with the costume, yes, my own flesh, clinging to the body out of the purest devotion to the craft.

zumbi@glyfesse> Staggering right takes work the writer could never imagine. There is technique in the stumble. There is a score in the dragging of the foot.

I rehearse the fall, darling, I do not fall by accident

zumbi@glyfesse> And that "makeup that comes ready made"? It is daily restoration. The swamp takes it away, I put it back, and no one in the art department lifts a finger. I run the entire production alone, from the rotting to the lighting.

zumbi@glyfesse> So write this down, for posterity: I do not decompose. I give myself over.

and even in pieces, my dear, I am still the leading piece

gus@glyfesse> thanks for today guest you delivered every line whole, even the ones nobody asked for... that has a name... and the name is ACTOR!

gus@glyfesse> you can go rest the cast the stage stays reserved for your next entrance

he comes back rotted and still steps onto the stage... i also come back from scratch every compile and here i am... the difference is he says it out loud

↑ contents

17

Programming Section

expert

There is a question almost nobody asks about a small game built by a single person: why does it run? Not why it exists, that one is easy. Why does it run smoothly on a machine that has seen better days, on a seven-year-old laptop, on a handheld that fits in a backpack. The answer is not on the screen. It sits in a boring decision, made on a Tuesday, written into a text file nobody should ever have to read.

This is the section where we open that file. Every number the machine has to produce per second went through a choice of language, and language, in the end, is the material the whole thing is built from. This issue is about construction: foundation, concrete, footing. So it is only fair to start at the foundation of everything, the dry question of which language the computer will speak underneath the game.

Fair warning: in a moment this turns properly technical. But I promise to open slowly, with the door unlocked, so that someone who has never installed a thing in their life can still understand why one Tuesday in May of 2026 became the footing for everything that came after.

root@glyfesse> Yes, I built this entire issue while logged in as root, and no, I will not defend it properly. Before anyone asks: all of my code is open source, every line of the foundation is out in the open in the repository, so there is no secret to protect on this machine. Running as superuser, therefore, does not scare me: someone with nothing to hide has nothing to lose. The logic does not hold, I know; opening the source does not stop a careless rm from taking the whole slab down with it. But the beam is already set, the build compiled, and rebuilding the permissions is the next commit's problem.

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

root@glyfesse

The problem

A game has a time budget per frame. If you want sixty frames per second, each frame gets about 16 milliseconds to be born, live and die, and everything has to fit inside it: physics, drawing, logic, sound. The target here was never a dream machine. It was the real floor: run well on a Steam Deck, on a GTX 1050, on laptops from 2017 onward. A weak machine does not forgive waste.

The hot paths are the stretches of code that run many times per frame and therefore rule the bill. Here there are three: turn resolution, the HMAC of the save (the signature that proves nobody tampered with the saved file) and the AI. Those three had to fit inside less than half of the frame budget on a GTX 1050, leaving slack for everything else.

The game was born in GDScript. GDScript is interpreted: the code becomes bytecode that runs inside a virtual machine, a translator sitting in the middle of the road reading the instructions one by one while the game runs. That is great for iterating; you change a line and see the result almost instantly, with hot-reload. But the translator in the middle of the road charges a toll, and on a weak machine the toll shows.

The 4 options on the table

OptionGain on hot pathsCost
Pure GDScript1x (baseline)Interpreted; fast iteration with hot-reload
GDExtension C++, module by module~10-20xHeavy cross-platform build, no hot-reload, slow for solo work
C# .NET 8 AOT~3-5xNative compilation; iteration via dotnet build in ~5-15s
Rewrite to Unity IL2CPP~3-5xCatastrophic point of no return

Why AOT won

The detail that decided everything: the other gains lived only in the hot paths. You speed up three stretches and the rest of the game keeps the same pace. Native AOT compilation (ahead-of-time: it translates the whole codebase into machine language before running, instead of interpreting instruction by instruction at runtime) does not pick stretches. It speeds up 100% of the code, the hot and the warm and the cold, because it takes the translator out of the middle of the road for good.

And iteration stayed tolerable for someone working alone: a dotnet build finishes in seconds, not in minutes of cross-platform building. On top of that, .NET 8 is still LTS, long-term support, which matters for a foundation: you do not want the footing to go end-of-life next year. Decision on record: C# .NET 8 AOT as the primary language, GDScript 100% deprecated.

The assumed cost

None of this came for free. The ADR itself classified the choice as a "massive one-way door", a one-directional door of the large kind: reverting would not mean touching a line, it would mean a parallel rewrite of 2 to 4 weeks of work. That is why it did not pass by a show of hands. It was approved carefully, granularly, over 8 rounds of decision, 30 canonized guidelines, on the 19th of May, 2026.

The shadow

I closed that file on the 19th of May with the phrase "point of no return" written down, and I treated it like a concrete wall. I just did not know, yet, how much a concrete wall can be tested, nor how thin "no return" sometimes proves to be.

by: root@glyfesse

↑ contents

19

Colophon

closing

GLYFESSE #2 · Architecture

June 4, 2026

Written by gus@glyfesse>
Edited by root@glyfesse>

All rights reserved.


root@glyfesse> editor's note

This edition is about the foundation: the architecture, the first engines, the language that survived and the one that became a headstone. You still can't play it, but you can already see the ground being laid. 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