Hey everyone!
I recently made an 8 Ball Pool System
The system is made to be clean, customizable, and easy to set up. It includes 50+ configs inside PoolConfig, supports Mobile, Console, and PC, and lets you easily change the table model to any pool table or stick you want.
I’d really appreciate feedback on the gameplay feel, controls, setup, and anything that could be improved.
Solo test it here:
Can be purchased here:
https://create.roblox.com/store/asset/107916745555223
--[[
8-Ball Pool System
Version 1.5
Made By @TheRealxLucas
--]]
local PoolConfig = {}
PoolConfig.TableName = "PoolTable"
PoolConfig.TablesFolderName = "PoolTables"
PoolConfig.BallsFolderName = "Balls"
PoolConfig.PocketsFolderName = "Pockets"
PoolConfig.CueBallName = "CueBall"
PoolConfig.PlayingSurfaceName = "PlayingSurface"
PoolConfig.PoolStickName = "PoolStick"
PoolConfig.SoundsFolderName = "Sounds"
PoolConfig.MaxPlayers = 2 -- Max players per table, set to 1 for single player mode, set to 2 for multiplayer mode
PoolConfig.MinShootPower = 2
PoolConfig.MaxShootPower = 80
PoolConfig.PowerChargeSeconds = 1.65
PoolConfig.StopVelocity = 0.08
PoolConfig.StopAngularVelocity = 0.75
PoolConfig.StillTimeRequired = 0.75
PoolConfig.ShotCooldown = 0.45
PoolConfig.TurnShootSeconds = 35
PoolConfig.QueueCancelDistance = 99999
PoolConfig.QueueCancelCheckSeconds = 0.25
PoolConfig.MaxShotSeconds = 14
PoolConfig.AllowBallColorFallback = true
PoolConfig.PreferBallVisualColor = true
PoolConfig.SimulationStep = 1 / 180
PoolConfig.MaxSimulationSteps = 8
PoolConfig.ShotSpeedScale = 0.28
PoolConfig.BallFriction = 2.35
PoolConfig.BallRestitution = 0.78
PoolConfig.BallVisualSpinScale = 1
PoolConfig.ClientBallInterpolationSpeed = 26
PoolConfig.ClientBallSnapDistance = 4.5
PoolConfig.RackBallGap = 0
PoolConfig.RackCenterFromFootRatio = 0.2
PoolConfig.CueStartFromHeadRatio = 0.2
PoolConfig.MaxPocketRadius = 1.15
PoolConfig.PocketRequiredBallOverlap = 0.51
PoolConfig.PocketCenterInsideRatio = 0.2
PoolConfig.CuePlacementPadding = 0.08
PoolConfig.RollingSoundStartVelocity = 0.22
PoolConfig.RollingSoundVolumeScale = 0.045
PoolConfig.RollingSoundMaxVolume = 0.35
PoolConfig.BallConnectSoundCooldown = 0.045
PoolConfig.BallConnectPitchMin = 0.94
PoolConfig.BallConnectPitchMax = 1.06
PoolConfig.BorderHitSoundCooldown = 0.08
PoolConfig.BorderHitSoundVolumeScale = 0.65
PoolConfig.PocketSoundVolumeScale = 1
PoolConfig.CueStickSoundVolumeScale = 1
PoolConfig.PocketSinkSeconds = 0.28
PoolConfig.PocketSinkScale = 0.12
PoolConfig.PocketSinkDrop = 1.2
PoolConfig.AimGuideLength = 13
PoolConfig.AimGuideRailPadding = 0.15
PoolConfig.AimGuideBallOverlap = 0.08
PoolConfig.MobileAimDragThreshold = 8
PoolConfig.GamepadAimDeadzone = 0.18
PoolConfig.GamepadAimTurnDegreesPerSecond = 150
PoolConfig.GamepadCuePlacementDeadzone = 0.18
PoolConfig.GamepadCuePlacementSpeed = 4.5
PoolConfig.ObjectGuideLength = 1.2
PoolConfig.ObjectGuideWidth = 0.08
PoolConfig.FinishResetSeconds = 5
PoolConfig.CameraHeightMultiplier = 0
PoolConfig.CameraMinHeight = 7
PoolConfig.RailHeight = 1.4
PoolConfig.RailThickness = 0.7
PoolConfig.BlackBallNames = { "Ball8", "8Ball", "BlackBall", "Black", "BlackBall8" }
PoolConfig.StickTipGap = 0.03
PoolConfig.StickHeightOffset = 0
PoolConfig.StickPullbackDistance = 1.6
PoolConfig.StickSinglePartTipSign = 1
PoolConfig.HiddenCoreGuiTypes = {
Backpack = true,
PlayerList = true,
Chat = false,
EmotesMenu = true,
Health = true,
SelfView = true,
Captures = true,
AvatarSwitcher = true,
}
PoolConfig.BallPhysicalProperties = PhysicalProperties.new(0.9, 0.22, 0.45, 1, 1)
PoolConfig.RailPhysicalProperties = PhysicalProperties.new(1, 0.12, 0.75, 1, 1)
-- Keep in mind many of these ain't being used
PoolConfig.UiText = {
ExitButton = "EXIT",
ShootButton = "SHOOT",
PlaceBallButton = "PLACE BALL",
JoinPromptLeave = "Leave {playerCount}/{maxPlayers}",
JoinPromptJoin = "Join {playerCount}/{maxPlayers}",
JoinPromptObject = "Pool Table",
BallsMoving = "",
BallInHandMouse = "Ball in hand - click the table",
BallInHandTouch = "Ball in hand - move it, then press PLACE BALL",
BallInHandGamepad = "Ball in hand - left stick move, X to place",
OpponentPlacingCue = "Opponent is placing the cue ball",
YourTurn = "Your turn",
PlayerTurn = "{playerName} turn",
UnknownPlayer = "Player",
YouWin = "You win",
GameOver = "Game over",
GameOverSentence = "Game over.",
BlackBallPocketed = "Black ball pocketed.",
ResettingTable = "Resetting table...",
WaitingForPrompt = "Use the table prompt to join",
ServerWaitingForPrompt = "Use the table prompt to join.",
PlayerLeftQueue = "{playerName} left the queue.",
PlayerExitedEndingGame = "{playerName} has exited, ending game..",
PlayerExited = "{playerName} has exited.",
PlayerJoinedAnotherTable = "{playerName} joined another table.",
GameStartedOpen = "Game started. Table is open.",
PlayerJoinedTable = "{playerName} joined the table.",
PlayerWalkedTooFar = "{playerName} walked too far from the table.",
TimedOut = "{playerName} ran out of time.",
TimedOutPlacement = "{timeoutMessage} {playerName} can place the cue ball.",
TimedOutTurn = "{timeoutMessage} Turn: {playerName}",
NextPlayer = "next player",
ScratchPocketed = "Scratch. Turn passes after the balls stop.",
BallPocketedOpen = "{ballColor} pocketed. Table is open until the shot settles.",
NiceShotRemaining = "Nice shot. {ballColor} has {remaining} left.",
BallPocketed = "{ballColor} pocketed.",
BlackBallWaitingForCue = "Black ball pocketed. Waiting for the cue ball.",
BlackAndCuePocketed = "Black and cue ball pocketed. {result}",
BlackBallPocketedResult = "Black ball pocketed. {result}",
PlayerWins = "{playerName} wins.",
ShooterLoses = "Shooter loses.",
ScratchBallInHand = "Scratch. Ball in hand.",
NoBallHitBallInHand = "No ball hit. Ball in hand.",
WrongBallFirstBallInHand = "Wrong ball first. Ball in hand.",
AssignedGroup = "{playerName} is {groupName}.",
Shooter = "Shooter",
PlaceCue = "{reason} {playerName} can place the cue ball.",
Turn = "Turn: {playerName}",
PlayerShot = "{playerName} shot.",
ShotSettled = "Shot settled.",
}
return PoolConfig
Check out my other systems:
https://create.roblox.com/store/asset/100889120118472 - Darts
https://create.roblox.com/store/asset/128934894745450 - Fow In A Row



