Bullfrog is an extremely simple framework aimed at making your game development workflow more organized and straight forward. It allows you to containerize all of your game code into what’s called “systems”.
I wrote up a detailed overview of the whole project on the GitHub if you would like to check it out. It includes a tutorial, screenshots, API, install instructions, and just general documentation.
GitHub
Update
The most recent update introduces some new features aimed at ECS! Such as stop() and onStop(). As well as setupSystems() now accepting tables of systems instead of just a directory.
I am interested in your upcoming “links” system, will it allow for systems to have events as well? (ex. CameraClientModule.playerZoomed could be used as an event for a system to detect and run a function)
Yes!!! I am thinking about a way to implement them really simply. Still working on trying to come up with it. I am thinking of calling them Bindable Links similar to Bindable Events.
I’ve been working on it for a couple of hours and I have come up with this so far. Only the server module has the ability to access createRemoteLink() but both server and client can access createBindableLink().
It accepts a name, but I am trying to figure out a way to get rid of this. It seems redundant with the naming of the variable as well.
I think links should keep their own name internally, perhaps you could figure out something where you can directly link to the name of the bindable link?
Consider putting this in #resources:community-resources. It will be more easier for people to find and access your resources.
About your FrameWork…
This suits me so perfect. I never cared about using a framework for making games(for others) ( I have used Frameworks to experiment a bit but they didn’t suit me so yeah.).I will definately use this for future.
They run by using the new RunContext feature! You can create a script in ReplicatedStorage and change its RunContext to client and they should run as normal!
It isn’t a replacement for anything. Its just something to aid with organization and structure. Here is an example where I use the framework to setup the basics for a custom camera.
You can see that the Camera System is organized in its own “container”. Of course, you can do this without the need for a framework, but the framework provides some useful functions to speed things up.
Here is the code inside of the Client module for the Camera System. Bullfrog also provides some handy lifetime functions. You can see me using them below.
This is just an example of a very basic real world use case. I am going to be building out an entire game using this framework as well. I may also note that I use Rojo and LiteXL and this framework allows for a workflow that makes using them much easier.
I was wondering since all your code is in replicated storage wouldn’t an exploiter be able to just copy your server code and completely copy your game?
This is a concern I have thought about, but quite frankly it doesn’t bother me too much. I may also note that I made it possible to do the “split setup” mentioned in the GitHub repo. This prevents this from happening. Roblox is working to add more anti cheat. I believe if a hacker wants your code they are going to get it no matter what haha.