Hey everyone
I’ve been working on my own framework for a while and finally decided to share it. I got tired of rewriting the same stuff (networking, player data, module loading) for every new project, so I built this for myself. Maybe someone else will find it useful
It’s pretty simple. You split your code into modules with lifecycle hooks, and the framework handles the rest: dependency injection, player/character events, heartbeat updates, and network contracts
Server module hooks:
return {
dependencies = {"ModuleName"}, -- optional
init = function(dependingServices) end,
update = function(deltaTime) end,
playerAdded = function(player) end,
playerDataLoaded = function(player, profile) end,
playerRemoving = function(player) end,
characterAdded = function(character, player) end,
characterLoaded = function(character, humanoid, root, player) end,
humanoidAdded = function(humanoid, player) end,
characterRemoved = function(character, player) end,
network = {
remote = "RemoteName",
contract = {[1] = "string", [2] = "number"}, -- optional
onEvent = function(name, count) end,
},
}
Client module hooks:
local remotes = {}
--[[
to call fireServer:
remotes.RemoteName:fireServer(...)
]]
return {
dependencies = {"ModuleName"}, -- optional
init = function(dependingServices) end,
asyncInit = function() end,
update = function(deltaTime) end,
clientReady = function() end,
characterAdded = function(character) end,
characterLoaded = function(character, humanoid, root) end,
humanoidAdded = function(humanoid) end,
characterRemoved = function(character) end,
network = {
remote = "RemoteName",
contract = {[1] = "string", [2] = "number"}, -- optional
onEvent = function(name, count) end,
},
setupFireServer = {
remoteNames = {"RemoteName"},
setupRemote = function(name, network)
remotes[name] = network
end,
},
}
It also has:
- Heartbeat buckets (updates spread across 3 buckets so it doesn’t lag)
- Network contracts (type validation for remotes)
- ProfileStore for saving data
- A simple version checker that warns you when there’s an update
I put full docs and installation instructions in the README. Download link is in Releases
If you find any bugs or have ideas, let me know. I’m still working on it