你的账号,你说了算
现在可以在一台设备上保持登录,不用每次都输密码,可以导出自己的数据,也可以在游戏里直接删除账号。我们还把所有面板调成了适合手指的大小。
为什么
在 App 里删除账号是 Apple 的要求,导出数据是玩家的权利(LGPD)。我们宁愿在 beta 之前就做好,也不想事后追着补。而且在手机上,一个按钮只有 4 毫米的面板,第一次游玩就会把人吓跑。
怎么运作
登录时,“在此设备上保持登录”这个选项会保存一把只属于该设备的密钥。服务器只存它的指纹,从不存密钥本身。每个账号最多 5 台设备,一把 30 天没用过的密钥会过期,从菜单退出账号会删除这把密钥。
在 选项 > 账号 里,“导出我的数据”会让服务器生成一个文件,包含所有属于你的东西:角色、队伍、背包、装备、仓库、公会和市场上的挂单。密码从不包含在内。要删除账号,你得输入自己的 username 来确认,之后它就真的消失了:你会退出公会,挂单会从市场撤下,username 重新变为可用。
在城镇里,可以对账号里的任何角色使用经验书和分配点数,不只是当前队伍里的角色,这也是设计一直以来的设想。
铁匠、厨房、仓库、市场、交易、星辰商店和公会的面板都换上了新边框。按钮和行至少 32 px,主要操作 44 px,按钮被禁用的原因直接写出来,不用靠把鼠标移上去才看到。底部栏和顶部栏用上了 Kenney 的图标,这些图标是公共领域(CC0)。
下一步
手机上清晰的画面,以及房间里一个可选的摇杆。
变更
- feat(account): roster tomes, device tokens, delete and export account
Item 30: use_tomes, add_stat and ascend accept any character of the account outside a room (equip and skills stay team-only); the inventory view carries v["roster"] with char_view + derived for every character outside the team. Character > Status gets an "Outros" picker in town. Item 32: opt-in "Manter conectado neste aparelho" on login. The server issues a device token (account id + 32 random bytes, only SHA-256 stored, label from platform, max 5 per account, expires after 30 days unused); the client keeps it in user://device.cfg per server and "Jogar" logs in with rq_device_login. Logout revokes it (rq_revoke_device, flushed before closing); rq_revoke_all_devices exists for a future password change. Banned accounts are refused. Item 33: Options > Conta exports the account's own data (no hash, salt or device hashes) to user://export_<username>.json and deletes the account after typing the username: leaves the guild, drops market listings, revokes sessions, frees username and e-mail, disconnects and logs "account_deleted" in the audit without personal data. PROTOCOL 20. Unit tests for device tokens and delete freeing the username; loot_test covers roster tomes in town vs room, remember/device login/revoke/ban, export, delete and registering the same name again.
- Port old service panels to UIPanel; add Kenney icons to the bar
Item 26 (touch sizes): Smith, Kitchen, Storehouse, Market, Trade, Gacha and Guild now extend UIPanel and use the standard 624x324 frame with the 32x32 close X. List rows and buttons are at least 32 px tall, primary actions (gacha pulls, trade lock/confirm/cancel, guild create/leave) are 44 px, body text is 10 and titles 12. Disabled-button tooltips became in-panel text. Market gets Browse/Sell tabs; the Kitchen opens on the spice tab from the Shop. Panels with live inputs (market, trade) keep their fields across server pushes by overriding refresh(). The trade invite still shows with the window closed. main.gd registers the panels directly in UiRoot, so PanelAdapter and _toggle are gone. UIPanel gains pin_top/pin_bottom/head_add and small widget helpers. Item 35 (icons, partial): Kenney CC0 icons (Board Game Icons, Game Icons, Game Icons Expansion) in assets/icons/ at 48 px, plus a speech bubble drawn by script. They sit above the 9 px labels on the 8 city bar buttons and Chat/Menu in rooms (badges kept), and on the key, gold and food chips. Equipment slots still have no icons. Registered in CREDITS.md.