Start typing to search packages!
noid-manager
By @hobbs04067
Roblox
Mirrorednoid-manager
A Roblox library for spawning, tracking, and tearing down managed rig instances ("noids") with server-authoritative state, automatic client replication, and a pluggable mod system for attaching per-instance behavior without touching this package.
Built with Rojo and Wally. Networking runs over bytenet, and events use bindable.
Full usage guide and API reference: docs/USAGE.md Building and contributing: docs/DEVELOPMENT.md
Contents
Features
- Server-authoritative lifecycle — the server assigns each noid a numeric ID (0–255), tracks it, and is the only realm that can create or destroy one.
- Automatic client replication over a single bytenet packet — clients get a mirrored
NoidManagerobject for every live noid, including late-joining players. - Built-in auto-destroy watchers — a noid tears itself down when its
Humanoiddies, its owning player leaves, or a core rig part is removed. - A pluggable mod system — attach
Constructor/Destructorbehavior to a noid from separateModuleScripts, scoped to run on the server, the client, or both (Type = "Server" | "Client" | "Shared"). - Per-instance constructor arguments — activate the same mod on different noids with different arguments.
- Lookup by ID or by owning
Player, plus aManagerConstructedevent for generic hooks.
Installation
Add to your wally.toml:
[dependencies]
NoidManager = "hobbs04067/noid-manager@0.5.16"
Then run:
wally install
noid-manager itself depends on bindable, bytenet, and playereventsequencer — Wally resolves these for you.
Quick start
-- Server: register a mod, then spawn a noid with it active
local NoidManager = require(ReplicatedStorage.NoidManager)
local wanderMod = NoidManager.RegisterModModuleScript(script.WanderMod)
local manager = NoidManager.new(someRig, { wanderMod })
manager.Destroying:Connect(function()
print("noid", manager.id, "was destroyed")
end)
-- later
manager:Destroy()
-- WanderMod.luau — Type "Shared" runs its Constructor/Destructor on both realms
return {
Type = "Shared",
Constructor = function(self)
print("noid", self.id, "spawned at", self.rig:GetPivot().Position)
end,
Destructor = function(self)
print("noid", self.id, "destroyed")
end,
}
-- Anywhere (server or client): look up an existing manager
local manager = NoidManager.GetManagerFromId(id)
local manager = NoidManager.GetManagerFromPlayer(player)
NoidManager.ManagerConstructed:Connect(function(manager)
print("constructed", manager.id)
end)
See docs/USAGE.md for how it all fits together, the full mod Type semantics, constructor-argument syntax, and replication behavior.
License
MIT
Package Details
Install command (Click to copy)
Version
0.5.17
License
MIT
Safe for commercial use
License identified from the packaged LICENSE file; the manifest declared none.
Automated license review — not legal advice.
