Quelle est la meilleure approche pour créer un personnage 2D afin de pouvoir utiliser des tonnes d'équipements différents en action?

14

Je veux créer un jeu 2D mais j'aimerais que le personnage porte des tonnes d'équipements différents sur différentes combinaisons, comme un RPG ou quelque chose.

Supposons donc que l'utilisateur change ses épaules et son pantalon, cela doit être montré au joueur et tous ces différents équipements doivent suivre l'action des différents personnages (frapper, être touché, orthographier la magie, etc.).

Je vois quelques problèmes que j'aimerais connaître la meilleure approche / algorithme / architecture à résoudre.

1 - Sprites ou animations

Dois-je créer des sprites différents pour chaque équipement dans chaque animation d'action?

Est-il préférable de simplement avoir l'équipement sprite et de l'animer directement sur du code comme la rotation et la traduction (en utilisant quelque chose comme l'interpolation sur Flash)?

Existe-t-il une autre meilleure option? (Je n'aime vraiment pas les idées ci-dessus)

2 - Positions

Disons que pendant l'un des mouvements du personnage, il commence à regarder directement devant le joueur, mais termine son mouvement en montrant son côté droit au joueur (comme s'il balance son épée d'un côté à l'autre).

Si l'on considère une partie de l'utilisateur, comme sa tête par exemple, elle commence devant et tourne à gauche.

Cela signifie au moins 3 positions différentes pour chaque équipement de tête (casque, casquette, peu importe).

Cela influence sûrement la réponse à la question n ° 1. Quelle est la meilleure façon d'y parvenir?

3 - Couches

Prenons un mouvement de personnage où il tourne à 360 degrés avec les bras ouverts. Au début de l'animation, sa main droite est proche de la vue de l'utilisateur puis, au milieu du mouvement, c'est probablement derrière le corps du personnage sur l'animation.

Quelle que soit l'option sur la question n ° 1, vous devez sûrement utiliser une sorte de modèle de calque pour que ce sprite ou cette animation commence plus près de la vue du joueur et change ensuite plus loin de la vue du joueur.

Y a-t-il un bon moyen de le faire?

Je sais que la question est assez longue et difficile à comprendre. Faites-moi savoir si vous pensez qu'il vaut mieux avoir des dessins pour essayer de vous expliquer lequel et j'essaierai de le faire.

homemdelata
la source
À quel niveau comptez-vous que votre art se situe? Vous aimez le pixel art rétro? Ou ces sprites HD, si vous avez un art existant qui m'aiderait vraiment à adapter ma réponse.
Jesse Dorsey
Salut Noctrine. En fait, je considère cela comme une question "indépendante de l'art". Je vais essayer de tirer quelques explications plus tard ce week-end pour le rendre plus facile à comprendre. Merci
homemdelata

Réponses:

8

Je pense qu'il semble que vous recherchiez un système d'animation squelettique 2D peut-être? Je ne connais malheureusement aucun système standard pour cela, car il a été principalement remplacé par la tendance du jeu 3D-gfx-mais-2D.

coderanger
la source
+1 Il est beaucoup plus facile de le faire si vous créez simplement le personnage en 3D.
knight666
mais pour "3D-gfx-but-2D-game" je devrais considérer une des solutions que je mentionne de toute façon sinon je devrai avoir un sprite pour toutes les combinaisons d'articles, par exemple, la même pièce de poitrine avec 10 croisillons différents les pièces généreront 10 animations :(
homemdelata
Pas vraiment, vous avez juste des points d'attache sur le squelette et vous pouvez ajouter tout ce dont vous avez besoin.
coderanger
2
J'ai créé une bibliothèque d'animation squelettique 2D simple (open source) pour XNA, y compris un éditeur décent. Consultez youtube.com/user/srekel#p/a/u/0/46LIoFNdG_4 et youtube.com/user/srekel#p/a/u/1/8sYkeu5k7XE
Srekel
C'est presque la bonne réponse. En fait, vous m'avez fait comprendre que ce que je cherche, c'est un système squelettique 3D pour l'animation 2D. J'ai besoin de trouver des algorithmes pour cela (s'il en existe)
homemdelata
8

Comme le dit Zorba, la plupart des jeux rétro ne l'ont pas fait spécifiquement parce que vous auriez besoin (avec des sprites) d'avoir des animations multi-images pour chaque pièce d'équipement.

Quelques alternatives "paresseuses":

  • Échangez la palette au lieu de créer des sprites totalement différents.
  • Dessinez le personnage de telle manière que les seules parties de son corps qui s'animent sont des parties qui ne sont pas attachées à l'équipement. Par exemple, si le personnage ne peut porter qu'une seule armure de toute façon, faites-en plutôt un casque, puis vous êtes libre d'animer tout le corps tout en gardant la tête immobile.
  • Utilisez un seul sprite pour le personnage dans l'écran principal du jeu, mais montrez l'équipement dans un sous-écran avec un portrait statique. Ensuite, vous n'avez pas à vous soucier de l'animation.
Ian Schreiber
la source
2

Dans les anciens jeux comme la série Ultima, ils dessinaient en effet une pièce d'équipement dans chaque pose de personnage possible. L'occlusion serait gérée soit en ne tirant pas l'équipement (si le gant gauche est derrière le sprite du joueur, vous n'avez pas à vous en soucier) ou en dessinant simplement l'équipement dans le sens inverse.

De toute évidence, cela nécessitait beaucoup de main-d'œuvre et, par conséquent, il y avait relativement peu de pièces d'équipement uniques, avec beaucoup de versions à palette changée et modifiée de palette de cet équipement.

Dans un jeu moderne, je recommande fortement de créer des personnages en 3D. Si vous voulez un art en 2D ou que votre plate-forme n'a pas la puissance nécessaire pour la 3D réelle, vous ferez probablement mieux de tout modéliser en 3D, de rendre le rendu, puis de peaufiner le résultat final à la main.

Alternativement, si vous décidez que vous n'avez pas besoin de peaufiner, que vous n'avez pas de puissance pour la 3D complète, mais que vous ne voulez pas expédier une énorme bibliothèque de sprites, vous pouvez empaqueter les modèles 3D et les rendre en texture en temps réel lorsque vous savez le modèle est sur le point d'apparaître dans le jeu.

ZorbaTHut
la source
La même chose que je mentionne dans l'autre réponse est considérable ici: je devrais envisager une des solutions que je mentionne de toute façon sinon je devrai avoir un sprite pour toutes les combinaisons d'articles, par exemple, la même pièce de poitrine avec 10 pièces d'accolades différentes générera 10 animations :(
homemdelata
2
Vous composeriez le "sprite final" au moment de l'exécution. Vous n'avez pas de sprite pour "le joueur", vous auriez une liste de sprites qui sont rendus pour chaque image d'animation. Donc, si le joueur est tourné vers la droite, vous rendrez "gant gauche", "brassard gauche", "personnage du joueur", "bottes", "pantalon", "gilet pare-balles", "barre", "brassard droit" , "gant droit" dans l'ordre. Ensuite, vous animez chaque pièce d'équipement indépendamment, flottant dans les airs.
ZorbaTHut
1

Consultez le livre de James Da Silva où il explique comment il a fait The Dishwasher: Dead Samurai. Cela vous montrera comment KISS peut à peu près résoudre ce problème. La suggestion d'utiliser des animations squelettiques 3D ou 2D est valide et un peu dans le même domaine.

Kaj
la source
Pouvez-vous ajouter le lien?
homemdelata
0

C'est une excellente question, mais je pense que vous y avez répondu vous-même - vous avez besoin d'un système d'os 2D qui prend en charge les couches changeantes des os, afin que différents membres puissent aller derrière et devant les autres pendant que le personnage tourne. Vous devrez également dessiner vos sprites sous 4 ou 8 angles (ou autant que vous en aurez besoin). Selon les compétences de votre équipe, il pourrait être plus facile de créer ces ressources en 3D et de les rendre sous les angles dont vous avez besoin.

L'utilisation d'un moteur 3D est également une bonne solution, même si cela apportera son propre ensemble de défis.

Iain
la source
Ouais, c'est presque ça. Je viens de recevoir l'autre réponse comme correcte, mais celle-ci est également valable. Comme je l'ai commenté sur l'autre, j'ai besoin d'un système squelettique 3D pour l'animation 2D :)
homemdelata