Files
tic-tac-toe/plugins/main.go
Vishesh 'ironeagle' Bangotra 0fb448dd45 feat: add rpc_find_match for basic 2-player matchmaking
- Implement rpc_find_match Nakama RPC function
- Search for existing authoritative TicTacToe matches via MatchList
- Return first match with available slot (size < 2)
- Create new match using MatchCreate when none available
- Add request/response structs for future extensibility
- Log match search, selection, and creation flow
- Gracefully handle optional JSON payload and invalid input
2025-11-26 16:09:48 +05:30

45 lines
1.0 KiB
Go

package main
import (
"context"
"database/sql"
"github.com/heroiclabs/nakama-common/runtime"
)
func HelloWorld(
ctx context.Context,
logger runtime.Logger,
db *sql.DB,
nk runtime.NakamaModule,
payload string,
) (string, error) {
logger.Info("HelloWorld RPC called — payload: %s", payload)
return `{"message": "Hello from Go RPC!"}`, nil
}
// Required module initializer
func InitModule(
ctx context.Context,
logger runtime.Logger,
db *sql.DB,
nk runtime.NakamaModule,
initializer runtime.Initializer,
) error {
if err := initializer.RegisterRpc("hello_world", HelloWorld); err != nil {
logger.Error("Failed to register RPC: %v", err)
return err
}
if err := initializer.RegisterMatch("tictactoe", NewMatch); err != nil {
logger.Error("Failed to register RPC: %v", err)
return err
}
if err := initializer.RegisterRpc("rpc_find_match", rpcFindMatch); err != nil {
logger.Error("RegisterRpc rpc_find_match failed: %v", err)
return err
}
logger.Info("Go module loaded successfully!")
return nil
}