CanaryEngine - A simple framework for all things studio

CanaryEngine

v1.3.0 (5)

Get it on Roblox Get it on GitHub Download FileView it on our Documentation

Join our group for updates on games, products and more!
Canary Development Group

To become a contributor, help us review code, make pull requests, help write documentation, and give us ideas regularly.


About

Now, you may be asking, what even is CanaryEngine? Well, CanaryEngine is a framework that is lightweight and doesn’t require almost any set up at all. It was designed to be easily backwards compatible with your game. It has a great networking system, known as @ffrostfall’s BridgeNet2, which handles all networking in your game. BridgeNet was designed to be super fast and lightweight too, and comparing roblox’s remotes with BridgeNet, there seems to be a drastic difference. It also comes with @maddjames28’s DataService, which is a module that handles data in your game with an object-oriented approach while using @lolerisProfileService. The main reason I created CanaryEngine was because most frameworks out there were too complex, and the ones that weren’t complex were written terribly. I can say that Knit or any other of the well-known frameworks are better than this, but I personally I like to design my own systems that fit my liking. Knit is just too feature packed and heavy (in my opinion). CanaryEngine lets you do your own thing. The only stuff that CanaryEngine is supposed to do is organize your game and help you keep track of it, along with simplifying and enhancing data saving and networking.

Why you should (maybe?) use it

I won’t go out and say that this is the best framework or anything, but here are a few reasons why you might want to use it.

  • Type Safe - Fully compatible with Roblox’s intellisense.

  • Simple API - There is very little API to interact with, therefore it shouldn’t take long to get used it!

  • Fully Documented - All functions in the main module are fully documented, along with the types

  • Easy Setup - Simply require the module on the server, and your game will be set up automatically.

  • Nicely Organized - Their are folders such as Scripts, Packages, and Media each with their own client, server, and shared (later referred to as global) folders.

  • Lightweight - The framework is really lightweight, with only about 4 modules needed to startup and function, totaling to ~400 lines of code (including function documentation).

Is it better than Knit?

No. It is definitely not better than Knit, but for people like me that like to do their programming in studio it may be. Knit will most likely always be the superior of all frameworks, so saying this is better than Knit is probably very controversial.

Alright, sounds good, how do I set it up?

Setting up should only take you about 3 minutes. To set up, place the RBXM or model into ReplicatedStorage. From there, you can press test, and the default scripts should print Hello, client! and Hello, server!. You should also get a Framework has successfully loaded! message as well. After this, you can keep adding scripts, packages, and media that can be accessed through CanaryEngine.GetEngineServer/Client().Media, .Packages, etc. A more advanced tutorial will be on the main site once it is finished. To create packages/scripts, you can simply copy over stuff from CanaryEngine.Templates. You should also get the plugin, that can help you migrate to newer versions! The plugin is listed above in the Roblox link.

Hey! I like this! But this needs fixing:

You should always reply here to post any bugs or feature requests so other forum members can evaluate if it’s worth it.

Conclusion

Thanks for reading my post as always. I really hope you enjoy my framework, and please send any and all feedback as this framework has been being worked on for 6 months, and after many tests, redo’s, and errors, I was able to release this today. :heart:

Will you use this framework?
  • Sure!
  • No thanks!
  • Maybe later!

0 voters

12 Likes
GitHub issue:
  • src/Debugger has no file type, so syntax highlighting is disabled

This seems like a lightweight yet solid framework, and I’m glad to see it’s fully type-safe. Is there a page/readme for documentation? I’d like to read the API ref before I use it.

1 Like

Not right now, but if you look at src/CanaryEngine.lua you can find documentation above each function and type. I am not the best documentation writer, but a website is shipping (probably tomorrow) that will host documentation and tutorials. Thanks for using my framework!

GitHub issue fixed

1 Like

Also just wanted to let you that type checking for modules is broken right now, as Roblox does not support table require paths (for literally no reason?). Though, I am working on a plugin that helps you add packages to your game, so I am planning on having some sort of table where a new module gets inserted as a dictionary key while it’s imported to bypass this. (yes I am very sad rn PLEASE JUST FIX THIS)

I personally don’t like using frameworks, but this looks pretty promising and I’m probably going to look into it later. Thanks for the resource!

1 Like

No problem, I’m going to be adding an actual docs site soon. And yes, I felt the way same way about using frameworks when I was a beginner. I always felt they were too complicated and still do. I made CanaryEngine just like any other framework out there, but lightweight, easy to understand, and just overall better without all this weird declaring through the self keyword, which I feel like is being heavily misused. Another great plus is being type safe, as I love Roblox’s intellisense as a beginner and still think it’s an absolute godsend to implement typing.

2 Likes

Just wanted to let all of you know that a plugin for a coming soon to make your experience while using CanaryEngine easier. It will include package creating, lists, and a module to keep track of all packages and to keep intellisense enabled at all times. Hope you’re looking forward to it :eyes:

1 Like

If this framework is basically just knit but bridgenet and datastore modules, I will actually try this!

The biggest reason what flinged me away from using bridgenet was because it had no support for knit. Thanks.

And, will there be a ts version too? I would also like a Flamework with bridgenet

I would add typescript support, but I have no idea how.

If you know some ts, you can add a .d.ts file and set the types.

1 Like

Framework Update

@R0bl0x10501050
@1DiamondBor
@commitblue


The framework has been updated:

  • Added plugin that helps you migrate from older versions
  • Updated main module to include utility functions
  • Removed function from debug module
  • Docs coming at least by this weekend

Changes will be pushed to GitHub by at most 5 PM tomorrow due to school. Get the plugin: https://create.roblox.com/marketplace/asset/12591143042/Canary-Studio

2 Likes

I threw together a framework using a modified version of BridgetNet2 that is also very similar to Knit called Flux. You can try it if you want, but the documentation is lacking and its probably full of bugs. I think my ts works for the most part at least.

FluxFrameworkStandAlone@0.0.1.rbxl (309.6 KB)

i prefer a pretty stable framework for this kinda stuff. hopefully youll release it

I’ll try to work on it a little more, but as of right now, BridgeNet2 is not giving a performance increase I would’ve liked. Additionally, it’s missing InvokeFunctions, and the developer of BridgeNet2 doesn’t plan to add it himself.

1 Like

It’s preffered that you don’t self-advertise on someone else’s post. Please move this to DM’s, thank you.

2 Likes

It’s not self-advertisement, but sure.

Framework Update


The framework has been updated:

  • Added install and uninstall to plugin
  • Added Utility, Benchmark, and Serialize (BlueSerializer by @commitblue) libs to the main module
  • Better NetworkSignal typing
  • Removed intellisense from plugin, it’s sadly impossible
  • A few QOL fixes
  • Add support for checking framework version automatically with GetLatestPackageVersionAsync, it is now an attribute under the main module.
  • Bug fixes
2 Likes

Small update to squeeze in here: Finished docs in 2 hours :partying_face:, now linked in main post.

Any update suggestions? I would like to take in some feedback.

I don’t know if it’s a good suggestion but can you add replicaservice on the framework?

1 Like