Bullfrog - A simple, intuitive, lightweight, and easy to use game framework for Roblox! [UPDATE]

Bullfrog

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.

Thank you so much and have a wonderful day!

24 Likes

Interesting thing you got going on here.

2 Likes

Thank you! I had fooled around with other frameworks and I didn’t like how they did things so decided to make something haha!

haha.
Btw, I added you on discord. I’m looking to negotiate something with you if possible.

1 Like

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)

1 Like

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.

1 Like

It might be need to have links as the general “class” for connections, and “bindable links” as the sub class.

Links would be remote events connecting server>client and client>server.
Bindable links would be bindable events commi

1 Like

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.

Let me know what you think.

1 Like

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?

1 Like

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.

Thanks once again.
Very Cool
-IamNewToRiblix

2 Likes

Ive officially added a basic version of Links! Check the GitHub if you would like more information on how to use them!

1 Like

Great. How exactly does one begin with this framework? I am currently puzzled by local scripts in ReplicatedStorage are supposed to run.

1 Like

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! :slight_smile:

1 Like

LocalScripts don’t have RunContext. If you mean setting the server script, then why would I set that to client?

Right, you would create two normal scripts and set the run context of each of them. One to server and one to client.

1 Like

I’m not sure what this does easier than having no framework. Could you put some examples of how this is useful in the OP?

OH OKAY. Sorry, thanks. This just wouldn’t get through my head.

1 Like

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.
image

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.