DUXPLIMA Documentation

Setup

Install, tag a table, and take a shot.

Install with the standard four steps in Installing a system: drag uxrBilliardsSystem into ServerScriptService and press Play once.

Then build a table.

1. Build the table model

The full contract is in Building a table. The two required parts:

PartPurpose
SurfaceThe playable cloth. Its size and rotation define the whole play area
JoinPadWhere the prompt appears

Add Pockets, Seats and CameraPart too; the game is much better with all three.

2. Tag it

Tag the model BilliardsTable with the Studio tag editor. Discovery is by tag, so the model can live anywhere in the world.

3. Check the balls

The ball parts ship inside the package at ServerScriptService/uxrBilliardsSystem/Storage/Assets/Balls, named WhiteBall and 1 through 15.

They are cloned per table at startup. Re-skin them there, once, for every table.

4. Press Play and join

Walk to the join pad and press Join Pool Game. Your movement is frozen and you are placed at a seat.

Alone, you get solo practice and an AI option. With a second player, the match starts.

5. Take a shot and watch the aim line

Aim, set the power, shoot. The line the client draws should match where the balls actually go, because both come from the same simulation.

If they disagree, the Surface part is probably including the wooden rail: the simulation bounces off the edge of the surface, not off your model's cushions.

6. Tune the feel

Three numbers in Shared/Billiards/Config.luau decide how the game plays:

FieldDefaultTry
params.friction1.8Lower for a faster, heavier table
params.restitution0.70Lower for less pinball off the cushions
maxPower28Higher for a more dramatic break

Change one at a time and break a rack after each.

7. Price the shop

The five cues ship at zero coins, so the shop gives everything away. Set real costs in Shared/Billiards/Cosmetics.luau before launch, or the coin payouts have no purpose. See Rating, rewards and cosmetics.

8. Set the identity fields

FieldDefaultChange it to
Config.ai.FallbackUsernamea specific accountOne of yours
Config.ai.difficulty"medium"Whatever suits your players
Config.coinProductsemptyYour Developer Product ids, if selling coins
Config.vipGamepass0Your Gamepass id, if you have one

9. Publish

Leaderboards only accumulate in the live game. In Studio the global boards read empty, which is correct.