MushRog

Preparando la beta cerrada

15 de octubre de 2026 arquiteturadesignbastidores

Traducción automática, aún sin revisar.

Empezamos la fase de dejar el juego listo para gente de fuera. Nada de esto aparece en la pantalla de combate, pero es lo que separa una prueba entre amigos de una beta: volver después de una caída, moderar el chat y medir lo que pasa.

Por qué

El arte propio solo empieza en abril de 2027, y hasta entonces se puede resolver todo lo que una beta necesita y no depende del arte. Por eso reorganizamos el roadmap: ahora hay una fase solo de beta y otra solo de interfaz, antes del arte.

Cómo funciona

Si tu conexión se cae en medio de una sala, tu equipo se queda parado ahí por 60 segundos. El juego intenta volver solo cada 2 segundos y, cuando lo logra, regresas a la misma sala, con el mismo equipo, sin escribir la contraseña otra vez. Lo probamos tirando a propósito la conexión de un bot dentro de la Toca, y también por internet, contra el servidor de pruebas. El daño, los golpes y el aviso de sala limpia ahora van por un canal que garantiza la entrega; antes, un paquete perdido en internet podía borrar un número de daño.

El chat tiene filtro de groserías en portugués, inglés y ruso, que entiende acentos y “l33t”. Un mensaje repetido en secuencia se bloquea, y tres abusos en 10 minutos silencian a la persona por 10 minutos. Se puede denunciar a un jugador tocándolo o con /denunciar nombre motivo, y la denuncia lleva sus últimos mensajes como contexto. El equipo tiene comandos de GM por el chat: silenciar, banear, expulsar, anunciar, generar invitaciones y dar ítems. Quien es baneado ve el motivo y hasta cuándo al intentar entrar.

El servidor puede exigir un código de invitación en el registro, y así es como se va a cerrar la beta. Quien tenga una versión vieja del juego recibe un aviso y la dirección para bajar la nueva, en vez de caerse sin explicación.

El servidor también anota, sin nombre, correo ni IP, lo que necesitamos para balancear: cuánto tiempo juega la gente, si regresa al día siguiente y a la semana siguiente, qué reacciones usa, cuántas veces cambia de personaje, cuántos cofres abre por día. Eso va a decir si las llaves están tacañas o flojas. Para la carga, pusimos 50 bots en la ciudad del servidor de pruebas. Cada uno gastó cerca de 2 KB/s, el servidor usó 117 MB de memoria y la máquina apenas lo notó.

Por último, hicimos una revisión completa de la interfaz, que se volvió la fase 4 del roadmap: entrar al juego en menos pantallas, una barra con Personaje, Skills, Mochila, Mapa y Agenda, un manual para consultar cuando quieras en vez de un tutorial forzado, y botones del tamaño del dedo en el celular.

Próximo paso

Grupo formado antes de entrar a la sala, modificadores semanales de dungeon y traducción al inglés.

Cambios

  • 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.

← Volver al devlog