CyberMax
Salvowick · FPS Combat Framework for Roblox developers

A shooter where the server has the final word

Weapons configured in one table and checked at startup; hitscan bullets and shotgun pellets from a shared seed; auto, semi and burst fire; tactical and empty reloads; recoil and bloom; headshots, falloff and armour; kills, assists and a killfeed; and server-side checks on every shot (fire rate, gun position, spread, silent aim, lag-compensated hit boxes, walls) with strikes.

12 modules + 3 example scripts2,226 lines of original Luau45 tests passing.rbxmx + Rojo

For: Roblox developers building shooters, combat games and PvP modes.

See it work: real output from the shipped code

A 3-player fight through Combat:Fire()

Every row is a shot a client sent, checked by Validator on the server with the example config: pings of 60-120 ms, targets moving, hits checked against where each target really was when the shot was fired. Kills / deaths after the fight: Ava 2/0 · Ben 0/1 · Cy 0/1.

Shot atShooter → targetWeaponPingServer verdictTarget HP
0.20sAva → BenVanguard AR80 msHit 2674
0.29sAva → BenVanguard AR90 msHit 2648
0.33sCy → AvaWasp SMG120 msHit 18.581.5
0.38sAva → BenVanguard AR80 msHit 46.81.2
0.47sAva → BenVanguard AR80 msHit 260
0.40sCy → AvaWasp SMG120 msHit 18.563
0.90sAva → CyBulldog Shotgun60 msHit 16.483.6
1.75sAva → CyRidgeback Pistol60 msHit 4637.6
1.80sCy → AvaWasp SMG120 msHit 18.844.2
1.95sAva → CyRidgeback Pistol60 msHit 2314.6
2.12sAva → CyRidgeback Pistol60 msHit 460
killfeedAva [Vanguard AR] Ben
killfeedAva [Ridgeback Pistol] Cy · headshot, double kill

Exploit attempts and the server's answer

The same server, a fresh target, and the shots a cheat client would send. A refused shot uses no ammo and adds strikes; a dropped hit does no damage.

What the client sentResult
Legit shot, 50 ms pingHit 26
Rapid fire (20 ms after the last shot)Refused: rate
No-spread (cone 0 on a hip-fire weapon)Refused: spread
Silent aim (hit claimed on a player 30 studs off the ray)Hit dropped
Shooting from 25 studs away (teleported gun)Refused: origin
Replayed old shot (0.9 s old)Refused: time
Legit shot, 250 ms ping (lag-compensated)Hit 26

The example's 6 weapons, from Damage.shotsToKill

Shots to kill a 100 HP player (body / head at 10 studs, body at 50 and 120 studs) and time to kill with every shot landing. Change any number in the config and these change with it.

WeaponModeRPMMag10 st50 st120 stTTK
Vanguard ARauto720304 / 3450.25s
Lynx Burstburst900244 / 2440.433s
Wasp SMGauto900325 / 4790.267s
Bulldog Shotgunsemi756 ×82 / 1440.8s
Kestrel Marksmansemi4852 / 1221.25s
Ridgeback Pistolsemi420125 / 3570.571s

What's inside

ModuleRuns onWhat it doesLines
CombatServerThe server side of a shooter.243
ValidatorServerThe server's anti-exploit checks for every shot a client sends.191
WeaponConfigSharedEvery weapon's numbers in one table, checked at startup so a typo never reaches players.236
Damage (free)SharedRange falloff, headshot and limb multipliers, and armour, as plain functions you can test.94
SpreadSharedSeeded bullet spread and bloom that the client and the server compute identically.81
FireControlSharedFire rate, semi-auto, full-auto and burst timing in one small state machine.90
AmmoSharedMagazine + reserve with timed reloads (tactical vs empty, a chambered round, cancel).147
RecoilClientA learnable recoil pattern with recovery, as camera offsets in degrees (client side).62
HistoryServerWhere every character was over the last second, for lag-compensated hit checks.90
KillfeedSharedKill entries with headshots, assists, multi-kills and streaks, ready for any UI.119
WorldServerThe bridge between the combat rules and your place (raycasts, characters, teams, history).122
Signal (free)SharedA tiny event object so your UI, HUD and game modes can react to hits, kills and reloads.49
Example scriptTypePut it in
SalvowickConfigModuleScriptReplicatedStorage
SalvowickServerScriptServerScriptService
SalvowickClientLocalScriptStarterPlayer > StarterPlayerScripts

Tested like real software

45 automated tests run in a real Luau VM against a Roblox engine mock, on luau-web 1.4.0 (Luau compiled to WebAssembly). They ship in the zip: cd tests && npm install && node run.mjs.

SpecPassingFor example
config7/7the example config passes every check (6 weapons, slots 1-6) …
damage6/6body zones for R6 and R15 parts …
demo1/1demo: a scripted fight, the exploit table and the weapon table
example2/2example config: every loadout weapon exists and every combat setting is present …
spread11/11the same seed gives the same pellets (client and server agree) …
validator14/14a legit shot 150 ms behind the server lands on the lag-compensated target …
world4/4World: Cast finds the player behind the ray and clear() sees walls …

Install in 5 minutes

  1. Drag Salvowick.rbxmx onto ReplicatedStorage in Roblox Studio.
  2. Drag SalvowickExamples.rbxmx in and move the three scripts to the services above.
  3. Turn on Studio access to API services and press Play. INSTALL.md walks through an example place step by step.

FAQ

Is this allowed on Roblox?

Yes. It's ordinary Luau using Roblox's own services (DataStoreService, MarketplaceService, Players). Nothing bypasses Roblox rules.

Why not a free model from the Toolbox?

Free models are a fine start. Salvowick ships its tests (45 of them, run in a real Luau VM), validates every remote argument, and is original code with a clear licence.

Do I need Rojo?

No. Drag the .rbxmx files into Roblox Studio. A Rojo project file is included if you use it.

Can I use it in a game I sell or a client's game?

Yes: unlimited experiences, commercial or not, for you or your clients. You can't resell or share the code itself.

Is CyberMax affiliated with Roblox?

No. Roblox and Roblox Studio are trademarks of Roblox Corporation, named only to describe compatibility.

More tested kits

HatchwrenPet & Egg SystemStallwrenShop & Currency SystemGavelwickAdmin CommandsMillwrenTycoon KitQuestwrenQuest & Dialogue SystemRoundmoorRound & Match SystemDevEx calculatorFree: Robux to USD at 2026 rates
Roblox and Roblox Studio are trademarks of Roblox Corporation. Salvowick is made by CyberMax and is not affiliated with or endorsed by Roblox Corporation.
$12Get Salvowick