Roblox scripting,
done fast and
fair.
I'm Soulviir. I write the systems your game runs on, combat, AI, data, shops, UI, whatever you need, server side in typed Luau. You get working code in days without paying studio prices for it.
- Turnaround
- Days, not months
- Code
- Typed, tested, server-side
- Rates
- Solo dev, no markup
Combat Arena
A melee fighting demo I built to show how I write gameplay. R15 combat, a parry and block system, and a dummy that actually fights back. It's live, you can go hit it.
-- server-authoritative hit sweep (Combat.luau)
local params = OverlapParams.new()
params.FilterType = Enum.RaycastFilterType.Exclude
params.FilterDescendantsInstances = { attackerCharacter }
local center = (root.CFrame * CFrame.new(0, 0, -REACH)).Position
local hits = Workspace:GetPartBoundsInRadius(center, RADIUS, params)
for _, part in hits do
local model = findDamageModel(part)
if model and not alreadyHit[model] then
alreadyHit[model] = true
-- no hitting through walls
if not blockedByWall(center, part.Position) then
applyDamage(model, baseDamage + (combo - 1) * STEP)
end
end
end ReplicatedStorage/
└─ CombatArena shared config, remotes
ServerScriptService/
├─ CombatService routing, dummy spawns
└─ CombatArena/
├─ Combat hit + damage core
├─ SmartDummy line-of-sight AI
├─ AnimController NPC animation
└─ DummyLifecycle clone + respawn
StarterPlayer/
└─ CombatArena input, HUD, camera Piece by piece
More systems on the way: inventory and saving, shops, round loops, UI suites.
Whole systems, or the one piece that's fighting you
Most of my work is gameplay and backend logic. If it runs in your game and needs to be written or fixed, it's probably something I can do.
- Combat & abilities
- Melee and ranged kits, hitboxes, cooldowns, parries, dashes. Built to feel good and validated on the server so they hold up in a real game.
- Enemies & AI
- State-machine NPCs, pathfinding, wave spawners, bosses. Behaviour that reacts to the player instead of standing still.
- Data & economy
- Inventories, currency, shops, and player saving that retries instead of losing progress when a DataStore call fails.
- Rounds & game loops
- Lobby to match to win condition to reset. Teams, timers, scoring, the whole loop wired together.
- UI & feedback
- HUDs, menus, action bars, damage numbers. Mobile-safe layouts hooked up to clean client code.
- The thing that's stuck
- Sometimes you just need one broken system fixed or one mechanic that won't behave. I take those too.
How a job runs
- 01
Scope
Tell me what you want and a rough range if you have one. I turn that into milestones.
- 02
Build
I write it in typed Luau with version control, and you see progress along the way instead of silence.
- 03
Check
I can test in a clean place first, or in your place if you want me there.
- 04
Hand off
Drop it into your place, hand you a package, or both. You get notes on how it works.
A rough range keeps the scope honest
If you have a rough range, say it early. It helps me shape the first cut around what matters instead of guessing at scope.
One system
A single feature done right. A combat kit, an inventory, a round loop. Scoped, built, handed over.
- Rough range up front
- Usually days
- Drop-in or package handoff
A few systems
Several pieces that work together, like the core loop of a game wired up and tested as one thing.
- Milestones match the range
- Progress you can watch
- Notes on how it works
Ongoing
Repeat or retainer work for a game in active development. I become the scripter you call when something's needed.
- Monthly scope
- First in line
- Better long-term rate
Rough range, real scope. We adjust from there.
Tell me what you're building
Send the gist of your game, what you need scripted, and a rough range if you have one. I usually reply the same day with questions or the next step.