* Changes project-related structures to use `BTreeMap` instead of `HashMap` for children to aid determiniusm * Changes imfs-related structures to have total ordering and use `BTreeSet` instead of `HashSet` * Upgrades dependencies to `bx_dom_weak`1.2.0 and rbx_xml 0.5.0 to aid in more determinism stuff * Re-exposes the `RbxSession`'s root project via `root_project()` * Implements `Default` for a couple things * Tweaks visualization code to support visualizing trees not attached to an `RbxSession` * Adds an ID-invariant comparison method for `rbx_tree` relying on previous determinism changes * Adds a (disabled) test to start finding issues in the reconciler with regards to communicativity of snapshot application * Adds a snapshot testing system that operates on `RbxTree` and associated metadata, which are committed in this change
Rojo is a flexible multi-tool designed for creating robust Roblox projects.
It lets Roblox developers use industry-leading tools like Git and VS Code, and crucial utilities like Luacheck.
Rojo is designed for power users who want to use the best tools available for building games, libraries, and plugins.
Features
Rojo lets you:
- Work on scripts from the filesystem, in your favorite editor
- Version your place, model, or plugin using Git or another VCS
- Sync
rbxmxandrbxmmodels into your game in real time - Package and deploy your project to Roblox.com from the command line
Soon, Rojo will be able to:
- Sync instances from Roblox Studio to the filesystem
- Compile MoonScript and other custom things for your project
Documentation
You can also view the documentation by browsing the docs folder of the repository, but because it uses a number of Markdown extensions, it may not be very readable.
Inspiration and Alternatives
There are lots of other tools that sync scripts into Roblox or provide other tools for working with Roblox places.
Here are a few, if you're looking for alternatives or supplements to Rojo:
- rbxmk by Anaminus
- Rofresh by Osyris
- RbxRefresh by Osyris
- Studio Bridge by Vocksel
- Elixir by Vocksel
- RbxSync by evaera
- CodeSync by MemoryPenguin
- rbx-exteditor by MemoryPenguin
If you use a plugin that isn't Rojo for syncing code, open an issue and let me know why! I'd like Rojo to be the end-all tool so that people stop reinventing solutions to this problem.
Contributing
Pull requests are welcome!
Rojo supports Rust 1.32 and newer. Any changes to the minimum required compiler version require a minor version bump.
License
Rojo is available under the terms of the Mozilla Public License, Version 2.0. See LICENSE.txt for details.
