Dla profesjonalnych studiów deweloperskich, skonfigurowanie narzędzi osób trzecich i inwestowanie w automatyzację może znacznie poprawić wydajność deweloperów. Chociaż podejście Roblox z pierwszeństwem dla chmury ma wiele zalet, przeniesienie niektórych części przepływu pracy poza chmurę może pomóc większym zespołom śledzić zmiany w czasie, recenzować kod oraz korzystać z języków i narzędzi, z którymi są już zaznajomieni.
- Jeśli chcesz tylko używać zewnętrznego edytora tekstu lub przechowywać kod w systemie kontroli wersji, Script Sync jest świetnym wyborem.
- Jeśli chcesz zarządzać całym projektem jako zestaw lokalnych plików, ta strona omawia kilka narzędzi i strategii.
Problem synchronizacji
U podstaw korzystania z narzędzi zewnętrznych z Roblox stoi problem synchronizacji:
- Chcesz, aby Twoje instancje Roblox istniały jako pliki na dysku, abyś mógł korzystać ze swoich narzędzi do pracy nad nimi.
- Musisz wprowadzić swoje pliki z powrotem do projektu Roblox po zakończeniu pracy nad nimi.
- Jeśli ktoś inny w międzyczasie zmienił te same pliki, musisz poradzić sobie z konfliktami.
Aby całe rozwiązanie było płynne i automatyczne, musisz a) nasłuchiwać zmian w plikach i b) włączyć te zmiany z powrotem do Studio.
Zamiast podejścia Roblox z pierwszeństwem dla chmury, Rojo pozwala na podejście "pierwszeństwa systemu plików". Uruchamia serwer na Twojej maszynie, który komunikuje się z wtyczką Studio w celu synchronizacji Twoich plików i modelu danych Studio.
Zainstaluj Rojo z Rokit
Możesz ręcznie pobrać i uruchomić plik binarny Rojo, ale takie podejście niesie ze sobą ryzyko, że różni deweloperzy w Twoim zespole będą używać różnych wersji Rojo. Lepszym rozwiązaniem jest użycie menedżera łańcucha narzędzi, takiego jak Rokit, który wykorzystuje plik konfiguracyjny - listę repozytoriów i wersji - aby proces instalacji i aktualizacji był spójny na różnych maszynach.
Ponieważ zarządza Twoim podstawowym środowiskiem deweloperskim, a nie pakietami w Twoim projekcie, Rokit jest bardziej podobny do nvm niż npm, ale porównanie nie jest doskonałe. Prosty plik rokit.toml wygląda tak:
[tools]
rojo = "rojo-rbx/rojo@7.6.1"
wally = "upliftgames/wally@0.3.2"
lune = "lune-org/lune@0.10.4"
Następnie instalujesz te narzędzia za pomocą rokit install. Oprócz globalnego pliku rokit.toml, Rokit obsługuje pliki per-project, więc możesz łatwo używać różnych wersji Rojo, Wally lub jakiekolwiek inne narzędzie w różnych projektach i utrzymywać cały zespół na tych samych wersjach.
Gdy narzędzie wyda nową wersję, jawnie zwiększysz numer wersji w swoim pliku .toml, używasz Rokita do przeprowadzenia aktualizacji, testujesz nową wersję i obniżasz, jeśli powoduje problemy. Aby uzyskać polecenia i instrukcje instalacji, zobacz Rokit.
Uruchom Rojo
Po zainstalowaniu Rojo za pomocą Rokita, to, co naprawdę zainstalowałeś, to serwer Rojo. Następnym krokiem jest zainstalowanie wtyczki Rojo dla Roblox Studio.
Możesz ją zainstalować z Creator Store lub zainstalować lokalnie za pomocą tego polecenia:
rojo plugin install
Następnie wygeneruj strukturę projektu dla swojej nowej gry i zbuduj ją:
rojo init my-new-experiencecd my-new-experiencerojo build -o my-new-experience.rbxl
Alternatywnie, możesz przenieść istniejącą grę. Tak czy inaczej, po utworzeniu projektu, uruchom serwer Rojo:
rojo serve
W Roblox Studio otwórz plik .rbxl, który właśnie zbudowałeś, otwórz wtyczkę Rojo i połącz się z uruchomionym serwerem, w którym możesz zacząć wprowadzać zmiany w preferowanym edytorze tekstu i obserwować, jak te zmiany automatycznie synchronizują się z Studio.


Projekty Rojo mają określone wymagania dotyczące nazewnictwa plików, liczne opcje konfiguracyjne i pewne ograniczenia, wszystkie z nich są omówione w dokumentacji Rojo.
Menedżery pakietów
Roblox ma bogaty zestaw wbudowanych API, ale jeśli chcesz korzystać z pakietów oprogramowania społeczności w spójny, powtarzalny sposób, potrzebujesz menedżera pakietów. Wally jest popularną opcją. Możesz go zainstalować za pomocą Rokita, podobnie jak Rojo.
W katalogu Rojo Twojej gry uruchom wally init. Następnie dodaj swoje pożądane pakiety do wally.toml. Plik może wyglądać tak:
[package]
name = "my-home-directory/my-new-experience"
version = "0.1.0"
registry = "https://github.com/UpliftGames/wally-index"
realm = "shared"
[dependencies]
react = "jsdotlua/react@17.2.1"
react-roblox = "jsdotlua/react-roblox@17.2.1"
cryo = "phalanxia/cryo@1.0.3"
Następnie uruchom wally install. Wally tworzy katalog Packages i pobiera określone pakiety tam. Ostatnim krokiem jest dodanie katalogu Packages do Rojo, aby jego zawartość synchronizowała się z Roblox. Otwórz default.project.json i dodaj ścieżkę. Dla uproszczenia, ten przykład dodaje cały katalog do ReplicatedStorage, aby wszystkie pakiety były dostępne dla wszystkich skryptów, ale możesz woleć dodać konkretne pakiety do ServerScriptService lub StarterPlayerScripts:
{
"name": "my-new-experience",
"tree": {
"$className": "DataModel",
"ReplicatedStorage": {
"Shared": {
"$path": "src/shared"
},
"Packages": {
"$path": "Packages"
}
},
...
}
}
Następnie możesz wymagać pakiety w swoich skryptach, tak jak każdy inny ModuleScript:
local Players = game:GetService("Players")local ReplicatedStorage = game:GetService("ReplicatedStorage")local React = require(ReplicatedStorage.Packages.react)local ReactRoblox = require(ReplicatedStorage.Packages["react-roblox"])local handle = Instance.new("ScreenGui", Players.LocalPlayer.PlayerGui)local root = ReactRoblox.createRoot(handle)local helloFrame = React.createElement("TextLabel", {Text = "Hello World!",Size = UDim2.new(0, 200, 0, 200),Position = UDim2.new(0.5, 0, 0.5, 0),AnchorPoint = Vector2.new(0.5, 0.5),BackgroundColor3 = Color3.fromRGB(248, 217, 109),Font = Enum.Font.LuckiestGuy,TextSize = 24})root:render(helloFrame)
Jak w większości innych projektów oprogramowania, celem jest, aby współpracownicy mogli sklonować repozytorium, zainstalować Rokita, uruchomić kilka poleceń i mieć takie samo środowisko deweloperskie jak reszta zespołu.
Kontrola wersji
Posiadanie zestawu zwykłych plików tekstowych na swoim komputerze odblokowuje różnorodne możliwości, ale główną z nich jest kontrola wersji. Możesz przechowywać swoje pliki w repozytorium Git lub Mercurial; hostować zdalne repozytoria i przeglądać zmiany kodu w GitHub, GitLab lub Bitbucket; oraz używać dowolnego edytora tekstu, który lubisz.
Visual Studio Code i Cursor mają największy ekosystem rozszerzeń, ale Sublime Text i Notepad++, oraz Vim są również popularnymi wyborami. Niezależnie od wybranego edytora, dopasowanie możliwości edytora skryptów Studio będzie wymagało pewnych rozszerzeń.
Możesz również rozważyć dodanie:
- Lintera, takiego jak selene, aby uchwycić powszechne problemy i wymusić standardy kodowania
- Formatującego kod, takiego jak StyLua
- Serwera językowego, takiego jak Luau Language Server dla autouzupełniania, sprawdzania typów i więcej
- Skryptów Open Cloud (nie synchronizowanych z Studio), aby aktualizować opublikowaną grę lub restartować serwery
Cofnij wszystko
Ponieważ narzędzia osób trzecich synchronizują zmiany z powrotem do Roblox Studio, a nie je zastępują, żadna część tego przepływu pracy nie wiąże się z żadnym blokowaniem. W każdej chwili możesz przestać używać jednego lub wszystkich tych narzędzi i powrócić do edytowania swojej gry wyłącznie w Studio. Brak ryzyka sprawia, że eksperymentowanie z narzędziami osób trzecich jest szczególnie kuszące.