Ein Update. Wir pflügen, säen und ernten, auch am Wochenende. Eine wichtige Errungenschaft: Ich habe es geschafft, eine dauerhafte Zwei-Wege-Verbindung zwischen Client und Server herzustellen, Daten auszutauschen und vor allem zu verarbeiten! Die Verbindung existierte vorher, aber sie tat nicht immer, was nötig war, und die Implementierung war umständlich. Jetzt ist es stabil. Alle 20 Sekunden tauschen Client und Server Heartbeat-Pakete aus, um zu überprüfen, ob beide Seiten am Leben sind. Wenn es gut läuft, füge ich heute den Datenbankzugriff hinzu, und Login und Registrierung funktionieren tatsächlich, wirklich. Die Formulare und die clientseitige Logik sind bereits fertig.
Ich habe begonnen, das letzte Projekt aus Prototypen zu montieren, die in früheren Jahren gebaut wurden. Es wird sicherlich ziemlich hart sein, aber es wird funktionieren. Das Video zeigt die Sternenkarte, die für die interstellare Navigation benötigt wird. Schauen Sie sich die Skala an. Wenn die Hardware damit umgehen kann, kann ich sie auf 200.000 Sterne erweitern. Vor der Optimierung konnte es kaum 20.000 verarbeiten, und die Bildrate betrug etwa 5 fps. Nach der Optimierung laufen 45.000 reibungslos. Das ist mein ganzer vorheriger Katalog.
Übrigens, wenn jemand mit dem Code helfen möchte, gibt es einen einfachen Weg. Installieren Sie Unreal Engine aus dem Epic Games Store, erstellen Sie ein leeres Projekt, erstellen Sie einen neuen Blueprint und wählen Sie eine Funktionsbibliothek aus. Sie können dann alle Arten von Funktionen mit Input- und Output-Pins erstellen. Es ist alles visuell, mit Graphen. Sie müssen keine einzige Zeile Code schreiben.
Nachrichten. Während der vorherigen Nebensaison arbeitete ich am Schiffskampf. Jetzt komme ich auf die wirtschaftliche, strategische und logistische Seite zurück. Bis jetzt wusste ich, dass die Server-Interaktionen, die für die Wirtschaft benötigt werden, irgendwie in den Motor eingebaut werden können, aber ich wusste nicht genau wie. Das Problem ist, dass die Engine im Wesentlichen für sitzungsbasierte Verbindungen konzipiert ist: Eine Gruppe von Spielern hat ein Spielzimmer, jeder läuft darin herum und ein Computer fungiert als Server. Es gab physisch keine vollständige oder sogar rudimentäre interaktion mit einem server, der in der lage war, jeden spieler in verbindung zu halten und ihm informationen aus einer datenbank zu liefern. Einige Workarounds waren möglich, aber das Ergebnis wäre schlecht gewesen.
Wo stehen wir also? Ich musste November und Dezember der Arbeit unseres Unternehmens widmen. Wir müssen unseren Lebensunterhalt verdienen. Im moment baue ich schnell ein plattformspiel und werde es auf google play setzen, wieder in der hoffnung, etwas geld einzubringen. Wir werden sehen. In etwa ein oder zwei Monaten werden wir unser aktuelles Schreibprojekt beenden und ernsthaft mit der Arbeit am Hauptbuch der Exodus-Serie beginnen. Da kürzlich ein Spiel namens Exodus veröffentlicht wurde, ein Science-Fiction-Story-basierter Shooter, werden wir unser Projekt Last Exodus oder etwas Ähnliches umbenennen. Ich bin zur Motorversion 5.3 gewechselt. Was bringt uns das? Größe. Mit 32-Bit-Koordinaten hatten wir ungefähr 2.000.000.000 Einheiten. Wenn eine Einheit einen Zentimeter beträgt, umfasst die Karte 20.000 Meter oder 20 Kilometer. Wenn eine Einheit ein Meter ist, sind das 2.000 Kilometer. Das kann für einen lokalen Weltraumkampf funktionieren, aber die Genauigkeit ist dann nur ein Meter, was zu grob ist. In Version 5.3 haben sich die Koordinaten unter anderem, wie die Unterstützung der Datenbank, die wir benötigen, vollständig auf 64 Bits verschoben, ohne dass es zu unangenehmen Workarounds kam. Das sind 9.000.000.000.000.000.000.000.000 Koordinateneinheiten. Wir können eine Kugel oder ein Fragment genau positionieren und eine Karte haben, die 90.000.000.000.000 Kilometer umfasst. Ja, 90 Billionen Kilometer. Teilen Sie das durch 150.000.000 Kilometer oder eine AU, und Sie erhalten 600.000 astronomische Einheiten. Wir können eine Kugel simulieren, die durch ein Dreisternsystem fliegt, einfach und ohne besondere Tricks. Etwa 300 AE sind genug, um das Sonnensystem zu modellieren; mit den Oort-Wolken und anderen trans-neptunischen Merkmalen, 1.500. Früher, mit angespannten Workarounds und nicht in der Lage, ein Sternsystem größer als unser eigenes zu modellieren, war unser kleinster Schritt 10.000 Kilometer. Schiffe näher als das wurden als den gleichen Punkt zu besetzen. Jetzt können wir auf den Zentimeter berechnen.
Es gibt fast keine Neuigkeiten, weil ich krank war. Wenn ich krank bin, verlangsamt sich mein Denken schlecht und ich setze mich nicht zum Code. Außerdem arbeite ich jetzt daran, wie der Server mit der Datenbank interagiert und wie Server mit dem Client kommunizieren. Die Grundlage ist da, und das Spiel funktioniert bereits mit einem Server und Clients, aber jetzt muss es mehrere verteilte Server unterstützen. Es ist eine schwierige, aber lösbare Aufgabe. Einige Teile funktionieren bereits. Als Bonus ist hier ein Avatar eines der Besatzungsoffiziere des Schiffes.
Was wurde hinzugefügt? Schalten von Munition durch ein Menü; Waffen- und Engineering-Menüs mit Tasten und verschiedenen Daten; Schusswaffenmodi; Verfolgung verschiedener Arten von Munition. Ich habe angefangen, an dem thermischen Verhalten von Modulen und dem Schiff als Ganzes zu arbeiten. Danach füge ich Raketenwaffen hinzu, dann Drohnen, dann elektronische Kriegssysteme. Als nächstes kommen Verbesserungen des erkannten Zielmenüs, einschließlich Korrekturen und Unsicherheiten, die von Sensoren und anderen Umständen abhängen; Polieren von Radar und anderen Sensoren; ein Startmenü mit einer Schnittstelle für die Einrichtung und Modifikationen von Schiffen; und dann der schwierige Teil, die Anpassung des Schadensmodells. Danach kann ich mit Freunden testen!
Gestern habe ich eine wichtige Komponente gebaut. Genauer gesagt, eine ganze Reihe von Mechaniken: Abrechnung der Energieressourcen eines Schiffes; Abschalten von Modulen in der Reihenfolge der Priorität, wenn die Stromversorgung knapp ist; Verbinden, Laden und Entladen von Batterien; und Timing-Übergänge zwischen verschiedenen Modulaktivitätszuständen, während mögliche Schäden und die Erfahrung von Offizieren und Besatzung berücksichtigt werden. Besonders erfreulich ist, dass dies nicht nur für ein kleines Schiff gebaut wurde. Es ist ein System, das eine beliebige Anzahl von Modulen verarbeiten kann, in jeder Konfiguration, auf jedem Schiff.
Ein Fortschrittsbericht. Neben Bugs und den üblichen anderen Dingen funktionieren Scannersektoren und komplexe Motorfunktionen nun richtig. Wir können jetzt auf ein sich bewegendes Ziel mit Blei schießen, was sowohl unsere eigene Geschwindigkeit als auch die des Ziels berücksichtigt. Das Projektilverhalten hängt nun von der Qualität ab, so dass die Mündungsgeschwindigkeit variiert. Der Lauf hat auch Streuung; Sie können es in der eher unebenen Spur der Schüsse sehen. Für eine Pause und um ein besseres Gefühl für den Maßstab zu bekommen, habe ich vorübergehend ein Modell von Star Trek in die Szene gesetzt. Unser kleines Schiff ist direkt daneben angedockt.
Nach dem Sommer und all der Arbeit war es Zeit für eine Pause. Dann war es an der Zeit, wieder zu codieren, und das mache ich schon seit einigen Tagen, mit einigem Erfolg. Heute habe ich zum Beispiel die automatische Stoppfunktion des Schiffes beendet und debuggt. Ich fügte hinzu, auf ein Ziel zu schießen, sowohl von einer sich bewegenden Plattform als auch auf ein sich bewegendes Ziel, und führte eine Variation der Projektilgeschwindigkeit entsprechend der Munitionsqualität ein. Als nächstes wird die Geschwindigkeit mit einem Ziel abgestimmt und direkt zum Andocken oder Einsteigen geflogen. Ich kämpfte lange damit, aufzuhören. Ich musste berechnen, wie lange jeder Motor laufen müsste und in welchem Modus, um das Schiff zum Stillstand zu bringen. Da das Schiff auf dem Kopf stehen oder in eine völlig andere Richtung zeigen kann und es sechs Motoren gibt, ist die Aufgabe nicht so einfach, wie es scheinen mag. Vor allem, wenn es darum geht, es tatsächlich zu programmieren. Ich habe ein Menü erstellt, das erscheint, wenn Sie auf ein anderes Schiff klicken, mit ein paar Auswahlmöglichkeiten, obwohl ich denke, dass dies über die Benutzeroberfläche bequemer und angemessener ist. In diesem Fall verhindert das eine nicht das andere.