Yeah, it’s definitely not for everyone and it took me quite a bit to figure out. Though after much confusion, I managed to learn how to Rojo a few days ago using this tutorial.
Roblox, instead of wasting time making tools that simply don’t give the same experience as existing, industry-standard ones, just integrate support for existing ones. I feel like when Roblox reinvents the wheel just so developers feel forced to use their tools instead it actually harms the development process instead of actually helping it.
Take drafts for example. They are a clear Git wannabe. I appreciate the effort being put into these tools by the engineers however these tools simply are not satisfactory enough.
I see Alvin_Blox’s point of view:
To power users, setting up Rojo is a piece of cake. However not everyone is a power user (like me) and they haven’t used command line or other stuff very often so to non-power users it might be somewhat challenging to set it up. I personally use it but I don’t even know if it’s the correct way, it just happens to work.
Native support for Rojo is a must. Roblox engineers won’t be able to even replicate the feeling of the tools Rojo opens the doors to any time soon, so they should instead save their time by providing native support for better, existing, tools.
Edit: let’s also not forget that Studio often crashes. I have personally lost days of work due to a crash. I can write my code in a better editor and that editor basically has never crashed. I can even code offline!
Roblox Studio actually reminds me of that one employee who always shows up late for work, never does their job properly, and when they first do their job, it’s so slow you want to do it yourself. Not just this, but it also feels like they don’t even want the job in the first place, and on purpose wants to annoy the heck out of you.
That, is Roblox Studio for me now. These days, Roblox Studio is only used when I have to publish the game I’m working on, and even that I have plans to avoid. With Roblox Studio, I’m limited. Want to write some code? Enjoy having “An unexpected error occurred and Roblox needs to quit. We’re sorry!”, where you can actually expect it to happen, and all you’re wondering is when, and how.
Rojo, my friends, is here to help. It’s literally the tool we need but don’t deserve (though, we actually deserve it). With Rojo you know what you write is being saved, that you can type as freely as you want, that you can do almost anything to improve your workflow, and that it works, consistently. Enjoy your favorite editor, git, NPM, TypeScript. All you need to worry about is if Studio crashes when you press the publish button.
Whilst I personally have no experience with Rojo, I have heard of it and heard of many enterprise/industry usages from contacts so far. I’ve yet to explore it - I hope more video tutorials are created to make setup easy and give a brief overview of it. I’ve only found one video on YouTube with very brief install instructions but not much more sadly. I will heavily still support any tool that integrates Git in any form directly into studio even via a third-party solution.
I’ve worked (and continue to work) on a large number of projects using Visual Studio and Visual Studio Code for jobs outside and inside Roblox and the direct GitHub integration in VS, VS Code is a godsend. It makes commits, history, and tracking for large scale projects a breeze. With a GitHub setup, it provides value to industry tools such as Microsoft Project for Gantt Charts - and may even serve as an attractive plus point for attracting and maintaining large and possibly enterprise-level teams.
Finally having any type or form of Git enabled offers a huge range of connected advanced features for experienced professionals to take advantage of (further integrating with professional industry collaboration tools like Microsoft Teams) and if someone wanted to get really advanced a integration with Azure but that’s far out of scope.
I’m in support of this feature as long as it doesn’t take away from the system currently available. Rojo is nice and so is Git, but there are some cases where I just don’t want to use either, and would much rather just have everything stored in Roblox’s cloud how it normally is.
Not too big of a deal but one thing I’ve noticed is that the more platforms outside of your own you start to rely on, the more points of failure you have. For example, as of right now GitHub is down, if Roblox were to strictly rely on GitHub services for pulling scripts and such, we could start to see more outages overall
EDIT: Buildthomas pointed out my misunderstanding in a reply and I now understand git is independent of GitHub and its services.
Although it’s entirely possible, Roblox would have to work really hard to make sure a system like this is stable and doesn’t conflict with their own services and operations. Thankfully that’s not our problem.
This is actually a somewhat valid statement. Suddenly throwing a feature set like this out at people will make things very confusing, especially for younger and newer developers. I believe the best way to implement this feature is to do so in a way that’s almost discrete, like its there for you to use, but if you don’t want to use it its no big deal. A non-invasive but obvious implementation would be ideal.
On the topic of external editors I like Visual studio but I don’t think Roblox should try and integrate that into Studio as some other platforms do. Relying on other companies’ services usually isn’t exactly ideal, as engineers would have to start writing code around some other company’s software and code, and that may restrict many feature implementations that may come in the future, and may result in more issues than it would solve. In the case of Roblox, If they can efficiently and logically develop their own software without creating something strictly redundant then I’d say do so.
So do I think Rojo should be a first-class citizen? Sure, as long as it doesn’t overcomplicate things and ruin the current workflow available.
Just a FYI but none of Rojo, git or Github are mutually inclusive. You can use Rojo without using git (all Rojo does is syncing files into Studio), and you can use git without using Github. (e.g. Gitlab is also a thing, or many other sites, or do your own hosting, or keep your repo local-only) The argument about Github reliability is not very relevant here for that reason.
I made the switch to Rojo after reading testimonials in this thread. I have now been using it for about a week and wanted to share my experience using Rojo+Git vs using the packages feature Roblox provides.
There are many good things about using packages:
- Packages can sync any instance and its properties without the friction of using things such as .meta.json files and manually declaring properties to sync in Rojo. This is big.
- Anyone with access can easily update packages. For our team this means that when we want to push an update to our game, multiple people can update multiple places at the same time for improved efficiency.
- Rollback if a critical issue occurs is very simple, as long as you know and keep track of the last “working” version of a package. Just change the one version number on the link and it rolls back to that version automagically with no fuss.
All of these things are great when they work.
Roblox Studio’s requirement to always have a completely stable internet connection, very long load/wait times to update/publish large packages, as well as the servers handling packages at times being unreliable and failing, makes Rojo+Git the better alternative for me personally. Here’s why:
One of our games has 15 separate places right now and is growing. For every place, any one of the mentioned issues may happen. Having 15 places, and updating them all, it’s almost guaranteed that at least one of these issues will slow down our update process, as compared to using Rojo and pushing updates through syncing, which has worked 100% of the time so far and is consistently fast.
After switching to using Rojo, I get more work done in less time. With an official Rojo integration for Studio, I would spend less time starting up sessions, and more time working.
Do you (still) use packages to sync scripts/code between places? I used to do this, but without two-way sync, Rojo keeps overwriting the changes.
Two-way sync was being worked on for Rojo.
One question. I have shared scripts between places but also some scripts are different.
IS it possible to just edit the 1 script and push it to all places? How easy is something like this in Rojo? (never used Rojo but am considering it)
You can also store instances as rbxmx
files and “easily update” them from there as well. Most properties sync perfectly fine with a pre-ran rojo build
.
You can do this with git or any other VCS as well. Most, if not all of the features you see in packages already exist in external version control systems. “Packages” are just a form of dependency management - if you search for “dependency management”, you’ll see a huge rabbit hole of tools, platforms, etc for just this.
In most cases, it’s possible, but in the cases where it is not, it’s completely disruptive and prevents builders/modelers from working on something while using Rojo. It’s also an extra step of going from Studio>Filesystem>Back into studio where it’s not really necessary for our workflow.
I’m aware of all this, but from the standpoint of a team making games entirely for Roblox, and using Studio, it is a lot more convenient to use packages because of their first-party support and tight integration. The points are listed because of that, convenience, not necessarily because packages are overall better vs using an external VCS.
Ideally your builders/modelers shouldn’t have to even worry about version control or know what it is. You should have your dev environment setup so that they can simply DM you model files / Roblox assets and you can take care of it from there (you can even automate this with remodel!).
Rojo is the best tool ever created for Roblox studio. Roblox need to take this seriously if they want people to take their platform more seriously.
We want professional code editors, we want github repositories, we want industry standard code collaboration and we want the security of having our work saved to files instead of relying on a cloud that could go down at any moment and cause us to lose our work.
Rojo already opens all these doors for us. Rojo official integration; make it happen. Your move Roblox.
Honestly at this point, who needs official integration. It’s apparent they don’t want to listen to us because they want everything in the cloud under their jurisdiction and technology.
We have the information we need to create and host tools like rojo, we just need a smart community backed effort to reverse engineer Roblox’s file formats and protocols so we can build our own solutions to the problems Roblox doesn’t have the immediate resources and response time to deliver on.
I know they have positive intentions with what they’re doing, but they really shouldn’t be shrugging off niche crowds. I feel a sense of discomfort with the direction Roblox seems to be going, as far as it’s attitude towards 3rd party software interacting with studio goes.
We should be free to hack studio to our needs. Roblox does not need to be an all in one tool-kit. They can’t cover everyone’s niche needs, they have limited resources and a complicated internal process for shipping features. I feel like the silence on some of these issues speaks volumes to how they feel about it, and I don’t like it.
I hope they’ll make the right decision with all this feedback. Seeing everyone spam about rojo during RDC was hillarious.
I think it’s important to reflect on what you’re asking here. Rojo already works and does all these things – Roblox doesn’t actually need to do anything here to fulfil any of the productivity use cases, it’s already a thing today.
The only use case here that isn’t already fulfilled by Rojo is “make Rojo-like file syncing functionality easy to use for non-power-users”. Which is fair, but it’s not really warranting of all the hysteria I’ve seen around this topic.
I’d rather Rojo keeps being its own thing rather than a built-in feature so it is not subject to engineering cycles of various Studio teams to maintain and improve it. I’d rather they spend the engineering effort elsewhere. The community can work on making Rojo even more user-friendly.
If Studio / the platform provides solid APIs for interacting with all of Roblox’s functionality, we don’t need Roblox to take ownership of everything. We can build our own things on top.
So:
- Yes to APIs that allow Rojo and other external tooling to work as it does / better.
- No to “Integrate Rojo into Studio”.
(Note: I’m a Rojo user myself.)
For crying out loud, why is this not implemented yet? The biggest developers on the platform have shown support for this due to how many problems it solves.
Please let the programmers use their own code editor, instead of Studio’s lackluster one. Roblox Studio is first-class in programming, which breaks workflows and makes it much harder for teams to work with. Yes, I’m in support of all Studio code editor updates! But, in the meantime, we need tooling in Studio that allows other tools such as Rojo to directly interact with Studio.
This quote really says it all. Can any Roblox staff at least give a response to this post? It’s crazy how there is radio silence here, and leaves us with less trust in the platform.
Honestly, want to hustle down and try and figure out what this mysterious rbxp file format is? I have a few leads (also engineers accidentally leaking it), but not sure on what its for outside of being an external project thing.
On the topic of the main post.
InternalSyncService was Roblox’s first step here yet as the name implies, internal only, and contrary to popular belief its still being developed somewhat, since there were localisation strings for it pushed a few months ago.
We finally got some confirmation by Roblox that this is coming!
I’m really excited about this, Rojo is great but it can be awkward to set-up, Having official support for such a workflow is huge for the future of Roblox.