Unreal geliştiricileri için Roblox

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Bu sayfa, deneyimli Unreal Engine geliştiricilerinin Roblox'la başlamasına yardımcı olacak bilgileri içerir: temel yönlendirme, konsept karşılaştırma ve iki platform arasındaki ana farklılıklar.

Yönlendirilmeye başla

Unreal'in Özetleyicisi ve Roblox Studio'nun Kâşifı, 3B alanlarda elemanları düzenlemek için ana pencerelerdir.Her ikisi de nesne ve klasörlerin bir hiyerarşisini görüntüler.Ancak, Outliner daha düzgün, daha az tanımlı bir yapıya sahiptir ve sadece Actors gösterir.Kâşif penceresinin derin bir şekilde yerleşmiş, sıkı bir yapısı vardır ve tüm nesneleri hiyerarşinin bir parçası olarak görüntüler, Unreal'de bileşen olarak düşünülebilecek nesneler bile.

Roblox Studio Varlık Yöneticisi ve Araç Kutusu Unreal İçerik Tarayıcısı ile örtüşür.Varlık Yöneticisi, deneyiminizdeki tüm varlıkları yönetmenize izin verirken, Araç Kutusu yayınladığınız herhangi bir varlığa erişmenize izin verir.Alet çantası ayrıca Roblox veya topluluk için kaynaklar için Yaratıcı Mağazasını aramanıza izin verir.Yaratıcı Dükkanı, Unreal Engine Pazarına benzer, ancak doğrudan Studio kullanıcı arayüzünden erişebilirsiniz.

Felsefi farklar

Roblox, geleneksel bir oyun motorundan ziyade bir "simülasyon motoru"dur.Unreal Actors ve Roblox Parts her ikisi de temel inşaat blokları olarak hizmet ediyor, ancak pratikte iki kişi oldukça farklı:

  • Temsil : Actors Unreal'de bir seviyedeki herhangi bir nesne için daha yüksek seviyeli bir konsept, Roblox'taki Parts ise ahşap bloklar ve plastik küreler gibi fiziksel nesneleri temsil etmek üzere tasarlanmıştır.
  • Fizik : Unreal'de fizik simülasyonları yapmak için, belirli bileşenlerde (örneğin StaticMeshComponent ) veya bileşenleri Actors ekleerek fizik kısıtlamaları gibi fiziği etkinleştirirsiniz.Roblox'ta, fizikler Parts veri yazyerleştirilir; motor, etkileşimleri otomatik olarak ele alır.

Bir Actor ve bir Part oluşturursanız, hemen farkı görebilirsiniz.The Actor çok az bir konum, dönüş ve ölçekten fazlasına sahiptir.The Part aynı bilgiye sahiptir - artı bir malzeme ve renk, yansıtma ve saydamlık için değerler, kütle ve şekil ve çok daha fazlası.İki yalnızca benzer özellikler paylaşmaya başlar, bir StaticMeshActor Unreal'de karşılaştırdığınızda (örneğinbir küp) Roblox'ta bir MeshPart 'ye.

An example Unreal actor in the Details panel.

Unreal Editör Detayları paneli
>

An example Roblox part in the Properties window.

Roblox Studio Özellikler penceresi
>

Diğer yararlı bir karşılaştırma, Roblox'a Unreal 'dir.Modeller, aynı şekilde bir koleksiyonun bağlantılı parçaları için bir konteyner olarak davranır Actors Unreal'de bileşenler için konteynerler.Modelin parçalarından birini ana parça olarak tanımlamak için pivot noktasını tanımlamak için modelin bir parçasını belirtiyorsunuz.Modeller ayrıca senaryolar, animasyonlar, ses efektleri, uyarılar, parçacık yayıcılar ve daha fazlasını tutar.

Örneğin, Unreal Actor gerçekleştirmek istediğiniz görsel efekti elde etmek için birkaç yayıncı kullanan bir NiagraComponent ve şekil için bir kısıtlama, sıkılık eklemek için bir fizik kısıtı ve oyuncu etkileşimli için bir senaryo olabilir.Planlayıcıda, tek bir Actor adlı SpringyFireball görüyorsunuz.

Roblox'ta, Araştırıcı penceresinde karşılaştırılabilir bir SpringyFireball modeli böyle görünebilir:


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

Roblox'un varsayılan fiziği felsefesi, 3D modellerin oluşturulması sürecine genişletilir.Roblox'ta, çeşitli parçaları bir montaja birleştirerek kaynaklamak, şeyleri hızlı bir şekilde inşa etmenin mükemmel bir yoludur, çünkü Roblox kaynaklanmış parçaları tek bir sert vücut olarak ele alır.Bu yaklaşım Unreal'de pratik değildir.

Uzunluk ve kütle için standart ölçü birimlerini kullanmak yerine, Roblox stud ve Roblox Kütle Birimleri (RMU) adlı soyut birimleri kullanır.Yaklaşık ölçü dönüşümleri ve kullanım etrafındaki öneriler için, bakın Birimler.

Konum önemlidir

Roblox deneyimleri varsayılan olarak çok oyunculudur, bu nedenle Roblox Studio, belirli davranışlarla birçok farklı depolama yeri içerir.Örneğin, bir senaryo ReplicatedStorage içine koyduğunuzda çalışabilir, ancak StarterPlayerScripts içine koyduğunuzda değil.Daha fazla bilgi için, İstemci-sunucu çalışma zamanı ve Nesne organizasyonu göz atın.

Konum | Açıklama :--- | :--- Çalışma Alanı | Oyun dünyasını temsil eder.Bu konum, doğrudan nesnelere bağlanan ve davranışlarını kontrol eden sunucu kodları için iyi çalışır.ReplicatedFirst | Her şeyden önce müşteriye yansıtılan nesneleri içerir.Bu konum, yüklenme ekranını görüntülemek için gerekli mutlak minimum nesne ve istemci kodları için ideal bir yerdir.ReplicatedStorage | Hem istemciye hem de sunucuya yeniden yazılan nesneleri içerir.Bu konum, hem sunucu hem de istemci üzerinde kullanmak istediğiniz Class.ModuleScript\|ModuleScripts için idealdir.Bu konumdan kaçmayın, ancak bir çalışma bağlamı ile çalışın.ServerScriptService | Sunucu kodlarını içerir.Bu konum, sunucu tarafı işlevlere veya nesnelere erişmesi gereken senaryolar için ideal bir konumdur, örneğin oyun mantığı ve bulut depolama.ServerStorage | Sunucu tarafı nesneleri içerir.Bu konum, bir deneyime katıldıklarında hemen müşterilere yansıtılması gerekmeyen büyük nesneler için idealdir.Scriptler bu konumdan çalışmaz, ancak sunucu tarafında Class.ModuleScript\|ModuleScripts.StarterPlayer.StarterCharacterScripts | Karakter oluştuğunda çalışan Class.LocalScript\|LocalScripts içerir çalıştırma.StarterPlayer.StarterPlayerScripts | Oyuncu deneyime katıldığında çalışan genel amaçlı Class.LocalScript\|LocalScripts içerirBaşlangıç ​​GUI | Müşteri oyunu yüklendiğinde gösterdiği GUI öğelerini içerir.Class.LocalScript\|LocalScripts can run from this location.Bu konum, düğmeler, menüler ve pop-up'lar gibi oyunun kullanıcı arayüzünü değiştiren kodlar için ideal bir yerdir.Başlangıç Paketi | Genel olarak yalnızca Class.Tool\|Tools içerir, ancak oyuncu sırt çantalarını ayarlamak için Class.LocalScript\|LocalScripts da ekleyebilir.

Kodlama

Roblox deneyimleri üç farklı Luau senaryosunu destekler:

  • Müşteri kodları

    Bu senaryolar istemci üzerinde çalışır ve sunucunun davranışlarına ilişkin görüşü yoktur.Miras nedenleriyle, bu senaryolar LocalScripts veya Scripts ile bir RunContext değeri ile şekil alabilir Client .Müşteri kodları genellikle ReplicatedStorage , StarterPlayerScripts veya StarterCharacterScripts 'da yaşar.

  • Sunucu kodları

    Bu senaryolar sunucuda çalışır ve istemci onların davranışlarına erişemez.Sunucu kodlarının RunContext değeri Server ve genellikle ServerScriptService 'da yaşıyor, içeriği oyun istemcisine yansıtılmaz.

  • Modül kodları

    Bu senaryolar, tipik olarak bir işlev veya tablo (veya bir tablo içindeki işlevler) geri dönen yeniden kullanılabilir kod parçalarıdır.Müşteri ve sunucu kodunu kopyalamak yerine, aralarında kod ve verileri paylaşmak için modül kodlarını kullanın.Modül kodları genellikle ReplicatedStorage 'de yaşar, ancak aynı client-server sınırındaki kodlar arasında paylaşmak istiyorsanız başka bir yerde yaşayabilir.

Unreal'in farklı senaryo türleri konsepti yoktur.Bir çok oyunculu oyun yapmayı seçerseniz, sunucu ve müşteriler arasında oyun durumunu senkronize etmek için ek kod yazarsınız.

Unreal'de, motorun çoğu işlevi, UObject , ACharacters , ULevel ve UWorld gibi yerleşik sınıfları genişleterek C++ veya Taslak'ta mevcuttur.Unreal, özel etkinlikleri destekliyor, ancak birçok sınıf, motorun doğal yaşam döngüsünün bir parçası olarak otomatik olarak çağırdığı etkinlikleri içeriyor.

Unreal "ticking" sistemiyle karşılaştırıldığında, Roblox kodları çok daha etkinlik tabanlıdır.Hizmetlere abone olarak ve güncelleme bekleyerek benzer motor işlevselliğine erişirsiniz.

C++ ve Luau

Kodlama için, Unreal C++'yi kullanır. Roblox, Luau adlı bir kodlama dili kullanır, bu da Lua 5.1 'den gelir.

Luau'ya kıyasla, C++ genel bir performans avantajına sahiptir, ki bu ya da olmayabilir istediğiniz deneyim türleriyle ilgili olabilir.Luau yavaş yavaş yazılır ve daha az verbos bir sözdizimi vardır.Ancak daha büyük projelerde, yavaş yazma yüzünden C++ gibi güçlü yazılan dillerden kaçınan hata kategorileri tanıtılabilir, bu nedenle Roblox kodlarında katı tür kontrolü etkinleştirmeyi düşünün.

Unreal ayrıca Blueprints adlı görsel senaryo yazma sistemini de içerir.Roblox'un benzer işlevsellik sunan üçüncü taraf eklentileri var, ancak karşılaştırılabilir bir sistem yok.

Luau kod örneği

Aşağıdaki Luau kod örneği, bir oyuncu bir balık oltası takınca, kullanıcı girişini dinlemeyi (bu durumda, E anahtarı) ve ek fonksiyonlar çağırmayı nasıl gösterir:


-- Gerekli oyun hizmetlerini alın
local ContextActionService = game:GetService("ContextActionService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Tek bir işlev döndüren ReplicatedStorage'dan bir modül senaryosu alın
local performSomeAction = require(ReplicatedStorage.performSomeAction)
-- Bu senaryonun balık oltasının bir çocuğu olduğunu varsayar
local fishingPole = script.Parent
local ACTION_CAST = "Cast"
-- Anahtarın aşağıda olduğundan emin olun, ardından başka bir işlev çağırın
local function castLine(_actionName, inputState, _inputObject)
if inputState == Enum.UserInputState.Begin then
performSomeAction()
end
end
-- Sadece oyuncu balık oltasını takınca eylemi etkinleştirin
fishingPole.Equipped:Connect(function()
ContextActionService:BindAction(ACTION_CAST, castLine, true, Enum.KeyCode.E)
end)
-- Oyuncu balık oltasını çıkardığında eylemi devre dışı bırak
fishingPole.Unequipped:Connect(function()
ContextActionService:UnbindAction(ACTION_CAST)
end)

Roblox kodu nispeten kısa olabilir çünkü Roblox'un birçok yerleşik varsayımı vardır: sunucuya bağlı bir Player karakterle bir Humanoid ve donatabilir Tools .Bu varsayımlar Unreal'de mevcut değildir, bu nedenle uygulama çok farklı olurdu.

Varlıklar

Unreal ve Roblox her ikisi de özel dokuları ve modelleri .fbx formatında ithal etmeyi destekliyor.Bazı varlık türleri üçüncü taraf modelleme yazılımından özel yapılandırmalar ve ihracat ayarları gerektirebilir.Daha fazla bilgi için aşağıdaki sayfalara bakın:

Unreal'de, varlıklar Content dizinine aktarılır ve İçerik Tarayıcısında görülebilir.Roblox'ta, varlıklar çalışma alanınıza ve Araç Kutusu veya Envanter bölümünün Varlık Yöneticisi bölümüne aktarılır.

Roblox ayrıca ithalat sürecini basitleştirmek için açık kaynaklı bir Blender eklentisi sunar, Blender Araçlarının Unreal'e gönder özelliğine benzer.

Dönüşümler

props.engine'in dönüşümleri ve Roblox'un CFrames 3B nesnelerin dönüşümlerini temsil etmek için benzer amaçlara hizmet ediyor:

  • Hem dönüşümler hem de CFrames bir nesnenin 3B uzaydaki konumunu ve dönüşünü temsil eder.Dönüşümler ölçek içerirken, Roblox BasePart.Size parçası olmayan bir özellik kullanır CFrame.
  • Her ikisi de karmaşık dönüşümler için çarpan desteği (yani kompozisyon) sağlar ve diğer manipülasyonlar için yerleşik yöntemler vardır.

İşbirliği

Unreal'de, Perforce veya SVN gibi sürüm kontrol sistemleriyle genellikle Unreal'in yerleşik kullanıcı arayüzü aracılığıyla işbirliği yaparsınız.Bu sürüm kontrol sistemleri, bir kişi onlarda çalışırken dosyaları kilitleyen merkezi "ödeme" modelini kullanır.

Roblox dosyaları bulutta yaşar (ancak kopyaları ihraç edebilirsiniz), bu nedenle Roblox Studio, aynı anda düzenleme, grup yönetimi, izinler, senaryo taslakları ve daha fazlası için yerleşik iş akışları sağlar.Bakın İşbirliği .

Eklentiler

Unreal'e benzer şekilde, Roblox Studio plug-inleri destekler, bu da geliştirme sürecinin çeşitli yönleri üzerinde basitleştirme veya size ek kontrol sağlayabilir.Eklentiler Yaratıcı Mağazada mevcuttur, tıpkı varlıklar gibi, birçoğu ücretsizdir.

Sözlük

| Unreal | Roblox | Notlar | | :--- | :--- | :--- | | Seviye | Yer | | | Aktör | Part veya Model | Gör Felsefi farklar .| | Taslak Sınıfı | Paket | | | Dönüştür | CFrame | CFrame ölçek bilgisi içermez.Bakın Dönüşümler.| | Planlayıcı | Kaşif penceresi | | | Ayrıntı paneli | Özellik penceresi | | | Seviye Görüntü Portu | Görüntü Portu | | | İçerik Tarayıcı | Asset Yöneticisi veya Araç Kutusu | | | Manzara Modu | Arazi Editörü | | | Oyuncu Başlangıcı | SpawnLocation | | | Çıktı Günlüğü | Çıktı | | | Pazar Yeri | Yaratıcı Mağazası | | | Menü çubuğu | Menü çubuğu | | | Plugin | Plugin | | | Çıkış kaydı | Çıktı | | |