Anatomia do falcão


Recentemente, anunciamos o desenvolvimento do jogo Idade do Falcão sobre a criação de um pássaro adulto de um filhote de falcão e as forças que se opõem em conjunto para colonizar o planeta. Falcon Age será lançado em 2019 no PS4 e PS VR.

Na semana passada, mostramos o jogo no PAX e recebemos ótimas críticas, principalmente sobre o próprio falcão. Vamos dar uma olhada no design, animações e plataformas, IA e navegação, tecnologia de penas e sons de predadores.

Projeto Falcon


Disse Chandan Ekanayake e Darran Herlbat.


O design do falcão combina diferentes tipos de aves de rapina. Nosso falcão é do tamanho de uma águia dourada, luta como um falcão, parece uma águia e um falcão, tem cristas como uma coruja e seu cuidado é realizado como um falcão. Ela é uma das últimas representantes de sua aparência em nosso mundo, e queríamos torná-la única e adequada para o enredo. Ao mesmo tempo, durante o jogo, ele deve se destacar contra o céu e os desertos.


Uma das primeiras fontes de inspiração para a criação da Era Falcon foi o vídeo de águias douradas caçando grandes cabras da montanha. Começamos a realizar pesquisas sobre falcoaria e tivemos a ideia de domar um falcão e criar mecânica e jogabilidade com base nisso. Em um estágio inicial de desenvolvimento, criamos um protótipo bruto para testar nossos conceitos. Assim que chamamos o pássaro pela primeira vez com um apito para VR, e vimos como sua escala muda, ele se aproxima de nós e fica à mão, ficou claro para nós que isso poderia se tornar a base de um jogo único.

Animações e plataformas


Diz Aung Zau Oo.


Rastreamento de pata de falcão

Existem muitas opções para animar, mas nenhuma delas poderia resolver nossa tarefa de rastrear as pernas de um falcão de uma maneira simples. Sistemas com cinemática inversa, movimento radicular e outros plugins complexos nos permitiriam lidar com o trabalho se tivéssemos uma equipe maior e tempo suficiente. Como queríamos alcançar um resultado mais previsível, escolhemos uma solução com base nas várias poses criadas no 3dsmax.

No entanto, a razão mais importante para abandonar a IK foi a melhor solução que encontrei em alguns dias. No início do projeto, montamos o protótipo tão rapidamente que não tivemos tempo para considerar outras soluções disponíveis. Foi a maneira mais confiável e menos incômoda que encontrei, por isso mantivemos o compromisso desde então. Não há necessidade de reparar o que não está quebrado.

Foi assim que imaginei misturar o movimento das garras de pássaros na vida real. Uma bola é um punho preso a um dispositivo de controle de movimento VR. Este método tem limitações. As garras devem ser capazes de dobrar a maior parte do punho, e a pose do punho deve ser a mais esférica possível.



Observe que a cabeça e as pernas estão no mesmo nível hierárquico na pelve. Isso facilita a máscara dos ossos e a criação de árvores de mistura separadas. Ignore a palavra "águia" no título. Era apenas o nome de um ativo temporário antes de decidirmos sobre o design do pássaro.


Uma versão curta de como isso foi feito: o punho é a bola e as patas giram em torno da bola usando 30 poses de misturar e animar as patas para trazê-las de volta ao centro quando a bola (braço em movimento) gira demais.


30 poses de mistura em uma bola


A animação cruzada permite retornar as patas ao centro

A mixagem começa novamente após uma curta animação da transição de um novo turno da mão. Segundo o nosso programador Justin, ele implementou isso com as fórmulas usuais de quaternions e álgebra linear. E eu uso os três valores flutuantes que ele me fornece e os passo para esses estados de mistura de animação.

Em um pintinho, a segunda articulação do dedo indicador é tratada como uma bola.


O único caso limítrofe em que a idéia com a bola não funciona é quando a luva está apontando diretamente para baixo, como mostra a figura abaixo.


Poderíamos lidar com este caso de várias maneiras. Uma solução: adicione um colisor a uma parte da luva no antebraço do colisor, para que o pássaro decole quando ocorrer uma colisão. Mas no final eles decidiram deixar tudo como está. Isso é mais amigável para o jogador: você pode coçar a coxa esquerda e o pássaro em VR não voará para longe. Além disso, a maioria das pessoas nunca abaixa os braços assim durante um jogo.

Somente se por algum motivo eles não brincarem, de pé sobre suas cabeças.

Em um headstand, todas as animações parecerão incorretas ou quebradas.



Rastreamento de cabeça de falcão


Descreverei brevemente como conseguimos isso; a cabeça (bone_Head) é o primeiro filho do objeto mais alto na hierarquia esquelética do pássaro (bone_Root).

A posição (não rotação) de Bone_Root segue a posição do controlador de movimento e bone_Head neutraliza esse movimento. Essa é essencialmente uma hierarquia de dois objetos na qual a combinação de posições é usada para neutralizar o movimento do pai e preservar a posição global do filho. O resto do corpo do pássaro usa uma mistura de 27 posturas para a posição mais natural do pássaro.


Dado o tamanho de um pássaro adulto, mover 12 cm ao longo de todos os eixos (um cubo 24x24x24) era ideal para estabilizar sem esticar muito o pescoço. A cabeça se moverá na borda desse intervalo e, quando o braço de rastreamento parar de se mover, a nova posição será considerada o novo centro em torno do qual é criado outro cubo com um lado de 24 cm. Do ponto de vista matemático, a estabilização da cabeça é apenas uma transformação de vetor com muitos complementos diferentes para limitar a velocidade, início e fim da transição, mova o ponto de estabilização quando estiver muito longe do corpo e o pássaro ainda estiver na área.


Navegação e AI Birds


Narrado por Justin Lalone.

Quando o pássaro está entediado

Na maioria das vezes, o falcão obedece às ordens de Ara (a personagem principal do jogo) e a segue. Se você ficar em uma área por muito tempo enquanto o pássaro apenas voa em círculos ou se você o deixar passar sem dar ordens, começará a procurar algo para fazer na área - geralmente caçar ou pousar em diferentes pontos importantes do alívio. Ela também toma a iniciativa quando está sentada em Are e alguém está tentando agarrá-la, e adora mostrar São o próximo buraco ao jogar golfe relâmpago.

O sol cegando a vítima

Algumas espécies de presas, como os coelhos, são muito tímidas e, quando vêem um falcão mergulhando no ar, tentando agarrá-las, correm para o buraco mais próximo. É muito mais difícil para eles perceberem o pássaro de Ara quando se aproxima do lado ensolarado, para que você possa simplificar a captura de presas se prestar atenção ao local de origem da luz e enviar o pássaro nessa direção. Por outro lado, pode ser bastante simples e simples mergulhar de uma altura, porque o pássaro poderá ganhar mais velocidade antes de ser notado, dando à vítima menos tempo para escapar.


Vamos rapidamente e do lado do sol para capturar com precisão a presa.



Navegação falcão 3D

Normalmente, no conjunto padrão do mecanismo de jogo, não há mecanismos para mover um animal voador de forma confiável no espaço 3D, o que pareceria natural nesse caso. Temos cerca de três níveis de lógica de navegação de aves, executados para mover a ave do ponto A para o ponto B, o que nos permite não complicar demais o sistema e não ficar preso nos cantos.


Para navegação de alto nível que permite encontrar uma rota em todo o mundo, criamos um gráfico de navegação 3D e usamos o algoritmo A * para encontrar o caminho. Nesta implementação, é bastante singular que, para executar todas as operações para encontrar o caminho usando o algoritmo A *, utilizemos um sistema de tarefas Unity relativamente novo. Ele fornece uma pesquisa rápida que não carrega o fluxo principal, o que deixa mais tempo para IA, física e outros aspectos. A maior parte do gráfico é gerada automaticamente e, para voar através de aberturas estreitas, por exemplo, através de janelas, as conexões são feitas manualmente porque são pequenas ou requerem abordagem no ângulo reto.


A linha violeta é um caminho aproximado para voar em torno de grandes rochas no meio, onde o falcão começa a voar e Ara fica. O pássaro não se esforça especialmente para seguir essa linha; se assim fosse, ela faria curvas muito estranhas e nítidas; portanto, se você puder chegar à próxima parte do caminho sem interferência, ela vai para lá.


Às vezes, no caminho, ela pode encontrar objetos pequenos ou em movimento. O falcão olha para a frente e voa sobre ou perto desses objetos. A rocha é grande o suficiente para navegar pelo algoritmo A * usual, mas eu o fiz esquecer por enquanto. Aqui, para contornar a rocha, o pássaro vira para a esquerda - as linhas vermelhas mostram onde ele olhou durante os últimos quadros. Normalmente, tento não fazer isso, mas a navegação A * pode fazer um pássaro voar sob arcos ou pontes.

O último nível de lógica do voo dos pássaros é a lógica de manobrar em si, a escolha de quão rapidamente o pássaro decide voar, quanto precisa subir ou descer, como girar rapidamente, como aplica aceleração física, quais restrições são impostas às suas ações para chegar ao ponto final. Esses dados são transmitidos ao sistema de animação, informando quão ativamente o pássaro trabalha, em que tipo de postura deve ser, se deve fazer uma curva, etc. A evasão de objetos está fortemente ligada a este sistema, mas toda a navegação A * é realizada completamente separadamente. Ele usa uma grande quantidade de matemática e lógica.

Penas e renderização


Diz a Ben Golus.

As pequenas penas no corpo, ou as penas de contorno do nosso pássaro, balançam com o vento e reagem às mãos do jogador, suavizando-as para adicionar uma sensação mais profunda de interatividade tátil. A maneira de implementar as penas na demo do PAX foi um hack, então espero substituí-lo antes do lançamento do jogo. (Obviamente, isso significa que essa solução será implementada no jogo finalizado.) Em resumo, cada pequena pluma de um pássaro é considerada vários shaders de grama ou vegetação. Para calcular o ruído simples das vibrações das penas, vários sinusóides sobrepostos são calculados, o que confere uma aparência natural às penas. Suas alterações temporárias são alteradas para um valor aleatório para cada caneta, armazenada na cor do vértice, e o movimento da oscilação também é dimensionado de acordo com a cor do vértice. Isso significa que a base das penas, ao contrário das pontas, não se move. Isso também significa que penas longas se movem mais do que penas curtas.


Queremos que as penas não se movam em direções aleatórias, como na maioria dos shaders de grama, para que você não possa usar as direções do mundo ou do espaço local. Além disso, eles estão na malha com esfola, o que torna a direção ainda mais dinâmica. Portanto, usei uma combinação de normais e vértices tangentes das penas, para que as penas oscilassem dentro e fora, bem como em direções diferentes em relação à sua orientação. O sistema não é muito preciso, mas com movimentos tão pequenos, os erros quase não serão perceptíveis.

Para processar interações com a mão na mão do jogador, existe um script que rastreia ossos e cria uma lista de cápsulas seguindo o formato de cada dedo, e uma esfera é usada como palma da mão. Se a mão estiver ao alcance, o sombreador de vértice percorre a lista de cápsulas e encontra a menor distância até uma delas, e então suavemente escala a oscilação se a cápsula cruzar. Além disso, as penas são pressionadas contra o corpo. As cápsulas são grandes demais porque as verificações de sobreposição são suaves, ou seja, elas não mudam abruptamente, mas com uma transição suave. Tudo isso é configurado aproximadamente para que, quando o dedo visível toque a caneta, ele pare e desligue completamente.


Aqui está um teste de uma versão anterior deste sistema. Você pode ver como as penas reagem à esfera antes mesmo de tocá-la, mas as interações ainda parecem convincentes.



Para o lançamento final do jogo, quero criar um sistema com um sombreador geométrico ou computacional, que resolva alguns dos problemas que surgem ao tocar apenas um vértice das penas e elimine o fato de que os normais para acender as penas não mudam quando são tocados.

Informações sobre feridas de falcão

Queríamos mostrar de alguma forma quando o pássaro estava ferido e, ao mesmo tempo, não usar faixas de saúde ou mecânica semelhante. Para mostrar que o pássaro está cansado ou machucado, as animações são usadas, mas ainda não conseguimos comunicar claramente aos usuários que ele recebeu danos. Para transmitir claramente sua condição, decidimos mostrar seus ferimentos físicos com sangue e penas desgrenhadas. Uma solução óbvia seria substituir os materiais. No entanto, queríamos mostrar um aumento gradual no dano, e não apenas um duro "comer / não", e não queremos criar muitas cartas diferentes. Também tivemos um problema com o fato de a maioria das penas usar as mesmas coordenadas UV, ou seja, o pássaro inteiro será coberto de manchas de sangue.

Como resultado, chegamos a uma solução em duas partes. O primeiro foi estragado e despenteado. O canal alfa de cada caneta é sintonizado de uma maneira especial, de modo que as versões danificadas e não danificadas estejam em alfa com opacidade diferente. Para alternar entre os dois estados das penas, uma verificação do valor alfa é usada (na verdade, é alfa na cobertura). 50% de opacidade indica saúde normal e 25% de opacidade indica feridas.


Para manchas de sangue, o pássaro tem as segundas coordenadas UV da textura do sangue, por isso não precisamos reutilizar as coordenadas UV da textura da caneta. O sangue é misturado sobre a textura base. Como resultado, precisamos apenas de um conjunto de texturas básicas, um conjunto de texturas de sangue, e isso é suficiente para obter diferentes efeitos de feridas no pássaro.




Sons predadores


Narrado por Rob Piersall.


Não queríamos que o pássaro diferisse (por exemplo, seja futurista ou mágico) de qualquer outro pássaro do mundo, mas simplesmente combine as diferentes características de vários predadores voadores (apenas adicione um chapéu). Portanto, não havia sentido em criar para ela uma voz que soasse "com qualidade cinematográfica" - o suficiente para fazê-la funcionar e ser crível.

Em outras palavras, eu poderia "emprestar" os gritos de qualquer predador que transmitisse informações ao jogador sobre os diferentes humores, sentimentos e respostas do pássaro. Ouvi os sons emitidos por predadores. Para minha surpresa, o maior e mais impressionante predador - a águia - foi o pior de todos em termos de som. Acabou sendo o primeiro da lista de "melhor não usar".

Hawk é sempre uma ótima escolha. Todo mundo adora o grito de um falcão. Eu costumava pensar que todos os engenheiros de som têm um registro de grito de falcão e que todos os falcões têm o mesmo som em todos os filmes. Mas isso não é verdade. Como se viu, todos esses falcões soam iguais. Quase sem diferenças. Não me interpretem mal, o som é excelente, então ... sim, para o nosso pássaro também o usamos. Mas isso não é tudo.

O melhor de tudo é que não precisei me limitar a uma espécie específica de falcão; e existem muitas dessas espécies. Portanto, eu poderia escolher qualquer som adequado emitido por qualquer falcão que fosse como uma espécie de declaração emocional de um pássaro para o meu gosto.

É muito conveniente que o espectro de emoções seja limitado. Vou chamá-los de mensagens de pássaros:

  • Tudo está quieto, tudo está bom
  • Ouvi dizer que você está me ligando
  • Atacar
  • Estou machucado, mas ainda voo
  • Dói

Gravar o som de um predador irritado é muito simples; basta aparecer em seu território com equipamento de gravação e ele já ficará irritado. Portanto, existem muitos materiais onde os predadores parecem zangados e maus. Eles são adequados para sons de "dor". Os sons do falcão eram adequados para feedback em voo e relatos de um ataque. Com os sons "tudo está quieto", houve dificuldades. Vários tipos de twitter vieram até mim, mas então eu tive que editar muitos tipos diferentes de mensagens para obter gritos parciais e bruscos correspondentes ao twitter, e eles vieram para o jogo.

Rastrear um pássaro em um jogo pelo som é uma história completamente diferente para outro artigo.

Source: https://habr.com/ru/post/pt438138/


All Articles