Files
tekton/TEMP_REPORT.md
T
2026-04-29 01:36:49 +08:00

3.8 KiB

[ 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