Eu quero criar um jogo 2D, mas eu gostaria de ter o personagem para usar toneladas de equipamentos diferentes em diferentes combinações, como um RPG ou algo assim.
Então, digamos que o usuário troque de ombros e calças, isso deve ser mostrado ao jogador e todos esses equipamentos diferentes devem seguir a ação dos diferentes personagens (bater, ser atingido, soletrar magia etc.).
Vejo alguns problemas que eu gostaria de conhecer a melhor abordagem / algoritmo / arquitetura para resolver.
1 - Sprites ou Animações
Devo criar sprites diferentes para cada equipamento em cada animação de ação?
É melhor ter o equipamento sprite e animá-lo diretamente no código, como rotação e tradução (usando algo como interpolação no Flash)?
Existe alguma outra opção melhor? (Eu realmente não gosto das idéias acima)
2 - Posições
Digamos que durante um dos movimentos do personagem, ele começa a olhar diretamente na frente da visão do jogador, mas termina seu movimento mostrando o lado direito do jogador (como se ele balançasse a espada de um lado para o outro).
Se considerarmos uma parte do usuário, como a cabeça, por exemplo, ela começa na frente e depois vira à esquerda.
Significa pelo menos 3 posições diferentes para cada equipamento principal (capacete, boné, o que for).
Isso certamente influencia a resposta da pergunta nº 1. Como é a melhor maneira de conseguir isso?
3 - Camadas
Vamos considerar um movimento de personagem em que ele gira 360 graus com os braços abertos. No início da animação, sua mão direita está próxima da visão do usuário e, no meio do movimento, isso provavelmente está por trás do corpo do personagem na animação.
Qualquer que seja a opção na pergunta nº 1, você certamente precisará usar algum tipo de modelo de camada para fazer com que esse sprite ou animação comece mais perto da visualização do jogador e depois mude para longe da visualização do jogador.
Existe alguma boa maneira de fazer isso?
Eu sei que a pergunta é bastante longa e difícil de entender. Deixe-me saber se você acha que é melhor ter alguns desenhos para tentar explicar qual e eu vou tentar fazer isso.
Respostas:
Eu acho que parece que você está procurando um sistema de animação esquelética 2D, talvez? Infelizmente, não conheço nenhum sistema de prateleira para isso, já que ele foi substituído pela tendência dos jogos 3D-gfx-mas-2D.
fonte
Como Zorba diz, a maioria dos jogos retrô não fez isso especificamente porque você precisaria (com sprites) de ter animações de vários quadros para cada peça de equipamento.
Algumas alternativas "preguiçosas":
fonte
Em jogos antigos como a série Ultima, eles de fato desenhavam uma peça de equipamento em cada pose de personagem possível. A oclusão seria tratada não puxando a engrenagem (se a luva esquerda estiver atrás do sprite do jogador, você não precisa se preocupar com isso) ou apenas puxando a engrenagem na ordem inversa.
Obviamente, isso exigia muito trabalho e, como resultado, havia relativamente poucas peças de equipamento exclusivo, com muitas versões trocadas e modificadas por paleta desse equipamento.
Em um jogo moderno, eu recomendo fortemente fazer personagens em 3D. Se você deseja arte com aparência 2D ou sua plataforma não tem a potência do 3D real, é provável que seja melhor modelar tudo em 3D, renderizar e depois ajustar o resultado final manualmente.
Como alternativa, se você decidir que não precisa de ajustes, não tem potência para o 3D completo, mas não deseja enviar uma enorme biblioteca de sprites, pode empacotar os modelos 3D e renderizá-los em uma textura em tempo real, quando souber o modelo está prestes a aparecer no jogo.
fonte
Confira o livro de James Da Silva, onde ele explica como fez The Dishwasher: Dead Samurai. Isso mostrará como o KISS pode resolver isso. A sugestão de usar animações esqueléticas em 3D ou 2D é válida e meio no mesmo reino.
fonte
Essa é uma ótima pergunta, mas acho que você já respondeu: você precisa de um sistema de ossos 2D que suporte camadas de mudança de ossos, para que diferentes membros possam ficar atrás e à frente um do outro à medida que o personagem gira. Você também precisará desenhar seus sprites de 4 ou 8 ângulos (ou quantos você precisar). Dependendo das habilidades da sua equipe, pode ser mais fácil criar esses recursos em 3D e renderizá-los dos ângulos necessários.
Usar um mecanismo 3D também é uma boa solução, embora isso traga seu próprio conjunto de desafios.
fonte