Files
tekton/server/nakama
adtpdn decdb74ade chore: release version 2.3.5 and refactor lobby
Bump export_presets.cfg version to 2.3.5. Update CHANGELOG_DRAFT.md.
Refactor lobby.gd into LobbyChat, LobbyMainMenu, LobbyRoomList, LobbyRoom.
Move Nakama config to environment variables in nakama_manager.gd.
Derive auth_manager.gd encryption key from OS.get_unique_id().sha256_text().
Remove Steam email auth fallback. Require auth ticket.
Make GachaManager.pull() async in gacha_panel.gd.
Remove dummy wallet seeding. Add store_type to IAP payload.
Validate IAP receipts server-side in economy.lua.
Register gacha module in main.lua.
Clean backend_service.gd stubs.
Fix featured_banners type safety in gacha_manager.gd. Guards non-array responses.
Move tiles_armagedon_a1.res to assets/models/meshes/. Fix import fallback_path.
2026-05-22 12:08:11 +08:00
..
2026-05-19 17:30:29 +08:00
2026-05-19 17:30:29 +08:00

Nakama Server Setup for Tekton

This guide explains how to deploy the admin module to your Nakama server.

Files

  • core.js — Admin, user management, leaderboard, daily rewards, inbox, auth, shop catalog, purchases, and economy RPCs

Prerequisites

  1. Nakama server installed and running
  2. Node.js and TypeScript for compilation (if using TypeScript)

Deployment Steps

  1. Install dependencies:

    npm install -g typescript
    
  2. Compile TypeScript to JavaScript:

    cd server/nakama
    cp core.js /path/to/nakama/data/modules/
    
  3. Restart Nakama server

Option 2: Convert to Lua

If you prefer Lua, the TypeScript can be converted. See Nakama docs.

Configuration

In your nakama.yml or nakama-docker.yml:

runtime:
  path: /nakama/data/modules

core.js has an InitModule function. Nakama auto-discovers and calls it — no js_entrypoint needed.

Role System

User roles are stored in account metadata:

{
  "role": "player" | "moderator" | "admin" | "owner"
}

Setting Initial Admin

Run this in Nakama console or via API:

UPDATE users 
SET metadata = '{"role": "owner"}'
WHERE username = 'your_admin_username';

Or via Nakama HTTP API:

curl -X PUT "http://localhost:7350/v2/console/account/{user_id}" \
  -H "Authorization: Bearer {admin_token}" \
  -d '{"metadata": "{\"role\": \"owner\"}"}'

RPC Endpoints

Endpoint Required Role Description
admin_kick_player Host or Admin Kick from match
admin_ban_player Admin only Ban user
admin_unban_player Admin only Unban user
admin_get_ban_list Admin only Get all bans
admin_get_server_stats Host or Admin Server statistics
admin_end_match Host or Admin End current match
admin_set_user_role Owner only Change user roles

Security Notes

  1. Never trust the client - All admin operations are validated server-side
  2. Rate limiting - Consider adding rate limits for RPC calls
  3. Logging - All admin actions are logged with user ID
  4. Ban storage - Bans are stored in Nakama storage, not local files

Testing

  1. Create a test user with admin role
  2. Login with the admin user
  3. Press F10 in-game to open admin panel
  4. Verify kick/ban operations work

Troubleshooting

RPC Not Found

  • Check modules are loaded: look for "Tekton core module loaded" in logs

Permission Denied

  • Check user has correct role in metadata
  • Verify session is valid

Ban Not Working

  • Check Nakama storage permissions
  • Verify user_id is correct format (UUID)