MushRog

Готовим закрытую бету

15 октября 2026 г. arquiteturadesignbastidores

Машинный перевод, ещё не проверен.

Мы начали этап подготовки игры к людям со стороны. Ничего из этого не видно на экране боя, но именно это отличает тест между друзьями от беты: вернуться после вылета, модерировать чат и измерять, что происходит.

Зачем

Собственная графика начнётся только в апреле 2027, а до тех пор можно сделать всё, что нужно бете и не зависит от графики. Поэтому мы перестроили роадмап: теперь есть этап только про бету и этап только про интерфейс, до графики.

Как это работает

Если соединение обрывается посреди комнаты, твоя команда стоит там 60 секунд. Игра сама пытается вернуться каждые 2 секунды, и когда получается, ты возвращаешься в ту же комнату с той же командой, без повторного ввода пароля. Мы проверили это, специально обрывая соединение бота внутри Toca, а также через интернет, против тестового сервера. Урон, удары и сообщение о зачищенной комнате теперь идут по каналу с гарантированной доставкой; раньше потерянный в интернете пакет мог стереть число урона.

В чате есть фильтр мата на португальском, английском и русском, который понимает ударения и «l33t». Повторяющиеся подряд сообщения блокируются, а три нарушения за 10 минут заглушают человека на 10 минут. На игрока можно пожаловаться, коснувшись его или командой /denunciar nome motivo, и жалоба прикладывает его последние сообщения как контекст. У команды есть GM-команды через чат: заглушить, забанить, выгнать, объявить, генерировать приглашения и выдавать предметы. Забаненный при попытке войти видит причину и срок.

Сервер может требовать код приглашения при регистрации, и именно так закроется бета. Тем, у кого старая версия игры, сообщают об этом и дают адрес для скачивания новой, вместо того чтобы вылетать без объяснений.

Сервер также записывает, без имени, e-mail и IP, то, что нужно нам для баланса: сколько времени люди играют, возвращаются ли на следующий день и на следующей неделе, какие реакции используют, сколько раз меняют персонажа, сколько сундуков открывают в день. Это покажет, скупы ли ключи или щедры. Для проверки нагрузки мы посадили 50 ботов в город тестового сервера. Каждый тратил около 2 KB/s, сервер использовал 117 MB памяти, а машина почти не заметила.

Наконец, мы сделали полный пересмотр интерфейса, который стал этапом 4 роадмапа: входить в игру через меньшее число экранов, панель с Personagem, Skills, Bolsa, Mapa и Agenda, руководство, которое можно открыть когда захочешь, вместо принудительного туториала, и кнопки размером с палец на телефоне.

Следующий шаг

Группа, собранная до входа в комнату, еженедельные модификаторы данжей и перевод на английский.

Изменения

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

← Назад к девлогу