Birçok geliştirici için, Roblox kodlamasına adapte olmanın temel zorluğu, dosya konumunun önemi ve Script.RunContext özelliğidir.Senaryo yaz, Gezgindeki konuma ve yürütme bağlamına bağlı olarak, senaryolar çok farklı davranabilir.Bazı yöntem çağrıları başarısız olabilir, deneyiminizdeki nesneler erişilemez olabilir veya kodlar hiç çalışmayabilir.
Bu karmaşıklığın nedeni, Roblox deneyimlerinin varsayılan olarak çok oyunculu olmasıdır.Scriptlerin sadece sunucuda çalışması, sadece istemci üzerinde çalışması veya her ikisine de paylaşılması gerekir.Roblox platformunun zamanla gelişmesi, durumu daha da karmaşık hale getirdi.
Kript türleri
Roblox'un üç tür kodu vardır:
- Script - Konumuna ve Script.RunContext özelliklerine bağlı olarak sunucuda veya istemcede çalışan kod.
- LocalScript - Sadece istemci üzerinde çalışan kod. Bir çalışma bağlamına sahip değil.
- ModuleScript - Diğer kodlarda yeniden kullanabileceğiniz kod. Bir çalışma bağlamına sahip değil.
Bir Script oluşturduğunuzda, varsayılan çalışma konteksi Legacy , yani a) bir sunucu tarafı koddur ve b) yalnızca bir sunucu konteynerinde çalışır, örneğin Workspace veya ServerScriptService .
- Eğer senaryonun çalışma kapsamını Server 'ye değiştirirseniz, artık ReplicatedStorage 'de de çalışabilir, ancak bunun önerilmediği belirtilmelidir.Bu konumun içeriği istemcilere yansıtılır, bu nedenle sunucu tarafı kodları için kötü bir konumdur.
- Eğer senaryonun çalışma kapsamını Client 'ye değiştirirseniz, ReplicatedStorage 'de çalışabilir.Ayrıca StarterCharacterScripts ve StarterPlayerScripts içinde çalışabilir.Başlangıç konteynerleri müşterilere kopyalanır, bu yüzden orijinal kod ve kopya çalıştırılır, ki bu istenmez.
Bir senaryo yürütme kapsamını değiştirmek için, seçin Gezgini ve Özellikler penceresinde değeri değiştirin.

Tavsiyeler
Server ve Client değerlerini kullanarak RunContext kodların nasıl çalıştığından belirsizlik kaldırılır ve projenizi düzenli tutmanıza yardımcı olur.Varsayılmayan RunContext değerler için en iyi kullanım durumları:
- ReplicatedStorage veya ReplicatedFirst dışında çalıştırmak istediğiniz istemci kodları.
Sunucu ve istemci kodları arasında paylaşmak için, ModuleScripts kullanın ReplicatedStorage .
Kullan LocalScripts``StarterCharacterScripts , StarterPlayerScripts , StarterGui ve StarterPack .
Senaryo konumları
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.
Bu resim, hangi Kaşif pencere konumlarının müşteri kodlarını içerebileceğini gösterir.Unutmayın, ve içerebilir ile , ancak konteynerlerinin kullanması gereken .

Örnek proje yapısı
Bitki referans projesi, kodunuzu büyük ve karmaşık bir deneyimde nasıl düzenleyebileceğinizi gösterir.
Özellikle dikkat edilmesi gereken nokta, kodun büyük çoğunluğunu yeniden kullanılabilir ModuleScripts olarak ReplicatedStorage ve ServerStorage içinde sakladığıdır.