Accessibilité est la pratique de la conception de produits et de services utilisables par les personnes handicapées. Des statistiques récentes indiquent que plus de 26 % des personnes ont un type de handicap, donc rendre votre jeu Roblox accessible peut vous aider à atteindre un public plus large.
Taille du texte
Les joueurs peuvent avoir des difficultés à lire un texte petit. Comparez le menu de la boutique en jeu suivant avec un flou appliqué, simulant ce que cela pourrait ressembler pour quelqu'un ayant une vision altérée.

Si vous augmentez la taille des petites étiquettes de police, cela sera plus clair pour la plupart des joueurs.

Contraste des couleurs
Les joueurs peuvent trouver difficile de lire du texte clair sur un fond clair, ou du texte sombre sur un fond sombre. Pour améliorer l'accessibilité, il est recommandé de choisir des couleurs de texte et de fond avec un contraste de couleur suffisant.


Non-dépendance à la couleur
Plus de 5 % des personnes dans le monde ont une forme de daltonisme. Bien qu'il soit rare que quelqu'un voie uniquement en noir et blanc, imaginez voir un jeu en niveaux de gris :

En modifiant l'image pour utiliser différents symboles aux côtés des couleurs, plus de joueurs peuvent faire la différence dans le gameplay et dans d'autres contextes :

Non-dépendance au son
Le son est un excellent ajout pour les jeux immersifs, mais les joueurs malentendants ou ceux qui coupent le son seront confus par les événements en jeu qui sont uniquement transmis par le son.
Considérez la scène suivante où un téléphone qui sonne est signalé uniquement par le son, puis signalé avec à la fois le son et des aides visuelles.
Préférences des joueurs
Divers paramètres visuels sont disponibles pour les joueurs dans les menus Paramètres Roblox et en jeu, y compris transparence préférée, taille de texte préférée et réduction de mouvement. Pour une accessibilité optimale, votre interface utilisateur devrait accommoder chacune.
Transparence préférée
Le paramètre Transparence de fond correspond à la propriété GuiService.PreferredTransparency. Une valeur de 1 indique que le joueur préfère la transparence de fond par défaut, tandis qu'une valeur de 0 indique que le joueur préfère une transparence de fond complètement opaque (non transparente) pour une meilleure lisibilité et contraste.
Multiplier BackgroundTransparency d'un élément UI par PreferredTransparency est le moyen recommandé d'utiliser ce paramètre ; les arrière-plans deviendront plus opaques à mesure que PreferredTransparency approche de 0.
En utilisant le système de tagging, appliquez une étiquette TransparentBack à tous les éléments UI avec BackgroundTransparency tels que TextLabels ou Frames.

Quatre éléments TextLabel avec différents niveaux de BackgroundTransparency Collez le code suivant dans un LocalScript dans StarterPlayerScripts.
Ajustement dynamique pour la transparence préféréelocal 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-- Stocker les instances initiales taguéesfor _, object in CollectionService:GetTagged(TAG) doonInstanceAdded(object)end-- Détecter quand une instance taguée est ajoutée ou suppriméeCollectionService:GetInstanceAddedSignal(TAG):Connect(onInstanceAdded)CollectionService:GetInstanceRemovedSignal(TAG):Connect(onInstanceRemoved)-- Lorsque le paramètre en jeu est modifié, ajustez les instances taguéesGuiService:GetPropertyChangedSignal("PreferredTransparency"):Connect(function()for object, defaultTransparency in transparentBackObjects doobject.BackgroundTransparency = defaultTransparency * GuiService.PreferredTransparencyendend)Testez le jeu, ouvrez le menu Paramètres et ajustez la Transparence de fond. Les éléments UI tagués devraient se mettre à jour entre leur BackgroundTransparency par défaut et complètement opaque.

Taille de texte préférée
Le paramètre Taille de texte correspond à la propriété GuiService.PreferredTextSize qui par défaut est Medium. Les joueurs peuvent choisir d'augmenter la taille du texte via le pipeline de rendu de police du moteur à Large, Larger ou Largest.
Lorsqu'ils travaillent avec des éléments UI, notez les comportements suivants :
Le texte qui est contraint à une taille minimale et/ou maximale à travers un UITextSizeConstraint ne rétrécira pas en dessous ou n'étendra pas au-dessus du MinTextSize/MaxTextSize fixé, quelle que soit le paramètre de taille de texte du joueur.
Lorsque TextScaled est activé pour un TextLabel ou TextButton, le texte de l'élément ne sera pas mis à l'échelle par la valeur PreferredTextSize.
Les éléments UI avec AutomaticSize activé se rétréciront/agrandiront à mesure que PreferredTextSize diminue/augmente (les limites de l'élément s'ajusteront pour s'adapter au texte redimensionné).
Lorsque TextWrapped est activé pour un TextLabel ou TextButton, le texte de l'élément s'enroulera sur des lignes supplémentaires à mesure que PreferredTextSize augmente, dans les limites de la taille absolue de l'élément.
Les résultats retournés par TextService:GetTextSize() et TextService:GetTextBoundsAsync() honorent les changements liés à PreferredTextSize.
Réduction du mouvement
Le commutateur Réduire le mouvement correspond à la propriété GuiService.ReducedMotionEnabled. Une valeur de true indique que le joueur souhaite que les effets de mouvement à travers les animations/tweens de l'UI soient réduits ou complètement supprimés.
Une approche simple pour supprimer le mouvement des tweens UI est de fixer le paramètre Time d'un TweenInfo à 0 lorsque ReducedMotionEnabled est true, rendant effectivement l'objet UI à sa cible instantanément.
UI Tween Snap-to-Target pour Réduction de Mouvementlocal 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")-- Utiliser un temps de tween de 0.75 secondes à moins que le mouvement réduit soit activélocal 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()
Alternativement au snap instantané, vous pouvez gérer ReducedMotionEnabled avec une logique distincte true/false. Par exemple, le LocalScript suivant utilise le tweening de mouvement par défaut, mais passe à un fondu pour les joueurs qui activent la réduction du mouvement, résultant en une transition plus élégante sans mouvement de position.
Fallback to Fade Tween for Reduced Motionlocal 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")-- Créer un groupe de toile pour tweener tous les enfants uniformémentlocal canvasGroup = Instance.new("CanvasGroup")canvasGroup.Size = UDim2.fromScale(1, 1)canvasGroup.BackgroundTransparency = 1canvasGroup.Parent = menuUI-- Ajouter des enfants au groupe de toilemenuUI.SettingsFrame.Parent = canvasGrouplocal tweenInfo = TweenInfo.new(0.75, Enum.EasingStyle.Cubic, Enum.EasingDirection.Out)local tween-- Utiliser le tween de fondu pour le mouvement réduit, ou un tween de mouvement autrementif GuiService.ReducedMotionEnabled then-- Initialement définir le groupe de toile à complètement transparent (invisible)canvasGroup.GroupTransparency = 1-- Fondu en groupes de toiletween = TweenService:Create(canvasGroup, tweenInfo, {GroupTransparency = 0})else-- Initialement définir le groupe de toile hors écrancanvasGroup.Position = UDim2.fromScale(0, -1)-- Déplacer le groupe de toile sur l'écrantween = TweenService:Create(canvasGroup, tweenInfo, {Position = UDim2.fromScale(0, 0)})endtween:Play()
Contrôles de volume
Différents sons jouant en même temps peuvent être accablants, distrayants ou difficiles à distinguer. Fournir aux utilisateurs des commandes de volume pour différents "groupes" audio tels que les effets sonores, la musique et la parole leur permet de personnaliser leur jeu et de se concentrer sur ce dont ils ont besoin.
Considérez l'exemple suivant d'un jeu très bruyant où l'utilisateur peut modifier séparément le volume de la musique et des effets sonores.