Her yer, bir veri modeli ile temsil edilir; bu, yer hakkında her şeyi tanımlayan nesnelerin hiyerarşisidir. 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, özellikleri değiştiren, yöntemleri ve fonksiyonları çağıran ve dinamik davranış ve etkileşim sağlayan olaylara yanıt veren betikler gibi çalışma zamanı davranışını kontrol edebilen nesneleri de içerir.
Roblox Motoru, bir yerin durumunun doğru kaynağı olarak veri modelini kullanır, böylece bunu istemci cihazlarında 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ı bölümüne bakın.
Nesneler
Roblox'ta bir yeri tanımlamak için veri modelinde nesneleri yerleştirir ve düzenlersiniz. Roblox'taki her nesne, tüm nesneler için ortak olan genel özellikleri, yöntemleri ve olayları tanımlayan Instance sınıfından miras alır. Nesneler ayrıca, nesnenin sağladığı işlevselliğe bağlı olarak kendi özelliklerini tanımlar. Birçok kategori ve çeşitli kullanımlara sahip nesne vardır, ancak sıklıkla BasePart ve LuaSourceContainer nesneleri ile çalışacaksınız; bunlar genellikle parçalar ve betikler olarak adlandırılır.
Roblox Motoru'nun tüm özelliklerinin kapsamlı bir listesi için referans belgelerine bakın.
3D yapı taşları
BasePart, dünyadaki fiziksel olarak simüle edilen 3D yapı taşları için temel sınıftır. Konum, boyut ve yön gibi fiziksel nesnelerin ortak özelliklerini ve yöntemlerini tanımlar.
| Nesne | Açıklama |
|---|---|
| Part | Bir blok, top, silindir, kama veya köşe kama şeklini alabilen ilkel bir parça. |
| MeshPart | Maya veya Blender gibi 3D modelleme yazılımlarından içe aktarılan bir ağ. |
| TrussPart | Karakterlerin merdiven gibi tırmanabileceği bir kiriş. |
Teorik olarak sadece basit parçalar kullanarak tamamen işlevsel bir Roblox oyunu oluşturabilirsiniz, ancak muhtemelen ağlar içe aktaracak ve ilkel parçaları daha karmaşık nesneler ve yapılar haline getirmek için katı modelleme kullanacaksınız.
Betikler
3D dünyanıza etkileşim ve davranış ekleyebilir ve mantığı betiklerle 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, istemci-sunucu modelinde çalıştığı için betikleri sunucuda, istemcide çalıştırabilir veya ağ sınırında iletişim kurmalarını sağlayabilirsiniz.
- 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 erişebileceğiniz yeniden kullanılabilir bir betiği temsil eder.
Betiklerin düzgün çalışması için, veri modelinde doğru konteynerlere yerleştirmeniz gerekir. Daha fazla bilgi için Sunucu ve İstemci bölümlerine bakın.
Nesne organizasyonu
Veri modelinizi nasıl organize edeceğiniz konusunda çok fazla esnekliğe sahip olsanız da, Roblox Motoru belirli nesnelerin belirli konteyner hizmetlerinde bulunmasını bekler; bu, belirli davranışlara sahip nesnelerdir ve içerdiği nesnelerin davranışlarını etkileyebilir. Konteyner hizmetlerinin ana kategorileri şunlardır:
- Çalışma Alanı — Workspace, 3D dünyada render edilen tüm nesneleri depolar.
- Çevre — Çevresel ayarlar ve unsurlar için nesneleri içeren Lighting ve SoundService gibi konteynerler.
- Yinelenme — Sunucu ve istemci arasında yinelenen içerik ve mantık için konteynerler, örneğin ReplicatedStorage ve ReplicatedFirst.
- Sunucu — Sadece sunucu tarafında bulunan içerik ve mantık için konteynerler, örneğin ServerScriptService ve ServerStorage.
- İstemci — İstemci tarafında bulunan içerik ve mantık için konteynerler, örneğin StarterPlayer ve StarterGui.
- Sohbet — VoiceChatService ve TextChatService gibi sohbet özelliklerini etkinleştiren nesneler için konteynerler.
Ayrıca, nesnelerinizi aşağıdaki nesnelerle daha fazla organize edebilirsiniz:
- Klasörler — Folder, organizasyon amaçlıdır ve herhangi bir davranış tanımlamaz. Örneğin, sunucu depolamasında benzer nesneleri gruplamak için klasörler kullanabilirsiniz.
- Modeller — Model, genellikle parçaların geometrik gruplamaları için tasarlanmıştır; örneğin, bir sandalye, masa ve lamba içeren bir masa setini bir araya getirmek için. Daha karmaşık setleri organize etmek için, modelleri modellerin içine bile yerleştirebilirsiniz.
Çalışma Alanı
Workspace, bir yerin 3D dünyasını oluşturan tüm nesneleri içerir. 3D dünyanızı özelleştirmek için çalışma alanına parçalar, ağ parçaları ve modeller gibi nesneler ekleyebilirsiniz. İstemciler, bu konteynerde görünen her şeyi render eder ve bunun dışındaki hiçbir şeyi render etmez, böylece kullanıcıların yerinizde neyi göreceğini ve etkileşimde bulunacağını kontrol edebilirsiniz. Gerçekte render edilmemiş olsalar da, ilişkili oldukları parçalara ve modellere bağlı betikleri de ekleyebilirsiniz. Varsayılan olarak, çalışma alanı Terrain ve Camera nesnesi ile önceden doldurulmuştur.
Kamera
Camera, istemcinin 3D dünyayı nasıl gördüğünü belirler. Varsayılan olarak, çalışma alanında bir kamera bulunur, ancak farklı perspektifler 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 efektler oluşturmak için görüş açısını, mesafeyi ve açıyı da ayarlayabilirsiniz.
Daha fazla bilgi için kamerayı özelleştirme bölümüne bakın.
Arazi
Terrain, yeriniz için manzaralar oluşturmanıza olanak tanır. Araziye, çim, su, kum veya özel bir malzeme gibi istenen doğal ortamları simüle etmek için bir malzeme uygulayabilirsiniz. 3D dünyanız için yalnızca bir arazi nesnesine sahip olabileceğiniz ve o araziye yalnızca bir malzeme uygulayabileceğiniz için, arazi bölgelerini düzenlemek için Arazi Editörü kullanabilirsiniz.
Daha fazla bilgi için çevresel arazi bölümüne bakın.
Çevre
Özel aydınlatma, 3D dünyanızı çok daha sürükleyici ve gerçekçi hale getirebilir. Lighting hizmeti, yerinizin küresel aydınlatma ayarlarını kontrol eden nesneleri içerir; örneğin, atmosferik etkileri simüle etmek için Atmosphere veya çevrenizdeki güneşi, ayı ve yıldızları değiştirmek için Sky. Ayrıca, belirli nesnelerden ışık yaymak için ışık kaynakları kullanabilirsiniz.
Oyunlarınıza ses eklemek de oyunlarınızı yeni zirvelere taşımak için kritik öneme sahiptir. Pozisyonel ve pozisyonel olmayan sesleri stratejik olarak kullanarak, oyuncuları dünyalarınıza daldırabilir, eylemleri için onlara faydalı geri bildirim sağlayabilir ve başarılı olmaları için ne yapmaları gerektiğine dikkatlerini yönlendirebilirsiniz.
Yinelenme
Yinelenme, sunucunun yerinizin durumunu tüm bağlı istemcilerle senkronize etme sürecidir. Roblox Motoru, birçok durumda verileri, fiziği ve sohbet mesajlarını sunucu ve istemci arasında akıllıca ve otomatik olarak yineler, ancak belirli nesneleri belirli konteynerlere yerleştirerek de yinelenmesini belirtebilirsiniz.
ReplicatedFirst
ReplicatedFirst, bir istemci yerinize katıldığında ona yinelenmesini istediğiniz nesneleri içerir. Genellikle, bir oyuncuyu başlatmak için gerekli olan istemci tarafı LocalScript nesneleri ve betiklerle ilişkili nesneleri içerir. Bu konteynerdeki tüm içerik, yalnızca bir kez sunucudan istemciye yinelenir.
ReplicatedStorage
ReplicatedStorage, hem sunucuya hem de bağlı istemcilere erişilebilen nesneleri içerir. İstemcide meydana gelen herhangi bir değişiklik kalıcıdır ancak sunucuya yinelenmez. Sunucu, tutarlılığı sağlamak için istemcideki değişiklikleri geçersiz kılabilir. Bu konteyner, hem Script (sunucu tarafı) hem de LocalScript (istemci tarafı) nesneleri tarafından paylaşılması ve erişilmesi gereken ModuleScript nesneleri için genellikle kullanılır. Ayrıca, bu konteyneri, ihtiyaç duyulana kadar 3D dünyada var olmaları gerekmeyen nesneleri yinelenmek için kullanabilirsiniz; örneğin, tüm gelen karakter modellerine klonlamak ve ebeveyn yapmak için bir ParticleEmitter.
Yinelenmenin nasıl çalıştığı hakkında daha fazla bilgi için istemci-sunucu çalışma zamanı bölümüne bakın.
Sunucu
Veri modeli, istemciye asla yinelenmeyen sunucu tarafı nesneleri için özel konteynerler tanımlar. Bu, sunucunun istemci davranışını ve durumunu etkilemesine olanak tanır ve sunucunun nesnelerini ve mantığını istemciye açmaz.
ServerScriptService
ServerScriptService, sunucu betikleri tarafından gereken Script nesnelerini, ModuleScript nesnelerini ve yalnızca sunucu kullanımı için tasarlanmış diğer betik ile ilgili nesneleri içerir. Betikleriniz diğer, betik olmayan nesnelere ihtiyaç duyuyorsa, bunları ServerStorage içine yerleştirmelisiniz. Bu konteynerdeki betikler asla istemcilere yinelenmez, bu da 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 konteyneri, çalışma alanına veya diğer konteynerlere çalışma zamanı sırasında klonlamak ve ebeveyn yapmak istediğiniz nesneleri depolamak için kullanabilirsiniz. Örneğin, bu konteynerde haritalar gibi büyük nesneleri depolayabilir ve yalnızca ihtiyaç duyulduğunda çalışma alanına taşıyabilirsiniz. Bu, istemci ağ trafiğini ilk katılımda azaltmanıza olanak tanır.
İstemci
İstemci konteyner hizmetleri, her bağlı istemciye yinelenen nesneler için tasarlanmıştır. Bu konteyner kategorisi, her bağlı istemciye yinelenir ve genellikle 3D nesneleri ve ilişkili LocalScript nesnelerini içerir. Bu konteynerlerde depoladığınız tüm nesneler, oturumlar arasında kalıcı değildir ve her seferinde bir istemci yeniden katıldığında sıfırlanır. Bu konteynerlere oyuncu GUI'leri, istemci tarafı betikleri ve yalnızca istemciye özgü diğer nesneleri koyabilirsiniz.
Bir istemci bir sunucuya bağlandığında, Players konteyner hizmeti, kullanıcıların yerinize katılmasını dinler ve her istemci için bir Player nesnesi oluşturur. Sunucu, edit veri modelindeki istemci konteynerlerinden nesneleri alır ve bunları Players nesnesi içindeki çalışma zamanı veri modelindeki karşılık gelen konuma kopyalar. Aşağıdaki tablo, bulunduğu orijinal konteyneri ve istemcide kopyalandıkları sonuç konteynerini açıklar:
| Düzenleme veri modeli | Çalışma zamanı veri modeli | Notlar |
|---|---|---|
| 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 karşılandığında istemcide özel efektler oluşturmak istiyorsanız, bunu yapmak için bu konteynerde bir yerel betik yerleştirebilirsiniz. Sunucu bu konteyneri erişemez. |
| StarterCharacterScripts | Player.Character | İstemciye kopyalanan betikler. Bu betikler, oyuncu yeniden doğduğunda kalıcı değildir. |
| ReplicatedFirst | Bu konteynerin içeriği, her şeyden önce tüm istemcilere (ancak sunucuya geri değil) yinelenir. |
Sohbet
TextChatService
TextChatService, kanalları yönetme, mesajları süzme, metinleri filtreleme, komutlar 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 bakış bölümüne bakın.
VoiceChatService
VoiceChatService, diğer kullanıcılara ne kadar yakın olduğunuza dayalı olarak gerçekçi iletişimi simüle eden yakınlık tabanlı sesli sohbet özelliğini temsil eder. Bu hizmeti, özelliği açıp kapatmak için kullanabilirsiniz.
Daha fazla bilgi için sesli sohbet bölümüne 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, bir çevrenin bölümlerini depolamak için en iyisidir; örneğin, lobiyi veya bir savaş arenasını.
- Modeller, bir masa seti gibi nesne setleri için kullanılır; bu set bir sandalye, masa ve lamba içerir. Daha karmaşık setleri organize etmek için, modelleri modellerin içine yerleştirin.
Nesnelerinizi her zaman açıklayıcı bir şekilde adlandırmalısınız. Bu, gerektiğinde nesneleri bulmayı ve değiştirmeyi kolaylaştırır.

