¿Cuál es el mejor enfoque para hacer que un personaje 2D pueda usar toneladas de equipos diferentes cuando está en acción?


14

Quiero crear un juego en 2D, pero me gustaría tener el personaje para usar toneladas de equipos diferentes en diferentes combinaciones, como un juego de rol o algo así.

Entonces, digamos que el usuario cambia sus hombros y pantalones, esto debe mostrarse al jugador y todos estos equipos diferentes deben seguir la acción de los diferentes personajes (golpear, ser golpeado, deletrear magia, etc.).

Veo algunos problemas que me gustaría conocer el mejor enfoque / algoritmo / arquitectura para resolver.

1 - Sprites o animaciones

¿Debo crear diferentes sprites para cada equipo en cada animación de acción?

¿Es mejor tener el equipo sprite y animarlo directamente en código como rotar y traducir (usando algo como interpolación en Flash)?

¿Hay alguna otra mejor opción? (Realmente no me gustan las ideas anteriores)

2 - Posiciones

Digamos que durante uno de los movimientos del personaje, comienza a mirar directamente al frente de la vista del jugador, pero termina su movimiento mostrando su lado derecho al jugador (como si balanceara su espada de un lado a otro).

Si consideramos una parte del usuario, como su cabeza, por ejemplo, comienza al frente y luego gira a la izquierda.

Significa al menos 3 posiciones diferentes para cada equipo de cabeza (casco, gorra, lo que sea).

Esto seguramente influye en la respuesta de la pregunta # 1. ¿Cómo es la mejor manera de lograr eso?

3 - Capas

Consideremos un movimiento del personaje donde gira 360 grados con los brazos abiertos. Al comienzo de la animación, su mano derecha está cerca de la vista del usuario y luego, en el medio del movimiento, esto probablemente esté detrás del cuerpo del personaje en la animación.

Cualquiera que sea la opción en la pregunta # 1, seguramente necesita usar algún tipo de modelo de capa para hacer que este sprite o animación comience más cerca de la vista del jugador y luego se aleje de la vista del jugador.

¿Hay alguna buena manera de hacer eso?

Sé que la pregunta es bastante larga y difícil de entender. Avíseme si cree que es mejor tener algunos dibujos para tratar de explicar cuál e intentaré hacerlo.


¿A qué nivel pretendes que esté tu arte? ¿Te gusta el pixel art retro? O esos sprites HD, si tienes algún arte existente que realmente me ayudaría a adaptar mi respuesta.
Jesse Dorsey

Hola noctrine En realidad lo estoy considerando como una pregunta "independiente del arte". Intentaré sacar algunas explicaciones más tarde este fin de semana para que sea más fácil de entender. Gracias
homemdelata

Respuestas:


8

Creo que parece que estás buscando un sistema de animación esquelética 2D, ¿quizás? Desafortunadamente, no conozco ningún sistema comercial para eso, ya que ha sido reemplazado en su mayoría por la tendencia del juego 3D-gfx-but-2D-game.


+1 Es mucho más fácil hacer esto si solo haces que el personaje sea 3D.
knight666

pero para "3D-gfx-but-2D-game" tendría que considerar una de las soluciones que menciono de todos modos, de lo contrario necesitaré tener un sprite para cualquier combinación de elementos, por ejemplo, la misma pieza de cofre con 10 llaves diferentes las piezas generarán 10 animaciones :(
homemdelata

En realidad no, solo tienes puntos de conexión en el esqueleto y puedes colocar lo que necesites.
coderanger

2
He creado una biblioteca de animación esquelética 2D simple (código abierto) para XNA, que incluye un editor decente. Visite youtube.com/user/srekel#p/a/u/0/46LIoFNdG_4 y youtube.com/user/srekel#p/a/u/1/8sYkeu5k7XE
Srekel el

Esta es casi la respuesta correcta. En realidad, me hiciste descubrir que lo que estoy buscando es un sistema 3D Skeletal para animación 2D. Necesito encontrar algoritmos para eso (si existe)
homemdelata

8

Como dice Zorba, la mayoría de los juegos retro no hicieron esto específicamente porque necesitarías (con sprites) tener animaciones de múltiples cuadros para cada pieza de equipo.

Algunas alternativas "flojas":

  • Cambia la paleta del equipo en lugar de hacer sprites totalmente diferentes.
  • Dibuja el personaje de tal manera que las únicas partes de su cuerpo que se animan son partes que no están unidas al equipo. Por ejemplo, si el personaje solo puede usar una armadura de todos modos, conviértalo en un Casco, y luego puede animar todo el cuerpo mientras mantiene la cabeza quieta.
  • Usa un solo sprite para el personaje en la pantalla principal del juego, pero muestra el equipo en una pantalla secundaria con un retrato estático. Entonces no tienes que preocuparte por la animación.

2

En juegos antiguos como la serie Ultima, de hecho dibujarían una pieza de equipo en cada pose de personaje posible. La oclusión se trataría no dibujando el equipo (si el guante izquierdo está detrás del sprite del jugador no necesita preocuparse por ello) o simplemente dibujando el equipo en orden de atrás hacia adelante.

Obviamente, esto requería mucha mano de obra y, como resultado, había relativamente pocas piezas de equipo único, con muchas versiones de ese equipo intercambiadas con paleta y modificadas con paleta.

En un juego moderno, recomiendo encarecidamente hacer personajes en 3D. Si desea arte de aspecto 2D o su plataforma no tiene la potencia para el 3D real, es probable que sea mejor modelar todo en 3D, renderizar y luego ajustar el resultado final a mano.

Alternativamente, si decide que no necesita ajustes, no tiene potencia para el 3D completo, pero no desea enviar una gran biblioteca de sprites, puede empaquetar los modelos 3D y convertirlos en una textura en tiempo real cuando sepa El modelo está a punto de aparecer en el juego.


Lo mismo que menciono en la otra respuesta es considerable aquí: tendría que considerar una de las soluciones que menciono de todos modos, de lo contrario necesitaré tener un sprite para cualquier combinación de elementos, por ejemplo, la misma pieza de cofre con 10 piezas de llaves diferentes generará 10 animaciones :(
homemdelata

2
Compondría el "sprite final" en tiempo de ejecución. No tiene un sprite para "el jugador", tendría una lista de sprites que se representan para cada cuadro de animación. Entonces, si el jugador está mirando hacia la derecha, representaría "guante izquierdo", "brazalete izquierdo", "personaje del jugador", "botas", "pantalones", "armadura", "timón", "brazalete derecho" , "guante derecho" en orden. Luego animas cada pieza de equipo de forma independiente, flotando en el aire.
ZorbaTHut


0

Esta es una gran pregunta, pero creo que la ha respondido usted mismo: necesita un sistema de huesos 2D que admita capas de cambio de huesos, de modo que diferentes miembros puedan ir uno detrás del otro a medida que el personaje gira. También necesitarás dibujar tus sprites desde 4 u 8 ángulos (o cuantos necesites). Dependiendo de las habilidades que tenga en su equipo, podría ser más fácil crear estos activos en 3D y renderizarlos desde los ángulos que necesita.

Usar un motor 3D también es una buena solución, aunque esto traerá su propio conjunto de desafíos.


Sí, eso es casi eso. Acabo de recibir la otra respuesta como correcta, pero esta también es válida. Como comenté sobre el otro, necesito un sistema esquelético 3D para animación 2D :)
homemdelata
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.