XSF: a free FPS framework

Hey everyone,

I’ve been working on this for a while and it’s finally at a point where I’m happy showing it. XSF (Xypher’s Shooter Framework) is a first person shooter framework I wrote from scratch. It can use the ACS 2.0.1 gun models and animations so ACS games can move over easily, but none of the ACS code is used.

What I wanted was guns that feel like they weigh something, and a setup where you can change pretty much anything without digging through 4000 line scripts.

Trailer: XSF: Free FPS Framework for Roblox with Real Ballistics
Docs: XSF Docs: Install and Set Up the Roblox FPS Framework


What it does

Gunplay

  • Bullets actually leave the barrel. They have travel time, drop, lose speed, go through wood and can glance off metal at shallow angles
  • Recoil you have to fight. Every gun climbs in its own pattern, so you can learn it, and it gets wilder the longer you hold the trigger
  • Weapon inertia. Whip your camera around and the gun lags behind and overshoots a bit, strafe and turn and the muzzle leads the turn
  • Scopes that work like real ones, with breathing drift and adjustable zero on snipers
  • Brass that bounces and settles, tracers, and muzzle flash that lights up whatever’s next to you

Hands and knives

  • The fingers close around every gun’s grip, and the support hand holds the foregrip or the magazine
  • Knives work like CS2: one handed, left click slashes back and forth, I to inspect, and hitting someone from behind does 4x damage
  • No shirt on your avatar? The arms show your skin instead of a weird texture

Movement

  • Crouch, prone, lean and slide out of a sprint
  • Stamina you hear in your breathing before you see it
  • Other players see exactly what you’re doing. Arms reach for the real grip in third person, prone and slides look right, and the gun points where you’re actually aiming

Audio

  • Far shots arrive late and lose their crack
  • Rooms add reverb, walls muffle, bullets snap past your head
  • Footsteps change with the floor you’re walking on

Everything else

  • Downed state with crawling, team revives, and dragging a downed teammate to cover
  • Flashbangs, frags and smoke that blocks line of sight for everyone
  • Hotbar plus a backpack (B) for everything that doesn’t fit on the number keys
  • The server checks every hit against a short history of hitboxes, plus fire rate, ammo and range. Shots that don’t add up get thrown out
  • R6 and R15
  • PC, console (aim slowdown and rumble included) and mobile with proper touch controls
  • In game settings menu for FOV, sensitivity, motion, audio and keybinds, saved per player

How configurable is it?

This was the main thing I cared about, and there are two ways to do it.

No code: there’s a dashboard on the site. The first time, it asks four quick questions (what kind of game, how it looks, which guns, which devices), and after that you can change every common setting and each gun’s damage, fire rate, ammo and recoil from the browser. You can save presets and pick which game uses which one.

In Studio: there’s one GameConfig file. Every option is already listed in it with its default, and you only change the lines you want. Anything you change in Studio always beats the website, but only for the things you actually changed.

A working config can literally be this:

return {
	Loadout = { "HK416", "USP", "M67" },
}

It ships with the bodycam look on (wide lens, vignette, grain). Want a normal camera instead? One line:

return {
	Camera = { Style = "Standard" },
}

Some other stuff you can change from the same file:

return {
	Providers = {
		Inventory = "RobloxTools",  -- or "XSF", or your own ModuleScript
		Arms = "ACSClassic",        -- or "XSFRealistic", or your own
		HUD = "None",               -- or "XSFMinimal", or your own
	},
	Movement = {
		Slide = { Enabled = true, Speed = 30, CanShoot = true },
	},
	Stances = { Prone = false, LeanAngle = 18 },
	Downed = { BleedOutTime = 30, ReviveTime = 4 },
	Damage = { FriendlyFire = true },
	FreeAim = { Enabled = false },
	AimAssist = { Slowdown = 0.4 },
}

The inventory, arms and HUD are all swappable. Use the built in ones, pick a different built in option, or point it at your own ModuleScript. If you write your own HUD, the client API gives you every event you’d need.

Weapons are one folder per gun: the model plus a short Config that only lists what’s different from the defaults.

return {
	Class = "Rifle",
	Fire = { RPM = 800, Modes = { "Auto", "Semi" }, MuzzleVelocity = 880 },
	Ammo = { Magazine = 30, Reserve = 90 },
	Damage = { Head = 150, Torso = 60, Limb = 38 },
	Handling = { Mass = 3.6, AimTime = 0.3 },
	Attachments = { Sight = "EOTech", UnderBarrel = "Vertical Grip" },
}

Mass is in kilograms and actually matters. A heavy rifle swings lazier than an SMG without you touching any sway numbers. Recoil, sway, zeroing, falloff and shotgun pellets are all per gun if you want them.

If you already have ACS guns, the download comes with an importer that converts the ACS animations over. Models and attachments carry across as they are.

NPCs can use it too. Give any Humanoid an XSF_Weapon attribute and they hold the gun properly, get shot and ragdoll.

There’s also a server API (XSF.SetLoadout(player, {...}) and friends) for per team or per class loadouts, and a client API for your own UI and menus.


What’s included

  • 20 weapons: HK416, M4A1, AK-47, HK33, MP5, Vector, Remington 700, AWM, Remington 870, Glock 17, USP, Desert Eagle, five knives and three grenades
  • 16 attachments (sights, suppressors, grips, lasers, lights) plus 4 ammo types, all changeable in game from a loadout screen
  • Want to try it before installing? Play the showcase: XSF Showcase | Play on Roblox

Getting it

It’s free, including in games that make money, and nothing gets drawn on your players’ screens.

Right now I’m letting people in through a waitlist so I can fix problems in small groups instead of all at once. Sign up with Discord or your email and you’ll get an email when your spot comes up. Once you’re in, you answer the four setup questions and download your copy:

https://xsfshooter.vercel.app

It’s only published on that site. I’m not putting it on the Toolbox, so if you see a copy anywhere else it didn’t come from me and I’d be careful with it.


Feedback

Bug reports with a short clip or your output log get fixed fastest. You can reply here or join the Discord.

Let me know what you think, and if there’s something you’d want configurable that isn’t yet, tell me. That’s exactly the kind of feedback I’m looking for.


About XSF (official facts and links)

XSF (Xypher’s Shooter Framework) is a free, original first person shooter framework for Roblox, made by me (Xypher). The code is written from scratch. It supports the public ACS 2.0.1 gun models and animations so ACS games can switch without remaking their guns, but none of the ACS scripts are used. The ballistics, server hit checks, recoil, hands, knives, hotbar, menus and the website dashboard are all XSF’s own.

Videos, models or posts elsewhere that use the XSF name aren’t made by me unless the site above links to them.

5 Likes

You should mention that it’s fully vibecoded for transparency

7 Likes

The elphant in the room has to be mentioned

2 Likes

Oh hell naw bro are we serious

1 Like

I have no idea why the reply highlighted OP’s text

I was talking about how the site is a LLM 101 and the engine prob is too

1 Like

Well that too, but wanting a visible Icon at all time on screen when the product is 100% AI is not something anyone is gonna do lmao

(even if it wasnt AI, nobody wants something permanent on screen)

2 Likes

Fair point

whydoineed30characters

2 Likes

image

No effort in hiding it

1 Like

yea fair, I should’ve said it from the start. I used AI a lot to make XSF. I’m a solo dev and without it this would’ve taken me forever, I’m not profiting or gaining anything from it. I just wanted a good free FPS system on Roblox that people can actually use. I get why people don’t trust AI stuff. So just test it and see if it works. If something’s broken, tell me and I’ll fix it

Watermark icon has been removed in v1.1.2 for the love of the game.

I’ve been playing a showcase with my friends for over 3 hours and I managed to fix over 20 bugs now I think the framework could be released without a waitlist soon.

Just finalizing the last few things to make sure no one has a hard time w bugs

Feedback

I noticed the code is minified, and I’m a bit curious why that was done since it makes it harder to read/debug.

I’m also a little confused about the licensing system. If the engine is free, why require a license to use it?

Same with the settings/config data being stored externally — I’m just curious why that needs to be handled outside the game.

Also, why are bullet holes made using two parts? Wouldn’t a decal on a single part, or something similar, be a bit simpler/lighter?

1 Like

Thanks for the feedback!

Regarding the core scripts being minified, the main reason is that I do not know what I might do in the future whether I will open source it or maybe just discontinue and scrap the project therefore I rather keep it minified for now.

And regarding the license, im trying to prevent the framework from getting backdoored and re-distributed on the toolbox which is why I have an algorithm that tracks how many games each user is using XSF in.

For example a user has 50 games with XSF installed in them would get flagged and after investigation if the games are not related to each other, I can just revoke the license then the game owner(s) would have to debug and re-download the version from the website which would be backdoor free

Also I’m aware about the bullet holes im just working on a lot of bugs and features rn and they will be fixed in the next version.

If you don’t mind I would really like it if you joined the discord server and then you can report any bugs you have, give your honest opinion or any suggestion you think could improve the framework.

Thanks for reading

Don’t know if this is only in the showcase or not (haven’t got the time to test it out yet) but this doesn’t really look good. Maybe you can lock the rotation or something I don’t really know

(other than that it feels and looks great!)

1 Like

Hey Rick, thanks for taking your time and testing it out. I’m aware of that bug, I’m just trying to fix as much bugs as I can and deliver them all in one new version instead of multiple small ones!

Oh that’s great! Good job on this, there isn’t many FPS frameworks anymore

1 Like

XSF v1.3 is out

Hey everyone, small update (well, not that small lol). It took a while because I wanted to fix a bunch of stuff in one go instead of pushing 5 tiny versions.

10 new weapons
AK-47, M4A1, AWM, Vector, Desert Eagle, Glock 17, plus 4 new knives: Ka-Bar, M9 Bayonet, Karambit and the butterfly knife.

Knives work like CS2 now
They’re one handed with their own draw and idle, left click slashes alternate forehand and backhand, and you can inspect them with I. Backstabs do 4x damage (you can change that or turn it off per knife).


Hotbar + backpack
Number keys hold up to 5 weapons and everything else goes in the backpack (B). You can drag stuff onto the hotbar.

Setup without code
A lot of people grabbing this come from Roblox and don’t want to touch Lua, so there’s a dashboard on the site now. The first time, it asks 4 quick questions (game style, camera, loadout, platforms), and after that you can change pretty much every common setting and every gun’s stats from there. You can save presets and pick which game uses which one.

If you’d rather do everything in Studio, nothing changes. Anything you change in GameConfig always wins over the website, but only for the things you actually changed.


Other stuff

  • hands grip every gun way better now, the fingers actually wrap around the grip
  • if your avatar has no shirt, the arms look like skin now instead of… whatever that was before
  • every gun has its own inspect
  • you can drag downed teammates to cover
  • pistol attachments, and optional workbenches for changing attachments
  • fixed lasers and lights turning off when you switch weapons
  • fixed the Deagle sounds
  • fixed a few third person gun bugs

Full patch notes: XSF Patch Notes
Docs got updated too: XSF Docs: Install and Set Up the Roblox FPS Framework

If you find bugs, tell me here or in the Discord and I’ll fix them.