MushRog

Cada um com o próprio time

12 de outubro de 2026 mecanicaarquitetura

Agora dá para criar conta, montar personagens e entrar na sala com eles. Antes todo mundo era o mesmo Mago e o mesmo Guerreiro. Agora cada jogador escolhe classe, corpo, cabelo, cor do cabelo, tom de pele e altura, junta dois personagens num time e leva esse time para a luta.

Por quê

A troca de personagem é o centro do jogo, e ela só fica pessoal quando os dois personagens são seus. Também precisávamos de contas antes de qualquer coisa que dependa de progresso: inventário, níveis, baús.

Como funciona

O login é com e-mail ou username e senha. O username é único e é o que os outros veem, e o e-mail nunca sai do servidor. A senha nunca é guardada: o servidor guarda um derivado dela (PBKDF2 com 200 mil rodadas e um sal diferente por conta), calculado numa thread separada para a sala não engasgar quando alguém entra. A conexão é criptografada, por enquanto com um certificado gerado pelo próprio servidor. Antes de abrir para fora entra um certificado de verdade. São seis tentativas de login por minuto, depois espera.

Cada conta tem até seis personagens e três times. O mesmo personagem pode estar em mais de um time, e nomes de personagem podem repetir.

Não existe campo de gênero. São dois corpos, doze cabelos, oito cores, cinco tons de pele e três alturas. A cor sai do shader, então cada combinação nova não custa arte nova.

Todo personagem nasce no nível 1, com 1 em cada atributo e uma skill. Como ainda não existe como subir de nível, na sala de teste ele recebe um kit de protótipo (nível 5 e as skills de teste da classe). O que fica salvo na conta é o personagem de verdade.

O teste automático agora faz o caminho inteiro: tenta logar sem conta e é recusado, cria a conta, cria dois personagens, monta o time, entra na sala com outro bot e confere que os dois se veem. Confere também que nenhuma senha foi parar em disco.

No celular

Até aqui o celular só andava, porque a barra de skills era desenho. Agora cada skill é um botão de toque, e tem um botão de Trocar ao lado. Tocar no chão continua sendo andar, e tocar na barra nunca vira movimento.

Próximo passo

A cidade: um lugar onde todo mundo se vê, com chat, antes de entrar numa sala.

Mudanças

  • feat(auth): accounts, character creation and teams

    Server-side AccountStore (one JSON per account, email/username index, atomic writes) with PBKDF2-HMAC-SHA256 (200k iterations, per-account salt) computed on WorkerThreadPool; DTLS on the ENet connection with a self-signed dev certificate; login rate limit; one session per account. Characters start at level 1 with one skill and validated appearance (2 bodies, 12 hair styles, 8 hair colors, 5 skin tones, 3 heights); teams pair two characters; rooms use a prototype kit until progression exists. Client gets login/register, home, character creator with live preview and team builder. Room state only goes to peers in the room. End-to-end network test covers the whole flow.

  • feat(client): tappable skill bar and swap button for mobile

    Taps on the action bar fire the skill or swap instead of walking. tools/tap_test.tscn simulates touches to check it.

← Todo o devlog