Estou planejando um jogo isométrico de simulação de negócios, onde o jogador vê um escritório com os móveis usuais, como mesas, quadros brancos etc.
Personagens (Staff / NPC's) dentro do jogo devem interagir com esses objetos executando algumas tarefas predefinidas, como digitar no teclado na mesa ou escrever no quadro branco etc.
O que me interessa, especificamente, é o seguinte cenário:
O personagem se move pelo escritório (1) até sua mesa (2) e se senta e começa a digitar (3).
Pelo que entendi, eu teria uma folha de sprite para o movimento do personagem (1) e um sprite estático para a mesa (2), mas não entendo direito como o terceiro passo seria tratado?
Existe um sprite combinado que contenha mesa e personagem? Suponho que não, caso contrário, eu precisaria ter uma folha de sprite para cada mesa e combinação de caracteres.
Como isso é normalmente tratado?
EDITAR:
Aqui está um exemplo de animação específica do jogo Theme Hospital. Você pode ver o vídeo aqui .
Tanto quanto posso ver, a animação é dividida em várias etapas.
Passo 1 - O personagem se move entre a mesa e a cadeira.
Isso sugere que cadeira e mesa são, de fato, sprites separados.
Etapa 2 - O personagem senta a animação
Observe como, no último quadro, a cadeira está mais próxima da mesa.
Etapa 3 - Animações de mesa
Etapa 4 - Animação em pé
É o mesmo que sentar, mas jogado ao contrário.
Etapa 5 - Afaste-se
Use animação de movimento normal para se afastar.
As perguntas que tenho são: como essas animações são melhor separadas e como um artista gráfico geralmente as fornece?
O personagem sentado e digitando na mesa é realmente três sprites diferentes (mesa, personagem e cadeira)? Alguém conhece algum exemplo de sprites de animações semelhantes?
EDIT 2:
Acho que minha maior preocupação é que tenho as expectativas corretas sobre como os sprites realmente se parecerão. Eu não posso desenhá-los, então terei que pagar alguém para fazê-lo e presumo que exista algum tipo de prática recomendada para fazer esse tipo de animação?
Uma idéia alternativa seria incluir uma imagem de Profundidade / Z Buffer com seus sprites, semelhante a como as APIs 3D (OpenGL) garantem que os polígonos não se sobreponham. Para um jogo de sprite básico, pode ser apenas um monte de 0/1 bits (bitmap em preto e branco) (embora você possa usar mais níveis de profundidade, se quiser).
Se você tem um sprite combinado de 'cadeira de mesa' e deseja que a cadeira apareça na frente de quaisquer outros sprites (ou seja, pessoas) naquele quadrado, você faria a versão Z-Buffer do char 'preta' enquanto a mesa seria 'branca' .
Quando você renderiza o sprite dinâmico (uma pessoa) nesse bloco, ele verifica se a cor está no buffer de profundidade. Para pixels 0 (preto), você pula o desenho da pessoa que sprites pixels e apenas deixa os da cadeira lá.
Em vez de verificar cada pixel 1 de cada vez, uma maneira mais simples de fazer a verificação seria multiplicar os pixels do sprite pelo valor do buffer de profundidade, pois a profundidade mais próxima seria 0 e cancelaria o. Então é claro que você precisa digitar a cor (a menos que tenha um canal de cores alfa).
É claro que isso aumenta a sobrecarga (embora você possa pular para qualquer coisa que não precise de vários níveis de profundidade, como uma cadeira de mesa). Você também precisa sincronizar suas animações (ou seja, a pessoa precisaria combinar com o anim da cadeira). Não oferece a mesma flexibilidade de ter apenas um monte de sprites separados.
fonte