Kürzlich haben wir die Entwicklung des
Falcon Age- Spiels angekündigt, bei dem es darum geht, einen erwachsenen Vogel von einem Falkenküken aufzuziehen und gemeinsam Kräfte zu bekämpfen, die den Planeten kolonisieren wollen. Falcon Age wird 2019 auf PS4 und PS VR veröffentlicht.
Letzte Woche haben wir das Spiel auf
PAX gezeigt und tolle Kritiken erhalten, insbesondere über den Falken selbst. Schauen wir uns das Design genauer an und optimieren Animationen und Rigs, KI und Navigation, Federtechnologie und Raubtiergeräusche.
Falcon Design
Sagte Chandan Ekanayake und Darran Herlbat.
Das Design des Falken kombiniert verschiedene Arten von Greifvögeln. Unser Falke hat die Größe eines Steinadlers, kämpft wie ein Falke, sieht aus wie ein Adler und ein Falke, hat Wappen wie eine Eule und wird wie ein Falke gepflegt. Sie ist eine der letzten Vertreterinnen ihres Auftritts in unserer Welt, und wir wollten ihren Auftritt einzigartig und für die Handlung geeignet machen. Gleichzeitig sollte es sich während des Spiels vom Himmel und den Wüsten abheben.

Eine der ersten Inspirationsquellen für die Entstehung von Falcon Age war das Video von Steinadlern, die große Bergziegen jagen. Wir begannen mit der Erforschung der Falknerei und hatten die Idee, einen Falken zu zähmen und darauf basierend Mechanik und Gameplay zu entwickeln. In einem frühen Stadium der Entwicklung haben wir einen groben Prototyp erstellt, um unsere Konzepte zu testen. Sobald wir den Vogel zum ersten Mal mit einer Pfeife zu VR riefen und sahen, wie sich seine Größe ändert, er sich uns nähert und zur Hand sitzt, wurde uns klar, dass dies die Grundlage eines einzigartigen Spiels werden könnte.
Animationen und Rigs
Erzählt Aung Zau Oo.
Falcon Paw TrackingEs gibt viele Möglichkeiten zum Animieren, aber keine davon könnte unsere Aufgabe lösen, die Beine eines Falken auf einfache Weise zu verfolgen. Systeme mit inverser Kinematik, Root-Bewegung und anderen komplexen Plugins würden es uns ermöglichen, die Arbeit zu bewältigen, wenn wir ein größeres Team und genügend Zeit hätten. Wir wollten ein vorhersehbareres Ergebnis erzielen und haben uns daher für eine Lösung entschieden, die auf den vielen in 3dsmax erstellten Posen basiert.
Der wichtigste Grund für die Aufgabe von IK war jedoch, dass dies die beste Lösung war, die ich in ein paar Tagen gefunden habe. Zu Beginn des Projekts haben wir den Prototyp so schnell zusammengebaut, dass wir keine Zeit hatten, andere verfügbare Lösungen in Betracht zu ziehen. Es war der zuverlässigste und am wenigsten umständliche Weg, den ich gefunden habe, also haben wir uns seitdem daran gehalten. Keine Notwendigkeit zu reparieren, was nicht kaputt ist.
So stellte ich mir vor, die Bewegung von Vogelkrallen im wirklichen Leben zu mischen. Ein Ball ist eine Faust, die an einem VR-Bewegungssteuerungsgerät angebracht ist. Diese Methode hat Einschränkungen. Die Krallen sollten sich um den größten Teil der Faust biegen können, und die Haltung der Faust sollte so kugelförmig wie möglich sein.
Beachten Sie, dass sich Kopf und Beine im Becken auf derselben Hierarchieebene befinden. Dies erleichtert das Maskieren von Knochen und das Erstellen separater Mischbäume. Ignorieren Sie das Wort "Adler" im Titel. Es war nur der Name eines temporären Vermögenswerts, bevor wir uns für das Design des Vogels entschieden haben.
Eine kurze Version davon: Die Faust ist der Ball, und die Pfoten drehen sich um den Ball, indem 30 Posen gemischt und animiert werden, um sie wieder in die Mitte zu bringen, wenn sich der Ball (beweglicher Arm) zu weit dreht.
30 Mischposen auf einer KugelMit der Crossover-Animation können Sie die Pfoten wieder in die Mitte bringenDas Mischen beginnt erneut nach einer kurzen Animation des Übergangs von einer neuen Handbewegung. Laut unserem Programmierer Justin hat er dies mit den üblichen Formeln von Quaternionen und linearer Algebra implementiert. Und ich verwende die drei Float-Werte, die er mir gibt, und übergebe sie an diese Animationsmischzustände.
Bei einem Küken wird das zweite Gelenk des Zeigefingers wie eine Kugel behandelt.
Der einzige Grenzfall, in dem die Idee mit dem Ball nicht funktioniert, ist, wenn der Handschuh gerade nach unten zeigt, wie in der folgenden Abbildung gezeigt.
Wir könnten mit diesem Fall auf verschiedene Arten umgehen. Eine Lösung: Fügen Sie einem Teil des Handschuhs am Unterarm des Colliders einen Collider hinzu, damit der Vogel abhebt, wenn eine Kollision mit ihm auftritt. Aber am Ende beschlossen sie, alles so zu lassen, wie es ist. Dies ist für den Spieler freundlicher: Sie können sich am linken Oberschenkel kratzen, und der Vogel in VR fliegt nicht weg. Außerdem beugen die meisten Menschen während eines Spiels niemals so die Arme.
Nur wenn sie aus irgendeinem Grund nicht spielen und auf dem Kopf stehen.
In einem Kopfstand sehen alle Animationen falsch oder kaputt aus.
Falcon Head Tracking
Ich werde kurz beschreiben, wie wir dies erreicht haben. Der Kopf (Bone_Head) ist das erste Kind des obersten Objekts in der Skeletthierarchie des Vogels (Bone_Root).
Die Position (nicht Drehung) von Bone_Root folgt der Position des Motion Controllers und Bone_Head wirkt dieser Bewegung entgegen. Dies ist im Wesentlichen eine Zwei-Objekt-Hierarchie, in der Positionsmischung verwendet wird, um der Bewegung des Elternteils entgegenzuwirken und die globale Position des Kindes zu erhalten. Der Rest des Vogelkörpers verwendet eine Mischung aus 27 Körperhaltungen für die natürlichste Position des Vogels.

Angesichts der Größe eines erwachsenen Vogels war eine Bewegung von 12 cm entlang aller Achsen (ein 24x24x24-Würfel) ideal, um sich zu stabilisieren, ohne den Hals zu stark zu dehnen. Der Kopf bewegt sich am Rand dieses Bereichs, und wenn sich der Verfolgungsarm nicht mehr bewegt, wird die neue Position als das neue Zentrum betrachtet, um das ein weiterer Würfel mit einer Seite von 24 cm erstellt wird. Aus mathematischer Sicht ist die Kopfstabilisierung nur eine Vektortransformation mit vielen verschiedenen Add-Ons Um die Geschwindigkeit, den Beginn und das Ende des Übergangs zu begrenzen, bewegen Sie den Stabilisierungspunkt, wenn er zu weit vom Körper entfernt ist und sich der Vogel noch in der Nähe befindet.
Navigation und KI-Vögel
Erzählt von Justin Lalone.
Wenn der Vogel gelangweilt istMeistens gehorcht der Falke den Anweisungen von Ara (der Hauptfigur des Spiels) und folgt ihr. Wenn Sie zu lange in einem Gebiet stehen, während der Vogel nur im Kreis fliegt, oder wenn Sie ihn loslassen, ohne Befehle zu erteilen, wird er nach etwas suchen, das er in dem Gebiet tun kann - normalerweise jagen oder landen Sie an verschiedenen wichtigen Punkten des Reliefs. Sie ergreift auch die Initiative, wenn sie auf Are sitzt und jemand versucht, sie zu packen, und liebt es, Are als nächstes Loch beim Blitzgolf zu zeigen.
Die Sonne blendet das OpferEinige Beutearten wie Kaninchen sind sehr schüchtern, und wenn sie einen Falken in der Luft tauchen sehen, der versucht, sie zu ergreifen, rennen sie zum nächsten Loch. Es ist viel schwieriger für sie, Aras Vogel zu bemerken, wenn er sich von der Sonnenseite nähert. Sie können also das Fangen von Beute vereinfachen, wenn Sie darauf achten, woher das Licht kommt, und den Vogel aus dieser Richtung senden. Auf der anderen Seite kann es recht einfach und unkompliziert sein, aus großer Höhe abzutauchen, da der Vogel mehr Geschwindigkeit gewinnen kann, bevor er bemerkt wird, wodurch das Opfer weniger Zeit zum Entkommen hat.
Wir gehen schnell und von der Seite der Sonne, um die Beute genau zu fangen.
3D-Falken-NavigationNormalerweise gibt es im Standardsatz der Spiel-Engine keine Mechanismen, um ein fliegendes Tier zuverlässig im 3D-Raum zu bewegen, was in diesem Fall natürlich aussehen würde. Wir haben ungefähr drei Ebenen der Vogelnavigationslogik, die ausgeführt werden, um den Vogel von Punkt A nach Punkt B zu bewegen, wodurch wir das System nicht zu sehr komplizieren und nicht in den Ecken stecken bleiben können.

Für die Navigation auf hoher Ebene, mit der Sie eine Route um die Welt finden können, erstellen wir ein 3D-Navigationsdiagramm und verwenden den A * -Algorithmus, um den Pfad zu finden. In dieser Implementierung ist es ziemlich einzigartig, dass wir ein ziemlich neues Unity-Task-System verwenden, um alle Operationen auszuführen, um den Pfad unter Verwendung des A * -Algorithmus zu finden. Es bietet eine schnelle Suche, bei der der Hauptstrom nicht geladen wird, wodurch mehr Zeit für KI, Physik und andere Aspekte bleibt. Der größte Teil des Diagramms wird automatisch generiert. Um durch enge Öffnungen, z. B. durch Fenster, zu fliegen, werden Verbindungen manuell platziert, da sie klein sind oder eine Annäherung im richtigen Winkel erfordern.

Die violette Linie ist ein ungefährer Weg, um große Felsen in der Mitte zu umfliegen, wo der Falke zu fliegen beginnt und Ara steht. Der Vogel bemüht sich nicht besonders genau, dieser Linie zu folgen; Wenn dies so wäre, würde sie sehr seltsame und scharfe Kurven machen. Wenn Sie also ohne Störung zum nächsten Teil des Pfades gelangen können, dann geht sie dorthin.
Manchmal stößt sie unterwegs auf kleine oder sich bewegende Objekte. Der Falke schaut nach vorne und fliegt über oder in die Nähe dieser Objekte. Der Stein ist groß genug, um mit dem üblichen A * -Algorithmus zu navigieren, aber ich habe ihn dazu gebracht, ihn vorerst zu vergessen. Um den Felsen zu umgehen, dreht sich der Vogel nach links - rote Linien zeigen, wo er in den letzten Frames ausgesehen hat. Normalerweise versuche ich dies nicht zu tun, aber A * Navigation kann einen Vogel unter Bögen oder Brücken fliegen lassen.
Die letzte Logikstufe des Vogelfluges ist die Logik des Manövrierens selbst, die Wahl, wie schnell der Vogel fliegen möchte, wie viel er steigen oder senken muss, wie er sich schnell drehen muss, wie er physische Beschleunigung anwendet und welche Einschränkungen seinen Aktionen auferlegt werden, um zum Endpunkt zu gelangen. Diese Daten werden an das Animationssystem übertragen und informieren darüber, wie aktiv der Vogel arbeitet, in welcher Haltung er sein sollte, ob er sich biegen sollte usw. Das Ausweichen von Objekten ist ziemlich stark mit diesem System verbunden, aber die gesamte A * -Navigation wird vollständig separat ausgeführt. Es verwendet eine große Menge an Mathematik und Logik.
Federn und Rendering
Erzählt Ben Golus.
Die kleinen Federn am Körper oder die Konturfedern unseres Vogels schwanken vom Wind und reagieren auf die Hände des Spielers, die sie glätten, um ein tieferes Gefühl für taktile Interaktivität zu erzeugen. Die Implementierung der Federn in der PAX-Demo war ein Hack, daher hoffe ich, sie vor der Veröffentlichung des Spiels zu ersetzen. (Dies bedeutet natürlich, dass diese Lösung im fertigen Spiel implementiert wird.) Kurz gesagt, jede kleine Feder eines Vogels wird als mehrere Shader von Gras oder Vegetation betrachtet. Um das einfache Geräusch von Federschwingungen zu berechnen, werden mehrere überlappende Sinuskurven berechnet, die den Federn ein natürliches Aussehen verleihen. Ihre vorübergehenden Änderungen werden für jeden Stift auf einen zufälligen Wert verschoben, der in der Farbe des Scheitelpunkts gespeichert ist, und die Bewegung des Wobbels skaliert ebenfalls entsprechend der Farbe des Scheitelpunkts. Dies bedeutet, dass sich die Basis der Federn im Gegensatz zu den Enden nicht bewegt. Es bedeutet auch, dass lange Federn mehr bewegen als kurze.

Wir möchten, dass sich die Federn nicht wie bei den meisten Grasshadern in zufällige Richtungen bewegen, sodass Sie die Richtungen der Welt oder des lokalen Raums nicht verwenden können. Außerdem sind sie mit Hautbildung im Netz, was die Richtung noch dynamischer macht. Daher habe ich eine Kombination aus Normalen und Tangentenscheitelpunkten der Federn verwendet, so dass die Federn sowohl in Bezug auf ihre Ausrichtung als auch in verschiedene Richtungen schwankten. Das System ist nicht sehr genau, aber bei so kleinen Bewegungen werden Fehler fast nicht wahrgenommen.
Um Interaktionen mit der Hand in der Hand des Spielers zu verarbeiten, gibt es ein Skript, das Knochen verfolgt und eine Liste von Kapseln erstellt, die der Form jedes Fingers folgen. Eine Kugel wird als Handfläche verwendet. Befindet sich die Hand in Reichweite, umgeht der Vertex-Shader die Liste der Kapseln und findet den kleinsten Abstand zu einer von ihnen. Skaliert dann das Wackeln sanft, wenn die Kapsel sie kreuzt. Zusätzlich werden Federn auf den Körper gedrückt. Kapseln sind überdimensioniert, weil Überlappungsprüfungen weich sind, dh sie wechseln nicht abrupt, sondern mit einem reibungslosen Übergang. All dies ist ungefähr so konfiguriert, dass der sichtbare Finger, wenn er den Stift berührt, vollständig anhält und herunterhängt.
Hier ist ein Test einer früheren Version dieses Systems. Sie können sehen, wie die Federn auf die Kugel reagieren, noch bevor sie sie berührt, aber die Wechselwirkungen sehen immer noch überzeugend aus.
Für die endgültige Veröffentlichung des Spiels möchte ich ein System mit einem geometrischen oder rechnerischen Shader erstellen, das einige der Probleme löst, die beim Berühren nur eines Scheitelpunkts der Federn auftreten, und die Tatsache beseitigt, dass sich die Normalen zum Beleuchten der Federn beim Berühren nicht ändern.
Falcon Wound InformationWir wollten irgendwie zeigen, wann der Vogel verletzt war, und gleichzeitig keine Gesundheitsbänder oder ähnliche Mechaniken verwenden. Um zu zeigen, dass der Vogel müde oder verletzt ist, werden Animationen verwendet, aber wir konnten den Benutzern immer noch nicht klar mitteilen, dass er Schaden erlitten hat. Um ihren Zustand klar zu vermitteln, beschlossen wir, ihre körperlichen Verletzungen mit Blut und zerzausten Federn zu zeigen. Eine naheliegende Lösung wäre, die Materialien zu ersetzen. Wir wollten jedoch eine allmähliche Zunahme des Schadens zeigen und nicht nur ein hartes "Essen / Nein", und wir wollten nicht viele verschiedene Karten erstellen. Wir hatten auch ein Problem mit der Tatsache, dass die meisten Federn die gleichen UV-Koordinaten verwenden, dh der gesamte Vogel wird mit Blutflecken bedeckt sein.
Als Ergebnis kamen wir zu einer zweiteiligen Lösung. Der erste war Federschaden und zerzaust. Der Alphakanal jedes Stifts ist auf spezielle Weise abgestimmt, sodass beschädigte und unbeschädigte Versionen in Alpha mit unterschiedlicher Deckkraft vorliegen. Um zwischen den beiden Zuständen der Federn zu wechseln, wird eine Alpha-Wert-Prüfung verwendet (tatsächlich ist es Alpha-to-Coverage). 50% Opazität zeigen normale Gesundheit an und 25% Opazität zeigen Wunden an.
Bei Blutflecken hat der Vogel die zweiten UV-Koordinaten der Bluttextur, sodass wir die UV-Koordinaten der Stifttextur nicht wiederverwenden müssen. Blut wird über die Grundtextur gemischt. Infolgedessen benötigen wir nur einen Satz grundlegender Texturen, einen Satz Bluttexturen, und dies reicht aus, um unterschiedliche Auswirkungen von Wunden auf den Vogel zu erzielen.
Predator klingt
Erzählt von Rob Piersall.
Wir wollten nicht, dass sich der Vogel von einem anderen Vogel auf der Welt unterscheidet (zum Beispiel futuristisch oder magisch), sondern kombinieren einfach die verschiedenen Merkmale mehrerer fliegender Raubtiere (fügen Sie einfach einen Hut hinzu). Daher war es sinnlos, für sie eine Stimme zu kreieren, die „mit filmischer Qualität“ klang - genug, um sie zum Laufen zu bringen und glaubwürdig zu sein.
Mit anderen Worten, ich könnte mir die Schreie eines jeden Raubtiers „ausleihen“, das dem Spieler Informationen über die unterschiedlichen Stimmungen, Gefühle und Reaktionen des Vogels übermittelt. Ich hörte den Geräuschen von Raubtieren zu. Zu meiner Überraschung war der größte und beeindruckendste Raubtier - der Adler - der klanglich schlechteste von allen. Es stellte sich heraus, dass es das erste in der Liste der "besser nicht zu verwenden" war.
Hawk ist immer eine gute Wahl. Jeder liebt den Schrei eines Falken. Früher dachte ich, dass alle Toningenieure eine Aufzeichnung von Falkenschreien haben und dass alle Falken in allen Filmen den gleichen Ton haben. Aber das ist nicht so. Wie sich herausstellte, klingen alle diese Falken gleich. Fast keine Unterschiede. Versteh mich nicht falsch, der Klang ist ausgezeichnet, also ... ja, für unseren Vogel haben wir ihn auch benutzt. Das ist aber noch nicht alles.
Das Beste von allem war, dass ich mich nicht auf eine bestimmte Falkenart beschränken musste; und es gibt viele dieser Arten. Daher konnte ich alle geeigneten Geräusche auswählen, die von einem Falken abgegeben wurden und die nach meinem Geschmack wie eine Art emotionale Aussage eines Vogels aussehen würden.
Es ist sehr praktisch, dass das Spektrum der Emotionen begrenzt war. Ich werde sie Vogelnachrichten nennen:
- Alles ist ruhig, alles ist gut
- Ich habe gehört, dass du mich anrufst
- Angreifen
- Ich bin verletzt, fliege aber trotzdem
- Es tut weh
Das Aufnehmen des Geräusches eines genervten Raubtiers ist sehr einfach; es reicht aus, mit Aufnahmegeräten auf seinem Territorium zu erscheinen, und er wird bereits verärgert sein. Daher gibt es viele Materialien, in denen Raubtiere wütend und böse klingen. Sie eignen sich für Geräusche von "Schmerz". Die Geräusche des Falken waren für Rückmeldungen im Flug und Berichte über einen Angriff geeignet. Mit den Geräuschen "Alles ist ruhig" gab es Schwierigkeiten. Es kamen verschiedene Arten von Twitter auf mich zu, aber dann musste ich viele verschiedene Arten von Nachrichten bearbeiten, um teilweise, kurze, durchdringende Schreie zu erhalten, die Twitter entsprachen, und sie kamen für das Spiel.
Das Verfolgen eines Vogels in einem Spiel per Ton ist eine ganz andere Geschichte für einen anderen Artikel.