DUXPLIMA Documentation

Settings

Board sizes, timers, rewards, sounds and messages, with defaults.

Shared/Config/Settings.luau.

Identity and world

FieldDefaultWhat it does
DebugfalseExtra [uxrTTT] lines in Output
Currency"$"Symbol beside amounts in the interface
StartingBalance0Balance a new profile begins with
AssetFolder"Assets"Designer models folder under ServerStorage/<package>
Tag"TicTacToeTable"The tag your table models carry
PhysicalGrid5Cells across the physical plate. See Building a table

Board sizes

FieldDefaultWhat it does
BoardSizes{ 3, 4, 5 }Sizes offered on the seat panel
WinLengths{ [3] = 3, [4] = 4, [5] = 4 }Marks in a row needed to win, per size
DefaultSize3Which size a free table starts on

WinLengths must have an entry for every size in BoardSizes. Five in a row on a 5x5 board is possible but nearly always a draw, which is why the shipped value is four.

Timing

FieldDefaultWhat it does
MoveSeconds20Seconds per move. nil disables the timer
OnTimeout"automove""automove" plays a random empty cell, "loseturn" passes
ClockTickRate0.25How often the countdown updates
BotMoveDelay0.6Pause before the bot replies, so it does not feel instant
ResetDelay6Seconds the result stays up before the board clears

OnTimeout = "loseturn" on a two-player game can loop: if neither player ever moves, turns pass back and forth until somebody stands up. "automove" always terminates.

Bot

FieldDefaultWhat it does
DifficultiesEasy, Medium, ImpossibleSearch depth and randomness per level
DefaultDifficulty"Medium"Which button starts selected
BotMaxThinkSeconds1.0Hard cap on thinking time per move
BotLoadMinSeconds0.5Minimum time the loading splash stays up
BotLoadMaxSeconds8Longest wait for the bot avatar before starting anyway

Covered in The bot.

The NPC

FieldDefaultWhat it does
Npc.UseFriendAvatartrueDress the bot as a random friend of the player
Npc.FallbackUsernamea specific accountUsed when no friend is available

The avatar is cosmetic. A slow or failed load never blocks the game; after BotLoadMaxSeconds the game starts regardless.

The intro

FieldDefaultWhat it does
Intro.EnabledtrueShow the VS cut-scene when a game starts
Intro.HoldSeconds3How long it holds

Leaderstats

FieldDefaultWhat it does
Leaderstats.EnabledtrueCreate the player-list columns
Wins, Losses, Drawsthose namesColumn names. Rename to match your game
CountBotGamestrueWhether bot games move these numbers
StartValuesall 0Where a new player starts

There is no ELO or rating. Three counters, deliberately.

Setting CountBotGames = false is the honest choice if you also run a leaderboard: a player can farm an unlimited number of wins against Easy.

Leaderboard

FieldDefaultWhat it does
Leaderboard.EnabledtrueRun the in-world boards
WorkspaceFolder"uxrTicTacToeWorkspace"The world folder
BoardsFolder"Leaderboards"The folder of board models inside it
Stats{ "Wins", "Losses", "Draws" }One board per entry
TopN100How many rows are kept
RefreshSeconds60How often boards re-read the store
DescendingtrueHighest first
Store.Prefix, Store.Version"uxrTTT_LB_", "v1"The ordered store name

See Stats and leaderboards.

Rewards

FieldDefaultWhat it does
Rewards.Win0Currency paid to the winner
Rewards.Draw0Paid to both on a draw
Rewards.Loss0A consolation payout
Rewards.PayBotGamesfalseWhether bot games pay at all

All zero means nothing is paid, which is the shipped state. Payouts go to the profile balance this system keeps. To pay in your own currency instead, leave these at zero and use Hooks.

Highlights

Highlights = {
    WinLine = { 95, 220, 130 },
    LastMove = { 231, 159, 107 },
},

Colours as red, green, blue from 0 to 255.

Sounds

FieldDefaultPlays
Sounds.EnabledtrueMaster switch
Volume0.5
Move""A mark being placed
Win""A win
Draw""A draw
UIClick""Interface buttons

Each accepts one asset id, or a list of ids to pick from at random.

Profile

FieldDefaultWhat it does
Profile.Store"uxrTTT_Profile_v1"The save slot. Changing it wipes everyone
Profile.AutosaveSeconds60Autosave period

Messages

Messages holds the three in-play strings, ResultMessages the five end-of-game ones. Both are plain English text and safe to translate.

KeyShown
Messages.WaitingOpponentSeated, nobody opposite
Messages.YourTurn, TheirTurnDuring play
ResultMessages.Win, Loss, DrawOn the result banner
ResultMessages.OpponentResignedThe other player stood up or left
ResultMessages.GameOverThe generic fallback