Preparando a beta fechada
Começamos a fase de deixar o jogo pronto para gente de fora. Nada disso aparece na tela de combate, mas é o que separa um teste entre amigos de uma beta: voltar depois de cair, moderar o chat e medir o que acontece.
Por quê
A arte própria só começa em abril de 2027, e até lá dá para resolver tudo o que uma beta precisa e não depende de arte. Por isso reorganizamos o roadmap: agora há uma fase só de beta e outra só de interface, antes da arte.
Como funciona
Se a sua conexão cai no meio de uma sala, o seu time fica parado lá por 60 segundos. O jogo tenta voltar sozinho a cada 2 segundos e, quando consegue, você volta para a mesma sala, com o mesmo time, sem digitar a senha de novo. Testamos derrubando a conexão de um bot de propósito dentro da Toca, e também pela internet, contra o servidor de testes. Dano, golpes e o aviso de sala limpa agora vão por um canal que garante a entrega; antes, um pacote perdido na internet podia apagar um número de dano.
O chat tem filtro de palavrões em português, inglês e russo, que entende acento e “l33t”. Mensagem repetida em sequência é bloqueada, e três abusos em 10 minutos silenciam a pessoa por 10 minutos. Dá para denunciar um jogador tocando nele ou com /denunciar nome motivo, e a denúncia leva as últimas mensagens dele como contexto. A equipe tem comandos de GM pelo chat: silenciar, banir, expulsar, anunciar, gerar convites e dar itens. Quem é banido vê o motivo e até quando ao tentar entrar.
O servidor pode exigir um código de convite no cadastro, e é assim que a beta vai ser fechada. Quem estiver com uma versão velha do jogo é avisado e recebe o endereço para baixar a nova, em vez de cair sem explicação.
O servidor também anota, sem nome, e-mail nem IP, o que precisamos para balancear: quanto tempo as pessoas jogam, se voltam no dia seguinte e na semana seguinte, quais reações usam, quantas vezes trocam de personagem, quantos baús abrem por dia. Isso vai dizer se as chaves estão mesquinhas ou frouxas. Para a carga, colocamos 50 bots na cidade do servidor de testes. Cada um gastou cerca de 2 KB/s, o servidor usou 117 MB de memória e a máquina mal percebeu.
Por fim, fizemos uma revisão completa da interface, que virou a fase 4 do roadmap: entrar no jogo em menos telas, uma barra com Personagem, Skills, Bolsa, Mapa e Agenda, um manual para consultar quando quiser em vez de tutorial forçado, e botões do tamanho do dedo no celular.
Próximo passo
Grupo formado antes de entrar na sala, modificadores semanais de dungeon e tradução para o inglês.
Mudanças
- feat(net): 60 s reconnection with session tokens
Login hands out a session token. When a connection drops inside a room the team stays parked as a ghost for 60 s; the client retries every 2 s for up to 60 s and resumes with the token instead of the password, landing back in the same room with the same team, or in the city with the team it had. A new login kicks the stale session instead of refusing with already_online. Peer timeouts are 4 to 10 s on both ends so drops are noticed quickly. The network test drops bot1 inside the Toca and checks it returns to the same team. Protocol 14.
- feat(server): moderation, GM commands, invites and telemetry
Moderation (server/moderation.gd): whole-word chat filter per language with accent and leetspeak folding, repeat blocking, automatic 10-minute mute after three hits, mutes and bans with audit, player reports with the reported player's last chat lines as context, admin accounts, and a token bucket against command floods that kicks after five strikes. GM commands over chat (/gm ajuda): kick, mute, ban, unban, announce, invite codes, reports, give items, gold or essence. data_dir/server.json holds invite_only and the admin usernames; registration takes an invite code when the beta is closed. Banned accounts get the reason and the end date at login. Outdated clients are told to download the new version instead of being dropped silently. Telemetry (server/telemetry.gd): pseudonymized JSON Lines per day with sessions, room runs, reactions and swaps per run, chests, gacha, trades, market, cooking and a CCU sample every minute; tools/telemetry_report.py prints DAU, D1/D7 retention, CCU, clear rates, reaction share and the key economy. Protocol 15.
- fix(net): room events on a reliable channel
Events rode in the same unreliable packet as the binary tick, so any lost packet over the internet dropped damage numbers, casts and room banners. The tick stays unreliable; events go reliable and only when there are any. The server flushes stdout on print so journald shows the log. The network bot waits 1.5 s for the cast, enough for a real round trip. Protocol 16.
- docs: client UX review and the two new roadmap phases
docs/fluxo-do-cliente.md reviews the client flow (login to first room, bottom bar, panels, onboarding, touch) and lists a 35-item backlog. The roadmap now has phase 3 (ready for the beta, current) and phase 4 (interface and first session) before own art, on the site and in the design doc.