Cyclone - An open-source customizable framework with included utilities

Source code on GitHub

What is Cyclone?

An implementation of the open-source Order framework for Roblox, coupled with commonly used modules and utilities, created by @ChiefWildin. It combines some of the best features of other popular frameworks, and adds a few of its own.

What can I do with this?

Cyclone is meant to cut out a lot of the overhead in starting a new Roblox project, by providing tools to get right into the action. For example, I created this cool effect with a couple of toolbox assets, just 9 lines of code and less than 5 minutes with Cyclone! (you’ll have to excuse the GIF artifacts)

What does it come with?

Order

Cyclone is based on Order, which is a module loader framework for Roblox that provides simple and fast module lookup, cyclic dependency support, a customizable initialization sequence, and more! See its documentation for more details on that.

In addition to the framework, Cyclone also comes packaged with a number of useful modules and utilities. Most are modules that I’ve developed over the past couple of years to make my development workflow faster and more stable, and the rest are open source modules provided by other wonderful members of the development community.

Some of the more notable modules include:

AnimNation

A streamlined object animation utility that simplifies the use of springs, tweens, and splines on properties. Do you wish you could use a Spring on an object just as easily as you can with a Tween in a single line of code? Now you can. Want to move a Model by its pivot point or animate its scale? You can do that too. Need a more complex binding to a spring’s values? We’ve got it all here. Also available separately from its dedicated repository.

PlayerData / DataController

A wrapper for ProfileService and ReplicaService to streamline the process of keeping data updated, consistent, fast, and reliable between DataStores, server, and client. This module also provides its own API to simplify the most common data operations. Complex data features can also be achieved with some more advanced knowledge of working with Replicas.

Analytics

An implementation of the GameAnalytics SDK with the added feature of automatically reporting both client and server warnings in addition to errors. Simply create an account and game listing with GameAnalytics, plug in your keys, and you’re good to go!

GetRemote

Simplified networking. To use it, you just pass in a name, and it gives you a Remote. What is a Remote? Think of it as a combined RemoteEvent and RemoteFunction - the APIs for both are contained in a single object, as well as a couple others like :Fire() that infer the correct context for more streamlined code.

Get

Tired of super long :WaitForChild() chains? Want to get references to multiple instances at once? Look no further, Get gives you the ability to do both of those things in a single compact function call.

TagGroup

A quick and easy way to manage tagged items. Invaluable for working with experiences that have StreamingEnabled turned on. Create a TagGroup based on a tag string, and it will instantly keep track of an auto-updating table that contains all existing instances with that tag. You can also assign functionality to these tags, as well as cleanup functions when an item’s tag is removed.

Getting Started

The following instructions will get you up and running with a Cyclone-powered experience! This assumes that you have at least a basic understanding of Roblox Studio and Git repositories. If you don’t understand Git, don’t worry - it’s easy! You can get started with the GitHub documentation or look up one of the other hundreds of tutorials on the Internet.

A Roblox-only workflow is planned, but isn’t quite ready yet. That said, I highly recommend learning the Git/Rojo workflow that this was built for, if you’re not already familiar.

1) Download Visual Studio Code and Rojo

  1. Download and install VS Code from here
  2. From VS Code, install the extension Rojo from the Extensions tab on the left sidebar or through this link.
  3. In Roblox Studio, search for and add the plugin for Rojo through the toolbox, or use this link.

2) Create a new repository based on this template

  1. Sign in or create an account at github.com
  2. At the top of the repo page for Cyclone, click the green “Use this template” button and select “Create a new repository”
  3. Select the proper owner, add a name, choose your desired visiblity options, and click “Create repository from template”
  4. Using the software of your choice (I typically use VS Code’s Source Control menu), clone your new repository to your computer

3) Project configuration

  1. Open the new repository in VS Code and then open the default.project.json file
  2. At the top, you’ll see a string that reads “New Cyclone Project”, replace this with the name of your new project and save the file

4) Sync code into Roblox Studio

  1. In VS Code, click the Rojo button on the bottom right (if you don’t see this icon, verify the Rojo extension is installed and restart VS Code)
  2. In the context menu that appears, click on default.project.json at the bottom
  3. In Roblox Studio, create or open a place file that will host your new experience
  4. Switch to the Plugins tab, and select Rojo
  5. In the Rojo window that appears, click “Connect”

You are now up and running with Cyclone! Any code you write in VS Code will be synced into your new game whenever you save the file. If you need further help, you can search for/post a topic here on the DevForum, read the Order docs, check out the Rojo docs, or join the [nxt_lvl] Discord Server!

Found a bug or want to contribute?

Cyclone and Order are completely open-source and welcome community contributions! If you’ve found/fixed a bug or want to add a feature, you can open an issue or pull request on GitHub for me to review. You can also provide feedback or get support through the Discord server and docs linked above.

I don’t expect this to be perfect right off the bat, so bear with me as I work through the initial kinks in the system. The code has been battle-tested in live experiences (Order in FLASHPOINT, and the other modules in various Sawhorse experiences I’ve worked on), but that doesn’t mean it’s bulletproof and I both recognize that and expect issues to arise.

Thanks for looking!

31 Likes