Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/NeonD00m/feces/llms.txt

Use this file to discover all available pages before exploring further.

feces is published on pesde — the Roblox package manager — and can also be installed manually by copying the source directory into your project. Both approaches are covered below.

Via pesde

Run the following command in your project root:
pesde add killergg/feces
pesde resolves and downloads the jecs dependency automatically. The relevant entry in pesde.toml after installation will look like this:
[dependencies]
jecs = { name = "marked/jecs", version = "^0.9.0", target = "luau" }
feces = { name = "killergg/feces", version = "^1.3.0", target = "luau" }
After adding the package, run pesde install (if it is not run automatically) and configure your Rojo project to sync the generated packages/ directory into ReplicatedStorage or wherever you keep your Luau dependencies.

Manual installation

If you prefer not to use pesde, clone or download the repository and copy the feces/ directory into your project tree. The only external requirement is that jecs is available at the path @rbx/jecs (the alias used inside the feces source). Point your Rojo configuration or require paths at both libraries accordingly.

Project setup

Once feces is available, require it alongside jecs, create your world, declare all components, and then call feces.new to get an instance:
local jecs = require("@rbx/jecs")
local feces = require("@killergg/feces")

local world = jecs.World.new()

-- Declare every component you intend to replicate here, before feces.new()
local Transform = world:component()
local Health    = world:component()

-- Create the feces instance
local instance = feces.new(jecs, world)

print(instance.replicated) -- should print a valid entity ID
If instance.replicated prints a valid number, feces is installed and working correctly.
Components must be created before feces.new() is called. feces registers jecs observers for every component that exists at construction time. Any component created after feces.new() will not be tracked for replication.
Component entity IDs must be identical on every world (server and all clients). Because jecs assigns IDs sequentially, the safest approach is to create all replicated components in the exact same order in a shared module that is required on both server and client before feces.new() is called. If the IDs drift out of sync, the client will apply component data to the wrong components.

Build docs developers (and LLMs) love