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 ile başlamalarına yardımcı olacak bilgiler içermektedir. Bu bilgiler temel bir yönlendirme, kavramsal bir karşılaştırma ve iki platform arasındaki önemli farkları kapsamaktadır.

Yönlendirme

Çeşitli pencereler ve panelleri göstermek için işaretli Unreal Editor kullanıcı arayüzü. Çeşitli pencereler ve panelleri göstermek için işaretli Roblox Studio kullanıcı arayüzü.

Unreal'ın Outliner'ı ve Roblox Studio'nun Explorer penceresi, 3D alanlardaki öğeleri organize etmek için birincil pencerelerdir. Her ikisi de nesnelerin ve klasörlerin hiyerarşisini gösterir. Ancak, Outliner daha düz, daha az tanımlı bir yapıya sahiptir ve yalnızca Actors'ı gösterir. Explorer penceresi, derinlemesine yuvalanmış, katı bir yapıdadır ve hiyerarşinin bir parçası olarak tüm nesneleri gösterir; bu, Unreal'da bileşen olarak değerlendirilen nesneleri de kapsar.

Roblox Studio'nun Varlık Yöneticisi ve Toolbox, Unreal'ın Content Browser'ı ile örtüşmektedir. Varlık Yöneticisi, oyununuz içindeki tüm varlıkları yönetmenizi sağlarken, Toolbox yayımladığınız varlıklara erişim sağlar. Toolbox aynı zamanda Roblox veya topluluktan varlıklar için Creator Store üzerinde arama yapmanıza olanak tanır; bu, Unreal Engine Marketplace'ine benzer ancak doğrudan Studio kullanıcı arayüzünden erişilebilir.

Felsefi farklar

Roblox, geleneksel bir oyun motorundan ziyade "simülasyon motoru"dur. Unreal Actors ve Roblox Parts, temel yapı taşları olarak işlev görür, ancak pratikte ikisi oldukça farklıdır:

  • Temsil: Unreal'daki Actors, bir seviyedeki herhangi bir nesne için daha yüksek seviyeli bir kavramdır; oysa Roblox'taki Parts, tahta bloklar ve plastik küreler gibi fiziksel nesneleri temsil etmek üzere tasarlanmıştır.
  • Fizik: Unreal'da fizik simülasyonları gerçekleştirmek için, belirli bileşenler içinde (örneğin StaticMeshComponent gibi) fizik etkinleştirirsiniz veya Actors'a fizik kısıtlamaları gibi bileşenler ekleyerek bunu sağlarsınız. Roblox'ta fizik, Parts veri türüne entegre edilmiştir; motor etkileşimleri otomatik olarak yönetir.

Bir Actor ve bir Part oluşturduğunuzda farkı hemen görebilirsiniz. Actor'ın yalnızca bir konumu, rotası ve ölçeği vardır. Part, aynı bilgilere ek olarak bir malzeme ve renk, yansıma ve saydamlık değerleri, kütle ve şekil gibi bilgiler içerir. İkisi benzer özellikleri yalnızca Unreal'daki StaticMeshActor ile Roblox'taki MeshPart karşılaştırıldığında paylaşmaya başlar.

Ayrıntılar panelinde bir Unreal aktörü örneği.
Unreal Editor Ayrıntılar paneli
Özellikler penceresinde bir Roblox parçası örneği.
Roblox Studio Özellikler penceresi

Bir diğer faydalı karşılaştırma ise Unreal Actor ile Roblox Model arasındadır. Modeller, tıpkı Unreal'daki Actors gibi bir dizi birbirine bağlı parçayı içeren bir konteyner görevi görür. Bir modelin parçalarından birini ana parça olarak tanımlayarak pivot noktasını belirlersiniz. Modeller ayrıca scriptler, animasyonlar, ses efektleri, ipuçları, kısıtlamalar, parça vericileri ve daha fazlasını tutar.

Örneğin, bir Unreal Actor, istenilen görsel etkiyi başarmak için birkaç verici kullanan bir NiagaraComponent, şekil için bir ağ ve yay etkisi eklemek için bir fizik kısıtlaması ve oyuncu etkileşimi için bir script içerebilir. Outliner'da, SpringyFireball adında tek bir Actor görürsünüz.

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


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

Roblox'un varsayılan fizik felsefesi, 3D modeller oluşturma sürecine de yayılır. Roblox'ta, birden fazla parçayı montaj halinde birleştirmek, şeyleri hızlı bir şekilde inşa etmenin mükemmel bir yoludur çünkü Roblox, kaynak parçaları tek bir rijit cisim olarak ele alır. Bu yaklaşım Unreal'da pratik değildir.

Uzunluk ve kütle için standart metrik birimler yerine, Roblox, stud ve Roblox Kütle Birimleri (RMU) olarak adlandırılan kavramsal birimler kullanmaktadır. Yaklaşık metrik dönüşümler ve kullanım hakkında öneriler için Birimler sayfasına bakın.

Konum önemli

Roblox oyunları varsayılan olarak çok oyunculudur, bu nedenle Roblox Studio, belirli davranışlara sahip birçok farklı depolama konumu içerir. Daha fazla bilgi için istemci-sunucu çalışma zamanı ve nesne organizasyonu sayfalarına bakın.

LocationDescription
WorkspaceOyunun 3D dünyasını temsil eder. Bu konum, nesnelere doğrudan bağlanan ve davranışlarını kontrol eden sunucu scriptleri için iyi çalışır.
ReplicatedFirstİlk önce istemciye kopyalanan nesneleri içerir. Bu konum, bir yükleme ekranı görüntülemek için gerekli olan en az nesne ve istemci scriptlerinin kopyalanması için idealdir.
ReplicatedStorageHem istemciye hem de sunucuya kopyalanan nesneleri içerir. Bu konum, hem sunucuda hem de istemcide kullanmak istediğiniz ModuleScripts için idealdir. LocalScripts bu konumdan çalışmaz, ancak RunContextClient olan Scripts bu konumdan çalışır.
ServerScriptServiceSunucu scriptlerini içerir. Bu konum, oyun mantığı ve bulut depolama gibi sunucu tarafı işlevsellik veya nesnelere erişmesi gereken scriptler için idealdir.
ServerStorageSunucu tarafı nesnelerini içerir. Bu konum, oyununa katıldıklarında istemcilere hemen kopyalanması gerekmeyen büyük nesneler için idealdir. Scriptler bu konumdan çalışmaz, ancak burada sunucu tarafı ModuleScripts saklayabilirsiniz.
StarterPlayerStarterCharacterScriptsKarakterin doğduğunda çalışan LocalScripts içerir.
StarterPlayerStarterPlayerScriptsOyuncu oyuna katıldığında çalışan genel amaçlı LocalScripts içerir.
StarterGuiİstemcinin oyunu yüklediğinde görüntülediği GUI öğelerini içerir. LocalScripts bu konumdan çalışabilir. Bu konum, oyunun kullanıcı arayüzünü değiştirerek düğmeler, menüler ve açılır pencereler eklemek gibi scriptler için idealdir.
StarterPackGenel olarak yalnızca Tools içerir, ancak oyuncu sırt çantalarını kurmak için LocalScripts de içerebilir.

Scripting

Roblox oyunları, üç farklı Luau script türünü destekler:

  • İstemci scriptleri

    Bu scriptler istemcide çalışır ve sunucunun davranışları üzerinde herhangi bir görünürlüğü yoktur. Eski nedenlerden dolayı, bu scriptler LocalScripts veya Scripts biçiminde olabilir ve RunContext değerleri Client olmalıdır. İstemci scriptleri genellikle ReplicatedStorage, StarterPlayerScripts veya StarterCharacterScripts içinde yer alır.

  • Sunucu scriptleri

    Bu scriptler sunucuda çalışır ve istemcinin davranışları üzerinde herhangi bir görünürlüğü yoktur. Sunucu scriptlerinin RunContext değeri Server olmalıdır ve genellikle ServerScriptService içinde bulunur; bu içerik istemciye kopyalanmaz.

  • Modül scriptleri

    Bu scriptler, genellikle bir fonksiyon veya tablo (veya fonksiyonların bir tablosu) döndüren tekrar kullanılabilir kod parçalarıdır. Kodun, istemci ve sunucu scriptlerinde çoğaltılmasını önlemek için, iki taraf arasında kod ve veri paylaşmak için modül scriptlerini kullanın. Modül scriptleri genellikle ReplicatedStorage içinde yer alır, ancak istemci-sunucu sınırının aynı tarafındaki scriptler arasında kod paylaşmak istiyorsanız başka yerlerde de bulunabilir.

Unreal farklı script türleri kavramına sahip değildir. Çok oyunculu bir oyun yapmayı seçerseniz, oyun durumunu sunucu ve istemciler arasında senkronize etmek için ek kod yazarsınız.

Unreal'da, motorun işlevselliğinin çoğu, UObject, ACharacters, ULevel ve UWorld gibi yerleşik sınıfların C++ veya Blueprint ile genişletilmesiyle elde edilir. Unreal özel olayları destekler, ancak birçok sınıf, motorun seviyenin doğal yaşam döngüsünün bir parçası olarak otomatik olarak çağırdığı olaylar içerir.

Unreal'ın "ticking" sistemi ile karşılaştırıldığında, Roblox scriptleri çok daha etkinlik odaklıdır. Benzer motor işlevselliğine, hizmetlere abone olarak ve güncellemeleri dinleyerek erişirsiniz.

C++ ve Luau

Scripting için Unreal, C++ kullanır. Roblox ise Luau kullanır; bu, Lua 5.1 üzerinde geliştirilmiş bir scripting dilidir.

Luau'ya kıyasla, C++ genel olarak bir performans avantajına sahiptir; bu, yapmak istediğiniz oyun türlerine bağlı olarak geçerli veya geçersiz olabilir. Luau, kısmi olarak tipleme özelliğine sahiptir ve daha az ayrıntılı bir sözdizimine sahiptir. Ancak daha büyük projelerde kısmi tip artırma, C++ gibi katı tipleme özelliklerine sahip dillerin kaçındığı bug türlerini ortaya çıkarabilir, bu nedenle Roblox scriptlerinde katı tip kontrolü etkinleştirmeyi düşünebilirsiniz.

Unreal ayrıca Blueprints olarak adlandırılan bir görsel scripting sistemine de sahiptir. Roblox, benzer işlevselliği sunan üçüncü taraf eklentilere sahiptir, ancak entegre bir sistem yoktur.

Luau kod örneği

Aşağıdaki Luau kod örneği, bir oyuncu bir olta takımı taktığında, kullanıcı girişlerini (bu durumda E tuşu) dinlemeyi ve ek fonksiyonları çağırmayı göstermektedir:


local ContextActionService = game:GetService("ContextActionService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- ReplicatedStorage'dan tek bir fonksiyon döndüren bir modül betiği al
local performSomeAction = require(ReplicatedStorage.performSomeAction)
-- Bu betiğin olta takımının çocuğu olduğu varsayılmaktadır
local fishingPole = script.Parent
local ACTION_CAST = "Cast"
-- Tuşun basılı olduğunu kontrol et, sonra başka bir fonksiyonu çağır
local function castLine(_actionName, inputState, _inputObject)
if inputState == Enum.UserInputState.Begin then
performSomeAction()
end
end
-- Sadece oyuncu olta takımını taktığında eylemi etkinleştir
fishingPole.Equipped:Connect(function()
ContextActionService:BindAction(ACTION_CAST, castLine, true, Enum.KeyCode.E)
end)
-- Oyuncu olta takımını çıkardığında eylemi devre dışı bırak
fishingPole.Unequipped:Connect(function()
ContextActionService:UnbindAction(ACTION_CAST)
end)

Roblox scripti, birçok yerleşik varsayım içerdiği için oldukça özlü olabilir: bir Player, bir Humanoid karakterine bağlıdır ve Tools takabilir. Bu varsayımlar Unreal'da yoktur; dolayısıyla uygulama çok farklı olacaktır.

Varlıklar

Unreal ve Roblox, özel ağlar ve modelleri .fbx formatında içe aktarmayı destekler. Belirli varlık türlerinin, üçüncü taraf modelleme yazılımınızdan özel yapılandırmalar ve dışa aktarma ayarları gerektirebileceğini unutmayın. Daha fazla bilgi için aşağıdaki sayfalara bakın:

Unreal'da, varlıklar Content dizinine içe aktarılır ve Content Browser'da görünür. Roblox'ta, varlıklar çalışma alanınıza ve Toolbox veya Varlık Yöneticisi içine içe aktarılır.

Roblox ayrıca içe aktarma sürecini kolaylaştıran açık kaynaklı bir Blender eklentisi sunmaktadır; bu, Blender Araçları'nın Unreal'a Gönder özelliğine benzer.

Dönüşümler

Unreal Engine'in dönüşümleri ve Roblox'un CFrames 3D nesnelerin dönüşümlerini temsil etmede benzer amaçlara hizmet eder:

  • Hem dönüşümler hem de CFrames bir nesnenin 3D alandaki konumunu ve rotasını temsil eder. Dönüşümler ölçek içerirken, Roblox bir BasePart.Size özelliği kullanır ve bu özellik CFrame'in parçası değildir.
  • Her ikisi de karmaşık dönüşümler için çarpma desteği sunar ve diğer manipülasyonlar için yerleşik yöntemlere sahiptir.

İşbirliği

Unreal'da, versiyon kontrol sistemleri (örneğin Perforce veya SVN) ile birlikte çalışıyorsunuz ve genellikle Unreal'ın yerleşik kullanıcı arayüzü üzerinden bunu yapıyorsunuz. Bu versiyon kontrol sistemleri, bir kişinin çalışma yaptığı sırada dosyaları kilitleyen merkezi "checkout" modelini kullanır.

Roblox dosyaları bulut ortamında bulunmaktadır (ancak kopyalarını dışa aktarabilirsiniz); bu nedenle Roblox Studio, eşzamanlı düzenleme, grup yönetimi, izinler, script taslağı ve daha fazlası için yerleşik işbirliği iş akışları sağlar. Daha fazla bilgi için İşbirliği sayfasına bakın.

Eklentiler

Roblox Studio, geliştirme sürecinin çeşitli yönlerini basitleştirmenizi veya üzerinde ek kontrol sağlamanızı mümkün kılan eklenti destekler; bu, Unreal'da olduğu gibi. Eklentiler, Creator Store'da, tıpkı varlıklar gibi mevcut olup, birçoğu ücretsizdir.

Sözlük

UnrealRobloxNotlar
LevelPlace
ActorPart veya ModelFelsefi farklar sayfasına bakın.
Blueprint ClassPackage
TransformCFrameCFrame, ölçek bilgilerini içermez. Dönüşümler sayfasına bakın.
OutlinerExplorer
Details panelProperties
Level Viewport3D viewport
Content BrowserVarlık Yöneticisi veya Toolbox
Landscape ModeTerrain Editor
PlayerStartSpawnLocation
Output LogOutput
MarketplaceCreator Store
Menu barToolbar
PluginPlugin
©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.