Hello!
I have this project a bit under the radar, I haven’t done a whole lot with it for a while.
I was thinking it might be worth getting some feedback on it (and see if I should even continue development).
Release info:
Contribengine 0.0.1BETA
September 26, 2025
This is a beta version. Bugs are expected.
I was hoping people would help find bugs, and tell me if it’s even a good system.
The reason I made it is to try to improve the modularity of games. I want people to be able to use their own code combined with other people’s modules to snap together like a bit of a lego set.
What is Contribengine?
Contribengine is designed to be a toolset for connecting modules together without managing requires yourself.
It promotes a style of scripting that uses the Single Script Architecture layout.
Some terminology:
baseplate: The core of the module, connects all modules together
brick: A module designed for Contribengine.
How do I use it?
In Contribengine, all game code should be inside of bricks for cleanliness.
This is what a blank brick looks like.
local BRICK = {}
BRICK.__index = BRICK
BRICK.SERVER_ONLY = true
BRICK.CLIENT_ONLY = false
BRICK.DEPENDENCIES = {}
function BRICK.Init(bricks)
local self = {}
--Put data you may need here.
self.contribbricks = bricks
setmetatable(self, BRICK)
return self
end
return BRICK
In bricks, you can set other bricks it needs to function, and whether it needs to be on the server or client.
To add functionality to a brick, just write functions like you would in any other ModuleScript. The baseplate will manage requires for you, so anything you need will need to be put in the DEPENDENCIES
table as:
"bricks/Brick"
or
"core/Brick"
After you’ve made all of your bricks, all you need to do is make a Script
or LocalScript
(it doesn’t matter) and require the main CONTRIBENGINE
module.
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local _CONTRIBENGINE = require(ReplicatedStorage.CONTRIBENGINE)
What’s included
Contribengine comes with the following core bricks. This list will grow.
- DataService - An abstraction of DataStores. Not as good as other people’s modules.
- EventSubscriber - A tool for cross-brick communication via BindableEvents.
- HierarchyService - An abstraction of instance creation via tables.
- NetEventSubscriber - A tool like EventSubscriber, but it uses RemoteEvents to cross the Client-Server barrier.
- StateManager - A tool for displaying the state of a brick to other bricks.
Conclusion and Download
Since this is very early in development, there is currently no script that will grab it for you.
Feel free to look through the core bricks I made to see how they work to make writing code for Contribengine easier.
CONTRIBENGINE.rbxm (7.9 KB)
Thanks for reading, and make sure you give me honest feedback (bugs, suggestions, etc.).
If I got anything wrong in this post, make sure you let me know. I have not done anything with Contribengine for a hot minute.
As of now there is no public area for Contribengine, so please post feedback here. Thanks!