Dla profesjonalnych studiów deweloperskich, skonfigurowanie narzędzi zewnętrznych i inwestowanie w automatyzację może znacznie poprawić produktywność deweloperów. Chociaż podejście Roblox oparte na chmurze ma wiele zalet, przeniesienie niektórych części procesu deweloperskiego poza chmurę może pomóc większym zespołom śledzić zmiany w czasie, przeglądać kod i korzystać z języków oraz narzędzi, z którymi są już zaznajomieni.
- Jeśli chcesz po prostu 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 niektóre narzędzia i strategie.
Problem synchronizacji
W swojej istocie, używanie narzędzi zewnętrznych z Roblox to problem synchronizacji:
- Chcesz, aby Twoje instancje Roblox istniały jako pliki na dysku, abyś mógł używać własnych 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 zmienił te same pliki w międzyczasie, musisz poradzić sobie z wszelkimi konfliktami.
Aby całe rozwiązanie wydawało się 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 opartego na chmurze, Rojo pozwala na podejście "najpierw system plików". Uruchamia serwer na Twoim komputerze, który komunikuje się z pluginem Studio, aby synchronizować Twoje pliki i model danych Studio.
Zainstaluj Rojo z Rokit
Możesz ręcznie pobrać i uruchomić binarkę Rojo, ale to podejście niesie ryzyko, że różni deweloperzy w Twoim zespole będą używać różnych wersji Rojo. Lepszym rozwiązaniem jest użycie menedżera narzędzi, takiego jak Rokit, który używa pliku konfiguracyjnego — listy 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 idealne. 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-projektowe, więc możesz łatwo używać różnych wersji Rojo, Wally lub jakiegokolwiek innego narzędzia dla różnych projektów i utrzymywać cały zespół na tych samych wersjach.
Gdy narzędzie wydaje nową wersję, musisz wyraźnie zwiększyć numer wersji w swoim pliku .toml, użyć Rokit do przeprowadzenia aktualizacji, przetestować nową wersję i obniżyć wersję, jeśli powoduje jakiekolwiek problemy. Aby uzyskać polecenia i instrukcje instalacji, zobacz Rokit.
Uruchom Rojo
Po zainstalowaniu Rojo z Rokit, to, co naprawdę zainstalowałeś, to serwer Rojo. Następnym krokiem jest zainstalowanie pluginu Rojo dla Roblox Studio.
Możesz go zainstalować z Creator Store lub zainstalować lokalnie za pomocą tego polecenia:
rojo plugin installNastępnie wygeneruj strukturę projektu dla swojej nowej gry i zbuduj ją:
rojo init my-new-experience
cd my-new-experience
rojo build -o my-new-experience.rbxlAlternatywnie, możesz przenieść istniejącą grę. W każdym razie, po utworzeniu projektu, uruchom serwer Rojo:
rojo serveW Roblox Studio otwórz plik .rbxl, który właśnie zbudowałeś, otwórz plugin Rojo i połącz się z teraz działającym 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, które są omówione w dokumentacji Rojo.
Menedżery pakietów
Roblox ma solidny zestaw wbudowanych interfejsów 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 to popularna opcja. Możesz go zainstalować przez Rokit, tak jak Rojo.
W katalogu Rojo swojej gry uruchom wally init. Następnie dodaj 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 tam określone pakiety. Ostatnim krokiem jest dodanie katalogu Packages do Rojo, aby jego zawartość synchronizowała się z powrotem do 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ć pakietów 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 = "Witaj Świecie!",
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ółtwórcy mogli sklonować repozytorium, zainstalować Rokit, uruchomić kilka poleceń i mieć to samo środowisko deweloperskie, co reszta zespołu.
Kontrola wersji
Posiadanie zestawu 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 w kodzie w GitHub, GitLab lub Bitbucket; i używać dowolnego edytora tekstu, który lubisz.
Visual Studio Code i Cursor mają największy ekosystem rozszerzeń, ale Sublime Text, Notepad++ i Vim to również popularne wybory. Niezależnie od tego, który edytor wybierzesz, dopasowanie możliwości edytora skryptów Studio będzie wymagało kilku rozszerzeń.
Możesz również rozważyć dodanie:
- Lintrera, takiego jak selene, aby wychwytywać powszechne problemy i egzekwować standardy kodowania
- Formatera kodu, takiego jak StyLua
- Serwera językowego, takiego jak Luau Language Server do autouzupełniania, sprawdzania typów i więcej
- Skryptów Open Cloud (nie synchronizowanych z Studio) do aktualizacji opublikowanej gry lub restartowania serwerów
Cofnij wszystko
Ponieważ narzędzia zewnętrzne synchronizują zmiany z powrotem do Roblox Studio, a nie zastępują go, żadna część tego przepływu pracy nie wiąże się z żadnym uzależnieniem. W każdej chwili możesz przestać używać jednego lub wszystkich tych narzędzi i wrócić do edytowania swojej gry wyłącznie w Studio. Brak ryzyka sprawia, że eksperymentowanie z narzędziami zewnętrznymi jest szczególnie atrakcyjne.