87 lines
3.8 KiB
Markdown
87 lines
3.8 KiB
Markdown
# [ ADT ] Report: Nakama Friend System & Steam Auth Implementation
|
|
|
|
## Session Summary
|
|
Implemented comprehensive Nakama friend system with lobby invites, direct messaging, global chat, and Steam authentication fallback. Migrated all UI from dynamic node creation to scene-based architecture.
|
|
|
|
## Completed Changes
|
|
|
|
### Server (Nakama)
|
|
✅ Added `afterAuthenticateSteam` hook in `tekton_admin.js` to set Steam persona name as display name
|
|
✅ Added `rpcSendLobbyInvite` RPC for sending lobby invite notifications to friends
|
|
|
|
### Authentication
|
|
✅ Implemented Steam login fallback to email-style auth in `auth_manager.gd` for dev/testing without publisher key
|
|
✅ Set Steam username as display name with default password matching username
|
|
✅ Set `is_guest = false` and `auth_mode = "steam"` on Steam login
|
|
|
|
### Friend System
|
|
✅ Created `FriendManager.gd` autoload singleton for Nakama friend list, DM channels, and lobby invite notifications
|
|
✅ Registered FriendManager in `project.godot` autoload
|
|
✅ Added `nakama_id` field to LobbyManager player data
|
|
✅ Extended `request_room_info` RPC to include `nakama_id` for all players
|
|
|
|
### Lobby UI
|
|
✅ Added optional `InviteBtn` reference in `lobby.gd` with safe node resolution
|
|
✅ Connected `invite_btn.pressed` to open invite friends dialog
|
|
✅ Connected FriendManager signals for lobby invite notifications
|
|
✅ Added + Friend buttons in player slots with friend status display
|
|
✅ Implemented invite friends popup using `invite_friends_dialog.tscn` scene
|
|
✅ Implemented lobby invite notification popup using `lobby_invite_popup.tscn` scene
|
|
✅ Added social panel modal opening from lobby
|
|
|
|
### Social Panel
|
|
✅ Created `social_panel.tscn` with full UI layout (tabs, friend list, global chat, DM views)
|
|
✅ Created `social_panel.gd` with `@onready` references (no dynamic UI creation)
|
|
✅ Implemented friend list using `friend_row.tscn` instances
|
|
✅ Implemented global chat and DM tabs with UI nodes
|
|
✅ Handled DM history and message sending
|
|
|
|
### UI Scenes (All .tscn based, no .new() calls)
|
|
✅ Created `friend_row.tscn` + `friend_row.gd` (friend list row with chat/accept/decline/remove buttons)
|
|
✅ Created `invite_friends_dialog.tscn` + `invite_friends_dialog.gd` (invite friends popup)
|
|
✅ Created `invite_row.tscn` + `invite_row.gd` (single invite row with invite button)
|
|
✅ Created `lobby_invite_popup.tscn` + `lobby_invite_popup.gd` (lobby invite notification dialog)
|
|
|
|
### Profile Panel
|
|
✅ Fixed account type display to include Steam auth mode in `profile_panel.gd`
|
|
|
|
### Version & Changelog
|
|
✅ Updated `CHANGELOG_DRAFT.md` with all changes (7 player-facing entries)
|
|
✅ Bumped version to 2.1.9 via `generate_version_json.py`
|
|
✅ Updated `assets/data/version.json` with new version and changelog
|
|
|
|
## Files Modified
|
|
- `server/nakama/tekton_admin.js`
|
|
- `scripts/managers/auth_manager.gd`
|
|
- `scripts/managers/friend_manager.gd`
|
|
- `scripts/managers/lobby_manager.gd`
|
|
- `scripts/ui/profile_panel.gd`
|
|
- `scripts/ui/social_panel.gd`
|
|
- `scripts/ui/friend_row.gd`
|
|
- `scripts/ui/invite_friends_dialog.gd`
|
|
- `scripts/ui/invite_row.gd`
|
|
- `scripts/ui/lobby_invite_popup.gd`
|
|
- `scenes/lobby.gd`
|
|
- `project.godot`
|
|
- `CHANGELOG_DRAFT.md`
|
|
- `assets/data/version.json`
|
|
|
|
## Files Created
|
|
- `scenes/ui/social_panel.tscn`
|
|
- `scenes/ui/friend_row.tscn`
|
|
- `scenes/ui/invite_friends_dialog.tscn`
|
|
- `scenes/ui/invite_row.tscn`
|
|
- `scenes/ui/lobby_invite_popup.tscn`
|
|
|
|
## Version Bumped
|
|
**2.1.8 → 2.1.9** (2026-04-29)
|
|
|
|
## Player-Facing Changelog
|
|
- Added friend system with friend list, direct messaging, and lobby invitations
|
|
- Improved Steam login support
|
|
- Added Social Panel with Friends, Global Chat, and Direct Message tabs
|
|
- Added ability to add/remove friends from lobby player slots
|
|
- Added Invite Friends button to lobby
|
|
- Added lobby invite notifications
|
|
- Fixed account type display in profile panel
|