DUXPLIMA Documentation

Configuration

The two configuration files, what belongs in each, and every field at a glance.

This system has two configuration files, which is worth knowing before you go looking for a field.

FileHolds
Shared/Billiards/Config.luauEverything about the game: physics, rules timing, AI, rewards, rating, leaderboards, Robux
Shared/Config/Settings.luauThe skeleton settings: debug, currency symbol, starting balance, asset folder, shop message wording

Almost everything you want is in the first one.

Shared/Config/Settings.luau

FieldDefaultWhat it does
DebugfalseExtra [uxrBL] lines in Output. Errors always show
Currency"$"Symbol beside prices
StartingBalance0Coins a new player begins with
AssetFolder"Assets"The folder under Storage. Leave as is
Messages.PurchaseSuccess"Purchased $item."$item is replaced with the item name
Messages.Insufficient"You can't afford $item."
Messages.Unknown"That item doesn't exist."

Shared/Billiards/Config.luau

Table

FieldDefault
tableConfig.pocketRadius0.45
tableConfig.ballRadius0.22

Physics

FieldDefault
params.friction1.8
params.restitution0.70
params.spinFactor3.0
params.dt1/240
params.stopThreshold0.03
params.maxTime12
params.sampleEvery4

See Physics and aiming.

Shot

FieldDefault
shotClockSeconds30
soloShotClockfalse
maxPower28
minPower2

Sound

FieldDefault
sounds.singleFour ids, picked at random
sounds.holeThree ids, picked at random
sounds.volume0.45
sounds.minImpact0
sounds.fullImpact13
sounds.minVolScale0.6
sounds.clusterWindow0.06

AI

FieldDefault
ai.difficulty"medium"
ai.aimError{ easy = 0.09, medium = 0.045, hard = 0.015 }
ai.thinkSeconds1.0
ai.UseFriendAvatartrue
ai.FallbackUsernamea specific account

See The AI opponent.

Economy and rating

FieldDefault
rewards.winCoins50
rewards.playCoins5
elo.start1000
elo.K32
leaderstats.enabledtrue
leaderstats.elo"Elo"
leaderstats.wins"Wins"
coinProducts{}
vipGamepass0

Leaderboards

FieldDefault
leaderboard.stats{ "Wins", "Losses", "Draws", "Elo" }
leaderboard.topN25
leaderboard.refreshSeconds60
leaderboard.storePrefix"uxrBL_LB_"
leaderboard.storeVersion"v1"
leaderboard.workspaceFolder"uxrBilliardsWorkspace"
leaderboard.boardsFolder"Leaderboards"

See Rating, rewards and cosmetics.

The cosmetics catalogue

Cues are not in either settings file. They live in Shared/Billiards/Cosmetics.luau as a list, because each entry carries code-shaped data (how the cue is applied) rather than plain values.

Where the specs are

Shared/Billiards/_spec/ and Server/Billiards/_spec/ hold the shipped test cases for the physics, the rules, the engine, the aim maths, the rating and the leaderboard rendering.

They need the Roblox API, so they run inside Studio with the test project connected:

require(game.ReplicatedStorage.uxrBilliardsSystem.Billiards._spec.Run)()

The everyday Rojo project excludes them, so they never reach a published place.