MushRog

O combate nasceu sem gráfico

12 de outubro de 2026 arquiteturamecanica

A primeira coisa que o MushRog tem é uma simulação de combate que roda sem tela e sem rede. Dá para jogar uma luta inteira contra a Salamandra Ardente num teste automatizado.

Por quê

Num jogo online, a regra mais cara de quebrar é a de que servidor e cliente discordam sobre o que aconteceu. Se o combate é um pedaço de código puro, com tick fixo de 20 por segundo e um gerador de números aleatórios com semente, a mesma sequência de comandos produz sempre o mesmo resultado. O servidor roda essa simulação como autoridade, o cliente roda a mesma para prever o que vai acontecer, e os testes rodam ela milhares de vezes sem abrir janela.

Também gravamos todo comando com o tick em que entrou. Com isso o replay vem de brinde: qualquer luta pode ser reproduzida exatamente, o que ajuda a achar bug, revisar cheat e, no futuro, mostrar jogadas.

Como funciona

Dezenove testes passam hoje, e eles cobrem o que importa no design. A ordem dos elementos conta: fogo e depois gelo dobra o dano, gelo e depois fogo dá uma vez e meia. Raio sobre gelo reduz a defesa do alvo em 40% por 8 segundos, e raio sobre fogo explode em área. O chefe de fogo é imune a fogo e reage a gelo sem perder a aura. A cada 20 segundos ele abre uma janela em que a aura inata some e qualquer elemento pega.

Trocar de personagem não zera nem pausa cooldown: o mago vai para a reserva com a Bola de Fogo recarregando e volta com ela pronta. A troca tem 1,5 segundo de espera e é bloqueada se o personagem está atordoado. Se ele morre, a troca é forçada e não gasta a espera. E com a mesma semente e os mesmos comandos saem exatamente os mesmos eventos.

O protótipo jogável é feito de retângulos e texto: Mago de azul, Guerreiro de marrom, chefe vermelho com contorno na cor da aura. Teclas 1 a 4 para skills, Tab para trocar. Feio de propósito, porque a pergunta que ele responde é se trocar para reagir é gostoso, e isso não precisa de sprite.

Próximo passo

Jogar até a troca parecer natural. Depois vem movimento e alcance, porque hoje toda skill acerta de qualquer lugar.

Mudanças

  • feat(core): deterministic combat sim with team swap and elemental reactions

    Fase 0 skeleton: Godot 4.7 project, data-driven content (elements, reactions, classes, skills, mobs), pure GDScript simulation with fixed tick, seeded RNG and command log for replay. Headless test runner with 19 tests covering reactions, swap rules, boss innate aura and replay.

  • feat(client): offline fase 0 prototype scene

    Rectangles and text over the sim: boss with innate fire aura, team of mage + warrior, skill bar with cooldowns, swap on Tab, event log.

← Todo o devlog