Dev Log — Clima, mundo vivo e bastidores da infra
Dev Log — Clima, mundo vivo e bastidores da infra
Faz tempo que não escrevo um dev log aqui. Os últimos meses foram intensos
em duas frentes que andam juntas: o mundo do jogo ficou mais vivo e a
infraestrutura por trás dele virou uma máquina decente. Esse post é uma
volta rápida pelos dois lados.
O mundo ganhou clima — e estações de verdade
A primeira coisa que dá pra notar quando você abre o jogo agora é que o
céu não é mais um cenário estático. Tel-Annat tem um ciclo diurno e
noturno suave; as árvores balançam quando o vento sopra; e quando chove,
chove de verdade.

A virada técnica foi simples na descrição, mas longa na execução: cada
mapa carrega coordenadas geográficas (latitude/longitude) vindas direto do
CMS. Com isso o motor calcula em que hemisfério o jogador está e qual
estação do ano está rolando. O clima de cada bioma é só um default —
dá pra forçar uma tempestade num deserto via console se eu quiser
testar uma cena específica.

As árvores tiveram um capítulo à parte. Foram várias iterações de shader
até o vento ficar visível sem que as folhas “estourassem” pra fora do
quadro do sprite. Coisa de uns 8 commits seguidos só pra ajustar
amplitude, frequência e o ponto onde a base do tronco fica parada.

Um console pra debugar o mundo
Junto com o sistema de clima veio um console interno no jogo. Hoje eu
abro ele e mando coisas tipo “qual é o clima atual?”, “troca a estação
pra inverno”, “amostra os próximos eventos meteorológicos”. Pra mim, como
dev solo, isso economiza bastante tempo — testar uma nevasca específica
antes exigia um vai-e-vem de save/load; agora é uma linha de comando.

weather: nuvens, precipitação, vento, estação e a geolocalização do mapa.Também resolvi um bug bobo mas chato: abrir o console pausava o jogo, e
fechar o console despausava — mesmo se o jogo já estivesse pausado
antes por outro motivo. Agora o estado anterior é preservado.
Bastidores: a reestruturação da infra
Essa parte é menos visual, mas foi uma das mudanças mais importantes dos
últimos meses. O servidor que roda o backend do jogo (API, CMS, auth)
saiu de um setup meio improvisado pra uma estrutura que eu confio em
deixar rodando sozinha.
Backup de verdade, todo dia
Antes eu tinha aquela sensação de “ah, se o HD pifar agora…”. Hoje
existe um pipeline de backup que roda automaticamente todo dia às 01h
da manhã. Ele:
- Congela uploads por alguns segundos pra garantir consistência
- Faz um snapshot do banco e dos arquivos do CMS
- Deduplica e criptografa tudo (usando uma ferramenta chamada restic)
- Manda cópias pro Google Drive e pro Amazon S3 ao mesmo tempo
- Aplica retenção grandfather-father-son (diários, semanais, mensais)
E o mais importante: tem um drill trimestral agendado, ou seja, de
três em três meses eu efetivamente restauro o backup num ambiente de
teste pra confirmar que ele funciona. Backup que ninguém testa não é
backup, é fé.

Monitoramento em três camadas
Agora o servidor avisa quando alguma coisa para de funcionar — e o aviso
chega antes de eu perceber pelo jogo travado. O esquema é em três
camadas:
- Heartbeat interno — cada job crítico (backup, worker de
brainstorms, etc.) bate num endpoint dizendo “tô vivo” a cada
execução. Se ficar mudo por muito tempo, alerta. - Health checks contínuos — o site público faz um poll de saúde
da API a cada 30 segundos. Aquele indicador discreto de “Servidor:
online/offline” no canto da página vem daí. - Banner público de alerta — se o último backup falhou ou está
atrasado por mais de 26h, um aviso aparece automaticamente no painel administrativo, além de disparar um e-mail para os administradores da infra.
Login unificado
Outra coisa que parecia pequena, mas ajudou bastante: jogo, site e
backend agora compartilham o mesmo sistema de login (rodando em cima
de um servidor de identidade dedicado). Se você entra no painel admin
do site, o jogo já sabe quem você é. Se a sessão expira, aparece um
overlay pedindo pra reentrar — sem perder o trabalho que estava em
andamento.

Conteúdo no lugar certo
Um princípio que virou regra: todo conteúdo do jogo nasce no CMS.
Item, monstro, NPC, mapa, bioma, missão, diálogo — tudo. O jogo lê isso
em runtime e monta os recursos sozinho. Isso significa que eu (ou
qualquer pessoa colaborando) consigo editar uma habilidade ou ajustar
uma loot table direto pelo painel web, sem mexer no código do jogo.

Junto disso veio um sistema de planos no próprio CMS — onde eu
quebro cada empreitada grande em fases e atividades, marco progresso e
consigo “retomar” o trabalho de onde parei (inclusive com ajuda da IA).
É meio meta: estou usando o CMS pra gerenciar o desenvolvimento do
próprio jogo que o CMS alimenta.
O que vem por aí
A próxima frente é a wiki pública — um espaço dentro do site onde
quem joga pode ler sobre o mundo, a lore, os personagens, sem precisar
descobrir tudo dentro do jogo. O backend dela já foi pro ar; agora
falta o visual.
Em paralelo, continuo polindo o ciclo dia/noite (quero que a luz das
fogueiras tenha mais presença à noite), e quero experimentar clima
afetando gameplay — chuva apagando tochas, frio diminuindo
stamina, esse tipo de coisa.

Se você leu até aqui, obrigado. Mensageiros do Vento é um
projeto solo feito nos cantos das madrugadas, e cada comentário,
seguidor ou compartilhamento faz diferença.
Até o próximo log.
— 𒀀𒀀