Интерфейс, который сам находится
Мы переделали путь того, кто впервые открывает игру: от экрана заголовка до первой комнаты. Нижняя панель теперь место, где всё находится. Раньше половина игры существовала только для тех, кто знал, где искать.
Зачем
Мы прошлись по каждому экрану и сравнили то, что предлагает сервер, с тем, что показывает интерфейс. Список получился пугающим. Esc обрывал сессию, а «назад» на Android закрывало приложение. Трата 3 ключей на легенду не требовала подтверждения. Чтобы надеть вещь, нужен был тултип, которого на телефоне нет. Порядок скиллов на панели был просто порядком, в котором код хранил данные. А создание аккаунта проходило через четыре экрана, прежде чем можно было играть.
Как это работает
На экране заголовка есть Jogar и Treino. Логин запоминает пользователя и отправляется по Enter. Тот, у кого уже есть команда, сразу попадает в город с последней использованной командой, а новый аккаунт проходит мастер «Sua dupla»: выбираешь два класса, видишь реакцию, которую они делают вместе, настраиваешь внешность и оказываешься в городе.
В городе в нижней панели есть Ficha, Skills, Bolsa, Mapa, Agenda, Guilda, Chat и Menu, с красными точками, когда есть что сделать (очки для распределения, сундук, который уже можно открыть, бесплатная на этой неделе легенда). В комнате остаются скиллы, два персонажа, Chat и Menu. Выход из комнаты переехал в Menu, с подтверждением, а когда комната пройдена, появляется большая кнопка «Voltar à cidade». Открыта может быть только одна панель: Esc и «назад» на телефоне закрывают открытую, а если ничего не открыто, открывают Menu. Отключения от игры больше не происходит.
В Ficha есть атрибуты с +1 и +5, тома, вознесение и экипировка с куклой посередине. Касание слота показывает подходящие вещи, а разница в атрибутах подсвечена зелёным и красным. В Skills дерево сгруппировано на изученные, доступные и заблокированные (с причиной), и ты выбираешь, какие пойдут на панель в комнате и в каком порядке. В Bolsa вкладки предметов, экипировки, сундуков и еды, а тома используются прямо оттуда, на любом персонаже команды.
Mapa показывает город: тапнешь по порталу или зданию, и персонаж идёт туда, обходя дома. В Agenda собраны Рейд, четыре легенды (бесплатные или платные на этой неделе), модификатор данжей, ключи и накопленные сундуки. Команду можно менять, редактировать, удалять, а персонажа создавать, не выходя из игры. Касание игрока в городе открывает карточку с его командой, гильдией и экипировкой, с кнопками Trocar, Convidar pro grupo, Convidar para a guilda и Denunciar. В Chat вкладки Perto, Todos, Grupo, Guilda и Sistema, с историей.
Принудительного туториала мы не делали. Вместо него есть Manual из 13 коротких глав (клавиша H или Menu) и 17 подсказок, каждая из которых появляется один раз, в нужный момент, с кнопкой «Saiba mais», открывающей главу. Treino остаётся местом, где можно потренировать смену и реакции.
В Opções есть тряска экрана, числа урона, язык, горячие клавиши, кредиты заимствованной арт-графики и версия игры, а Loja estelar показывает комиссии. Сообщения сервера теперь выводятся предупреждением сверху экрана, а не пропадают в чате.
Следующий шаг
Кнопки размером с палец в старых панелях и чёткий экран на телефоне.
Изменения
- feat(client): UI foundation for the interface phase
UiRoot keeps one panel open at a time, a modal stack, toasts and the top status strip; Esc and the Android back button close the open modal, panel or chat and otherwise open the Menu, never disconnecting (quit_on_go_back off). UIPanel is the standard frame for new panels: 624x324 above the bar, title with a 32 px close button, tabs, scrolling content and touch-sized helpers. Old panels plug in through PanelAdapter. The bottom bar has eight city buttons (Character, Skills, Bag, Map, Agenda, Guild, Chat, Menu) with red badges computed from the bag view, and Chat and Menu in rooms; leaving a room moved to Menu with a confirmation, plus a big Back to town button when a room ends. Orbs in town show the lead character's real HP and MP; the inventory view now carries derived stats and active food. Notices are toasts too. C K B I M J G shortcuts, Q swaps, E only with --dev. Title screen with Play, Training and dev modes behind --dev; login remembers the username, submits on Enter, can show the password and validates locally; a returning account goes straight to town with its last team. A new login tells the old session it was replaced instead of it trying to reconnect, the reconnect overlay counts down and can give up, disconnects show a modal, and a paid legend attempt asks for confirmation before spending keys. Protocol 18.
- feat(client): Character and Skills panels with a configurable room bar
Character (C) replaces the old Team panel: an A/B selector for the two team members and three tabs. Status shows level and XP, tomes from the bag with Use 1 / Use 10 / Up to the gate, attribute points with +1/+5 and the next point's cost, derived stats and the ascension gate with its cost. Equipment puts the six slots around a large paper doll of the character; tapping a slot opens a drawer with the current piece and the bag pieces the class can wear, with the stat difference in green and red and Equip / Unequip buttons. Job shows job level, points and the second job choice behind a confirmation. Skills (K) lists the job tree grouped as learned, available and locked (with the reason), with Learn and +1 and their costs. The room bar at the bottom has six slots: tap an active skill, then a slot. The order is saved per character in user://skillbar.cfg and _active_skills() follows it, so the room bar and keys 1-6 match; free slots take the remaining skills in the old order. Both panels only look in a room. The armory view now carries affixes so the client can compute stat differences, the character badge also counts payable gates, and team_ui.gd is gone. tools/screenshot.gd opens any registered panel and takes --tab, --scroll and --set.
- feat: Teams menu, duo wizard, player card and chat tabs
Server: rq_switch_team swaps the active team in town without leaving it (same pid and position, city info and look re-sent, welcome_city plus inventory and a new teams_rpc reply). rq_leave_city drops the player out of town back to the account screens without disconnecting. rq_edit_team, rq_delete_team and rq_delete_character go through new AccountStore methods: a character in a team cannot be deleted and its gear is unequipped back to the account, the team in use cannot be deleted, and editing the team in use rebuilds the session in place. In town these reply with teams_rpc so the account screens do not pop up. The city static info now carries a player card (both characters with class, level and gear, plus the guild tag). Protocol 19. Client: Menu > Teams panel (TeamsPanel) lists the 3 teams and 6 characters with Play with this team, Edit, Delete and New character (leaves town, opens the creation screen and comes back with the same team). New accounts get the one-screen "Your duo" wizard: 5 class cards with role, weapon and elements, a strip with the reactions the pair makes, quick random looks and suggested names (role, elements and names live in data/classes.json), then create_character x2, create_team and enter_city. Tapping a player in town opens a card with their active character, partner, guild and gear and Trade, Party, Guild invite and Report. The chat has Near, All, Party, Guild and System tabs with 100 lines each, sends to the open tab, keeps /g /gu /p /denunciar, and moves to the top while typing on mobile. Tests: AccountStore edit/delete unit tests; loot_test switches to a second team, checks peer_chars, position and the guild tag on the card, refuses deleting the team in use, and leaves and re-enters town.
- feat(client): manual, contextual hints, options and gacha rates
Manual (Codex) with 13 chapters in data/manual.json, bilingual in the data (paragraphs, headings and tables in PT and EN). ManualPanel lists the chapters and opens each one with a back button; it opens from the Menu (city, room and training), the H key and the "Learn more" of every hint. Team and Elements chapters have Train now, which starts the offline Training only outside an online session. Hints: the 17 first-session triggers from the UX review plus one for Training, as a small card above the bar with Ok and Learn more, one at a time (queued), hidden while a panel or modal is open, and shown once per account (user://hints_<user>.cfg, "treino" offline). main.gd only forwards city, portal, room, sim events and the bag view. Options panel replaces the placeholder modal: interface scale (saved; disabled until the anchored canvas_items layout, since content_scale_factor under viewport stretch crops the HUD), screen shake and damage numbers (respected by main.gd), language (reloads outside a session, otherwise applies on next start), show hints again, the shortcut table, CREDITS.md rendered as text (already in every export include_filter) and version + protocol. application/config/version is now set and a test keeps it equal to the export presets. The star shop gets a Rates section read from data/gacha.json: 5 star 2%, guarantee at 30 per banner type, no 50/50, duplicates to fragments. tools/screenshot.gd can open manual/options through UiRoot, show the gacha rates and take --ui-scale.
- feat(client): Bag, Map and Agenda panels
Bag (BagPanel) replaces the old bag_ui: gold and keys in the title and four tabs. Items is a grid whose detail uses tomes on a team character, eats food or points to the Market; Gear lists every piece with who wears it or whether it sits in Storage; Chests shows cost, expiry and Open; Food shows the active dish and drink with time left plus food to eat. Map (MapPanel) draws the town from data/city.json with buildings, numbered portals (name, type, minimum level in the side list) and you. Tapping a destination closes the panel and walks there; CityState.route picks a straight line or a one or two point detour around buildings, covered by a test that walks to every portal and building from several starts. In a room it only shows a message. Agenda (AgendaPanel) reads the new Hub op agenda/view: incursion status, countdown, theme, chest, chests left and top 3; the four legends with minimum level and free this week or 3 keys; the weekly dungeon modifier; keys; pending chests. It replaces the incursion dump into chat. The Agenda badge counts an open incursion plus free legends the team can already enter, and the view is requested on entering town. Fixes the incursion never opening: open_days came from JSON as floats and Array.has(3) did not match 3.0. Armory view now says where a piece is stored and who wears it; chest views carry the chest id for Loc. screenshot.gd opens bag, map and agenda through UiRoot and takes --tab, --detail and --seed (fills the host account for prints).