Importation de sprites non bitmap


GameMaker Studio 2 prend en charge les sprites non bitmap dans le forum des fichiers SWF vectoriels ou des fichiers Spine Skeletal Animation. Ces deux formats ont leurs avantages et leurs inconvénients, et les deux sections ci-dessous expliquent comment les importer dans l' éditeur de sprite ainsi que quelques informations sur leur rendu.

IMPORTANT! Les sprites non bitmap (SWF et Spine) ne sont pas disponibles avec la licence d'évaluation du produit.


GameMaker Studio 2 a un support limité pour les sprites vectoriels. Généralement, tous les sprites de GameMaker utilisent des bitmaps qui, tout en étant flexibles en termes de contenu, imposent des limites à la fois sur la taille et le nombre d'images possibles dans un sprite avant que l'utilisation de la mémoire ne devienne prohibitive. Les sprites vectoriels contourneront ces limitations en stockant et en dessinant leurs contenus différemment - au lieu d'une grille de pixels, qui peuvent devenir bloqués ou flous lorsqu'ils sont redimensionnés, ils sont dessinés comme des triangles qui peuvent être redimensionnés sans perdre de définition, comme illustré dans l'image ci-dessous:

Pour vous aider à visualiser comment cela est fait, l'image ci-dessous est du même sprite Fireman que maintenant nous pouvons voir les polygones qui sont utilisés pour faire l'image dans GameMaker: Studio:

Cependant, rien n'est jamais gratuit quand il s'agit de programmer des jeux, et le compromis avec les sprites vectoriels est qu'ils sont plus chers à dessiner que les sprites bitmap et cette différence de vitesse augmente à mesure que la complexité de l'animation augmente. En outre, leur utilisation de la mémoire est affectée par leur complexité visuelle, contrairement aux images-objets bitmap. En gardant cela à l'esprit, ils permettent d'ajouter de grands graphiques animés d'une manière qui serait impossible en utilisant des sprites bitmap traditionnels.

Sur le revers de l'équation de performance, car les sprites vectoriels ne dessinent que les pixels absolument nécessaires (contrairement aux sprites bitmap qui "dessinent" aussi l'espace vide autour de l'image), ils peuvent être moins chers du point de vue du GPU. En outre, en général, les sprites vectoriels sont beaucoup plus petits que leurs équivalents bitmap - pour l'exemple de pompier ci-dessus, les tailles des différents types de sprites sont les suivantes:

Bitmap at 70x68 = 4x70x68 bytes x 12 frames = 223k
Vector = 54k


Si vous quadrupler la résolution de l'image-objet:

Bitmap at 280x272 = 4x280x272 bytes x 12 frames = 3570k
Vector = 54k


Comme vous pouvez le voir, beaucoup de mémoire peut potentiellement être sauvé en utilisant des sprites vectoriels, et nous avons encore beaucoup de potentiel pour de futures économies d'espace.

Actuellement, GameMaker Studio 2 peut uniquement importer des images vectorielles à partir de fichiers au format SWF, et la manière de les importer dans le programme est presque identique à celle d'ajouter une image bitmap normale. Pour ajouter un sprite vectoriel, créez un nouveau sprite, ce qui affichera le dialogue standard Load Sprite, mais assurez-vous d'avoir sélectionné *.swf dans le filtre de fichiers situé en bas.

Si vous cliquez sur le bouton "charger", l'image vectorielle ou l'animation sera ajoutée à l'arborescence des ressources, une barre de progression s'affichera au fur et à mesure du traitement du fichier. Notez que, selon la complexité du fichier, cela peut prendre un certain temps (jusqu'à une minute pour les animations plus complexes). Une fois le traitement terminé, vous serez redirigé vers la boîte de dialogue des propriétés de l'image-objet, qui ressemblera à ceci:

Comme vous pouvez le voir, il ressemble à un dialogue d'image-objet normal, avec la première image du fichier vectoriel affichée dans la fenêtre d'aperçu de l'image sur la droite. Cependant, il y a quelques changements par rapport à un dialogue d'image-objet normal. Tout d'abord, le bouton Modifier le sprite a disparu car il n'y a pas de bitmaps à éditer dans ce type de sprite, et deuxièmement, un nouveau bouton Afficher le sprite a été ajouté. Ce bouton ouvrira le fichier vectoriel dans n'importe quelle application qui lui est associée. Normalement, ce sera par défaut votre navigateur web, mais si vous n'avez pas de programme associé au fichier, rien ne se passera et comme le bouton est désactivé (vous pouvez le résoudre en ouvrant l' Explorateur Windows et en cliquant avec le bouton droit sur un fichier vectoriel, puis en utilisant " ouvrir avec " pour choisir le programme à associer à ces fichiers). Vous pouvez également associer un visualiseur pour ces GameMaker Studio 2 dans la section Préférences générales - Chemins de GameMaker Studio 2 et le bouton Afficher le GameMaker Studio 2 s'ouvrira à la place de l'afficheur par défaut.


REMARQUE: l'apparence de l'image dans l'éditeur de prévisualisation que vous avez choisi ne sera pas la même que celle de votre jeu, ni son apparence dans la fenêtre de prévisualisation de l'éditeur de sprites. L'image vectorielle sera importée à la taille à laquelle elle a été créée, ce qui n'est pas nécessairement la taille de l'aperçu (les navigateurs vont normalement redimensionner l'image, par exemple).

Vous pouvez également définir la qualité du sprite vectoriel lorsqu'il est dessiné. Cela réduira ou augmentera simplement le nombre de triangles utilisés pour générer l'image-objet, la valeur par défaut de 50 étant suffisante pour la plupart des jeux. Toutefois, vous devriez expérimenter cette valeur si vous utilisez une mise à l'échelle extrême ou si vous rencontrez des problèmes de performances. À partir de ce point, les autres parties de l'éditeur doivent fonctionner de la même manière que pour les sprites bitmap.

Il y a un certain nombre de choses à prendre en compte lors de l'importation de sprites vectoriels, le plus important étant que certaines fonctions de sprite et de sprite ne sont pas supportées pour des raisons techniques, en particulier celles qui ne tirent qu'une partie d'un sprite, ou qui "faussent" la position d'une certaine façon (voir les fonctions individuelles draw_sprite _ * () pour les détails exacts). Toutefois, les fonctions de dessin d'image-objet de base sont entièrement prises en charge, tout comme les variables d'image-objet intégrées. Vous pouvez également définir différentes valeurs anti-aliasing (AA) pour les images-objets SWF dessinées à l'aide des fonctions disponibles ici: Drawing Sprites And Tiles.

Vous devriez également être conscient de ce qui suit:

  • Lors de l'importation d'un fichier *.SWF, Actionscript n'est pas supporté, donc si votre SWF s'en remet au bon fonctionnement, il ne fonctionnera probablement pas correctement. De la même manière, les clips vidéo incorporés qui ont leur propre timeline n'auront que leur première image affichée tout au long de l'animation - toutes les animations doivent être sur le scénario principal.

  • Si votre fichier vectoriel est particulièrement détaillé, vous pouvez parfois constater que des trous ou des triangles étranges apparaissent dans les images-objets. En effet, à de petites échelles, la géométrie peut parfois s'effondrer pour créer des formes qui ne se triangulent pas bien. Dans ce cas, vous avez deux options: vous pouvez augmenter le contenu du fichier vectoriel, ce qui donnera plus de place à l'importateur, ou vous pouvez essayer de réduire le niveau de détail de l'objet qui se casse.

  • GameMaker Studio 2 utilise la taille de scène du GameMaker Studio 2 SWF comme limites de l'image-objet résultante. Cependant, si vous avez quelque chose sur la scène en dehors de ces limites, il est toujours tiré. Cela signifie que vous devez soit essayer d'éviter de placer quelque chose en dehors de vos limites de scène si vous ne voulez pas qu'il soit affiché, soit utiliser un calque de masque pour limiter le dessin à cette zone.

  • La taille de la scène affecte également la taille de tous les masques de collision générés, donc si vous avez une grande taille de scène et beaucoup d'images dans votre animation, vous pouvez potentiellement perdre beaucoup de mémoire. Donc, n'utilisez que des masques de collision précis si vous en avez vraiment besoin.

  • Comme un fichier SWF est créé à partir de plusieurs couches, dont certaines peuvent se chevaucher, alpha ne fonctionne pas comme avec les sprites bitmap - les zones superposées ne seront pas aussi transparentes que les autres parties de l'image-objet, dessiné plusieurs fois.

  • Les remplissages bitmap sont pris en charge mais si vous utilisez des remplissages bitmap en mosaïque dans votre fichier SWF, vous devez vous assurer que la taille de l'image bitmap est de deux, sinon elle ne sera pas correctement placée. Le rendu de texte est également pris en charge, mais vous devez incorporer la police dans votre fichier SWF pour qu'il apparaisse dans l'image-objet qui en résulte. En outre, seul le texte à ligne unique aligné à gauche est actuellement pris en charge.

Un sprite réalisé à l'aide d'une animation squelettique est un sprite dans lequel un "squelette" de base a été créé et animé à l'aide d' images clés pour déplacer les composants du squelette au fil du temps. Ce squelette est ensuite dépouillé d'un atlas de texture et l'animation résultante exportée dans l'un des nombreux types de fichiers. Gamemaker: Studio vous permet d'importer ce type de sprite tant qu'il a été exporté en tant que *.json fichier de format et a le fichier atlas de texture correctement associé ( *.atlas ) et le fichier image (en tant que *.png ) dans le même répertoire.

IMPORTANT: GameMaker Studio 2 ne prend en charge qu'un seul atlas de texture par sprite.
REMARQUE: cette fonctionnalité prend actuellement uniquement en charge les fichiers créés à l'aide du programme Spine.

Actuellement, GameMaker Studio 2 peut uniquement importer des images vectorielles à partir de fichiers au format JSON créés par le programme Spine, mais la manière de les importer dans le programme est presque identique à celle d'une image bitmap normale. Pour ajouter une animation squelettique, vous devez créer une nouvelle image-objet, ce qui affichera le dialogue standard Load Sprite, mais assurez-vous que vous avez sélectionné *.json à partir du filtre de fichier en bas.

Si vous cliquez sur le bouton "charger", l'animation squelettique sera ajoutée à l'arborescence des ressources sous la forme d'une image-objet, avec une barre de progression affichée lors du traitement du fichier. Notez que, selon la complexité du fichier, cela peut prendre quelques instants. Une fois le traitement terminé, vous serez redirigé vers la boîte de dialogue des propriétés de l'image-objet, qui ressemblera à ceci:

Une fois que vous avez importé l'animation, vous pouvez définir les propriétés de collision, mais notez que vous êtes limité ici à utiliser simplement des collisions précises ou des collisions de boîte englobante et que les données de collision pour une animation squelettique sont explicitement extraites des données fournies. GameMaker Studio 2 ne génère aucun masque de collision si les données sont manquantes dans le fichier importé, ce qui signifie que vous n'obtiendrez tout simplement pas de collisions de travail si les masques ne sont pas correctement définis dans le programme utilisé pour créer l'image importée.

REMARQUE: en raison de la complexité des animations squelettiques, l'image de prévisualisation affichée dans l'éditeur de sprites n'est pas destinée à représenter précisément votre animation, mais plutôt à vous donner une image simple représentant l'animation à visualiser dans l'éditeur de pièces.

Contrairement aux sprites bitmap, l'image-objet d'animation squelettique importée ne peut être modifiée dans l'éditeur, mais il existe un certain nombre de fonctions disponibles dans le langage GML ( GameMaker Language) qui peuvent être utilisées pour modifier les apparences, définir les propriétés et contrôler d'autres aspects. l'animation.

Vous devez prendre en compte un certain nombre de choses lors de l'importation de sprites d'animation squelette, le plus important étant que certaines fonctions de sprite et de gestion des sprites ne sont pas supportées pour des raisons techniques, notamment celles qui ne tirent qu'une partie d'un sprite, ou qui "incline" la position d'une certaine façon (voir les fonctions individuelles draw_sprite _ * () pour les détails précis de qui). Toutefois, les fonctions de dessin d'image-objet de base sont entièrement prises en charge, tout comme les variables d'image-objet intégrées. Outre ces fonctions et variables, vous pouvez également définir et modifier les propriétés d'animation à l'aide de skeleton_* fonctions, qui sont listées et expliquées dans la section de référence sur les animations squelettiques.