Erişim engelli bireyler tarafından kullanılabilir ürün ve hizmetlerin tasarım uygulamasıdır. Son istatistikler, insanların %26'sından fazlasının herhangi bir tür engelinin olduğunu belirtmektedir, bu nedenle Roblox oyununuzu erişilebilir hale getirmek daha geniş bir kitleye ulaşmanıza yardımcı olabilir.
Metin boyutu
Oyuncular küçük metinleri okumakta zorluk çekebilir. Aşağıdaki oyun içi mağaza menüsünü bulanıklaştırarak, görme engelli birine nasıl görünebileceğini simüle edin.

Küçük yazı tiplerinin etiketlerinin boyutunu artırırsanız, çoğu oyuncu için daha net olacaktır.

Renk kontrastı
Oyuncular, açık metinlerin açık bir arka planda veya koyu metinlerin koyu bir arka planda okunmasında zorluk yaşayabilir. Erişimi iyileştirmek için, yeterli renk kontrastına sahip metin ve arka plan renkleri seçmeniz önerilir.


Renk bağımsızlığı
Dünya üzerinde insanların %5'inden fazlası herhangi bir tür renk körlüğüne sahiptir. Birinin yalnızca siyah ve beyaz görmesi nadir olsa da, bir oyunu gri tonlamada görüntülediğinizi hayal edin:

Resmi, renklerin yanı sıra farklı semboller kullanarak değiştirerek, daha fazla oyuncunun oyun sırasında ve diğer bağlamlarda farklılığı ayırt etmesini sağlayabilirsiniz:

Ses bağımsızlığı
Ses, etkileyici oyunlar için mükemmel bir katkıdır, ancak işitme engelli oyuncular veya ses seviyelerini kapatan herkes, yalnızca sesle iletilen oyun içi olaylarda kafa karışıklığı yaşayabilir.
Aşağıdaki sahneyi düşünün; burada bir telefonun çaldığı yalnızca sesle belirtiliyor ve ardından hem ses hem de görsel yardımlarla belirtiliyor.
Oyuncu tercihleri
Roblox ve oyun içi Ayarlar menülerinden oyunculara çeşitli görsel ayarlar sunulmaktadır; bunlar arasında tercih edilen saydamlık, tercih edilen metin boyutu ve azaltılmış hareket bulunmaktadır. Optimal erişilebilirlik için, kullanıcı arayüzünüz bunları göz önünde bulundurmalıdır.
Tercih edilen saydamlık
Arka Plan Saydamlığı ayarı, GuiService.PreferredTransparency özelliğine denk gelir. 1 değeri, oyuncunun varsayılan arka plan saydamlığını tercih ettiğini gösterirken, 0 değeri, oyuncunun okunabilirlik ve kontrastı artırmak için tamamen opak (şeffaf olmayan) arka plan saydamlığını tercih ettiğini gösterir.
Bir UI öğesinin BackgroundTransparency değerini PreferredTransparency ile çarpmak, bu ayarı kullanmanın önerilen yoludur; PreferredTransparency değeri 0’a yaklaştıkça arka plan daha opak hale gelir.
etiketleme sistemini kullanarak, TextLabels veya Frames gibi BackgroundTransparency değerine sahip tüm UI öğelerine TransparentBack etiketi uygulayın.

Dört TextLabel öğesi ile değişik BackgroundTransparency seviyeleri Aşağıdaki kodu LocalScript içinde StarterPlayerScripts'e yapıştırın.
Tercih Edilen Saydamlık İçin Dinamik Ayarlamalocal GuiService = game:GetService("GuiService")local CollectionService = game:GetService("CollectionService")local TAG = "TransparentBack"local transparentBackObjects = {}local function onInstanceAdded(object)if object.BackgroundTransparency thenlocal defaultTransparency = object.BackgroundTransparencytransparentBackObjects[object] = defaultTransparencyobject.BackgroundTransparency = defaultTransparency * GuiService.PreferredTransparencyendendlocal function onInstanceRemoved(object)transparentBackObjects[object] = nilend-- Başlangıçta etiketlenmiş nesneleri saklayınfor _, object in CollectionService:GetTagged(TAG) doonInstanceAdded(object)end-- Etiketli bir nesnenin eklendiğinde veya çıkarıldığında algılayınCollectionService:GetInstanceAddedSignal(TAG):Connect(onInstanceAdded)CollectionService:GetInstanceRemovedSignal(TAG):Connect(onInstanceRemoved)-- Oyun içi ayar değiştiğinde etiketlenmiş nesneleri ayarlayınGuiService:GetPropertyChangedSignal("PreferredTransparency"):Connect(function()for object, defaultTransparency in transparentBackObjects doobject.BackgroundTransparency = defaultTransparency * GuiService.PreferredTransparencyendend)Oyunu test edin, Ayarlar menüsünü açın ve Arka Plan Saydamlığını ayarlayın. Etiketli UI öğeleri, varsayılan BackgroundTransparency ile tamamen opak arasında güncellenmelidir.

Tercih edilen metin boyutu
Metin Boyutu ayarı, GuiService.PreferredTextSize özelliğine denk gelir ve varsayılan değeri Medium'dur. Oyuncular, motorun yazı tipi işleme süreci aracılığıyla metin boyutunu Large, Larger veya Largest olarak artırmayı seçebilir.
UI öğeleri ile çalışırken aşağıdaki davranışları dikkate alın:
UITextSizeConstraint aracılığıyla minimum ve/veya maksimum boyutu sınırlanmış metin, oyuncunun metin boyutu ayarlarına bakılmaksızın, belirlenen MinTextSize/MaxTextSize değerinin altına düşmeyecek veya üzerine çıkmayacaktır.
TextScaled bir TextLabel veya TextButton için etkinleştirildiğinde, öğenin metni PreferredTextSize değeri tarafından ölçeklenmeyecektir.
AutomaticSize etkinleştirildiğinde, UI öğeleri PreferredTextSize azalırken/büyürken küçülüp/büyüyecektir (öğe boyutları, ölçeklendirilmiş metni kaplayacak şekilde yeniden boyutlandırılacaktır).
TextWrapped etkinleştirildiğinde, TextLabel veya TextButton için elementin metni, PreferredTextSize artırıldıkça ek satırlara sarılacaktır, öğenin mutlak boyutu sınırlı olduğu sürece.
TextService:GetTextSize() ve TextService:GetTextBoundsAsync() tarafından döndürülen sonuçlar, PreferredTextSize ile ilgili değişiklikleri dikkate alır.
Azaltılmış hareket
Hareketi Azalt seçeneği, GuiService.ReducedMotionEnabled özelliğine denk gelir. true değeri, oyuncunun UI animasyonları/tweenler aracılığıyla hareket efektlerinin azaltılmasını veya tamamen kaldırılmasını istediğini gösterir.
UI tween'lerinden hareketi kaldırmak için temel bir yaklaşım, ReducedMotionEnabled değeri true olduğunda Time parametresini 0 olarak ayarlamak ve böylece UI nesnesinin hedefe anında geçiş yapmasını sağlamaktır.
Azaltılmış Hareket için Hedefe Anında UI Tweenlocal GuiService = game:GetService("GuiService")local Players = game:GetService("Players")local TweenService = game:GetService("TweenService")local player = Players.LocalPlayerlocal playerGui = player.PlayerGuilocal menuUI = playerGui:WaitForChild("MenuUI")-- Azaltılmış hareket etkinleştirilmediği sürece tween zamanı 0.75 saniye olacaklocal TWEEN_TIME = if GuiService.ReducedMotionEnabled then 0 else 0.75local tweenInfo = TweenInfo.new(TWEEN_TIME, Enum.EasingStyle.Cubic, Enum.EasingDirection.Out)local tween = TweenService:Create(menuUI.SettingsFrame, tweenInfo, {Position = UDim2.fromScale(0.5, 0.5)})tween:Play()
Anlık geçişe alternatif olarak, ReducedMotionEnabled'ı daha belirgin true/false mantığı ile işleyebilirsiniz. Örneğin, aşağıdaki LocalScript varsayılan olarak hareket tween'lerini kullanır, ancak azaltılmış hareket etkinleştirildiğinde fade-in geçişine geçerek, konum hareketi olmadan daha şık bir geçiş sağlar.
Azaltılmış Hareket için Fade Tween'e Dönüşlocal GuiService = game:GetService("GuiService")local Players = game:GetService("Players")local TweenService = game:GetService("TweenService")local player = Players.LocalPlayerlocal playerGui = player.PlayerGuilocal menuUI = playerGui:WaitForChild("MenuUI")-- Tüm çocukları uniform olarak tweenlemek için bir canvas grubu oluşturmalocal canvasGroup = Instance.new("CanvasGroup")canvasGroup.Size = UDim2.fromScale(1, 1)canvasGroup.BackgroundTransparency = 1canvasGroup.Parent = menuUI-- Canvas grubuna çocukları ekleyinmenuUI.SettingsFrame.Parent = canvasGrouplocal tweenInfo = TweenInfo.new(0.75, Enum.EasingStyle.Cubic, Enum.EasingDirection.Out)local tween-- Azaltılmış hareket için fade tween kullanın, aksi takdirde bir hareket tween'i kullanınif GuiService.ReducedMotionEnabled then-- Başlangıçta canvas grubunu tamamen saydam (görünmez) olarak ayarlayıncanvasGroup.GroupTransparency = 1-- Canvas grubunu fade in yapıntween = TweenService:Create(canvasGroup, tweenInfo, {GroupTransparency = 0})else-- Başlangıçta canvas grubunu ekrandan dışarıda ayarlayıncanvasGroup.Position = UDim2.fromScale(0, -1)-- Canvas grubunu ekrana taşıyıntween = TweenService:Create(canvasGroup, tweenInfo, {Position = UDim2.fromScale(0, 0)})endtween:Play()
Ses kontrolleri
Aynı anda çalan farklı sesler bunaltıcı, dikkat dağıtıcı veya ayırt edilmesi zor olabilir. Kullanıcılara ses efektleri, müzik ve konuşma gibi farklı "grup" sesleri için ses kontrolleri sunmak, onların oyunlarını özelleştirmelerine ve ihtiyaç duydukları şeylere odaklanmalarına olanak tanır.
Kullanıcının müzik ve ses efektleri ses seviyelerini ayrı ayrı değiştirebildiği çok sesli bir oyunun aşağıdaki örneğini düşünün.