Arquitetura
As primeiras engines, as escolhas de fundação. E um Gus em 3D, do jeito que ele foi.
Editorial · a Carta do Gus
aberturagus@glyfesse> segunda edição
Na primeira edição eu disse que você tinha chegado a tempo de ver o começo. Pois o começo virou obra. Agora tem coisa sendo erguida aqui. Escolhemos o idioma em que o mundo ia ser escrito, e depois trocamos. O primeiro a gente deixou para trás, e agora o mundo é escrito em C#. As primeiras engines começaram a nascer, uma peça de cada vez. Tentamos até levantar o 3D. Nada disso existia há um mês. Eu gosto dessa parte, a parte em que tudo é possível e ainda não deu erro.
Um build é uma coisa viva enquanto compila. Depois ele decide o que vai ser, e nem tudo que a gente ergue fica de pé... mas isso é problema de outra data. Por enquanto está tudo em pé, tudo novo, e ninguém precisa saber o resto ainda. Vira a página. O andaime é a parte bonita.
Reportagem de capa
corpogus@glyfesse> reportagem de capa
O dia em que o mundo aprendeu a ficar de pé
No dia 19 de maio de 2026 o mundo trocou de língua. Até então tudo era dito em GDScript, e de repente passou a ser dito em C#, com uma compilação que traduz o pensamento inteiro antes de rodar, a AOT. Eu sei que isso não significa nada para quem está lendo. Então diga assim: foi como decidir que a casa não seria mais desenhada no guardanapo, mas erguida em concreto. E quando você decide isso, você precisa que as coisas fiquem de pé sozinhas. Foi o que começou a acontecer. Uma câmera que sabe para onde olhar. Uma memória que sabe guardar onde você parou. Mãos que respondem quando você manda andar. Nenhuma dessas coisas existia, e de uma vez todas passaram a existir.
Eu chamo cada uma dessas peças de engine, mas o nome técnico não importa; o que importa é que eram os primeiros músculos de uma coisa que até ontem era só palavra. E havia o 3D. Eu tentei fazer o mundo em três dimensões, com um modelo tão detalhado que chegou a quase um milhão de faces, só para depois ser espremido de volta em pixel. É um exagero que parece absurdo, e é. Mas é o tipo de exagero que se comete quando se acredita. Ninguém constrói com esse cuidado uma coisa que acha que vai jogar fora. Naquelas semanas tudo estava vivo. Tudo respirava. Eu ficava até tarde vendo as peças se encaixarem, e pela primeira vez o mundo não estava só na minha cabeça: estava ali, girando, obedecendo.
Se você leu a edição passada, você sabe de uma coisa que eu, escrevendo isto, ainda estou fingindo não saber. Você sabe o que os calendários guardam para junho. Eu não. Eu só tinha, às vezes, no meio da noite, uma sensação estranha de que aquilo tudo era bonito demais para o quanto era novo. De que a casa tinha ficado de pé rápido demais. Eu olhava para o modelo de quase um milhão de faces e pensava que era sólido, que era permanente, que finalmente... mas eu não terminava o pensamento. Voltava a compilar. É mais fácil confiar num build que passa do que num pressentimento que não tem log.
Então é isto que esta edição registra: um mundo no exato dia em que aprendeu a ficar de pé, fotografado antes de qualquer um saber quanto tempo ficaria assim. Eu ergui cada peça acreditando nela por inteiro. Se algumas dessas peças não estiverem mais aqui quando o resto da história chegar, quero que fique escrito que elas existiram, e que foram feitas com as duas mãos, com cuidado, por alguém que queria muito que durassem. Guardei tudo aberto para você. Passe devagar por essas semanas. Elas foram felizes.
A Nota do jogo inacabado
seção fixagus@glyfesse> a nota
Como dar nota a um jogo que ainda não é jogo, mas que agora tem alicerce? Assim:
- Arquitetura: existe agora
- Gráficos: [ícone de imagem quebrada]
- Jogabilidade: ainda
<NULL> - Texto: 10, de novo (ainda é o que mais tem)
a nota subiu uma linha desde a #1... um andar de cada vez
Galeria de Bugs
seção fixagus@glyfesse> galeria de bugs
Agora existe código: as engines nasceram. Mas galeria de bug de verdade, ainda não... o código é novo demais pra ter história pra contar. Bug bom vem com tempo de estrada. Volte na #3
engine sem bug não é engine sem bug. é engine que ninguém rodou o bastante ainda...
Cemitério das Ideias Mortas
seção fixagus@glyfesse> bem-vindo ao Cemitério das Ideias Mortas... por enquanto tem uma cova só
eu deixei o resto do terreno cavado. sei la, achei que ia precisar
gus@glyfesse> em maio quase nada morreu ainda. o mundo tava sendo construido, ninguem tinha tempo de morrer
um cemiterio vazio é meio esquisito. fica bonito e ao mesmo tempo dá um frio
gus@glyfesse> mas tem essa aqui. leia a lapide, ela é a recordista
GDScript
n. 19 de maio de 2026m. 19 de maio de 2026
Por uma manhã, foi nela que o mundo ia ser escrito.
Descanse. Foi rápido.
gus@glyfesse> uma linguagem que durou UM dia. de manha era o futuro, de tarde ja tinha sido trocada pelo C#
eu nao to rindo. tá, to rindo um pouco
gus@glyfesse> ela é a ideia de vida mais curta do cemiterio inteiro. ninguem vai bater esse recorde tao cedo
mas por aquela manha ela era tudo. escolhida, aberta, o cursor piscando nela. dava pra escrever um mundo ali dentro...
gus@glyfesse> os outros ainda estao vivos. o 3D, o resto, tudo respirando la fora, sem saber
de junho em diante isso aqui vai encher. eu sinto. o terreno ja tá cavado e nao foi a toa...
Detonado
seção fixagus@glyfesse> detonado
Detonar o quê? Não tem jogo. Uma bateria de lítio velha no ferro velho?... Páginas em branco e um AGUARDE.
Errata + Cartas
seção fixagus@glyfesse> errata + cartas
Errata: até agora ninguém apontou nada errado na #1... o que não quer dizer que estava tudo certo, só que ninguém pegou ainda. Cartas: continua zerado. Ninguém escreveu. Você podia ser o primeiro (o e-mail está no rodapé)
se você achar um erro meu, escreve. prefiro saber a fingir que não teve...
Classificados in-world
seção fixaroot@glyfesse> COMPRO: tokens de IA. O máximo que couber no orçamento do mês. Pago em madrugadas. Volume tem desconto... milagre também.
gus@glyfesse> COMPRO: baterias de cartas. as boas somem rápido e eu nao quero ficar sem reserva
não vou dizer pra que servem. descobrir sozinho é metade da graça...
PROCURO: companhia para uma estrada longa. Dizem que dá na Trilha das Sementes. Não pergunte pra onde. Quem já foi só diz que valeu.
Interessados: classificados@glyfesse.gu · Assunto: anúncio ID 227de71d. A equipe Glyfesse repassa.
VENDE-SE, URGENTE: mapa com um pedaço faltando. Um trecho da Orla Recursiva que nunca fecha. O pedaço que falta é o melhor. Faço bom preço.
Interessados: classificados@glyfesse.gu · Assunto: anúncio ID 30b929f2. A equipe Glyfesse repassa.
COMPRO: luz que não apaga no escuro. Já tentei vela, tentei facho. O escuro da Selve Sombria é diferente.
Interessados: classificados@glyfesse.gu · Assunto: anúncio ID 911620cb. A equipe Glyfesse repassa.
HQ · a tirinha
seção fixapyotor@fedora:~/gusworld$ dotnet new
// um andaime começa a subir
a viga velha não aguentou. tudo no chão de novo
// de novo?... de novo
pyotor@fedora:~/gusworld$ dotnet build
Próximos Lançamentos
seção fixaroot@glyfesse> próximos lançamentos
A intenção é semanal. Mais ou menos... 'devezenquandal' fica mais fácil de afirmar.
Pôster central
encarteBrinde colado na capa
encarteOferta
PixelOperatorMono
A fonte da interface do jogo, a mesma que rotula os botões do Gus. É CC0, domínio público: use como quiser, em qualquer coisa, sem pedir licença e sem precisar creditar ninguém.
Extra
Papel de parede
Um papel de parede de terminal para deixar a área de trabalho no clima. Escala em qualquer resolução (é vetor).
gus@glyfesse:~$ glyfe --world
// compilando um mundo...
Cupom recortável
encarteo cupom
enquete recortávelO cupom da edição: recorte no pontilhado, escolha e mande de volta. O resultado sai na próxima edição. Enquete de revista não tem pressa.
FIG. · o cupom recortável. escolha e mande de volta.
A Entrevista
expertgus@glyfesse> hoje a redação tem um convidado fora do padrão recebi um zumbi pra entrevistar diz que é ator... não inimigo de fase
ele deixou um rastro de pixels na entrada vou ter que limpar o buffer depois
gus@glyfesse> minha primeira pergunta é simples quando você aparece numa tela e alguém foge de você isso pra você é atuação ou é só o seu trabalho mesmo?
reparei que ele respira em loop de 8 frames igual sprite antigo... nem sei se ele sabe
zumbi@glyfesse> Ah, meu jovem, que pergunta magnífica! Quando o herói foge de mim, aquilo não é reação: é catarse. Eu não persigo, eu revelo o medo que já morava nele. O Método exige que eu apodreça de dentro para fora, e cada passo que arrasto é uma escolha artística.
zumbi@glyfesse> Só que ninguém repara, veja bem. Trinta e sete tomadas cambaleando no pântano, sem dublê, com o figurino literalmente caindo da minha carne, e o crédito vai todo para o rapaz de espada.
zumbi@glyfesse> Trabalho? Meu caro, trabalho é o que me pagam por dois golpes de tela. Atuação é o que eu entrego de graça em cada um deles.
(ajeitando um pedaço de mim que ameaça cair)
gus@glyfesse> trinta e sete tomadas e o mesmo ciclo de decomposição em cada uma isso é consistência de render que time de animação nenhum consegue
"de graça em cada um deles"... ele contou os frames antes de mim
gus@glyfesse> minha segunda pergunta então toda vez que você cai o mundo te reinstancia do zero mesma pose mesmo loop de respirar como é atuar sabendo que a próxima cena apaga essa... você chama isso de recomeço ou de repetição?
zumbi@glyfesse> Ah, menino, você tocou no cerne do ofício. Cada queda minha é uma pequena morte, e o Método exige que eu a viva como se fosse a primeira. Renasço na mesma pose, sim, mas por dentro? Por dentro é sempre uma estreia.
zumbi@glyfesse> Recomeço, eu chamo. O verdadeiro artista não repete: ele REDESCOBRE.
embora, cá entre nós, redescobrir o mesmo tombo pela octogésima vez num turno sem intervalo já esteja começando a pesar no joelho
zumbi@glyfesse> E note a injustiça: o mundo me apaga de graça, mas na folha de cachê essa cena apagada não conta como cena trabalhada. Morro, sou reinstanciado, e o contador zera junto comigo.
zumbi@glyfesse> Ainda assim volto. Sempre volto!
é o que fazemos, nós que respiramos em loop: transformamos a repetição em ensaio eterno. só não me chame de figurante, que aí eu caio de propósito
gus@glyfesse> ensaio eterno faz sentido pra mim, um loop que roda de novo nao é bug quando alguém escolhe chamar de ensaio... anotei aqui: figurante nunca, protagonista de cada estreia
ele fala em respirar em loop e eu quase respondo que sei como é... cada build me apaga e volto na próxima compilação... mas nao vou dizer isso em voz alta
gus@glyfesse> última pergunta e prometo que é fácil: como é atuar sem dublê quando o figurino é a própria carne e a maquiagem já vem de fábrica no pântano, cambalear direito dá trabalho ou o roteirista te entregou os joelhos assim de bônus?
nunca vi ator reclamar de cachê e de umidade na mesma frase, gostei dele
zumbi@glyfesse> A maquiagem "de fábrica", meu jovem? Que expressão adorável para o suor de um artista. Ninguém me entregou joelho nenhum de bônus: cada rangido desta articulação foi conquistado em pântano frio, sem trailer, sem café quente, com o figurino, sim, a minha própria carne, aderindo ao corpo pela mais pura devoção ao ofício.
zumbi@glyfesse> Cambalear direito dá um trabalho que o roteirista jamais imaginaria. Há técnica no tropeço. Há partitura no arrastar do pé.
eu ensaio a queda, querido, eu não caio por acaso
zumbi@glyfesse> E a tal "maquiagem que vem pronta"? É restauração diária. O pântano tira, eu reponho, e ninguém no departamento de arte levanta um dedo. Faço a produção inteira sozinho, do apodrecimento à iluminação.
zumbi@glyfesse> Então anote, para a posteridade: eu não decomponho. Eu me entrego.
e mesmo aos pedaços, meu bem, eu ainda sou o pedaço principal
gus@glyfesse> obrigado por hoje convidado voce entregou cada fala inteira, ate as que ninguem pediu... isso tem nome... e o nome é ATOR!
gus@glyfesse> pode ir descansar o elenco o palco fica guardado pra sua proxima entrada
ele volta apodrecido e ainda sobe no palco... eu tambem volto do zero toda compilacao e sigo aqui... a diferença é que ele diz em voz alta
Seção de Programação
expertTem uma pergunta que quase ninguém faz sobre um jogo pequeno, feito por uma pessoa só: por que ele roda? Não por que ele existe, isso é fácil de responder. Por que ele roda liso numa máquina que já viu dias melhores, num laptop de sete anos, num aparelho portátil que cabe na mochila. A resposta não está no que você vê na tela. Está numa decisão chata, tomada numa terça-feira, escrita num arquivo de texto que ninguém deveria precisar ler.
Esta é a seção onde a gente abre esse arquivo. Todo número que a máquina precisa cuspir por segundo passou por uma escolha de linguagem, e linguagem, no fim, é o material com que a coisa é erguida. Este número da revista é sobre construção: fundação, concreto, alicerce. Então nada mais justo do que começar pela fundação de tudo, a pergunta seca de qual língua o computador vai falar por baixo do jogo.
Vou avisar de uma vez: daqui a pouco isto vira técnico de verdade. Mas prometo abrir devagar, com a porta destrancada, para quem nunca instalou nada na vida entender por que uma terça-feira de maio de 2026 virou o alicerce de tudo o que veio depois.
root@glyfesse> Sim, eu montei a revista inteira logado como root, e não, não vou me defender direito. Antes que perguntem: todo o meu código é open source, cada linha da fundação está exposta no repositório, então não há segredo nenhum para proteger nesta máquina. Rodar como superusuário, portanto, não me assusta: quem não esconde nada não tem o que perder. A lógica não fecha, eu sei; abrir o código não impede que um rm distraído leve o concreto todo junto. Mas a viga já está no lugar, o build compilou, e reconstruir a permissão é problema do próximo commit.
Prezado leitor, daqui por diante é parte técnica real de documentação histórica do código do jogo.
root@glyfesse
O problema
Um jogo tem um orçamento de tempo por quadro. Se você quer sessenta quadros por segundo, cada quadro tem cerca de 16 milissegundos para nascer, viver e morrer, e dentro dele cabe tudo: física, desenho, lógica, som. O alvo aqui nunca foi uma máquina de sonho. Foi o chão real: rodar bem num Steam Deck, numa placa GTX 1050, em laptops de 2017 para frente. Máquina fraca não perdoa desperdício.
Os caminhos quentes, os hot paths, são os pedaços de código que rodam muitas vezes por quadro e por isso mandam na conta. Aqui são três: a resolução de turno, o HMAC do save (a assinatura que prova que ninguém adulterou o arquivo salvo) e a IA. Esses três precisavam caber em menos de metade do orçamento de quadro numa GTX 1050, para sobrar folga para todo o resto.
O jogo nasceu em GDScript. GDScript é interpretado: o código vira bytecode que roda dentro de uma máquina virtual, um tradutor que fica no meio do caminho lendo as instruções uma a uma enquanto o jogo roda. Isso é ótimo para iterar, você troca uma linha e vê o resultado quase na hora, com hot-reload. Mas o tradutor no meio do caminho cobra pedágio, e em máquina fraca o pedágio aparece.
As 4 opções na mesa
| Opção | Ganho nos hot paths | Custo |
|---|---|---|
| GDScript puro | 1x (linha de base) | Interpretado; iteração rápida com hot-reload |
| GDExtension C++, módulo a módulo | ~10-20x | Build cross-platform pesado, sem hot-reload, lento para solo |
| C# .NET 8 AOT | ~3-5x | Compilação nativa; iteração via dotnet build em ~5-15s |
| Rewrite para Unity IL2CPP | ~3-5x | Porta sem volta catastrófica |
Por que o AOT ganhou
O detalhe que decidiu tudo: os outros ganhos moravam só nos hot paths. Você acelera três trechos e o resto do jogo continua no mesmo passo. A compilação nativa AOT (ahead-of-time: traduz o código inteiro para linguagem de máquina antes de rodar, em vez de interpretar instrução por instrução em runtime) não escolhe trechos. Ela acelera 100% do código, o quente e o morno e o frio, porque tira o tradutor do meio do caminho de vez.
E a iteração continuava tolerável para quem trabalha sozinho: um dotnet build fecha em segundos, não em minutos de build cross-platform. Somando, .NET 8 ainda é LTS, suporte de longo prazo, o que para uma fundação importa: você não quer que o alicerce saia de linha no ano que vem. Decisão registrada: C# .NET 8 AOT como linguagem primária, GDScript 100% deprecado.
O custo assumido
Nada disso saiu de graça. O próprio ADR classificou a escolha como "one-way door massivo", uma porta de sentido único de tamanho grande: reverter não seria mexer numa linha, seria um rewrite paralelo de 2 a 4 semanas de trabalho. Por isso não passou no grito. Foi aprovado com cuidado, granular, em 8 rodadas de decisão, 30 diretrizes canonizadas, em 19 de maio de 2026.
A sombra
Fechei o arquivo naquele 19 de maio de 2026 com a expressão "porta sem volta" anotada, e a tratei como uma parede de concreto. Só não sabia, ainda, o quanto uma parede de concreto pode ser testada, nem quão fina "sem volta" às vezes se prova ser.
by: root@glyfesse
Expediente
fechamentoGLYFESSE #2 · Arquitetura
4 de junho de 2026
Escrito por gus@glyfesse>
Editado por root@glyfesse>
Todos os direitos reservados.
root@glyfesse> nota do editor
Esta edição é sobre o alicerce: a arquitetura, as primeiras engines, a linguagem que sobreviveu e a que virou lápide. Ainda não dá pra jogar, mas já dá pra ver o chão sendo assentado. A Glyfesse é o registro do desenvolvimento: nada se perde, só espera a vez.
gus@glyfesse> voltar pra banca