Anatomía del halcón


Recientemente, anunciamos el desarrollo del juego Falcon Age sobre la crianza de un ave adulta de un polluelo de halcón y fuerzas conjuntas opuestas que buscan colonizar el planeta. Falcon Age se lanzará en 2019 en PS4 y PS VR.

La semana pasada mostramos el juego en PAX y recibimos excelentes cr√≠ticas, especialmente sobre el propio halc√≥n. Echemos un vistazo m√°s de cerca a su dise√Īo, retocando animaciones y plataformas, IA y navegaci√≥n, tecnolog√≠a de plumas y sonidos de depredadores.

Dise√Īo de halc√≥n


Le dijeron a Chandan Ekanayake y Darran Herlbat.


El dise√Īo del halc√≥n combina diferentes tipos de aves rapaces. Nuestro halc√≥n es del tama√Īo de un √°guila real, lucha como un halc√≥n, parece un √°guila y un halc√≥n, tiene crestas, como un b√ļho, y su cuidado se lleva a cabo como un halc√≥n. Ella es una de las √ļltimas representantes de su aparici√≥n en nuestro mundo, y quer√≠amos que su aparici√≥n fuera √ļnica y adecuada para la trama. Al mismo tiempo, durante el juego, debe destacarse contra el cielo y los desiertos.


Una de las primeras fuentes de inspiraci√≥n para crear Falcon Age fue el video de √°guilas reales cazando grandes cabras de monta√Īa. Comenzamos a realizar investigaciones sobre cetrer√≠a, y tuvimos la idea de domar a un halc√≥n y crear mecanismos y jugabilidad basados ‚Äč‚Äčen esto. En una etapa temprana de desarrollo, creamos un prototipo crudo para probar nuestros conceptos. Tan pronto como llamamos al p√°jaro con un silbato a VR, y vimos c√≥mo cambia su escala, se nos acerca y se sienta a mano, nos qued√≥ claro que esto podr√≠a convertirse en la base de un juego √ļnico.

Animaciones y plataformas


Le dice a Aung Zau Oo.


Seguimiento de la pata de halcón

Hay muchas opciones para animar, pero ninguna de ellas podría resolver nuestra tarea de rastrear las patas de un halcón de una manera simple. Los sistemas con cinemática inversa, movimiento de raíz y otros complementos complejos nos permitirían hacer frente al trabajo si tuviéramos un equipo más grande y el tiempo suficiente. Queríamos lograr un resultado más predecible, por lo que elegimos una solución basada en las muchas poses creadas en 3dsmax.

Sin embargo, la razón más importante para abandonar IK fue que fue la mejor solución que encontré en un par de días. Al comienzo del proyecto, armamos el prototipo tan rápido que no tuvimos tiempo de considerar otras soluciones disponibles. Fue la forma más confiable y menos incómoda que he encontrado, por lo que nos hemos mantenido firmes desde entonces. No es necesario reparar lo que no está roto.

As√≠ es como me imaginaba mezclando el movimiento de las garras de p√°jaros en la vida real. Una pelota es un pu√Īo conectado a un dispositivo de control de movimiento VR. Este m√©todo tiene limitaciones. Las garras deben poder doblarse alrededor de la mayor parte del pu√Īo, y la postura del pu√Īo debe ser lo m√°s esf√©rica posible.



Observe que la cabeza y las piernas est√°n al mismo nivel jer√°rquico en la pelvis. Esto facilita enmascarar huesos y crear √°rboles de mezcla separados. Ignora la palabra "√°guila" en el t√≠tulo. Era solo el nombre de un activo temporal antes de decidir el dise√Īo del ave.


Una versi√≥n corta de c√≥mo se hizo esto: el pu√Īo es la pelota, y las patas giran alrededor de la pelota usando 30 poses de mezclar y animar las patas para llevarlas al centro cuando la pelota (brazo en movimiento) gira demasiado lejos.


30 poses de mezcla en una pelota


La animación cruzada le permite devolver las patas al centro

La mezcla comienza nuevamente despu√©s de una breve animaci√≥n de la transici√≥n desde un nuevo giro de la mano. Seg√ļn nuestro programador Justin, implement√≥ esto con las f√≥rmulas habituales de cuaterniones y √°lgebra lineal. Y uso los tres valores flotantes que me da y los paso a estos estados de fusi√≥n de animaci√≥n.

En una chica, la segunda articulación del dedo índice se trata como una pelota.


El √ļnico caso l√≠mite en el que la idea con la pelota no funciona es cuando el guante apunta hacia abajo, como se muestra en la figura a continuaci√≥n.


Podríamos tratar este caso de varias maneras. Una solución: agregue un colisionador a una parte del guante en el antebrazo del colisionador para que el pájaro despegue cuando ocurra una colisión con él. Pero al final decidieron dejar todo como está. Esto es más amigable para el jugador: puedes rascarte el muslo izquierdo y el pájaro en realidad virtual no se irá volando. Además, la mayoría de las personas nunca inclinan los brazos así durante un juego.

Solo si por alguna razón no juegan, de pie sobre sus cabezas.

En una parada de cabeza, todas las animaciones se ver√°n incorrectas o rotas.



Cabeza de halcón


Describiré brevemente cómo logramos esto; la cabeza (bone_Head) es el primer hijo del objeto superior en la jerarquía esquelética del pájaro (bone_Root).

La posici√≥n (no rotaci√≥n) de Bone_Root sigue la posici√≥n del controlador de movimiento y bone_Head contrarresta este movimiento. Esta es esencialmente una jerarqu√≠a de dos objetos en la que la mezcla de posici√≥n se usa para contrarrestar el movimiento del padre para preservar la posici√≥n global del ni√Īo. El resto del cuerpo del ave usa una combinaci√≥n de 27 posturas para la posici√≥n m√°s natural del ave.


Dado el tama√Īo de un ave adulta, moverse 12 cm a lo largo de todos los ejes (un cubo de 24x24x24) fue ideal para estabilizar sin estirar demasiado el cuello. La cabeza se mover√° en el borde de este rango, y cuando el brazo de seguimiento deje de moverse, la nueva posici√≥n se considerar√° el nuevo centro alrededor del cual se crea otro cubo con un lado de 24 cm. Desde un punto de vista matem√°tico, la estabilizaci√≥n de la cabeza es solo una transformaci√≥n vectorial con muchos complementos diferentes. Para limitar la velocidad, el comienzo y el final de la transici√≥n, mueva el punto de estabilizaci√≥n cuando est√© demasiado lejos del cuerpo y el p√°jaro a√ļn est√© en el √°rea.


Navegación y Aves AI


Narrado por Justin Lalone.

Cuando el p√°jaro est√° aburrido

Muy a menudo, el halcón obedece las órdenes de Ara (el personaje principal del juego) y la sigue. Si permanece de pie en un área durante demasiado tiempo mientras el pájaro solo vuela en círculos o si lo deja ir sin dar órdenes, comenzará a buscar algo que hacer en el área, generalmente cazar o aterrizar en diferentes puntos importantes del alivio. También toma la iniciativa cuando está sentada en Are y alguien está tratando de agarrarla, y le encanta mostrar Are el siguiente hoyo cuando juega al golf relámpago.

El sol cegando a la víctima.

Algunas especies de presas, como los conejos, son muy tímidas, y cuando ven a un halcón zambullirse en el aire, tratando de agarrarlos, corren hacia el hoyo más cercano. Es mucho más difícil para ellos notar el pájaro de Ara cuando se acerca desde el lado soleado, por lo que puedes simplificar la captura de presas si prestas atención a dónde proviene la luz y envías al pájaro desde esta dirección. Por otro lado, puede ser bastante simple y simple sumergirse desde una altura, porque el ave podrá ganar más velocidad antes de que se note, dando a la víctima menos tiempo para escapar.


Vamos rápidamente y desde el costado del sol para capturar con precisión a la presa.



Navegación halcón 3D

Por lo general, en el conjunto estándar del motor del juego no hay mecanismos para mover de manera confiable un animal volador en el espacio 3D, lo que se vería natural en este caso. Tenemos unos tres niveles de lógica de navegación de aves, realizados para mover el ave del punto A al punto B, lo que nos permite no complicar demasiado el sistema y no quedarnos atascados en las esquinas.


Para una navegaci√≥n de alto nivel que le permite encontrar una ruta alrededor del mundo, creamos un gr√°fico de navegaci√≥n 3D y usamos el algoritmo A * para encontrar la ruta. En esta implementaci√≥n, es bastante √ļnico que, para realizar todas las operaciones para encontrar la ruta utilizando el algoritmo A *, utilicemos un sistema de tareas Unity bastante nuevo. Proporciona una b√ļsqueda r√°pida que no carga la transmisi√≥n principal, lo que deja m√°s tiempo para IA, f√≠sica y otros aspectos. La mayor parte del gr√°fico se genera autom√°ticamente, y para volar a trav√©s de aberturas estrechas, por ejemplo a trav√©s de ventanas, las conexiones se colocan manualmente porque son peque√Īas o requieren un enfoque en el √°ngulo correcto.


La l√≠nea violeta es un camino aproximado para volar alrededor de grandes rocas en el medio, donde el halc√≥n comienza a volar y Ara se para. El p√°jaro no se esfuerza especialmente para seguir esta l√≠nea; si esto fuera as√≠, har√≠a giros muy extra√Īos y bruscos, por lo que si puedes llegar a la siguiente parte del camino sin interferencias, entonces ella ir√° all√≠.


A veces, en el camino, puede encontrarse con objetos peque√Īos o en movimiento. El halc√≥n mira hacia adelante y vuela sobre o cerca de estos objetos. La roca es lo suficientemente grande como para navegar con el algoritmo A * habitual, pero lo hice olvidarlo por ahora. Aqu√≠, para rodear la roca, el p√°jaro gira hacia la izquierda: las l√≠neas rojas muestran d√≥nde se ve√≠a durante los √ļltimos cuadros. Por lo general, trato de no hacer esto, pero la navegaci√≥n A * puede hacer que un p√°jaro vuele debajo de arcos o puentes.

El √ļltimo nivel de l√≥gica del vuelo de los p√°jaros es la l√≥gica de maniobrarse, la elecci√≥n de qu√© tan r√°pido decide volar el p√°jaro, cu√°nto necesita subir o bajar, c√≥mo girar r√°pidamente, c√≥mo aplica la aceleraci√≥n f√≠sica, qu√© restricciones se imponen a sus acciones para llegar al punto final. Estos datos se transmiten al sistema de animaci√≥n, informando qu√© tan activo trabaja el ave, en qu√© tipo de postura debe ser, si debe doblarse, etc. La evasi√≥n de objetos est√° bastante conectada con este sistema, pero toda la navegaci√≥n A * se realiza por separado. Utiliza una gran cantidad de matem√°ticas y l√≥gica.

Plumas y renderizado


Le dice a Ben Golus.

Las peque√Īas plumas en el cuerpo, o las plumas de contorno de nuestro p√°jaro, se balancean del viento y reaccionan a las manos del jugador alis√°ndolas para agregar una sensaci√≥n m√°s profunda de interactividad t√°ctil. La forma de implementar plumas en la demostraci√≥n de PAX fue un truco, as√≠ que espero reemplazarlo antes de que se lance el juego. (Por supuesto, esto significa que esta soluci√≥n se implementar√° en el juego terminado.) En resumen, cada peque√Īa pluma de un p√°jaro se considera varios sombreadores de hierba o vegetaci√≥n. Para calcular el ruido simple de las vibraciones de las plumas, se calculan varias sinusoides superpuestas, lo que le da a las plumas un aspecto natural. Sus cambios temporales se cambian a un valor aleatorio para cada pluma, almacenados en el color del v√©rtice, y el movimiento de la oscilaci√≥n tambi√©n se escala de acuerdo con el color del v√©rtice. Esto significa que la base de las plumas, a diferencia de los extremos, no se mueve. Tambi√©n significa que las plumas largas se mueven m√°s que las cortas.


Queremos que las plumas no se muevan en direcciones aleatorias, como en la mayor√≠a de los sombreadores de c√©sped, por lo que no puede usar las direcciones del espacio mundial o local. Adem√°s, est√°n en la malla con revestimiento, lo que hace que la direcci√≥n sea a√ļn m√°s din√°mica. Por lo tanto, utilic√© una combinaci√≥n de v√©rtices normales y tangentes de las plumas, para que las plumas se balancearan hacia adentro y hacia afuera, as√≠ como en diferentes direcciones en relaci√≥n con su orientaci√≥n. El sistema no es muy preciso, pero con movimientos tan peque√Īos, los errores casi no se notar√°n.

Para procesar las interacciones con la mano en la mano del jugador, hay un script que rastrea los huesos y crea una lista de c√°psulas que siguen la forma de cada dedo, y se usa una esfera como palma. Si la mano est√° dentro del rango, el sombreador de v√©rtices recorre la lista de c√°psulas y encuentra la distancia m√°s peque√Īa a una de ellas, y luego escala suavemente la oscilaci√≥n si la c√°psula la cruza. Adem√°s, las plumas se presionan contra el cuerpo. Las c√°psulas son demasiado grandes porque las comprobaciones de superposici√≥n son suaves, es decir, no cambian abruptamente, sino con una transici√≥n suave. Todo esto est√° configurado aproximadamente para que cuando el dedo visible toque el l√°piz, se detenga por completo y cuelgue.


Aqu√≠ hay una prueba de una versi√≥n anterior de este sistema. Puedes ver c√≥mo las plumas reaccionan a la esfera incluso antes de que la toque, pero las interacciones a√ļn parecen convincentes.



Para el lanzamiento final del juego, quiero crear un sistema con un sombreador geométrico o computacional, que resuelva algunos de los problemas que surgen al tocar solo un vértice de las plumas, y eliminar el hecho de que las normales para iluminar las plumas no cambian cuando se tocan.

Información de la herida de halcón

Quer√≠amos mostrar de alguna manera cuando el p√°jaro estaba herido y, al mismo tiempo, no usar bandas de salud o mecanismos similares. Para mostrar que el p√°jaro est√° cansado o herido, se utilizan animaciones, pero a√ļn no pudimos comunicar claramente a los usuarios que recibi√≥ da√Īos. Para transmitir claramente su condici√≥n, decidimos mostrarle sus heridas f√≠sicas con sangre y plumas despeinadas. Una soluci√≥n obvia ser√≠a reemplazar los materiales. Sin embargo, quer√≠amos mostrar un aumento gradual del da√Īo, y no solo un duro "comer / no", y no quer√≠amos crear muchas cartas diferentes. Tambi√©n tuvimos un problema con el hecho de que la mayor√≠a de las plumas usan las mismas coordenadas UV, es decir, todo el p√°jaro estar√° cubierto de manchas de sangre.

Como resultado, llegamos a una soluci√≥n de dos partes. El primero fue el da√Īo de plumas y despeinado. El canal alfa de cada bol√≠grafo est√° sintonizado de manera especial, de modo que las versiones da√Īadas y no da√Īadas est√°n en alfa con diferente opacidad. Para cambiar entre los dos estados de las plumas, se utiliza una verificaci√≥n de valor alfa (de hecho, es alfa para la cobertura). 50% de opacidad indica salud normal y 25% de opacidad indica heridas.


Para las manchas de sangre, el p√°jaro tiene las segundas coordenadas UV de la textura de la sangre, por lo que no necesitamos reutilizar las coordenadas UV de la textura de la pluma. La sangre se mezcla sobre la textura base. Como resultado, solo necesitamos un conjunto de texturas b√°sicas, un conjunto de texturas de sangre, y esto es suficiente para obtener diferentes efectos de las heridas en el ave.




Sonidos de depredador


Narrado por Rob Piersall.


No quer√≠amos que el p√°jaro difiriera (por ejemplo, sea futurista o m√°gico) de ning√ļn otro p√°jaro en el mundo, sino que simplemente combinamos las diferentes caracter√≠sticas de varios depredadores voladores (solo agregue un sombrero). Por lo tanto, no ten√≠a sentido crearle una voz que sonara "con calidad cinematogr√°fica", suficiente para que funcione y sea cre√≠ble.

En otras palabras, podría "tomar prestados" los gritos de cualquier depredador que transmitiera información al jugador sobre los diferentes estados de ánimo, sentimientos y respuestas del pájaro. Escuché los sonidos de los depredadores. Para mi sorpresa, el depredador más grande e impresionante, el águila, fue el peor de todos en términos de sonido. Resultó ser el primero en la lista de "mejor no usar".

Hawk es siempre una gran opci√≥n. Todos aman el grito de un halc√≥n. Sol√≠a ‚Äč‚Äčpensar que todos los ingenieros de sonido tienen un registro de grito de halc√≥n, y que todos los halcones tienen el mismo sonido en todas las pel√≠culas. Pero esto no es as√≠. Al final result√≥ que, todos estos halcones suenan igual. Casi no hay diferencias. No me malinterpreten, el sonido es excelente, as√≠ que ... s√≠, para nuestro p√°jaro tambi√©n lo usamos. Pero eso no es todo.

Lo mejor de todo es que no tuve que limitarme a una especie particular de halcón; y hay muchas de estas especies. Por lo tanto, podría elegir cualquier sonido adecuado emitido por cualquier halcón que sería como una especie de declaración emocional de un pájaro a mi gusto.

Es muy conveniente que el espectro de las emociones sea limitado. Los llamaré mensajes de aves:

  • Todo est√° tranquilo, todo est√° bien.
  • Escuch√© que me est√°s llamando
  • Atacando
  • Estoy herido, pero sigo volando
  • Duele

Grabar el sonido de un depredador molesto es muy simple; basta con aparecer en su territorio con equipos de grabación, y ya estará molesto. Por lo tanto, hay muchos materiales donde los depredadores suenan enojados y malvados. Son adecuados para sonidos de "dolor". Los sonidos del halcón fueron adecuados para la retroalimentación en vuelo y los informes de un ataque. Con los sonidos "todo está tranquilo", hubo dificultades. Se me ocurrieron varios tipos de twitter, pero luego tuve que editar muchos tipos diferentes de mensajes para obtener gritos cortos y parciales correspondientes a twitter, y aparecieron para el juego.

El seguimiento de un pájaro en un juego por sonido es una historia completamente diferente para otro artículo.

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


All Articles