Parties, dungeon week and the game in English
Three things for the beta: you can form a party before entering a room, dungeons get a different modifier every week, and the whole game can be played in English.
Why
Until now, two people who wanted to play together had to step into the portal and hope they landed in the same room. The modifiers have been in the design from the start, so the same dungeon doesn’t feel identical every week. And the design has called for four languages since the first line, and the later translation comes in, the more it costs.
How it works
To form a party, tap someone in town and pick “Invite to party”. It holds up to 4. When the leader enters a portal, everyone in the party who is in town goes along to the same room, and anyone who enters alone later lands in the room where the party already is. Party chat is /p. Without a party, the game looks for a room with players of a similar level (in bands of 10 levels) before filling the fullest one.
Each week has one modifier, the same for every dungeon: Fury (enemies hit 25% harder), Fortified (35% more health), Haste (30% faster), Fortune (a bit more health and double gold) and Elemental Storm. It shows at the top of the room and in the Raid info.
The menu has a “Idioma / Language” option, and the first time the game picks one from the device’s language. The whole interface now runs from a string table with more than 500 entries. Content names (items, skills, classes, monsters, rooms, recipes, cosmetics) also have English versions. Russian and Chinese will come later as new columns in the same table. Some messages the server builds on its own, like loot descriptions and announcements, are still in Portuguese.
Next step
The interface phase: the entry flow, the new bar and the manual.
Changes
- feat(rooms): parties, level-band matchmaking and weekly dungeon modifiers
Parties of up to four: invite by tapping a player in the city, accept from a popup, party chat with /p. When the leader takes a portal, the members who are in the city go into the same instance; a member taking the portal alone joins the instance where the party already is. Solo matchmaking prefers an instance in the same level band (tens of levels), then the fullest one; a party prefers an empty room of its own. A weekly modifier from data/modifiers.json (Furia, Fortificados, Pressa, Fortuna, Tempestade elemental) changes enemy health, damage, speed or gold in every dungeon and shows in the room header and the Incursao info. Protocol 17.
- feat(client): Portuguese and English UI (i18n)
All client UI text now goes through a string table: i18n/strings.csv (columns keys,pt_BR,en; 501 snake-case keys, RU/ZH later are new columns), registered in project.godot with pt_BR as fallback. Server notice codes, account errors, rejected-command reasons and food buffs map to key families (notice_*, acc_err_*, reason_*, buff_*). Content names stay Portuguese in data/*.json; data/i18n/en.json holds the English names (items, skills, classes, jobs, mobs and their attacks, rooms and hints, dungeon/incursion layouts, legend phases, portals, buildings, recipes, cosmetics and banners, elements, reactions, chests, grades, affixes, equipment bases, slots, region, farm zones and nodes, hair colors and styles). client/loc.gd (Loc) picks the name for the current locale, falls back to the data name, and can translate a PT text that arrived without an id (room name in the sim meta, layout titles, legend phase texts) by reverse lookup. The main menu has an "Idioma / Language" picker saved to user://settings.cfg ([ui] locale); default is pt_BR when the OS locale starts with "pt", else en. Changing it reloads the scene so HUD, chat and panels rebuild in the new language. --lang=xx forces a locale without saving (screenshots, tests). Chat also accepts /report. tests/test_i18n.gd checks that every key the client uses exists, that no CSV key is unused, that both columns are filled with matching placeholders, and that en.json covers every id of each category. The generated .translation files are gitignored (rebuilt by --import). Pending (still Portuguese in EN): - text formatted by the server: loot_rpc lines, announcements, market sale notices, incursion chest name and drop preview, chest names in the Bag (view has no chest id), legend/explore texts built server-side - gear stat strings (Gear.describe in core) and gear names in market listings, trade and storage views that come without the base id - market search matches the Portuguese item names on the server - guild log dates use day/month in both languages - the report reason sent from the town menu stays PT (it is moderation data)