Suite à la question des ratios d'aspect , je suis intéressé d'entendre ce que les autres utilisent lorsqu'ils travaillent sur des systèmes d'interface utilisateur 2D (probablement leurs propres solutions maison). Plus précisément, comment gérez-vous les systèmes de coordonnées. À mon avis, il existe trois options:
- Coordonnées codées en dur (par exemple: 0 -> 720, 0 -> 576)
- Coordonnées normalisées (0,0 -> 1,0, 0,0 -> 1,0), mappées en coordonnées réelles avant le rendu
- Coordonnées virtuelles (par exemple: 0 -> 1600, 0 -> 1000), mappées en coordonnées réelles avant le rendu
Le codage en dur n'est évidemment utile que si vous êtes sur une plate-forme fixe et que vous savez à l'avance quelles sont les coordonnées de votre espace d'écran, ou si vous êtes prêt à créer des dispositions d'écran pour chaque ensemble possible de dimensions d'écran.
Les coordonnées normalisées sont agréables, mais souffrent d'ambiguïté lorsque le rapport d'aspect de l'écran n'est pas fixe (par exemple, 0,75 correspond à une coordonnée physique différente lors de l'exécution en écran large qu'en 4: 3). De plus, pour les auteurs, il est vraiment contre-intuitif de déclarer un élément d'interface utilisateur comme étant (0,2 x 0,2), seulement pour constater qu'il n'est pas réellement carré lors du rendu.
Les coordonnées virtuelles ne sont pas ambiguës, mais souffrent des mêmes problèmes que les coordonnées normalisées au stade du remappage: une minuscule différence décimale peut entraîner des erreurs de coupure, ce qui signifie que les éléments d'interface utilisateur qui devraient carreler ont maintenant une couture entre eux.
De même, lorsque vous avez un écran à résolution fixe, les coordonnées normalisées et virtuelles signifient qu'il est très difficile de garantir un mappage 1: 1 entre les pixels finement conçus de votre artiste dans l'image de l'interface utilisateur et les pixels à l'écran, ce qui signifie que vous courez le risque de artefacts de mise à l'échelle désagréables (en supposant que vous effectuez un rendu sous forme de quadrillage texturé à l'écran).
Nous avons opté pour l'approche des coordonnées virtuelles, en particulier pour éviter toute ambiguïté sur les proportions. Ainsi, lors du rendu sur un écran 16:10, l'espace d'interface utilisateur est (0,0) -> (1600,1000), mais lors du rendu en 4: 3, l'espace d'interface utilisateur utilisable est en fait (133,0) -> (1467 , 0).
Y a-t-il de meilleures solutions que je ne connais pas? Existe-t-il de bonnes stratégies pour minimiser les problèmes rencontrés par ces 3 approches?
Cela dépend beaucoup du type de jeu et de la situation. Pour les prototypes rapides et sales, je préfère planifier l'interface utilisateur sur du papier millimétré, écrire une liste de coordonnées numériques pour une taille de fenêtre fixe et tout coder en dur - c'est plus facile et plus rapide pour moi. Mais pour un "vrai" projet où vous voudriez des fenêtres redimensionnables ou des résolutions d'écran alternatives, ce ne serait évidemment pas idéal, et une sorte de solution qui permet une mise à l'échelle dans les deux directions serait mieux.
la source