Her mekan, mekân hakkında her şeyi tanımlayan nesneler hiyerarşisi olan bir veri modeli ile temsil edilir. Veri modeli, parçalar, arazi, aydınlatma ve diğer çevresel unsurlar gibi 3D dünyayı oluşturan tüm nesneleri içerir. Ayrıca, dinamik davranış ve etkileşimi sağlayan olaylara yanıt veren, özellikleri değiştiren ve yöntemleri ve fonksiyonları çağıran betikler gibi çalışma zamanı davranışını kontrol edebilen nesneleri de içerir.
Roblox Motoru, bir mekanın durumunun doğru kaynağı olarak veri modelini kullanır, böylece bunu istemci cihazlarda simüle edebilir ve render edebilir. Roblox Motoru'nun veri modelini nasıl yorumladığı hakkında daha fazla bilgi için İstemci-Sunucu Çalışma Zamanı kısmına bakabilirsiniz.
Nesneler
Roblox'ta bir mekanı tanımlamak için nesneleri veri modeline yerleştirip düzenlersiniz. Roblox'taki her nesne, Instance sınıfından türetilir; bu sınıf, tüm nesneler için ortak olan genel özellikleri, yöntemleri ve olayları tanımlar. Nesneler ayrıca, sağladıkları işlevselliğe bağlı olarak kendi niteliklerini tanımlar. Birçok farklı kullanım alanına sahip birçok nesne kategorisi vardır, ancak sık sık BasePart ve LuaSourceContainer nesneleri ile çalışacaksınız; bunlar sıklıkla parçalar ve betikler olarak adlandırılır.
Roblox Motoru'nun tüm özelliklerinin kapsamlı bir listesi için referans belgesine bakın.
3D inşaat blokları
BasePart, dünyadaki fiziksel olarak simüle edilen 3D inşaat blokları için temel sınıftır. Konum, boyut ve yön gibi özelliklerle tüm fiziksel nesneler için ortak olan özellikler ve yöntemler tanımlar.
| Nesne | Açıklama |
|---|---|
| Part | Bir blok, top, silindir, kama veya köşe yontusu şeklini alabilen bir ilkel parça. |
| MeshPart | Maya veya Blender gibi 3D modelleme yazılımlarından içe aktarılan bir ağ. |
| TrussPart | Karakterlerin bir merdiven gibi tırmanabileceği bir kiriş. |
Teorik olarak, yalnızca basit parçalar kullanarak tamamen işlevsel bir Roblox oyunu yaratabilirsiniz, ancak muhtemelen ağlar içe aktarıp, ilkel parçaları daha karmaşık nesnelere ve yapılara katı modelleme ile birleştireceksiniz.
Betikler
Mekanınızdaki 3D dünyaya etkileşim ve davranış ekleyebilir ve betiklerle mantık tanımlayabilirsiniz. Parçaları hareket ettirmek, diğer betikleri çağırmak ve olaylara yanıt vermek gibi şeyler yapmak için Luau programlama dilinde betikler yazarsınız. Roblox'un bir istemci-sunucu modelinde çalıştığını göz önünde bulundurarak, betikleri sunucuda, istemcide çalıştırabilir veya ağ sınırları arasında iletişim kurabilen betikler oluşturabilirsiniz.
- Script nesnesi, yalnızca sunucuda çalışabilen bir betiği temsil eder.
- LocalScript nesnesi, yalnızca istemcide çalışabilen bir betiği temsil eder.
- ModuleScript nesnesi, hem sunucu hem de istemci betiklerinden require() ile çağırılabilen yeniden kullanılabilir bir betiği temsil eder.
Betiklerin doğru bir şekilde çalışabilmesi için veri modelindeki doğru konteynerlerde yerleştirilmeleri gerekir. Daha fazla bilgi için Sunucu ve İstemci bölümlerine bakın.
Nesne organizasyonu
Veri modelinizi organize ederken birçok esnekliğe sahip olsanız da, Roblox Motoru belirli nesnelerin belirli konteyner hizmetlerinde bulunmasını bekler; bunlar, belirli davranışları olan ve içerdikleri nesnelerin davranışlarını etkileyebilen nesnelerdir. Ana konteyner hizmetleri kategorileri şunları içerir:
- Workspace — Workspace, 3D dünyada render edilen tüm nesneleri depolar.
- Environment — Çevresel ayarlar ve unsurlar için nesneleri içeren Lighting ve SoundService gibi konteynerler.
- Replication — Sunucu ve istemci arasında çoğaltılan içerik ve mantık için konteynerler, örneğin ReplicatedStorage ve ReplicatedFirst.
- Server — Yalnızca sunucu tarafına ait içerik ve mantık için konteynerler, örneğin ServerScriptService ve ServerStorage.
- Client — İstemci tarafına ait içerik ve mantık için konteynerler, örneğin StarterPlayer ve StarterGui.
- Chat — Sohbet özelliklerini etkinleştiren nesneler için konteynerler, örneğin VoiceChatService ve TextChatService.
Ayrıca, nesnelerinizi şu nesneler ile daha fazla organize edebilirsiniz:
- Klasörler — Folder, organizasyon amaçlıdır ve herhangi bir davranış tanımlamaz. Örneğin, sunucu depolamasında bir grup benzer nesneyi, örneğin betik setini gruplayarak klasörler kullanabilirsiniz.
- Modeller — Model, esasen parçaların geometrik gruplamaları için tasarlanmıştır, örneğin bir sandalye, masa ve lamba içeren bir masa setini bir araya getirmede kullanılabilir. Daha karmaşık setleri düzenlemek için modelleri birbirinin içine bile yerleştirebilirsiniz.
Workspace
Workspace, bir mekanın 3D dünyasını oluşturan tüm nesneleri içerir. 3D dünyanınızı özelleştirmek için, temel parçalar, ağ parçaları ve modeller gibi nesneleri çalışma alanına ekleyebilirsiniz. İstemciler, bu kapsayıcıda görünenden her şeyi render eder ve bunun dışındaki hiçbir şeyi render etmez, böylece kullanıcıların mekanlarınızdaki neyi göreceğini ve etkileşimde bulunacağını kontrol edebilirsiniz. Gerçekten render edilmemiş olsalar da, ayrıca bunlarla ilişkilendirilmiş parçalara ve modellere bağlı betikleri de ekleyebilirsiniz. Varsayılan olarak, çalışma alanı, önceden bir Terrain ve Camera nesnesi ile doldurulmuştur.
Kamera
Camera, istemcinin 3D dünyayı nasıl görüntüleyeceğini belirler. Varsayılan olarak, çalışma alanında bir kamera bulunur, ancak farklı bakış açıları ve görünümler oluşturmak için birden fazla kamera nesnesi ekleyebilirsiniz. Her istemci bu ayarları alır ve sunucunun doğrudan değiştiremeyeceği kendi kamera görünümünü oluşturur.
Örneğin, bir kamerayı kullanıcı hareketlerini takip edecek şekilde ayarlayabilir veya belirli bir konumda sabit tutabilirsiniz. Kullanıcıların 3D dünyanızı nasıl gördüğüne dair farklı görsel etkiler yaratmak için alan görüşünü, mesafeyi ve açıyı ayarlayabilirsiniz.
Daha fazla bilgi için kamerayı özelleştirme kısmına bakın.
Arazi
Terrain, mekanlarınız için manzaralar oluşturmanıza olanak tanır. Araziye, çim, su, kum veya özel bir materyal gibi istenen doğal ortamları simüle etmek için bir malzeme uygulayabilirsiniz. 3D dünyanız için yalnızca bir arazi nesneniz olabilir ve bu araziye yalnızca bir malzeme uygulayabilirsiniz; ancak Arazi Düzenleyicisi ile arazi bölgelerini düzenleyebilirsiniz.
Daha fazla bilgi için çevresel arazi kısmına bakın.
Çevre
Özel aydınlatma, 3D dünyanızı çok daha etkileyici ve gerçekçi hale getirebilir. Lighting hizmeti, mekanınızın global aydınlatma ayarlarını kontrol eden nesneleri içerir; Atmosphere atmosferik etkileri simüle etmek veya Sky çevrenizdeki güneşi, ayı ve yıldızları değiştirmek için kullanılabilir. Ayrıca, belirli nesnelerden ışık yaymak için ışık kaynaklarını kullanabilirsiniz.
Oyunlarınıza ses eklemek de oyunlarınızı yeni zirvelere çıkarmak için kritiktir. Konum belirleyen ve konum belirlemeyen sesleri stratejik bir şekilde kullanarak, oyuncuları dünyalarınıza daldırabilir, davranışlarına yararlı geri bildirim verebilir ve başarılı olmaları gereken nesnelere dikkatlerini yönlendirebilirsiniz.
Çoğaltma
Çoğaltma, sunucunun mekanınızın durumunu bağlı olan tüm istemcilerle senkronize etme sürecidir. Roblox Motoru, sunucu ile istemci arasında birçok durumda verileri, fiziği ve sohbet mesajlarını akıllıca ve otomatik olarak çoğaltır; ancak belirli nesneleri belirli konteynerlere yerleştirerek çoğaltmak için de belirtebilirsiniz.
ReplicatedFirst
ReplicatedFirst, istemcinin mekanınıza katıldığında çoğaltmak istediğiniz nesneleri içerir. Genelde, bir oyuncunun başlatılmasında temel olan, istemci tarafındaki LocalScript nesneleri ve betiklerle ilişkilendirilmiş nesneleri içerir. Bu kapsayıcıdaki tüm içerik yalnızca bir kez sunucudan istemciye çoğaltılır.
ReplicatedStorage
ReplicatedStorage, hem sunucuya hem de bağlı istemcilere erişilebilen nesneleri içerir. İstemcide gerçekleşen değişiklikler kalıcıdır ancak sunucuya çoğaltılmaz. Sunucu, tutarlılığı sağlamak için istemcideki değişiklikleri geçersiz kılabilir. Bu kapsayıcı genellikle, hem Script (sunucu tarafı) hem de LocalScript (istemci tarafı) nesneleri tarafından paylaşılması ve erişilmesi gereken ModuleScript nesneleri için kullanılır. Ayrıca, istemci tarafında yalnızca gerektiğinde var olması gerekmeyen nesneleri çoğaltmak için bu kapsayıcıyı kullanabilirsiniz; örneğin, gelen karakter modellerine klonlanıp bağlanacak bir ParticleEmitter.
Çoğaltmanın nasıl çalıştığı hakkında daha fazla bilgi için istemci-sunucu çalışma zamanı kısmına bakın.
Sunucu
Veri modeli, istemciye asla çoğaltılmayan yalnızca sunucu tarafı nesneleri için özel konteynerler tanımlar. Bu, sunucunun istemci davranışını ve durumunu etkilemesine olanak tanır; sunucunun nesnelerini ve mantığını istemciye açmadan yapar.
ServerScriptService
ServerScriptService, sunucu betiklerinin ihtiyaç duyduğu Script nesnelerini, ModuleScript nesnelerini ve yalnızca sunucu kullanımı için ayrılmış diğer betiklerle ilgili nesneleri içerir. Betikleriniz başka, betik olmayan nesnelere ihtiyaç duyuyorsa, bunları ServerStorage içinde yerleştirmelisiniz. Bu kapsayıcıdaki betikler, istemcilere asla çoğaltılmaz; bu, güvenli sunucu tarafı mantığına sahip olmanızı sağlar.
ServerStorage
ServerStorage, yalnızca sunucu kullanımı için tasarlanmış nesneleri içerir. Bu kapsayıcıyı, çalışma zamanında çalışma alanına veya diğer konteynerlere klonlayıp ilişkilendirmek istediğiniz nesneleri depolamak için kullanabilirsiniz. Örneğin, büyük nesneleri, ihtiyaç duyulana kadar bu kapsayıcıda depolayabilir ve yalnızca gerektiğinde çalışma alanına taşıyabilirsiniz. Bu, istemcinin ilk katılışında ağ trafiğini azaltmanıza olanak tanır.
İstemci
İstemci konteyner hizmetleri, her bağlı istemciye çoğaltılan nesneler içindir. Bu kapsayıcılar, her bağlı istemciye çoğaltılır ve genellikle 3D nesneleri ve ilişkili LocalScript nesnelerini içerir. Bu kapsayıcılarda sakladığınız tüm nesneler, oturumlar arasında kalıcı değildir ve bir istemci tekrar katıldığında her seferinde sıfırlanır. Bu kapsayıcılara oyuncu GUI'leri, istemci tarafı betikleri ve yalnızca istemci için önemli olan diğer nesneler gibi nesneleri koyabilirsiniz.
Bir istemci bir sunucuya bağlandığında, Players konteyner hizmeti, mekanınıza katılan kullanıcıları dinler ve her istemci için bir Player nesnesi oluşturur. Sunucu, edit veri modelindeki istemci konteynerlerinden nesneleri alır ve Players nesnesi içindeki çalışma zamanı veri modelindeki karşılık gelen konuma kopyalar. Aşağıdaki tablo, bulunduğu kapsayıcıyı ve istemcide kopyalanacağı sonucu kapsayıcıyı açıklar:
| Belge veri modeli | Çalışma zamanı veri modeli | Açıklamalar |
|---|---|---|
| StarterPack | Player.Backpack | Oyuncunun envanterini ayarlayan betikler ve genellikle Tool nesnelerini içerir ancak genellikle yerel betikler de içerir. |
| StarterGui | Player.PlayerGui | Oyuncunun yerel GUI'sini yönetebilen betikler. Bir oyuncu yeniden doğduğunda, PlayerGui'nin içeriği boşaltılır. Sunucu, StarterGui içindeki nesneleri PlayerGui'ye kopyalar. |
| StarterPlayerScripts | Player.PlayerScripts | İstemci için genel amaçlı betikler. Örneğin, belirli koşullar sağlandığında istemcide özel efektler oluşturmak istiyorsanız, bunu yapmak için bu kapsayıcıya bir yerel betik yerleştirebilirsiniz. Sunucu, bu kapsayıcıya erişemez. |
| StarterCharacterScripts | Player.Character | İstemciye kopyalanan betikler. Bu betikler, oyuncu yeniden doğduğunda kalıcı değildir. |
| ReplicatedFirst | Bu kapsayıcının içeriği, (ancak sunucuya geri değil) önce, diğer her şeyden önce tüm istemcilere çoğaltılır. |
Sohbet
TextChatService
TextChatService, kanal yönetimi, mesaj süsleme, metin filtreleme, komut oluşturma ve özel sohbet arayüzleri geliştirme gibi çeşitli, oyun içi metin sohbet görevlerini yöneten hizmeti temsil eder.
Daha fazla bilgi için metin sohbeti genel görünümü kısmına bakın.
VoiceChatService
VoiceChatService, diğer kullanıcılara ne kadar yakın olduğunuza dayalı gerçekçi iletişimi simüle eden yakınlık tabanlı ses sohbeti özelliğini temsil eder. Bu hizmeti, özelliği açıp kapatmak için kullanabilirsiniz.
Daha fazla bilgi için sesli sohbet kısmına bakın.
Klasörler ve modeller
Veri modelindeki nesneleri gruplamanın iki ana yöntemi vardır: klasörler ve modeller. Her ikisi de nesneler için konteynerlerdir, ancak farklı amaçları vardır.
- Klasörler, çevrenin bölümlerini depolamak için en iyi yoldur; örneğin, lobiyi veya bir savaş arenasını.
- Modeller, bir sandalyeyi, masayı ve lambayı içeren bir masa seti gibi nesne setleri için kullanılır. Daha karmaşık setleri düzenlemek için, modelleri modellerin içine yerleştirebilirsiniz.
Nesnelerinizi her zaman açıklayıcı bir şekilde adlandırmalısınız. Bu, gerektiğinde nesneleri bulup düzenlemeyi kolaylaştırır.

