Files
tekton/docs/rpc_migration_audit.md
T
2026-05-19 17:30:29 +08:00

5.9 KiB

Nakama JS → Lua Migration Audit

JS RPC Registration (core.js.bak lines 12-72)

# JS RPC Name JS Function Lua Module Lua RPC Name Status
1 admin_kick_player rpcAdminKickPlayer admin.lua lua_admin_kick_player
2 admin_ban_player rpcAdminBanPlayer admin.lua lua_admin_ban_player
3 admin_unban_player rpcAdminUnbanPlayer admin.lua lua_admin_unban_player
4 admin_get_ban_list rpcAdminGetBanList admin.lua lua_admin_get_ban_list
5 admin_get_server_stats rpcAdminGetServerStats admin.lua lua_admin_get_server_stats
6 admin_get_player_list rpcAdminGetPlayerList admin.lua lua_admin_get_player_list Fixed
7 admin_end_match rpcAdminEndMatch admin.lua lua_admin_end_match
8 admin_set_user_role rpcAdminSetUserRole admin.lua lua_admin_set_user_role
9 admin_list_users rpcAdminListUsers admin.lua lua_admin_list_users
10 admin_delete_users rpcAdminDeleteUsers admin.lua lua_admin_delete_users Bug fixed
11 admin_topup_gold rpcAdminTopupGold admin.lua lua_admin_topup_gold
12 admin_clear_global_chat rpcAdminClearGlobalChat admin.lua lua_admin_clear_global_chat
13 get_user_profile rpcGetUserProfile user.lua lua_get_user_profile
14 update_user_profile rpcUpdateUserProfile user.lua lua_update_user_profile
15 search_users rpcSearchUsers user.lua lua_search_users
16 get_leaderboard_stats rpcGetLeaderboardStats leaderboard.lua lua_get_leaderboard_stats
17 admin_update_stats rpcAdminUpdateStats leaderboard.lua lua_admin_update_stats
18 admin_delete_stats rpcAdminDeleteStats leaderboard.lua lua_admin_delete_stats
19 admin_sync_leaderboard rpcAdminSyncLeaderboard leaderboard.lua lua_admin_sync_leaderboard
20 submit_score rpcSubmitScore leaderboard.lua lua_submit_score
21 sync_leaderboard rpcSyncLeaderboard leaderboard.lua lua_sync_leaderboard
22 change_credentials rpcChangeCredentials user.lua lua_change_credentials
23 reset_stats rpcResetStats leaderboard.lua lua_reset_stats
24 send_lobby_invite rpcSendLobbyInvite user.lua lua_send_lobby_invite
25 send_friend_request rpcSendFriendRequest user.lua lua_send_friend_request
26 claim_daily_reward rpcClaimDailyReward daily_rewards.lua lua_claim_daily_reward
27 get_daily_reward_state rpcGetDailyRewardState daily_rewards.lua lua_get_daily_reward_state
28 set_daily_reward_config rpcSetDailyRewardConfig daily_rewards.lua lua_set_daily_reward_config
29 get_daily_reward_config_admin rpcGetDailyRewardConfigAdmin daily_rewards.lua lua_get_daily_reward_config_admin
30 admin_send_mail rpcAdminSendMail inbox.lua lua_admin_send_mail
31 admin_list_mail rpcAdminListMail inbox.lua lua_admin_list_mail
32 admin_update_mail rpcAdminUpdateMail inbox.lua lua_admin_update_mail
33 admin_delete_mail_server rpcAdminDeleteMailServer inbox.lua lua_admin_delete_mail_server
34 get_mail rpcGetMail inbox.lua lua_get_mail
35 claim_mail_reward rpcClaimMailReward inbox.lua lua_claim_mail_reward
36 delete_mail rpcDeleteMail inbox.lua lua_delete_mail
37 save_mail_state rpcSaveMailState inbox.lua lua_save_mail_state
38 purchase_item rpcPurchaseItem economy.lua lua_purchase_item
39 get_shop_catalog rpcGetShopCatalog economy.lua lua_get_shop_catalog
40 buy_currency rpcBuyCurrency economy.lua lua_buy_currency
41 admin_set_featured_banners rpcAdminSetFeaturedBanners economy.lua lua_admin_set_featured_banners
42 admin_get_featured_banners rpcAdminGetFeaturedBanners economy.lua lua_admin_get_featured_banners

Hooks

JS Hook JS Function Lua Module Status
registerAfterAuthenticateSteam afterAuthenticateSteam core.lua Fixed

Non-RPC Items

Item Lua Module Status
leaderboardCreate("global_high_score") core.lua
ADMIN_ROLES definition utils.lua
isAdmin / isMatchHost helpers utils.lua
requireAdmin utils.lua
requireAdminOrHost utils.lua

Bugs Fixed This Session

  1. admin_get_player_list RPC was missing — Added to admin.lua
  2. afterAuthenticateSteam hook was missing — Added to core.lua via nk.register_req_after
  3. admin_delete_users metadata bugpcall(nk.json_decode, ...) result was discarded, so the admin-role guard never worked. Fixed to assign decoded result.
  4. core.lua had stale duplicate stubs — Duplicate rpc_get_user_profile and rpc_admin_kick_player registrations conflicted with user.lua and admin.lua. Removed.

Final Module Map

server/nakama/
├── main.lua              # Entrypoint - requires all modules
├── lua/
│   ├── utils.lua         # Shared helpers (is_admin, require_admin, etc.)
│   ├── core.lua          # Steam auth hook + leaderboard creation
│   ├── admin.lua         # 12 admin RPCs
│   ├── user.lua          # 6 user RPCs
│   ├── daily_rewards.lua # 4 daily reward RPCs
│   ├── leaderboard.lua   # 7 leaderboard RPCs
│   ├── inbox.lua         # 8 inbox/mail RPCs
│   └── economy.lua       # 5 economy/shop RPCs

Total: 42 RPCs + 1 auth hook = full 1:1 parity with core.js.bak