Annoncé précédemment, ce post va parler des problèmes de résolution pour un jeu 2D avec Unity:
Comme beaucoup de gens actuellement, nous travaillons avec des écrans au format 16:9. On règle notre caméra dans Unity sur ce format, et let's go on peut commencer à travailler.
(Void&Meddler demo avancée, WIP)
Les problèmes commencent si vous souhaitez changer de résolution, pour s'assurer que votre jeu marchera avec tous les types d'écran existant.
Si le jeu est en 3D, pas de problème, Unity adapte tout seul la caméra en fonction de votre écran.
Mais si votre jeu est en 2D...
Pour un écran au format 4:3, voici comment unity ajuste la caméra:
L'image parait normale, mais la caméra a gardé la même hauteur et du coup, une partie importante sur les côtés droit et gauche n'apparait plus. Que votre caméra soit fixe ou non, le problème est le même. A partir du moment où une partie du décors ne vous est plus accessible visuellement, c'est synonyme de bloquer le joueur pour continuer l'aventure (et là...).
On a essayé d'étirer l'image avec un script, mais pour faire court, le rendu n'est pas très sympa:
La solution trouvée a été de forcer le format 16:9, avec des bandes noires si votre écran est en 4:3, etc.
Le rendu visuel en est légèrement changé, mais le résultat avec un côté cinématographique nous plait beaucoup. (encore une fois, ces bandes n'apparaissent pas si votre écran est en 16:9)
J'avoue, les bandes noires rendent plutôt bien. C'est chouette de penser à toutes les résolutions, ce n'est pas le cas de tous les développeurs je pense
Dans la vie, il y a deux types de personnes, ceux qui pointent et ceux qui cliquent. Toi, tu cliques. Ma chaine Youtube si tu t'ennuies : https://www.youtube.com/c/Avorpal-pointnclick
L'image parait normale, mais la caméra a gardé la même hauteur et du coup, une partie importante sur les côtés gauche et droit n'apparait plus
Si Unity définit le champ couvert par la caméra à partir de sa hauteur, on peut trouver une formule mathématique permettant de définir cette hauteur (h) en fonction de la résolution choisie (x,y) afin de garder une largeur (l) d'affichage constante. Genre: h = l.y/x. Il suffit alors d'ajuster le paramètre l pour correspondre à ce que vous souhaitez dans le cas de référence du rapport 16/9 (et donc avec x=16 et y=9), ensuite la hauteur h s'ajustera automatiquement pour garder la largeur constante par rapport à cette référence.
Pour autant cela peut entrainer de sérieuses complications, avec notamment des bugs d'affichage en fonction de comment sont codés le placement des éléments dans le référentiel 2D, et puis ne permet pas un contrôle parfait du cadrage et de la mise en scène (qui deviendront variable selon la résolution choisie par le joueur).
Au final le choix d'un 16/9 forcé me parait clairement le plus judicieux.
Comme mes vdd, je pense que la solution avec les bandes noires est une bonne solution. Ca permettra aux quelques personnes jouant encore sur un écran 4/3 de quand même bien profiter de votre jeu.
En tout cas, je trouve ça très sympa de montrer les problèmes que vous rencontrez ainsi que les solutions que vous avez trouvé pour les régler. Ca pourra toujours servir à un développeur en herbe qui passerait par ici et ça reste intéressant pour les autres à lire.
Merci à vous 3
Et oui Nival, le contrôle du cadrage ça me semble le plus important pour un jeu 2D (surtout pour les point&click). On retrouve ce problème de résolution un peu partout, exemple: La version remaster de Grim Fandango, si l'on veut jouer en mode plein écran: de base il force le 4:3 avec des bandes à l'inverse sur les côtés (le jeu avait été créé en 4:3), mais pour passer en 16:9 le moteur étire l'image, aie aie c'est moche mais le cadrage est conservé.
On a rencontré aussi un problème similaire avec les éléments d'interface, le nouveau système d'UI pour unity est très complet, mais mal réglé, le changement de résolution est fatal.
Merci pour l'explication !
On garde le script dans nos favoris.
Du coup, je vois que l'inventaire se place tout en haut, à l'intérieur des bandes noires.
Ça veut dire que la souris se balade aussi dans les bandes noires ? On peut y cliquer ? Qu'est-ce qu'il se passe ?
Le personnage se déplace ? Ou on clique dans le vide ?
Quoi qu'il en soit ça doit être un soulagement d'avoir résolu ce problème.
Du peu qu'on a utilisé Unity 2D, l'impression principale est un manque de repère (les mesures qui ne sont pas en pixels, le ratio de l'écran qui change constamment).
Ça doit pas être facile de s'y retrouver !
De rien
Tout ce qui est UI peut être par dessus les bandes noires (et la souris est détectée au besoin), mais si tu cliques simplement sur les bandes pour déplacer ton personnage, il ne se passera rien.
Unity en tout cas malgré d'énormes avantages, c'est un vrai casse tête sur de simples bug pour un codeur novice (encore plus pour le pixelart, mais ça c'est une autre histoire).
Annoncé précédemment, ce post va parler des problèmes de résolution pour un jeu 2D avec Unity:
Comme beaucoup de gens actuellement, nous travaillons avec des écrans au format 16:9. On règle notre caméra dans Unity sur ce format, et let's go on peut commencer à travailler.
(Void&Meddler demo avancée, WIP)
Les problèmes commencent si vous souhaitez changer de résolution, pour s'assurer que votre jeu marchera avec tous les types d'écran existant.
Si le jeu est en 3D, pas de problème, Unity adapte tout seul la caméra en fonction de votre écran.
Mais si votre jeu est en 2D...
L'image parait normale, mais la caméra a gardé la même hauteur et du coup, une partie importante sur les côtés droit et gauche n'apparait plus. Que votre caméra soit fixe ou non, le problème est le même. A partir du moment où une partie du décors ne vous est plus accessible visuellement, c'est synonyme de bloquer le joueur pour continuer l'aventure (et là...).
Le rendu visuel en est légèrement changé, mais le résultat avec un côté cinématographique nous plait beaucoup. (encore une fois, ces bandes n'apparaissent pas si votre écran est en 16:9)
Si vous êtes également sous unity, voici le script que nous utilisons: http://wiki.unity3d.com/index.php?title=AspectRatioEnforcer
http://dorian-sred.itch.io/
http://voidandmeddler.com/
J'avoue, les bandes noires rendent plutôt bien. C'est chouette de penser à toutes les résolutions, ce n'est pas le cas de tous les développeurs je pense
Dans la vie, il y a deux types de personnes, ceux qui pointent et ceux qui cliquent. Toi, tu cliques. Ma chaine Youtube si tu t'ennuies :
https://www.youtube.com/c/Avorpal-pointnclick
Si Unity définit le champ couvert par la caméra à partir de sa hauteur, on peut trouver une formule mathématique permettant de définir cette hauteur (h) en fonction de la résolution choisie (x,y) afin de garder une largeur (l) d'affichage constante. Genre: h = l.y/x. Il suffit alors d'ajuster le paramètre l pour correspondre à ce que vous souhaitez dans le cas de référence du rapport 16/9 (et donc avec x=16 et y=9), ensuite la hauteur h s'ajustera automatiquement pour garder la largeur constante par rapport à cette référence.
Pour autant cela peut entrainer de sérieuses complications, avec notamment des bugs d'affichage en fonction de comment sont codés le placement des éléments dans le référentiel 2D, et puis ne permet pas un contrôle parfait du cadrage et de la mise en scène (qui deviendront variable selon la résolution choisie par le joueur).
Au final le choix d'un 16/9 forcé me parait clairement le plus judicieux.
Comme mes vdd, je pense que la solution avec les bandes noires est une bonne solution. Ca permettra aux quelques personnes jouant encore sur un écran 4/3 de quand même bien profiter de votre jeu.
En tout cas, je trouve ça très sympa de montrer les problèmes que vous rencontrez ainsi que les solutions que vous avez trouvé pour les régler. Ca pourra toujours servir à un développeur en herbe qui passerait par ici et ça reste intéressant pour les autres à lire.
Merci à vous 3
Et oui Nival, le contrôle du cadrage ça me semble le plus important pour un jeu 2D (surtout pour les point&click). On retrouve ce problème de résolution un peu partout, exemple: La version remaster de Grim Fandango, si l'on veut jouer en mode plein écran: de base il force le 4:3 avec des bandes à l'inverse sur les côtés (le jeu avait été créé en 4:3), mais pour passer en 16:9 le moteur étire l'image, aie aie c'est moche mais le cadrage est conservé.
On a rencontré aussi un problème similaire avec les éléments d'interface, le nouveau système d'UI pour unity est très complet, mais mal réglé, le changement de résolution est fatal.
http://dorian-sred.itch.io/
http://voidandmeddler.com/
Merci pour l'explication !
On garde le script dans nos favoris.
Du coup, je vois que l'inventaire se place tout en haut, à l'intérieur des bandes noires.
Ça veut dire que la souris se balade aussi dans les bandes noires ? On peut y cliquer ? Qu'est-ce qu'il se passe ?
Le personnage se déplace ? Ou on clique dans le vide ?
Quoi qu'il en soit ça doit être un soulagement d'avoir résolu ce problème.
Du peu qu'on a utilisé Unity 2D, l'impression principale est un manque de repère (les mesures qui ne sont pas en pixels, le ratio de l'écran qui change constamment).
Ça doit pas être facile de s'y retrouver !
De rien
Tout ce qui est UI peut être par dessus les bandes noires (et la souris est détectée au besoin), mais si tu cliques simplement sur les bandes pour déplacer ton personnage, il ne se passera rien.
Unity en tout cas malgré d'énormes avantages, c'est un vrai casse tête sur de simples bug pour un codeur novice (encore plus pour le pixelart, mais ça c'est une autre histoire).
http://dorian-sred.itch.io/
http://voidandmeddler.com/
J'aurais bientôt quelques news à dévoiler (tease tease, nos nouveaux artistes sont formidables).
http://dorian-sred.itch.io/
http://voidandmeddler.com/
On attend ça avec impatience, alors !
Même si on ne se manifeste pas souvent, on suit votre actu avec intérêt, et on attend vos news de pied ferme.
http://www.theicehouse.fr
Pages