[Early Preview] Studio Script Sync

Great question! I can’t share any info on timelines right now, but we’re actively thinking about how to best expose these capabilities to Studio plugins.

7 Likes

I’ve seens a lot of people mention github, but I’m not sure what they mean. I’m also not very familier with github (since I’ve never really needed it until very resontly) so could you explain to me what part github have in all this?

2 Likes

Love this new change!
Still waiting for a LUAU IntelliJ Platform Extension :sob:

1 Like

I am not familiar setting up projects in VSC how can I set up my VSC so I can have linting or module script references? or is still not possible to do this? without rojo

1 Like

I use Roblox LSP, which offers a full Roblox environment with support for Rojo. It automatically updates the local Roblox API according to changes made to the website.

3 Likes

I really think there should be a feature to sync the whole game/DataModel to the disk. Like if you create a script, it will create that on the system etc. or is that where I should use Rojo?

2 Likes

It’s a Java IDE :skull:.
Now if you suggested Java instead of Lua I would be in!

1 Like

Praying we get source maps some time after the code freeze :pray:
Aside from that this update is really great! I’ve been wanting to use VSC for my development but I didn’t want to use Rojo

.O.

Maybe in a few years we will have git support… :eyes:

2 Likes

I’m talking about an extension for all the IDEs, since JetBrains plugins work on all IDEs.

2 Likes

Other game engines are done with this one :skull_and_crossbones:

1 Like

This is awesome! I am so excited to use this feature.

Thanks for the great update Roblox!

2 Likes

Let me ask you this, which one sound better?

The most well known IDE to ever exist which has seamless integration with countless other tools such as a Git that is used by the majority of the worlds’ programmers that offers tens of thousands of extensions and so much more like Copilot.

Or a text editor that has to be simple enough for a child to use which limits the use of extensions, allows for bad practices and starts to drop frames at a couple thousand lines of code.

I choose option 1, I have several branches for the coders that work with me, we easily merge code together without disrupting each others flow and we can always view and discuss code without studio open and use GitHub issues to list down errors we encounter.

1 Like

You can have autocomplete in VSCode, there’s an extension for it which allows to sync to Roblox

3 Likes

Which extension is it? I want to use it myself

1 Like

You can find information in here about it,

There’s a companion plugin and within the extension settings.

3 Likes

This is cool, personally I don’t use external editors to do my scripts, studio works for me.

Thanks for sharing the feedback!

This is an interesting one.

When we first started digging into this problem, we focused on ‘manual’ sync. The challenge with that mode of work is that every sync operation is essentially a merge operation, as the state on disk and Studio are allowed to freely diverge.

It’s definitely possible to build reasonable workflows around this, but they require extra input or rules for the user to manage. When thinking about ‘manual’ operations to move data between files and Studio, the following operations come to mind:

  • Import & Export: Manual transfers between tools using standard file formats
  • Reload: Previously imported data is ‘updated’ to reflect new state rather than new state being inserted

We need to think more about these operations for scripts - but it might be import, export and reload operations are useful for your use case. Let us know what you think!

This use case makes sense to me. One way you could unlock it today with the current feature is you could sync a ModuleScript that’s parented to a ModuleScript that is not being synced. Then with a Studio plugin you could set up a change listener that reads the synced script, mutates it, then writes to the non-synced script. This probably isn’t the exact ergonomics you’re looking for. More thought is needed on the interfaces we expose to plugins.

This sounds interesting, can you give me some examples here of where GetPropertyChangedSignal("Source") would be insufficient here?

4 Likes

Great question! Here are some tools that you may find helpful (note, these are all made by the community)

  • Selene: Linting / static analysis. This includes a ‘roblox’ library so you get linting on roblox globals too.
  • StyLua: Code formatting
  • Luau Language Server: Language server features (autocomplete, definitions etc.). Note, today LSP plugins will not work fully as they do not have the info they need to map synced scripts to their location in the DM. We plan to add this support.
5 Likes

I was under the impression that Source wasn’t guaranteed to be up to date and we shouldn’t be using it for this stuff. Especially in Team Create. Is this not the case?