Quartz Simple & Safe Networking for Roblox
Clean API | Rate Limiting | Validation | Zero Config:
This project now is deprecated
![]()
![]()
![]()
— Hey everyone!
Ever get tired of writing the same networking boilerplate in every project?
-- The struggle is real:
local remote = Instance.new("RemoteEvent")
remote.OnServerEvent:Connect(function(player, data)
if not player or not player:IsA("Player") then return end
if typeof(data) ~= "string" then return end
if #data > 100 then return end
-- Wait, did I forget rate limiting again?
-- 20 lines later... FINALLY my actual game logic
end)
Yeah, me too. So I built Quartz - networking that just works.
Why Quartz?
Quartz is crystal clear networking - simple, reliable, and beautiful to work with.
Just like quartz crystals are known for their clarity and structure, Quartz gives you:
- Crystal clear API that’s intuitive and easy to use
- Solid foundation with built-in security and validation
- Beautiful developer experience that just makes sense
- High Perfomance
Tests
| Quartz + safe mode | 890703 calls/sec | 484kb memory usage |
|---|---|---|
| Quartz + unsafe mode | 1293272 calls/sec | 535kb memory usage |
| Packet | 1690920 calls/sec | 622kb memory_usage |
Quick Start
Get from Creator Marketplace and you’re ready in 60 seconds:
local Quartz = require(game.ReplicatedStorage.Quartz)
local Server = Quartz.Server()
local my_event = Server.Event("my_event", Quartz.RELIABLE, Quartz.SAFE, Quartz.auto)
.WithRateLimit(3, 1, function(player: Player)
print(`player {player.Name}, exceeded rate limit`)
end)
.OnFire(function(player: Player, data: any)
if data then
print(`{player.Name}: {data}`)
end
end)
That’s it. No complex configuration, no dependencies - just clean, secure networking.
Why Quartz Stands Out
Crystal Clear API
Chain methods that actually make sense:
Quartz.Server().Event("Move")
.Expects(Quartz.string, Quartz.string)
-- Type validation .WithRateLimit(20, 1)
-- .OnFire(function(player, x, y) -- Your game logic moveCharacter(player, x, y) end)
Built-in Security
Production-ready protection from day one:
Zero Configuration
Works out of the box - no complex setup needed:
local Quartz = require(game.ReplicatedStorage.Quartz)
-- Ready to use! No config files, no settings to tweak
Features That Matter
🎯 Clean Fluent API - click to expand
lua
local Quartz = require(path.to.Quartz)
local Network = Quartz.Server()
local my_event = Network.Event("MyEvent")
.Expects(Quartz.string, Quartz.number)
.WithRateLimit(3, 2, function(player: Player, message: string)
print("Player limit exceeded for player ".. player.Name)
end)
.OnFire(function(player: Player, message)
print("player ".. player.Name .. "send message: ".. message)
end)
-- clean, simple and fast
🛡️ Built-in Rate Limiting - click to expand
lua
-- Basic protection .WithRateLimit(10, 1) -- 10 requests per second -- With custom violation handler .
--.WithRateLimit(5, 1, function(player, message) warn(`🚫 ${player.Name} is spamming chat!`) end)
✅ Simple Validation - click to expand
lua
-- Basic types .Expects(Quartz.number)
-- Number ranges .Expects(Quartz.range(1, 10))
-- Custom validation .Expects( function(x) return x > 0 end,
Quartz gives you 100% of what you need, 0% of what you don’t.
Who Is Quartz For?
Indie Developers who want security without complexity
Game Jam Participants who need networking that works NOW
Learning Developers who want clean, understandable code
Small Teams who need consistent networking across projects
Coming Soon
- Advanced metrics and monitoring
- Enhanced compression for large data
What features would you like to see? Let me know in the replies!
Installation
- Get from Marketplace : Quartz on Creator Marketplace
- Drop into ReplicatedStorage
- Start coding - that’s it!
Zero dependencies •
MIT License •
Open source
Feedback & Support
Found a bug? Want a feature? Have suggestions?
Reply on this post and I will see
- Yes! Downloading now
- Maybe for my next project
- Looks interesting, will check it out
- Prefer my current solution
- Too simple for my needs
Made by @super_sonic
If Quartz saves you time, drop a
to help others find it!
Happy coding! ![]()
