Nach einer Reihe von Iterationen ist der Prototyp des "space" jrpg, der auf der Godot-Engine entwickelt wurde, endlich zur ersten Demoversion gewachsen. Win64- und Linux-Optionen sind verfügbar. Unten finden Sie Details darüber, was war, was war und wohin das kleine Raumschiff fliegt.

Rahmen
Die grundlegenden Gameplay-Skizzen nahmen ziemlich schnell Gestalt an, als ich vom Durchdenken der grundlegenden Konzepte zum Erstellen eines Spielprototyps innerhalb der Spiel-Engine überging. Zuerst erschien der Startbildschirm, die Szene der globalen Karte mit Bewegung und die Möglichkeit, das Inventar aufzurufen. Gleichzeitig wurde eine anfängliche Architektur erdacht - wie genau einzelne Module geladen und Informationen zwischen ihnen ausgetauscht werden können.
Dann erschien der Kampfbildschirm, der zuerst über einen separaten Knopf gestartet und später mit einer Kollision mit Feinden verbunden wurde. Später wurde der Planetenbildschirm hinzugefügt, die Planeten hatten zu diesem Zeitpunkt einen Informanten auf der globalen Karte, wo die Besuchsschaltfläche hinzugefügt wurde. Andere Arten von interaktiven Objekten, die vom Informanten ausgegliedert wurden, z. B. eine Station, die keinen Zugang zu ihrem internen Bildschirm impliziert, aber manchmal eine externe Funktionalität mit der Fähigkeit hat, auf etwas zu klicken oder etwas auszuwählen. Oder die Ressourcen, die aufgenommen werden - kosmischer Pollen.
Als nächstes musste die maximal mögliche Anzahl von Helden realisiert werden (zwischen 3 und 4 wählen, ich habe immer noch das Konzept einer Gruppe von 3 gewählt), was getan wurde. Dabei wurde die Anzeige des Schadens hinzugefügt, die Auswahl der Ziele für den Angriff, etwas Musik.
Zu diesem Zeitpunkt war es bereits möglich, eine Mini-Demo hochzuladen, aber ich beschloss, das Projekt zunächst in einem komplexeren Zustand abzuschließen, damit besser verstanden wird, was es ist und wie es ungefähr funktionieren sollte. Fügen Sie unterwegs einige Inhalte und Verzierungen hinzu, z. B. Sprachausgabe und Animationen.
Weitere Informationen zum Konzept und zur grundlegenden Implementierung finden Sie in den folgenden Artikeln:
Microspace-Projekt
Iteratives Spieldesign, Godot und die Welt der kleinen Planeten

Prototypenentwicklung
Werfen wir einen Blick auf die verschiedenen Bereiche, in denen diese Entwicklung stattfand:
Kampf Die
Anzahl der verfügbaren Schiffe nahm allmählich zu, ebenso wie die Anzahl der verfügbaren Feinde. Deshalb habe ich ihre Kampfdarstellung und Kontrolllogik Schritt für Schritt in eine universellere Version umgeschrieben. Das war nicht so schwierig, da ein solcher Ablauf vorgesehen war und etwas im Code im Voraus optimiert wurde.
Um eine Schlacht zu gewinnen, erhält die Gruppe je nach Art des Feindes eine bestimmte Menge einer der vier Arten von Ressourcen (Essenz, Mana, DNA oder Materie). Die Gruppe der Feinde hat auch einen gemeinsamen Typ. Charaktere, die zum Schaden beigetragen haben, gewinnen Erfahrung (obwohl dies ihnen noch nichts gibt).
Die Schadensanzeige wurde ursprünglich über eine 3D-Ansicht implementiert - ein Ansichtsfenster mit einer Schadenslinie auf einem der Kamera zugewandten Polygon. Dies funktionierte mehr oder weniger, obwohl die Implementierung für mich technisch nicht sehr angenehm war, da alles ein wenig mit dem Ansichtsfenster verwechselt ist. Sie müssen es näher an die Wurzel der Szene hängen, damit es keine Fehler gibt, und es ist etwas schwieriger zu überprüfen, wie der Effekt aussieht, als mit einer einfachen 2D-Zeilenausgabe. Daher wollte ich nicht viele Ansichtsfenster starten, sondern nur eines. Dabei wurde das Polygon, das es anzeigt, bei Bedarf verschoben und gleichzeitig vergrößert / verkleinert. Man muss aber auch denken, dass es eines Tages Fähigkeiten geben wird, die massiven Schaden verursachen, und dass mindestens drei Symbole gleichzeitig mit Schaden angezeigt werden müssen (obwohl Sie auch hier eine Art Animationswelle aus demselben Objekt oder sogar erstellen können noch ein paar Ansichtsfenster).
Als ich dem Prototyp jedoch einen Vollbildmodus hinzufügte, verschwammen die Schadenszahlen dort merklich so stark, dass ich noch mehr andere Optionen für die Anzeige von Schäden in Betracht ziehen wollte. Im Prinzip könnte ich die Kamera nur im Kampf reparieren, aber aus irgendeinem Grund behalte ich weiterhin die Möglichkeit, sie zwischen dem Warten auf eine Aktion zu drehen.
Also habe ich den Schaden neu geschrieben. Jetzt haften die 2D-Linien an der Projektion der Position des 3D-Objekts. Obwohl es hier auch einige Nuancen gibt, z. B. wenn Sie die Kamera wegdrehen, werden sie weiterhin angezeigt, oder wenn sie kontinuierlich in jedem Bild angezeigt werden, ist es möglich, die aktuelle Kamera an einer Position aufzuhängen, dies ist jedoch bereits lösbar.
Um den Testprozess zu beschleunigen, wurde vor langer Zeit ein spezieller, als ob nicht spielbarer Knopf für den automatischen Sieg gemacht, wenn er den Kampf verlassen musste. Auch lange gab es keine Möglichkeit zu verlieren. Dann fügte ich "Einfrieren" der Schiffe hinzu, als ihr Streifen auf Null zurückgesetzt wurde, und dann bot sich eine vollwertige Implementierung des Verlusts der Schlacht an. Zu diesem Zweck habe ich zuerst den Auto-Win-Button in die Kategorie der vollwertigen Spieloptionen übertragen, mit dem einzigen Unterschied, dass es sich nun um einen Notfall-Auto-Play-Button handelt, der den Exit-Dialog startet. Und dann fügte er einige Fehler hinzu, um den Kampf automatisch ohne Haltbarkeit aller Schiffe zu beenden, was auch diesen Dialog verursachte.
Nachdem der Feind in einer Schlacht besiegt wurde, verschwindet er und die Haltbarkeit jedes Schiffs der Gruppe in der nächsten Schlacht beträgt 10. Übrigens gibt es noch keine Obergrenze für die Haltbarkeit und verschiedene Behandlungen können verwendet werden, um die Haltbarkeit über die Basiswerte hinaus zu erhöhen.
Schiffe und Feinde
Alles ist einfach - es war drei, jetzt ist es zehn. Jeder musste Parameter und ein eigenes Symbol festlegen und diese schrittweise in das Gameplay und die Optionen für die Auswahl der Schiffe aufnehmen. Zuerst wurden neue Schiffe auf der Weltkarte und auf der Suche nach Planeten verfügbar, dann wurden sie schrittweise in die Schlacht integriert.
Darüber hinaus kamen Gegner mit unterschiedlichen Ansätzen hinzu. Ein Feind, ein paar verschiedene Feinde, ein Paar desselben, ein größerer Feind mit zwei Angriffen, ein Mini-Boss, der aus mehreren Teilen besteht.
Raumschiffe im Kampf können ihren Standardangriff ausführen. Ihr Schaden soll behoben und an die möglichen zukünftigen Ebenen der Schiffe gebunden werden. Ein Standardangriff kann auch durch einen Schadensbonus und / oder einen Heileffekt verstärkt werden. Dieser wird dann neben den Schiffsindikatoren mit kleinen lila und grünen Zahlen angezeigt.
Der Schaden von Schiffen und Feinden wird zusätzlich durch die Kombination ihrer Typen beeinflusst. Vertreter des gleichen Typs fügen sich gegenseitig mehr Schaden zu, während Antagonisten (Paare: Magie / Technologie, göttlich / evolutionär) - weniger.
Die vier Schiffe haben persönliche Fähigkeiten, die im Kampf eingesetzt werden können. Dies sind der Drifter (die Fähigkeit verursacht Schaden und erhöht den nächsten Angriff), Spira (fliegt in die Zukunft, eine Runde vorwärts, erhält bei der Rückkehr Bonusschaden für den nächsten Angriff), Trinity (verursacht nur Schaden) und Otomo (die Heilung erhöht sich auf) nächste Angriffe).
Ein bestimmter Prozentsatz der Schiffsenergie wird für den Einsatz von Fähigkeiten aufgewendet (im Moment wird diese Energie durch nichts wiederhergestellt). Bei anderen Schiffen ist die Schildstummelfähigkeit anstelle ihrer persönlichen Fähigkeit installiert, die eine Animation abspielt, aber keine Auswirkung hat.
Fähigkeiten und Charaktere
Wenn die Schiffe eine Art Analogon der Hauptfiguren sind, dann sind die Charaktere, die sie tragen, eine Art Analogon der Waffen dieser Helden. Einer der wichtigen Punkte, die ich im Projekt berücksichtigen wollte, ist die Verwendung eines Systems von Kennungen, die den Effekt einer nicht zufälligen Chance haben, und mit einer breiteren Verwendung können sie dazu dienen, ein Psvedo-Diagramm zu erstellen. In einfachen Worten, Charaktere, Schiffe und Feinde haben spezielle IDs, mit denen Sie das Ergebnis der Interaktion eines dieser Objekte berechnen und es irgendwie verwenden können.
Im Moment wird dieses Ergebnis wie folgt verwendet. Erstens hat jeder Charakter und jedes Schiff einen Kompatibilitätseffekt. Das heißt, sobald der Charakter an Bord des Schiffes ist, kann er beispielsweise in Panik geraten, einschlafen oder nicht verstehen, wie er mit seinen Systemen umgeht. Jetzt wird das Ergebnis der "Schiff-Passagier" -Verbindung und der mögliche zusätzliche Effekt, den sie mit sich bringt, einfach im Inventarfenster angezeigt. Dies spiegelt sich jedoch noch nicht in der Teilnahme des Charakters am Kampf wider.
Charaktere können direkt im Kampf durch die Option "Crew" "angegriffen" werden. Dies ist nicht nur ein Charakter, der eine bestimmte Aktion ausführt, z. B. einen bestimmten Zauberspruch oder einen Schuss mit einer Waffe. Dies ist eine bestimmte Situation, die eine gewisse Anzahl von Verlusten des Feindes mit sich brachte. Die Verbindung "Passagier-Feind" funktioniert hier bereits, was von der Außenwelt (in diesem Fall dem Weltraumsektor) in eine von neun Konsequenzen interpretiert wird: # LICHT, # DUNKELHEIT, # MUSIK, # THEORIE und so weiter. Das heißt, der Spieler kann sich assoziativ vorstellen, was der Charakter getan hat, was das Ergebnis mit einer solchen Formulierung war (oder vielleicht auch nicht - Assoziationen sind optional, zumal sie noch irgendwo im Hintergrund von selbst funktionieren).
Jeder Feind hat Schwachstellen oder Widerstand gegen bestimmte Arten von Konsequenzen. Der Schaden durch die Aktionen der Besatzung wird durch die Kombination der Schiffstypen nicht beeinflusst, dies ist ein separater alternativer Effekt. Wenn die Folgen zu null Schaden führen, erhält das Boot einen kleinen Bonus für seinen nächsten normalen Angriff.
Vielleicht wird die Verwendung des Identifizierungssystems in Zukunft noch weiter zunehmen. Auf denselben Planeten können beispielsweise ihre eigenen Bedeutungsauren funktionieren und die Interpretationstabelle ändern. Zunächst müssen Sie jedoch einige Ereignisse implementieren, an denen Bezeichner teilnehmen würden.
Einige seltene Charaktere haben aktive Fähigkeiten für Schiffe eines bestimmten Typs. Übrigens haben bisher nicht alle diese Charaktere unterschrieben, dass sie irgendeine Art von Fähigkeit verleihen (dies betrifft hauptsächlich diejenigen, die sich derzeit nicht im Hauptspielmodus befinden).
Wie dem auch sei, im Moment verlieren die Fähigkeiten der transportierten Charaktere nur den Dummy-Effekt (wie die meisten Gegenstände). Aber ein Held, Leto, hat eine passive Fähigkeit, die nicht an den Schiffstyp gebunden ist, und sie funktioniert bereits.
Spira und der Drifter können auch die Fähigkeiten von Charakteren ihrer Art erlernen (obwohl sie noch keinen Effekt haben), nachdem sie einmal mit ihnen gekämpft haben.
Artikel
Es war immer eine Frage der zweiten Priorität der Fracht, nachdem die Implementierung für die Charaktere bereits fertig war. Im Grunde ging es darum, ihre Zellen zu zeigen und Gegenstandsstummel zwischen ihnen zu bewegen. Aber später erschien ein aktivierter Gegenstand, Lebendig, der dem Schiff 100 Haltbarkeit zurückgibt. Zu diesem Zeitpunkt hatte ich gerade angefangen, die Kampfoption "Halten" zu aktivieren, und ich brauchte mindestens einen Gegenstand mit einem echten Effekt.
Was den Heilgegenstand selbst betrifft, war ursprünglich geplant, dass er einige Ladungen haben könnte und sie irgendwo wieder aufgefüllt werden könnten. Am Ende habe ich eine Ladung hinterlassen und sie so gestaltet, dass sich dieser Gegenstand bei Verwendung entladen und aus dem gesammelten kosmischen Pollen wieder aufladen kann.
Planetenbildschirm und Missionen
Auf den Planeten finden Sie verschiedene Prozesse und Ereignisse, die dort stattfinden. Einige gehen von Anfang an aus eigener Kraft, andere werden gestartet, wenn die vorherige erfüllt ist oder an bestimmten Tageslichtstunden erscheinen. Unter diesen Ereignissen gibt es bereits einige Aufgaben, die mit Hilfe des Spielers gestartet wurden, wenn er über die erforderliche Menge an Ressourcen verfügt.
Aus den Informationen zu Planetenereignissen können Sie auf die Registerkarte Schiffe wechseln, auf der Sie deren Laderaum und Besatzung anzeigen und ein bis drei ausgewählte Raumschiffe zur aktiven Gruppe bringen können. Auf den Planeten gibt es auch einen kleinen Raum für Charaktere und Objekte, von dem aus sie innerhalb von Schiffen bewegt oder im Gegenteil auf den Planeten fallen gelassen werden können.
Andere
Dem Inventar, das während der Raumflüge geöffnet wird, wurde eine Kompassoption hinzugefügt, mit der Sie zum ausgewählten Punkt fliegen können. Ein spezieller Zeiger mit der Entfernung zum Ziel wird angezeigt. Dieser Navigator funktioniert nur im Hauptspielmodus.
Darüber hinaus können Sie im Inventar Sounds und Musik ein- und ausschalten, das Hauptboot in der aktuellen Gruppe wechseln, den Vollbildmodus ein- und ausschalten und das Spiel über das Startmenü beenden.
Die Informationen über die Besatzung und die Besatzungsmitglieder sowie die Fracht im Inventar sind vereinfacht und können während des Fluges nicht verschoben werden. Eigentlich sind dies keine zeitlichen Einschränkungen, sondern eine spielmechanische Funktion - Sie müssen etwas ändern, was bedeutet, dass Sie den Planeten besuchen müssen.
An bestimmten Lichttagen werden jetzt spezielle Benachrichtigungen angezeigt. Diese Tage selbst werden durch den Besuch eines Planeten verschwendet (in Zukunft müssen Sie zwischen verschiedenen Planeten fliegen, um den Tag zu ändern).
Die Schriftarten einiger Elemente wurden schrittweise verbessert. Eine Reihe von Geräuschen ist erschienen - für den Kampf, für den Planetenbildschirm, für das Inventar. Natürlich lasse ich verschiedene kleine Dinge weg, wie das Hinzufügen einer Abbruchtaste, aber auch dies wird nicht aus dem Nichts genommen und erfordert Aufmerksamkeit. Sowie eine große Menge an völlig unsichtbarer Arbeit, um Code zu verbessern oder Strukturen neu zu schreiben, die visuell nichts ändern.
Außerdem wurde ein Rohling für spezielle Zonen mit einem "realistischen" Flug und einer Skala von Objekten erstellt. Sie können sich während des Spiels darin wiederfinden, indem Sie ein spezielles Objekt berühren. Im Inneren können Sie mit einem leicht veränderten Steuerelement ein wenig auf dem Trinity-Boot fliegen, und um auszusteigen, reicht es aus, bis zur Grenze dieses Gebiets zu fliegen.
Demoversion
Bereits unmittelbar vor dem Erscheinen der Demo wurde ein sequentieller Entwicklungsmodus als Hauptversion des Spiels erstellt - hier erhält der Spieler ein Startschiff (Drifter) und beginnt, den Sektor zu erkunden und neue Raumschiffe zu eröffnen, um sich der Party anzuschließen. In diesem Modus können Sie also zwei weitere Schiffe öffnen (Spira und Vanguard). Es gibt drei Planeten im Startsektor, die besucht werden können. Nachdem Sie eine spezielle Station repariert haben, können Sie in den zweiten Sektor wechseln und dort einen anderen verfügbaren Planeten finden.
Eine frühe Testversion des Ortes, an dem verschiedene Planeten und Feinde dichter platziert sind, ist in einem alternativen, weniger debuggten Spielmodus verfügbar - alle Schiffe testen. Dort steht sofort eine Auswahl von 10 vorhandenen Schiffen zur Verfügung (bis zu drei können in die aktive Gruppe aufgenommen werden), es gibt mehr Helden / Fracht und sie sind unterschiedlich verteilt. Nach dem Verlassen eines Modus und dem Umschalten in einen anderen kann es zu Überlappungen der Parameter im Spiel kommen.
Die Neuerungen des neuesten Updates werden in einem neuen Video gezeigt, in dem zusätzlich zum Gameplay Elemente eines Teasers hinzugefügt werden.
Videoschnitte einiger früherer Updates
Sie können das Demo-Archiv hier herunterladen (Dropbox):
Win64-Version (50 MB)
Linux-Version (52 MB)
Steuerelemente:
WASD - Flug, Maus - Kameradrehung
Eingabe - Inventar öffnen / schließen während des Fluges im Weltraum

Schiffe: 1 - Wanderer, 2 - Spira, 3 - Avantgarde, 4 - Jungfrau Yaga, 5 - Muhh, 6 - Stella, 7 - Dreifaltigkeit, 8 - Otomo, 9 - Aquamarin, 10 - Giybel.
