DUXPLIMA Documentation

Settings

Time controls, feature switches, highlights, sounds and messages, with defaults.

Shared/Config/Settings.luau.

Identity

FieldDefaultWhat it does
DebugtrueExtra [uxrCH] lines in Output
Currency"$"Symbol beside amounts
StartingBalance0Balance a new profile begins with
AssetFolder"Assets"Designer models folder under ServerStorage/<package>
Tag"ChessTable"The tag your table models carry

Messages holds three shop strings that the chess game itself never uses. They are there for a shop built on top of the same profile.

Time controls

TimeControls = {
    { key = "untimed",   label = "Untimed",    ms = nil },
    { key = "blitz5",    label = "Blitz 5m",   ms = 5 * 60 * 1000 },
    { key = "rapid10",   label = "Rapid 10m",  ms = 10 * 60 * 1000 },
    { key = "classic30", label = "Classic 30m", ms = 30 * 60 * 1000 },
},
DefaultTimeControl = "rapid10",
FieldWhat it is
keyThe internal id. Referenced by DefaultTimeControl. Do not change on an existing entry
labelWhat the button says
msTotal time per side in milliseconds. nil means no clock

Remove an entry to stop offering it. Add one for a control of your own, for example { key = "bullet1", label = "Bullet 1m", ms = 60 * 1000 }.

There is no increment or delay. Each side gets a total and it runs down on their turn.

Bot

FieldDefaultWhat it does
EloPresets{ 600, 1000, 1400, 1800, 2200 }The strength buttons
DefaultElo1000Which one starts selected
BotYieldEvery800How much searching happens before the bot pauses to breathe
BotMoveDelay0.75Pause before it plays, so it does not feel instant
BotLoadMinSeconds0.75Minimum time the loading screen stays up
BotLoadMaxSeconds8Longest wait for the bot's avatar before starting anyway

See The bot.

Presentation

FieldDefaultWhat it does
MoveTweenTime0.45Seconds a piece takes to slide to its square
ClockTickRate0.25How often the clock display updates
ResetDelay8Seconds the result holds before the board resets and players stand
Intro.EnabledtrueThe VS cut-scene
Intro.HoldSeconds5.1How long it holds

Feature switches

FieldDefaultWhat it does
AllowDrawstruePlayers may offer and accept a draw
AllowResigntrueThe resign button exists
ConfirmResigntrueResigning asks first
PromotionPickertrueThe player chooses the promotion piece. Off promotes to a queen
CameraLocktrueMove the camera to the table's mount while seated
ShowLastMovetrueHighlight the previous move
ShowChecktrueHighlight a king in check

CameraLock needs a Camera folder in the table model. Without one, the setting does nothing.

Highlights

Highlights = {
    Selection = { 62, 166, 230 },
    LastMove = { 231, 159, 107 },
    Check = { 231, 76, 60 },
},

Red, green, blue from 0 to 255. Highlights are applied to the plate's tiles, which only exist when the plate is a Model of per-square parts.

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

Cosmetic. The game starts after BotLoadMaxSeconds whether or not the avatar arrived.

Leaderstats and rating

FieldDefaultWhat it does
Leaderstats.EnabledtrueCreate the player-list columns
Wins, Losses, Draws, Elothose namesColumn names. false stops tracking that one
StartElo1000Where a new player begins
EloK32How much a game moves a rating
CountBotWinLosstrueWhether bot games move wins, losses and draws
RatedVsBotfalseWhether bot games move the rating

Covered in Rating and leaderboards.

Leaderboard

FieldDefaultWhat it does
EnabledtrueRun the in-world boards
WorkspaceFolder"uxrChessWorkspace"The world folder
BoardsFolder"Leaderboards"The folder of board models
Stats{ "Wins", "Losses", "Draws", "Elo" }One board each
TopN100Rows per board, capped at 100
RefreshSeconds60How often global boards re-read
DescendingtrueHighest first
Store.Prefix, Store.Version"uxrCH_LB_", "v1"The ordered store name

Rewards

FieldDefault
Rewards.Win0
Rewards.Draw0
Rewards.Loss0
Rewards.PayBotGamesfalse

Paid into this system's profile balance. To pay in your own currency, leave these at zero and use Hooks.

Sounds

Sounds = {
    Enabled = true,
    Volume = 0.5,
    Move = { "rbxassetid://…", "rbxassetid://…" },
    Capture = "",
    Check = "",
    GameEnd = "",
},

Move ships with seven real ids and plays one at random, which is what makes a game sound like a game rather than a metronome. Capture and Check fall back to the move sound when left empty, so every move is audible.

Result messages

Nine strings on the end-of-game banner. Plain English, safe to translate.

KeyShown
WinCheckmate, LossCheckmateCheckmate
WinTime, LossTimeA flag fell
OpponentResigned, YouResignedA resignation
DrawStalemate, DrawA drawn game
GameOverThe generic fallback

Profile

FieldDefaultWhat it does
Profile.Store"uxrCH_Profile_v1"The save slot. Changing it wipes balances, stats and ratings
Profile.AutosaveSeconds60Autosave period