Hey everyone,
I just dropped Quebec v4.0.0, a typed Luau game framework that I’ve been working on for some time now. Its goal is to make Roblox dev smoother, safer, and more fun.
What is Quebec?
Quebec is a simple but structured framework for Roblox games. It gives you:
- Singleton-style Services & Controllers with lifecycle events
- A built-in typed Networking module for clear client-server comms (no runtime type checking yet!)
- Handy utilities for common patterns like classes
- Central sync support for multi-place or shared code setups
- Good Luau typings and autocomplete so you don’t have to go in blind
Why should you care?
Roblox’s default setup works, but it gets messy fast:
- Random
RemoteEventsall over the place - Boilerplate to manage singletons and initialization
- No clear structure for big games
Quebec addresses these issues and fixes them by giving you:
- One source of truth for events
- Explicit lifecycles (
:init(),:start(), etc.)- Modding support for custom lifecycles is coming soon!
- Clear
:client()/:server()calls for networking so you don’t mix up directions - Zero runtime surprises. Everything is typed
Quick Networking Example
local Networking = require(game:GetService("ReplicatedStorage").Quebec.modules.Networking)
return {
DropItem = Networking.event("DropItem") :: Networking.Event<string, number>,
}
… then in a service:
local Quebec = require(game:GetService("ReplicatedStorage").Quebec)
local Events = require(game:GetService("ReplicatedStorage").Events)
local Service = Quebec.singleton({
lifecycles = { "start" }
})
function Service.start(self: typeof(Service))
local dropItem = Events.DropItem:server() -- access the server-side handler
dropItem:connect(function (player: Player, item: string, amount: number)
print(`{player.Name} wants to drop {amount}x {item}`)
end)
end
return Service
Interested?
Quebec is open-source with a documentation that’s always updated and contains a version history. You can also copy pages as Markdown and use an LLM to get answers. Thanks, GitBook!
- Docs: Introduction | Quebec
- Source: GitHub - BaxoPlenty/quebec: A modular Roblox game framework featuring services, controllers, and opt-in dependencies
- Rojo Template (single-place & multi-place): GitHub - BaxoPlenty/quebec-rojo-setup: An example Rojo setup for the Quebec game framework
Feedback is welcome!
I built this for myself but I’d love others to break it and tell me what’s missing. ![]()
Got ideas, issues, or improvements? Just hit me up or open an issue on GitHub. I’ll respond fast!
Thanks for reading! Happy building!