Roblox dla deweloperów Unreal

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Ta strona zawiera informacje, które pomogą doświadczonym deweloperom Unreal Engine rozpocząć pracę z Roblox, w tym podstawową orientację, porównanie koncepcyjne oraz kluczowe różnice między tymi dwoma platformami.

Zapoznaj się

Interfejs użytkownika edytora Unreal z oznaczeniami pokazującymi różne okna i panele. Interfejs użytkownika Roblox Studio z oznaczeniami pokazującymi różne okna i panele.

Outliner w Unreal i Explorer w Roblox Studio to główne okna do organizowania elementów w przestrzeniach 3D. Oba wyświetlają hierarchię obiektów i folderów. Jednak Outliner ma płaską, mniej zdefiniowaną strukturę i pokazuje tylko Actors. Okno Explorer ma głęboko zagnieżdżoną, ścisłą strukturę i wyświetla wszystkie obiekty jako część hierarchii, nawet obiekty, które w Unreal byłyby uważane za komponenty.

Menadżer zasobów w Roblox Studio i Toolbox pokrywają się z Content Browser w Unreal. Menadżer zasobów pozwala zarządzać wszystkimi zasobami w grze, podczas gdy Toolbox umożliwia dostęp do wszelkich zasobów, które opublikowałeś. Toolbox pozwala również przeszukiwać Creator Store w poszukiwaniu zasobów z Roblox lub społeczności, podobnie jak Marketplace w Unreal Engine, ale dostępny bezpośrednio z interfejsu użytkownika Studio.

Różnice filozoficzne

Roblox jest "silnikiem symulacyjnym", a nie tradycyjnym silnikiem gier. Actors w Unreal i Parts w Roblox pełnią rolę podstawowych elementów budulcowych, ale w praktyce są dość różne:

  • Reprezentacja: Actors w Unreal to wyższy poziom pojęcia dla dowolnego obiektu w poziomie, podczas gdy Parts w Roblox są zaprojektowane do reprezentowania obiektów fizycznych, takich jak drewniane klocki i plastikowe kule.
  • Fizyka: Aby przeprowadzić symulacje fizyczne w Unreal, włączasz fizykę w określonych komponentach (takich jak StaticMeshComponent) lub dodając komponenty do Actors, takie jak ograniczenia fizyczne. W Roblox fizyka jest wbudowana w typ danych Parts; silnik automatycznie obsługuje interakcje.

Różnicę można zauważyć od razu, jeśli stworzysz Actor i Part. Actor ma niewiele więcej niż lokalizację, rotację i skalę. Part ma te same informacje, plus materiał i kolor, wartości dla refleksji i przezroczystości, masę i kształt, i wiele więcej. Oba zaczynają dzielić podobne właściwości dopiero wtedy, gdy porównasz StaticMeshActor w Unreal z MeshPart w Roblox.

Przykładowy aktor Unreal w panelu szczegółów.
Panel szczegółów edytora Unreal
Przykładowa część Roblox w oknie właściwości.
Okno właściwości Roblox Studio

Inne przydatne porównanie to Actor w Unreal i Model w Roblox. Modele działają jako kontener dla zbioru połączonych części w ten sam sposób, w jaki Actors w Unreal są kontenerami dla komponentów. Określasz jedną z części modelu jako jego główną część, aby zdefiniować punkt obrotu. Modele przechowują również skrypty, animacje, efekty dźwiękowe, podpowiedzi, ograniczenia, emitery cząstek i inne.

Na przykład Actor w Unreal może mieć NiagaraComponent, który używa kilku emiterów, aby osiągnąć pożądany efekt wizualny, siatkę dla kształtu, ograniczenie fizyczne, aby dodać sprężystości, oraz skrypt do interakcji z graczem. W Outliner widzisz pojedynczy Actor nazwany SpringyFireball.

W Roblox porównywalny model SpringyFireball w oknie Explorer może wyglądać mniej więcej tak:

Model
|- ParticleEmitter
|- MeshPart
|- SpringConstraint
|- ClickDetector
| |- Script

Filozofia fizyki domyślnej w Roblox rozciąga się na proces budowania modeli 3D. W Roblox łączenie wielu części w zespół to doskonały sposób na szybkie budowanie rzeczy, ponieważ Roblox traktuje połączone części jako jeden sztywny obiekt. To podejście nie jest praktyczne w Unreal.

Zamiast używać standardowych jednostek metrycznych dla długości i masy, Roblox używa jednostek nominalnych zwanych studami i jednostkami masy Roblox (RMU). Aby uzyskać przybliżone konwersje metryczne i zalecenia dotyczące użycia, zobacz Jednostki.

Lokalizacja ma znaczenie

Gry Roblox są domyślnie wieloosobowe, więc Roblox Studio zawiera wiele różnych lokalizacji przechowywania z określonymi zachowaniami. Aby uzyskać więcej informacji, zobacz runtime klient-serwer oraz organizację obiektów.

LocationDescription
WorkspaceReprezentuje 3D świat gry. Może uruchamiać skrypty serwera, które są bezpośrednio przypięte do obiektów i kontrolują ich zachowanie.
ReplicatedFirstZawiera obiekty, które są replikowane do klienta przed wszystkim innym. Ta lokalizacja jest idealna dla absolutnie minimalnego zestawu obiektów i skryptów klienckich niezbędnych do wyświetlenia ekranu ładowania.
ReplicatedStorageZawiera obiekty, które są replikowane zarówno do klienta, jak i do serwera. Ta lokalizacja jest idealna dla Skryptów z KontekstemUruchomienia Klient, klienckich ModułówSkryptów oraz ModułówSkryptów, które chcesz używać zarówno na serwerze, jak i kliencie. SkryptyLokalne nie uruchamiają się z tej lokalizacji.
ServerScriptServiceZawiera skrypty serwera. Ta lokalizacja jest idealna dla skryptów, które muszą uzyskać dostęp do funkcji lub obiektów po stronie serwera, takich jak logika gry i przechowywanie w chmurze.
ServerStorageZawiera obiekty po stronie serwera. Ta lokalizacja jest idealna dla dużych obiektów, które nie muszą być natychmiast replikowane do klientów, gdy dołączają do gry. Skrypty nie uruchamiają się z tej lokalizacji, ale możesz przechowywać tutaj moduły skryptów po stronie serwera ModułySkryptów.
StarterPlayer ⟩ StarterCharacterScriptsZawiera SkryptyLokalne, które uruchamiają się, gdy postać się pojawia.
StarterPlayer ⟩ StarterPlayerScriptsZawiera SkryptyLokalne, które uruchamiają się, gdy gracz dołącza do gry.
StarterGuiZawiera elementy GUI, które klient wyświetla, gdy ładuje grę. SkryptyLokalne mogą uruchamiać się z tej lokalizacji.
StarterPackZazwyczaj zawiera tylko Narzędzia, ale może również zawierać SkryptyLokalne do konfigurowania plecaków graczy.

Skrypty

Roblox gry obsługują trzy różne typy skryptów Luau:

  • Skrypty klienckie

    Te skrypty działają na kliencie, a serwer nie ma wglądu w ich zachowanie. Z powodów związanych z dziedzictwem te skrypty mogą mieć postać LocalScripts lub Scripts z wartością RunContext równą Client. Skrypty klienckie zazwyczaj znajdują się w ReplicatedStorage, StarterPlayerScripts lub StarterCharacterScripts.

  • Skrypty serwerowe

    Te skrypty działają na serwerze, a klient nie ma wglądu w ich zachowanie. Skrypty serwerowe mają wartość RunContext równą Server i zazwyczaj znajdują się w ServerScriptService, której zawartość nie jest replikowana do klienta.

  • Skrypty modułowe

    Te skrypty to wielokrotnego użytku fragmenty kodu, które zwracają dokładnie jedną wartość, zazwyczaj funkcję lub tabelę (lub tabelę funkcji). Zamiast duplikować kod w skryptach klienckich i serwerowych, używaj skryptów modułowych do dzielenia się kodem i danymi pomiędzy tymi dwoma. Skrypty modułowe często znajdują się w ReplicatedStorage, ale mogą znajdować się gdzie indziej, jeśli chcesz dzielić się kodem pomiędzy skryptami po tej samej stronie granicy klient-serwer.

Unreal nie ma pojęcia różnych typów skryptów. Jeśli zdecydujesz się stworzyć grę wieloosobową, musisz napisać dodatkowy kod, aby zsynchronizować stan gry między serwerem a klientami.

W Unreal wiele funkcji silnika jest dostępnych poprzez rozszerzanie wbudowanych klas, takich jak UObject, ACharacters, ULevel i UWorld w C++ lub Blueprint. Unreal obsługuje niestandardowe zdarzenia, ale wiele klas zawiera zdarzenia, które silnik automatycznie wywołuje jako część naturalnego cyklu życia poziomu.

W porównaniu do systemu "tykania" w Unreal, skrypty Roblox są znacznie bardziej oparte na zdarzeniach. Uzyskujesz dostęp do podobnej funkcjonalności silnika, subskrybując usługi i nasłuchując aktualizacji.

C++ i Luau

Do skryptów Unreal używa C++. Roblox używa Luau, języka skryptowego pochodzącego od Lua 5.1.

W porównaniu do Luau, C++ ma ogólną przewagę wydajności, co może, ale nie musi być istotne dla rodzajów gier, które chcesz stworzyć. Luau jest stopniowo typowany i ma mniej rozbudowaną składnię. W większych projektach jednak stopniowe typowanie może wprowadzać kategorie błędów, których unika się w językach o silnym typowaniu, takich jak C++, więc rozważ włączenie ścisłej kontroli typów w skryptach Roblox.

Unreal zawiera również system wizualnego skryptowania zwany Blueprints. Roblox ma wtyczki innych firm, które oferują podobną funkcjonalność, ale nie ma wbudowanego porównywalnego systemu.

Przykład kodu Luau

The following Luau code sample demonstrates how to, after a player equips a fishing pole, listen for user input (in this case, the E key) and call additional functions:

local ContextActionService = game:GetService("ContextActionService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Get a module script from ReplicatedStorage that returns a single function
local performSomeAction = require(ReplicatedStorage.performSomeAction)
-- Assumes that this script is a child of the fishing pole
local fishingPole = script.Parent
local ACTION_CAST = "Cast"
-- Check that the key is down, then call another function
local function castLine(_actionName, inputState, _inputObject)
if inputState == Enum.UserInputState.Begin then
performSomeAction()
end
end
-- Only enable the action when the player equips the fishing pole
fishingPole.Equipped:Connect(function()
ContextActionService:BindAction(ACTION_CAST, castLine, true, Enum.KeyCode.E)
end)
-- Disable the action when the player unequips the fishing pole
fishingPole.Unequipped:Connect(function()
ContextActionService:UnbindAction(ACTION_CAST)
end)

Skrypt Roblox może być stosunkowo zwięzły, ponieważ Roblox ma wiele wbudowanych założeń: Player z Humanoid połączonym z serwerem i mogącym wyposażyć Tools. Te założenia nie istnieją w Unreal, więc implementacja byłaby bardzo różna.

Zasoby

Unreal i Roblox obsługują importowanie niestandardowych siatek i modeli w formacie .fbx. Niektóre typy zasobów mogą wymagać określonych konfiguracji i ustawień eksportu z oprogramowania modelującego innej firmy. Aby uzyskać więcej informacji, zobacz następujące strony:

W Unreal zasoby importują się do katalogu Content, widocznego w Content Browser. W Roblox zasoby importują się do twojego Workspace oraz do Toolbox lub Menadżera zasobów.

Roblox oferuje również otwartoźródłową wtyczkę Blendera, aby uprościć proces importu, podobnie jak funkcja Wyślij do Unreal w narzędziach Blendera.

Transformatory

Transformatory Unreal Engine i CFrames Robloxa służą podobnym celom w reprezentowaniu 3D transformacji obiektów:

  • Zarówno transformatory, jak i CFrames reprezentują pozycję i obrót obiektu w przestrzeni 3D. Transformatory obejmują skalę, podczas gdy Roblox używa właściwości BasePart.Size, która nie jest częścią CFrame.
  • Oba wspierają mnożenie dla złożonych transformacji i mają wbudowane metody do innych manipulacji.

Współpraca

W Unreal współpracujesz z systemami kontroli wersji, takimi jak Perforce lub SVN, zazwyczaj przez wbudowany interfejs użytkownika Unreal. Te systemy kontroli wersji używają scentralizowanego modelu "checkout", który blokuje pliki, gdy jedna osoba nad nimi pracuje.

Pliki Roblox znajdują się w chmurze (chociaż możesz eksportować kopie), więc Roblox Studio zapewnia wbudowane przepływy pracy współpracy do jednoczesnej edycji, zarządzania grupami, uprawnień, szkicowania skryptów i więcej. Zobacz Współpraca.

Wtyczki

Podobnie jak w Unreal, Roblox Studio obsługuje wtyczki, które mogą uprościć lub dać ci dodatkową kontrolę nad różnymi aspektami procesu deweloperskiego. Wtyczki są dostępne w Creator Store, podobnie jak zasoby, wiele z nich za darmo.

Słownik

UnrealRobloxUwagi
LevelPlace
ActorPart lub ModelZobacz Różnice filozoficzne.
Blueprint ClassPackage
TransformCFrameCFrame nie zawiera informacji o skali. Zobacz Transformatory.
OutlinerExplorer
Details panelProperties
Level Viewport3D viewport
Content BrowserMenadżer zasobów lub Toolbox
Landscape ModeTerrain Editor
PlayerStartSpawnLocation
Output LogOutput
MarketplaceCreator Store
Menu barToolbar
PluginPlugin
©2026 Roblox Corporation. Nazwa Roblox, logo Roblox oraz hasło „Powering Imagination” należą do naszych zarejestrowanych i niezarejestrowanych znaków towarowych na terenie Stanów Zjednoczonych oraz w innych krajach.