Dla profesjonalnych studiów rozwojowych ustawienie narzędzi stron trzecich i inwestycja w automatyzację może drastycznie poprawić wydajność programisty.Pierwsze podejście Roblox do chmury ma wiele zalet, ale przeniesienie niektórych części procesu rozwoju poza chmurę może pomóc większym zespołom śledzić zmiany z biegiem czasu, przeglądać kod i korzystać z języków i narzędzi, z którymi są już znajomi.
Problem synchronizacji
W swoim rdzeniu używanie zewnętrznych narzędzi z Roblox jest problemem synchronizacji:
- Chcesz, aby twoje skrypty Roblox istniały jako .luau pliki na dyskach, abyś mógł używać własnych narzędzi do ich pracy.
- Musisz przywrócić pliki do projektu Roblox po zakończeniu pracy nad nimi.
- Jeśli ktoś inny zmienił te same pliki w międzyczasie, musisz rozwiązać wszelkie konflikty.
Aby całe rozwiązanie było płynne i automatyczne, musisz a) słuchać zmian w plikach i b) włączyć te zmiany z powrotem do Studio.Innymi słowy, potrzebujesz dodatek plug-ini wtyczki Studio, w ten sposób Rojo rozwiązuje ten problem.
W przeciwieństwie do podejścia chmurkowego Roblox, Rojo pozwala na podejście "pierwsze system plików".Ekstrahowuje wszystkie pliki skryptowe w projekcie do plików Luau.Następnie uruchamia serwer.Wtyczka Rojo łączy się z serwerem, aby zsynchronizować te pliki z Studio.
Zainstaluj Rojo z Foremanem
Możesz ręcznie pobrać i uruchomić binarny Rojo, ale podejście to biegnie ryzykiem różnych programistów w Twoim zespole używających różnych wersji Rojo.Lepszym rozwiązaniem jest użycie menedżera narzędzi takiego jak Foreman, który używa pliku konfiguracyjnego — listy repozytoriów i wersji — aby proces instalacji i aktualizacji był spójny na wszystkich maszynach.
Ponieważ zarządza twoim środowiskiem rozwojowym podstawowym, a nie pakietami w ramach projektu, Foreman jest bardziej podobny do nvm niż npm, ale porównanie nie jest doskonałe.Prosty plik foreman.toml wygląda tak:
[tools]
rojo = { github = "rojo-rbx/rojo", version = "7.4.1" }
wally = { github = "UpliftGames/wally", version = "0.3.2" }
Następnie instalujesz te narzędzia za pomocą foreman install .Oprócz globalnego pliku foreman.toml plik Foreman wspiera pliki na poziomie projektu, więc możesz łatwo używać różnych wersji Rojo, Wally lub dowolnego innego narzędzia dla różnych projektów i utrzymywać cały zespół na tych samych wersjach.
Kiedy narzędzie wydaje nową wersję, musisz wyraźnie zwiększyć numer wersji w swoim pliku .toml, użyj Foremana do wykonania uaktualnienie, przetestuj nową wersję i zdegradowaj, jeśli spowoduje to jakiekolwiek problemy.Aby uzyskać komendy i instrukcje instalacji, zobacz Inspektor.
Wykonaj Rojo
Po instalacji Rojo z Foremanem tym, co naprawdę zainstalowałeś, jest serwer Rojo. Następnym krokiem jest instalacja wtyczki Rojo dla Roblox Studio:
rojo plugin install
Następnie wygeneruj strukturę projektu dla nowego doświadczenia i zbuduj ją:
rojo init my-new-experiencecd my-new-experiencerojo build -o my-new-experience.rbxl
Alternatywnie możesz przenieść istniejące doświadczenie. W każdym przypadku, po zakończeniu projektu, uruchom serwer Rojo:
rojo serve
W Roblox Studio otwórz plik .rbxl, który właśnie skompilowałeś, uruchom wtyczkę Rojo i połącz się ze swoim teraz uruchomionym serwerem, po czym możesz zacząć wprowadzać zmiany w swoim ulubionym edytorze tekstu i obserwować, jak te zmiany automatycznie zsynchronizują się z Studio.
Projekty Rojo mają pewne wymagania dotyczące nazywania plików, liczne opcje konfiguracji i pewne ograniczenia, które wszystkie są pokryte w dokumentacji Rojo.
Menadżerzy pakietów
Roblox ma solidny zestaw włączonych API, ale jeśli chcesz korzystać z pakietów oprogramowania społeczności w sposób spójny i powtarzalny, potrzebujesz menedżera pakietów.Wally jest popularną opcją.Możesz go zainstalować za pośrednictwem Foremana, tak jak Rojo.
W katalogu Rojo swojego doświadczenia 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.1.0"
react-roblox = "jsdotlua/react-roblox@17.1.0"
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ść zsynchronizowała się z Robloxem.Otwórz default.project.json i dodaj ścieżkę.Dla uproszczenia ten przykład dodaje całą katalog do ReplicatedStorage tak, aby wszystkie pakiety były dostępne dla wszystkich skryptów, ale możesz preferować dodanie konkretnych pakietów 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 = "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)
Podobnie jak w większości innych projektów oprogramowania, celem jest to, aby użytkownicy mogli sklonować repozytorium, zainstalować Foreman, uruchomić kilka poleceń i mieć takie samo środowisko rozwojowe jak reszta zespołu.
Kontrola wersji
Posiadanie zbioru zwykłych plików tekstowych na komputerze odblokowuje wiele możliwości, ale główną jest kontrola wersji.Możesz przechowywać swoje skrypty i pliki konfiguracyjne w katalogu Git lub Mercurial, przechowywać zdalne repozytoria i przeglądać zmiany kodu w GitHub, GitLab lub Bitbucket i używać dowolnego edytora tekstu, który lubisz.
Kod Visual Studio ma największy ekosystem rozszerzeń, ale Sublime Text , Notepad++ i Vim są wszystkie popularne wybory.Niezależnie od wybieraćedytora będzie wymagane pewne rozszerzenia, aby dopasować możliwości edytora skryptów Studio.
Możesz również rozważyć dodanie:
- Linter takie jak selene do wyłapywania powszechnych problemów i egzekwowania standardów kodowania
- Formatowacz kodu tak jak StyLua
- Serwer językowy tak jak Luau Language Server do automatycznego uzupełniania, sprawdzania typu i więcej
- Otwórz skrypty chmury (nie zsynchronizowane z Studio) do aktualizacji opublikowanego doświadczenia lub ponownego uruchomienia serwerów
Aktywa
Narzędzia na tej stronie są najbardziej odpowiednie do skryptów; artyści 3D już korzystają z zewnętrznych narzędzi, takich jak Blender i Maya, przechowują pliki źródłowe w kontroli wersji i importują swoje twory do Studio.Po posiadaniu zasobu Studio zalecamy korzystanie z pakietów w każdym możliwym przypadku.
Wdrożenie pakietów w Roblox podąża za wieloma z tych samych zasad, co narzędzia na tej stronie: scentralizowanym repozytorium z historią wersji, które oferuje bezproblemowy sposób utrzymywania wszystkich kopii zasobu w zgodności.Aby uzyskać więcej informacji o tym, w jaki sposób mogą poprawić swój przepływ pracy, zobacz Pakiety.
Odwróć wszystko
Ponieważ narzędzia stron trzecich synchronizują zmiany powrotem do Roblox Studio, a nie zastępują go, żadna część tego przepływu pracy nie wiąże się z żadnym zamkiem.W dowolnym momencie możesz przestać korzystać z jednego lub wszystkich tych narzędzi i powrócić do edycji swojego doświadczenia wyłącznie w Studio.Brak ryzyka czyni eksperymentowanie z narzędziami stron trzecich szczególnie atrakcyjnym.