Unigine Motor
Beginnen wir mit der Unigine-Version. Wir verwenden die Version 2.11, die in diesem Frühjahr veröffentlicht wurde und mit der eine kostenlose Lizenz in der Engine erschien. Im Moment ist 2.12 raus und 2.13 wird bald erwartet.
Was allgemein über Unigine wissenswert ist, ist eine Tomsk-Spiel-Engine, die häufig für Benchmarks und Simulationen verwendet wird. Im Laufe der Jahre wurden Spiele wie Oil Rush, Cradle und hier beispielsweise das relativ junge mmo Dual Universe veröffentlicht.
Im Inneren werden viele interessante und vielversprechende Lösungen verwendet, die ein sehr schönes Bild ergeben und für Künstler sehr attraktiv sein können, insbesondere wenn sie in einem separaten 3D-Paket und nicht mithilfe der Engine selbst modellieren.
Das Gelände ist sofort einsatzbereit, ebenso wie Wasser, Wolken, Volumen, Projektoren und andere nützliche Dinge. Verschiedene Masken werden für Details und andere Dinge über das Gelände gelegt - ein sehr cooles Werkzeug zum Erstellen von Landschaften, obwohl in Bezug auf die Benutzerfreundlichkeit Raum für Verbesserungen besteht.
Als Werkzeug für einen Spieleentwickler kann hier im Prinzip die Erfahrung mit C # in Unity angewendet werden, obwohl Unigine nicht über die gleiche Vielfalt an vorgefertigten Komponentenlösungen verfügt. Trotzdem sind einige grundlegende Dinge implementiert, und die Dokumentation hilft Ihnen beim Schreiben des Restes. C ++ ist auch nirgendwo hingegangen.
Die Engine ist noch nicht für eine mobile Plattform sowie für die Entwicklung ohne Programmierung geeignet (obwohl geplant ist, sie auch in diesen Bereichen zu entwickeln). Hardwareanforderungen auf der Ebene der unwirklichen Abfrage, die minimale Größe der Anwendungsdatei ist ziemlich groß. Aber es ist schön und gut optimiert.
Aber zurück zum Spielprototyp. In der Unigine-Version waren die Hauptschwierigkeiten mit der visuellen Gestaltung der Physik für eine Schreibmaschine verbunden, da die Dokumentation vorschlägt, dies alles blind durch Code zu tun. Außerdem sind alle Arten von physischen Einstellungen an verschiedenen Stellen des Editors verteilt und die visuelle Baugruppen-Pipeline selbst wird nicht beschrieben. Das heißt, es gab kein triviales fertiges Beispiel, das modifiziert werden konnte, ohne in alle Nuancen einzutauchen. In 2.12 erschien eine Demo mit einem Traktor, der den Boden grub, aber vielleicht wird sie wieder per Code zusammengebaut, ich habe diesen Moment nicht gesehen.
Wie dem auch sei, ich habe die Maschine mehr oder weniger zusammengebaut und mich auf die Dokumentation konzentriert. Über das, was ich zuvor in dem entsprechenden Artikel geschrieben habe: Wie ich die Physik der Räder in Unigine gesammelt habe .
In Bezug auf das Gameplay stellte sich in Unigine im Gegensatz zu Unity und Godot zum Beispiel heraus, dass es ziemlich einfach war, die Physik des Autos im laufenden Betrieb zu ändern, nicht nur die Optik, sondern auch die Position / Größe der Räder. Ohne zusätzliche Tricks zu entwickeln, um nicht durch den Boden zu fallen, und ohne das Modell neu aufzubauen. Es besteht zwar eine gewisse Wahrscheinlichkeit, in die Textur zu fallen, jedoch in völlig anderen Situationen und nicht zum Zeitpunkt des Wechsels der Schreibmaschine.
Das Konzept eines einzelnen Fahrzeugs, das einfach seine Formen ändert, transformiert, anpasst, sieht, was in anderen Dimensionen geschieht usw., passt gut zu all dem. Zumindest könnte das Hauptspiel um solche Umschaltungen herum aufgebaut sein, wenn auch nicht unbedingt.
Was an der Engine traurig ist, ist das Zusammenstellen der Benutzeroberfläche aus dem Editor - irgendwie ist alles umständlich, wobei für jedes interaktive Element separate Skripte hängen. Obwohl ich hier nur die Implementierung bearbeitet habe, die in den Beispielen enthalten war, habe ich nicht viel verstanden, außerdem habe ich nicht sofort herausgefunden, wie die GUI-Ebene angezeigt werden soll, um die visuelle Darstellung im Editor zu sehen.
Wenn wir dagegen ein konsolenorientierteres Spiel meinen, bei dem das Gameplay an eine kleine Anzahl von Schaltflächen gebunden ist, die Benutzeroberfläche nur minimal verwendet wird und die Elemente der Benutzeroberfläche minimal sind, ist dies kein erkennbares Problem mehr.
Eine weitere deprimierende Sache sind einfache Animationen, die auf einem internen Instrument aufgezeichnet wurden - einem Tracker. Ja, es ist auf seine eigene Weise mächtig, aber irgendwie zu quadratisch verschachtelt, um es zu verwenden. Darüber hinaus kann die auf diese Weise aufgenommene Animation nur mit der veralteten UnigineScript-Sprache abgespielt werden. Während Sie in Unity oder Godot sind, können Sie buchstäblich alles rund um den Umfang animieren. Ja, Sie können Knochenanimationen importieren, aber das ist etwas anders (außerdem habe ich diese Methode noch nicht ausprobiert und weiß nicht, wie sie ist).
Wenn Sie es noch einmal von der anderen Seite betrachten, konzentriert sich die Engine immer noch mehr auf physikalische Simulationen und Interaktionen. Warum also nicht diese verwenden, anstatt dort einige voreingestellte Animationen zu backen - das heißt, einige Emitter, Schalter, interagierende Strukturen, Aufbringen von Kräften, Verwenden der Schwerkraft und so weiter. Sie können also auf einen internen Animator verzichten, aber wenn dieser ordnungsgemäß implementiert wurde, ist dies auch eine große Sache, auch wenn dies nur in Bezug auf die Richtung geschieht. Mit wenigen Klicks können Sie einen Kameraflug über die Bühne mit allen möglichen interaktiven Elementen aufzeichnen, und hier haben Sie einen fertigen Film. Darüber hinaus mit solchen Möglichkeiten für ein filmisches Bild.
Was mein Projekt betrifft - im Moment habe ich nach mehreren Iterationen endlich eine mehr oder weniger solide Demo zusammengestellt und veröffentlicht, die getestet werden kann.
Das Archiv für Win64 kann hier heruntergeladen werden (Gewicht 687 MB): DROPBOX
oder auf der itch.io-Seite: NEWANGERS
entpackt dauert 3 GB
Was ist da:
- Der Build verfügt über drei Hauptanzeigemodi: "Tag" und "Nacht" (mit Voreinstellungen für hohe Grafikeinstellungen) und "a la Comic" -Modus (mit niedrigeren Grafikeinstellungen).
- Um zwischen den Modi zu wechseln, drücken Sie die Esc-Taste, sodass der Mauszeiger angezeigt wird, und wählen Sie die gewünschte Option im Menü oben links aus.
- Auf den Ebenen befinden sich interaktive Objekte - blaue sternförmige Portale, durch die das Auto in andere Welten transportiert wird, und Sie können zurückkehren, indem Sie von dieser Seite in das Portal fahren.
- Viele Objekte des Levels sind durchlässig, aber einige haben Kollider und die Level selbst sind mehr oder weniger von blockierenden Wänden umgeben.
- , , WASD. Q E. , , , R. Tab , , , .
- , .
- 1,2,3,4,5,6,7 — . .
- , «» .
- PgUp , . PgDown — .
- P — , L — .
Ein Freund hat die früheren Quellen dieses Prototyps auf seiner Seite veröffentlicht, zusammen mit einigen Änderungen an der Physik der Räder der Originalversion: GITLAB .
Godot Motor
Fahren Sie mit dem nächsten Motor auf unserer Liste fort. Eine kompakte Open-Source-Lösung mit enormen Funktionen (Blender aus der Welt der Game-Engines), die jedoch hinsichtlich der Vielfalt der vorgefertigten Komponenten der gleichen Einheit immer noch unterlegen ist. Obwohl bereits viele verschiedene inoffizielle Lösungen sowie Beispiele mit Quellcodes für Godot geschrieben wurden und aufgrund der relativen Einfachheit / Geschwindigkeit der Implementierung der neuen Funktionalität kann ich derzeit nicht sagen, dass dies ein Problem ist.
Godot hat dank der Vielzahl gut entwickelter Tools speziell für 2D einen besseren Ruf als 2D-Engine, aber sie sind ein zusätzliches Plus für 3D - es ist viel einfacher, eine Spiel-Benutzeroberfläche zu erstellen. Noch einfacher als in Unity, was mich betrifft. Im Moment hat Godot in seiner Entwicklung die stabile Version 3.2.3 erreicht (aber jeder wartet wegen des Vulkans, der Optimierungen usw. auf 4. Wackelige Baugruppen der vier können Sie übrigens schon versuchen - zumindest das Bild bewerten).
Die Engine benötigt keine leistungsstarke Hardware für 3D-Grafiken und liefert ein recht anständiges Bild. Es gibt nicht viele vorgefertigte dreidimensionale Werkzeuge, aber einige der notwendigsten, nützlichsten und universellsten wurden implementiert. Gleiches gilt für Optimierungen. Zum Beispiel implementiert der Motor das übliche Frustrum-Culling, bei dem die Geometrie aus dem Sichtfeld der Kamera herausgeschnitten wird. Okklusions-Keulung (um die durch Wände geschlossenen Objekte nicht zu zählen), müssen Sie die Implementierung selbst erstellen (was nicht so schwierig ist, insbesondere an einigen Stellen und nicht in jedem Spiel, das Sie benötigen). Auch im Motor gibt es keine Stapelverarbeitung von Geometrie (obwohl es teilweise für gles2 gibt) und Gelände, aber dies ist kein solches Problem. Sie müssen nur etwas manuell optimieren - einige Maschen zusammennähen, die Geometrie in kleine Teile zerlegen oder Stücke verwenden und so weiter Des Weiteren.Sie können eine Art Implementierung in einem lokalen kleinen Geschäft finden, indem Sie beispielsweise Ihrem Projekt eine vorgefertigte Geländelösung hinzufügen.
Die Benutzeroberfläche der Engine ist übrigens sehr durchdacht und anpassbar (obwohl es einige unflexible Elemente gibt). Es ist im Allgemeinen bequem zu bedienen. Es gibt genügend unterstützte Sprachen für verschiedene Immersionsstufen. Es gibt sowohl C ++ als auch C # und ein recht praktisches internes GDScript, das direkt im Editor ausgeführt wird, ohne dass eine separate Umgebung gestartet werden muss. Visuelles Scripting ist ebenfalls vorhanden, so dass Godot ohne Programmierkenntnisse auch durchaus leben kann - um eine minimale Logik zu entwerfen, etwas zu animieren (Godot hat ein einfaches und cooles Tool zum Aufzeichnen von Animationen).
Das geringe Gewicht der Anwendung, die Multiplattform, die Entwicklungsgeschwindigkeit und die einfache Implementierung verschiedener Lösungen von Drittanbietern sind ebenfalls wichtige Vorteile des Motors. Es gibt zwei Rendering-Optionen - gles2 und gles3, beide unterstützen 3D, aber im ersten Fall ist es einfacher und im Allgemeinen besser für 2D- und Mobiltelefone geeignet. Gles3 bietet eine erweiterte Grafikstufe, die von einigen Mobilgeräten auch unterstützt wird.
Kommen wir zu einem Spielprototyp, der auf dieser Engine basiert. In Godot ist ein einfaches physisches Fahrzeugmodell fast sofort einsatzbereit, sodass es ziemlich einfach war, Ihre Autos hierher zu bringen.
Bei denen einige Probleme auftraten - es ist nicht so einfach, in ein gestartetes physisches Objekt einzugreifen, es beispielsweise von einem Punkt zum anderen zu teleportieren oder die Position des Rades des Autos im laufenden Betrieb zu ändern. Daher funktioniert hier ein Trick wie in Unigine nicht, und nach meinem Verständnis ist es in Godot einfacher, ein Objekt neu zu erstellen, als die physikalische Konfiguration oder ähnliches im laufenden Betrieb zu ändern. Tatsächlich ist dies alles nicht besonders notwendig, und in diesem Prototyp bin ich gerade zur Standardidee des Gameplays zurückgekehrt, wenn Sie für verschiedene Autos fahren und irgendwo an bestimmten Orten von einem zum anderen wechseln.
Godot verfügt über interessante Tools wie CGS-Objekte und Multi-Meshes. Ich habe in dem Artikel ausführlicher über die Merkmale ihrer Verwendung geschrieben: Godot, 1000 kleine Dinge
Der Prototyp des Nevanger auf diesem Motor erhielt einen separaten Namen -Wilde Motoren . Im Allgemeinen fühle ich mich wie eine Familie ähnlicher Projekte, die durch das Konzept seltsamer Autos, die durch fremde Welten fahren, vereint werden. Und als Arbeitskollektivname nannte ich sie Nevangers, bis ein spezifischerer Name auftauchte. Der Godot-Prototyp hat jetzt einen eigenen Namen. Die auf Version 0.9 von Unity angehaltene Version (mit der alles begann) hat ebenfalls einen anderen Namen, aber darauf wird später noch eingegangen, wenn Zeit ist, darauf zurückzukommen.
Zuerst hatte ich keine besondere Vorstellung davon, was ich in der Wild Engines-Demo implementieren möchte. Ich habe nur Skizzen von Levels erstellt und versucht zu verstehen, wie ich das Gelände besser implementieren kann und welche Möglichkeiten ich sehen möchte. Dann kam mir die Idee, die Kamera hinter die Maus zu bewegen, und es wurde möglich, ein kontrollierteres Zielen der Waffe als in anderen Versionen zu realisieren. Daher wird sich dieser Prototyp wahrscheinlich mehr auf die Verwendung von Aufnahmen konzentrieren.
Unterwegs begann ich, ein Level aus Plattformen zusammenzustellen, die aus kleinen Blöcken bestanden, und versuchte verschiedene Ansätze zur Optimierung und Messung der Leistung. Optimierungen durch Optimierungen, aber irgendwann habe ich den für die Kamera sichtbaren Bereich bereits so stark mit Geometrie gefüllt, dass der Editor die gesamte Laufszene nicht mehr abruft und fehlerhaft ausfällt. Dies wurde behoben, indem mehr Speicher in die Einstellungen aufgenommen wurde. Dann nahm ich die Plattformgenerierung mehr in den Code auf und ließ nur vereinfachte Dimensionsblöcke mit Bezeichnern auf der Bühne, die selbst die erforderliche Plattform in sich selbst luden, als das Spiel gestartet wurde. Dann habe ich die Menge des verwendeten Speichers auf einen niedrigeren Wert zurückgesetzt und den Pegel ohne Probleme um ein Vielfaches erhöht. Darüber hinaus besteht bei einer solchen Implementierung immer die Möglichkeit, bereits geladene Plattformen wiederzuverwenden und an andere Stellen in der Ebene zu verschieben.wenn die Maschine in diese Richtung fährt, um den ebenen Raum mit ihnen praktisch bis unendlich mit den gleichen Ressourcen und ohne Übergänge zeichnen zu können.
In ähnlicher Weise habe ich später in Unigine Skizzen eines ähnlichen Levels gesammelt. Nur dort zieht der Editor sofort die gesamte Szene, ohne dass Plattformen durch Code in Blöcke geladen werden müssen (für Unigine wird jedoch ein viel leistungsfähigerer Computer verwendet).
In der Demoversion von Wild Engines gibt es daher 4 Autos, von denen eines zum Starten ausgewählt werden muss, und zwei kleine Level (Level A und Level B). Ein paar frühe Karten sind ebenfalls geblieben (Level 0 und 1), aber sie sind noch mehr Test und die Landschaft dort ist nicht optimiert.
Der Vollbildmodus und die Schatten können im Menü ein- und ausgeschaltet werden.
Die Tasten 1, 2 und 3 ändern die Position der Kamera. Die Maus zielt und dreht die Kamera, je weiter der Cursor von der Mitte entfernt ist.
WASD - bewegen. PgDown - springen. Q - zufälliger Impuls.
Linke Maustaste - Schuss.
Mit der Eingabetaste wird ein Hinweis zur Steuerung angezeigt und eine Schaltfläche zum Zurückkehren zum Hauptmenü, in dem Sie die Maschine / Stufe ändern können.
Win64-Version (42 MB): DROPBOX wildengines_x64
Linux-Version (44 MB): DROPBOX wildengines_linux
Bonus
Und hier ist einer der neu aufkommenden neuen Mechas, der Nekromant:
Sie können es in der Unigine-Version fahren.
Ein weiterer neuer Mechos, pink mit blauer Hintergrundbeleuchtung, Debag, ist hier und da.
Es lag auch eine alte Patrone herum ... was denkst du, Klone, von denen Acht-Bit-Spiele unter diesem Namen auf einer chinesischen Patrone versteckt sein könnten, wenn Vangers in jenen fernen Zeiten ein weltberühmtes Franchise wäre?
