Les jeux qui ne sont pas assez chanceux pour fonctionner sur une plate-forme verrouillée, comme les ordinateurs de poche, doivent fonctionner avec différents formats de résolution et formats.
Dans un jeu 3D, vous pouvez avoir un HUD ou une interface graphique de menu basée sur des graphiques raster, et dans un jeu 2D, vous pouvez avoir un tas de quads qui sont des vaisseaux pour les sprites.
Ma question est donc la suivante: comment abordez-vous la conception et l’exploitation du contenu avec différentes résolutions et formats d’image? Supposons que vous ayez un caractère de sprite de 300 x 400 pixels et entouré d'un niveau de tuiles. Sur différentes résolutions / proportions, vous verriez un FOV différent. Ou si vous avez un menu HUD ou GUI, vous voudrez peut-être garder certaines choses au même endroit et de la même taille par rapport à l'écran. Pourtant, la source graphique est des bitmaps raster, pas des vecteurs.
De toute évidence, le problème a été abordé à de nombreuses reprises. Je suis intéressé d'entendre différentes approches qui ont fonctionné pour vous jusqu'à présent. Conservez-vous une unité «pixel» arbitraire de dimensions que vous transformerez comme par magie en dimensions nécessaires via une formule basée sur le rapport de résolution et le rapport de format ou d'autres approches?
modifier:
La conclusion consiste donc à énumérer vos proportions. Combinaison d'aspect la plus faible: la résolution est celle dans laquelle vous concevez des éléments importants. Un endroit sûr si vous voulez. Les mêmes rapports d'aspect, mais les résolutions plus élevées sont de simples problèmes de mise à l'échelle. Le contenu artistique est conçu pour la plus haute résolution. Les ratios d'aspect plus grands indiquent simplement plus de niveau / FOV avec des informations présentées qui ne sont pas critiques, contrairement à celle de la zone de sécurité. Quelque chose comme dans cette image que j'ai faite .
Réponses:
Si vos résolutions sont similaires, vous pouvez simplement utiliser le même art pour toutes les résolutions, avec éventuellement une réduction de la mise à l'échelle lors de l'exécution pour les écrans plus petits. S'ils diffèrent de plus d'un facteur 2x, il vous faudra créer (ou au moins modifier un artiste) des éléments distincts pour les différentes résolutions.
Avec la 2D, la résolution a un impact considérable sur la conception des images. Un sprite qui a l'air richement détaillé et réaliste en haute résolution sera boueux et indéchiffrable. De même, un sprite propre et net en basse résolution semblera peu coûteux et trop simple en haute résolution.
la source
Une solution consiste à créer les éléments d'image dans un format vectoriel (SVG, Illustrator, etc.) et à les convertir en images tramées selon les besoins des différentes versions du jeu.
la source
Si vous voulez utiliser la perfection en pixel (en mode "tel que l'artiste l'a produit") en mode plein écran, le problème est qu'il n'existe pas de moyen entièrement automatisé de redimensionner les sprites OU de les faire pivoter sans pour autant les annuler. t nécessitent une approbation humaine. En fin de compte, c'est parce que le placement des pixels est une chose subjective. L'algorithme de rendu effectue une mise à l'échelle, ou une rotation, et doit utiliser certaines techniques d'approximation pour le faire, par exemple. filtrage bilinéaire. Si vous voulez toujours des bords durs sur les pixels pour avoir cette "perfection de pixel" (c'est-à-dire ne pas utiliser AA ou BF), alors vous devrez accepter que la mise à l'échelle par un degré de non-puissance de 2 va aller produire des artefacts indésirables.
RotSprite , une application / algorithme conçu pour effectuer des rotations "automatiques" des images - objets , offre une approche intéressante à un problème similaire . Je veux dire par là que cela produit un certain nombre de résultats finaux éventuellement souhaitables après un traitement intensif, à choisir par l'opérateur humain. Les images-objets sélectionnées à la main finissent par entrer dans le jeu, ce qui signifie qu'il s'agit d'une étape de création de contenu et non d'une étape d'exécution.
Une réponse possible à votre question "pixels agnostiques de dimensions magiques arbitraires": OpenGL (que vous voudrez peut-être utiliser si vous utilisez plusieurs plates-formes) fonctionne de manière totalement différente de celle d'un logiciel de rendu matriciel. Il considère la largeur et la hauteur de l'affichage dans la plage de virgule flottante comprise entre 0,0 et> 1,0 et mappe les pixels en conséquence sur le processeur graphique. Bien sûr, cela peut entraîner des artefacts, sauf si. BF est activé pour les textures (ce qui correspond à vos sprites dans OpenGL).
la source