Comment dois-je gérer la création de sprites pour les personnages 2D personnalisables?

8

Je veux créer des animations d'avatar (sprites) pour un MMORPG basé sur un navigateur. Le joueur peut personnaliser le personnage et le contenu change souvent (nouvelles armes, armures, etc.). Comment gérer structurellement la création et la mise à jour de toutes les feuilles de sprites?

Le nombre de combinaisons différentes est suffisamment grand pour que la simple génération de toutes les permutations ne fonctionne pas.

Cela peut être basé sur un serveur ou un client, mais s'il fonctionne entièrement sur le client, veuillez le conserver uniquement en HTML5 / CSS / Canvas / WebGL.

Lauri Laakso
la source
3
composition de joueurs de plusieurs sprites + teinte de couleur
LearnCocos2D
Un article connexe sur la génération de ces types de sprites: gamasutra.com/blogs/DavidYork/20161130/286500/…
MichaelHouse

Réponses:

14

Pour le faire efficacement sans `` générer toutes les options possibles '', vous allez vouloir utiliser une approche de superposition ... au moins en théorie, même si en pratique vous finissez par réduire les textures en couches à un seul sprite pour la réduction de l'appel d'appel , que je pense que vous devriez et détaillerez plus tard.

L'approche en couches consiste à avoir un ensemble de sprites pour tous vos personnages sans armes ni équipement, et des ensembles de sprites individuels pour chaque arme ou équipement alignés de telle sorte qu'ils puissent être rendus par-dessus les sprites du personnage de base pour former le personnage composite final.

Pour les sprites simples avec peu d'angles de vue (comme les sprites de combat des jeux traditionnels Final Fantasy), c'est relativement facile. Pour les sprites plus complexes (tels que les personnages de Diablo II, qui avaient plusieurs faces et une perspective isométrique), les sprites d'armes et d'armures seront plus difficiles à construire car vous devez laisser des "lacunes" dans le sprite quand il apparaîtra derrière le personnage. Un moyen simple de résoudre ce problème est de permettre aux sprites d'équipement d'être subdivisés en une couche "de premier plan" et "d'arrière-plan". Votre processus de rendu d'un sprite est alors logiquement:

  1. Rendez les couches d'arrière-plan de l'équipement (généralement uniquement des armes).
  2. Rendez le sprite du personnage de base.
  3. Rendre les couches de premier plan de l'équipement (généralement principalement des armures).

Cette méthode n'est pas infaillible (d'autant plus que vous augmentez le nombre de pièces d'équipement interchangeables indépendamment qui peuvent être équipées et ont également un impact sur un personnage rendu), mais elle fonctionnera pour une grande majorité de l'équipement une fois que vos artistes auront compris de la technique de création.

Un outil d'édition de sprites avec des couches à bascule sera essentiel car il est difficile d'animer une épée ou un bâton dans l'air vide sans qu'une couche de référence du personnage ne la balance. Si vos sprites sont réellement créés dans un outil 3D, cela peut être beaucoup plus facile de configurer ce pipeline.

Vous pouvez utiliser cette technique sous sa forme vanille comme décrit ci-dessus. Cependant, vous devez savoir que cela signifie augmenter le nombre d'appels de tirage par l'écran caractère significativement , ce qui peut être un problème sérieux dans un MMO où une fois doit au moins compte de la possibilité que de nombreux personnages seront à l'écran à temps.

La cuisson du rendu de couche combiné dans une seule feuille de sprite est un outil utile pour lutter contre ce problème. Vous devriez avoir du code qui effectuera les étapes de rendu ci-dessus dans une texture que vous pouvez enregistrer sur le disque ou mettre en cache en mémoire. De cette façon, vous pouvez payer le coût de rendu accru une fois, à chaque fois qu'un joueur change de vitesse, mais après ce rendu initial, vous passez à l'utilisation de la feuille de texture composite cuite pour toutes les images suivantes.

Pour une efficacité d'exécution maximale, assurez-vous que toutes les feuilles de sprite pour le caractère et l'équipement s'alignent exactement afin que vous puissiez simplement rendre la feuille entière et non les images individuelles. Vous pouvez utiliser différentes formes d'emballage bin hors ligne pour maximiser la disposition des images-objets sur la feuille, ainsi que la compression de texture, pour économiser de l'espace hors ligne.

Il est également possible de tirer parti de cette technique lors de la création du contenu de votre jeu: les personnages avec un équipement fixe, tels que les PNJ, peuvent être précuits pour économiser du temps d'exécution (en particulier pour les personnages qui peuvent apparaître fréquemment).

Vous voudrez également vous assurer que votre jeu est un moyen de signaler à n'importe quel joueur le type de personnage de base et l'équipement équipé des autres joueurs à proximité, afin que vous puissiez effectuer de manière préventive le compositing sur la machine d'un client pour savoir quand ces joueurs à proximité viendront finalement à la vue du joueur local.


la source