Fortschrittsbericht: September 2019

Wie beim letzen Update angekündigt, gibt es diesen Monat nichts Neues, das ich zeigen kann. Da es aber seit dem letzten Video schon eine Weile her ist, habe ich eine kurze Spielsession aufgenommen um zu zeigen, wie alles zusammenspielt:

In chronologischer Reihenfolge demonstriert das Video das Folgende:

  • Schiff angreifen
  • Spieler nimmt schaden, was sich in den Schiffsgrafiken widerspiegelt
  • Gegnerisches Schiff besiegen, Gold gewinnen
  • In einer Stadt anlegen
  • Schiff mit dem eben gewonnenen Gold reparieren
  • Beim Händler waren kaufen und verkaufen
  • Wieder in See stechen, weiteres Schiff angreifen (dass das Spielerschiff repariert ist, sieht es wieder makellos aus) und besiegen
  • Viele Schiffe spawnen lassen, Interaktionstaste drücken -> Menü wird angezeigt, dass den Spieler wählen lässt, was genau er tun will

Andere Neuigkeiten

Mein anderes Projekt ist bereits beendet, ich bin also wieder an Devils of the Sea!

Ich habe mich immer gefragt, wie Emulatoren gemacht werden/was genau sie tun müssen, um Spiele wiedergeben zu können.
Deshalb habe ich mich dazu entschlossen, einene CHIP-8 Emulator Prototypen für Unity zu entwickeln.

Das projekt war super spannend und ich habe echt viel gelernt! Interessierte können sich gerne den Code auf GitHub anschauen.
Seid euch aber bitte gewahr, dass das nur ein schnell zusammengebastelter „Proof of Concept“ ist und die Codequalität stark zu wünschen übrig lässt. Nehmt das bitte nicht als Beispiel, wie sowas gemacht werden sollte 😉

Fortschrittsbericht: August 2019

Pause

Wie erwartet, gibt es für den August nicht viel zu zeigen. Einige Bugs wurden gefixt, ein paar Dinge upgegradet um von neuen Unity Features Gebrauch zu machen und die meiste Zeit wurde mit Gamedesign verbracht.
Der Rest des Eintrags wird wohl ungewohnt persönlich, aber die Freiheit nehme ich mir. Der Blog soll authentisch sein und wenn’s mal, aus welchen Gründen auch immer, zäh läuft, will ich das auch nicht schönreden.
Wahrscheinlich wird es auch in nächster Zeit nicht viel zu zeigen geben, da ich sicher noch eine ganze Weile in der Designphase für die Duelle stecke. Zudem arbeite ich momentan auch an einem anderen Projekt, welches voraussichtlich für einen Monat oder Zwei den grössten Teil meiner Zeit in Anspruch nehmen wird.
Mir ist bewusst, dass an etwas anderem zu arbeiten kurzfristig negative Auswirkungen auf DotS hat.
Auf lange Frist bin ich aber überzeugt, dass das Projekt sehr davon profitieren wird, da es dazu beiträgt, dass ich daran mit so viel Passion wie möglich arbeiten kann.
Devils of the Sea beschäftigt mich jetzt schon eine ganze Weile, ohne dass ich je eine wirkliche Pause gemacht hätte. Kaum zu glauben, aber es ist schon über 2 Jahre her, seit ich in See gestochen bin!
Zum ersten Mal seit ich diese Reise begonnen habe fühle ich mich etwas erschöpft. Ausserdem kam dieses andere Projekt auf, das mich richtig gepackt. Es übt diese Begeisterung und Faszination aus, die dazu führen, dass ich abends mühe habe einzuschlafen, weil ich mit einem dicken Grinsen auf dem Gesicht im Bett liege, unfähig, nicht mehr darüber nachzudenken und es kaum erwarten könnend, dass endlich Morgen wird, damit ich weiterfahren kann! 🙂
Es würde sich einfach falsch anfühlen, das nicht weiter zu verfolgen.
Ich verspreche, dass es nicht zu lange dauern wird (jaja, das sagt man bei jedem Projekt, aber diesmal ist es wirklich so (wie bei jedem Projekt!).
Ich bin sicher, mal an etwas anderem zu arbeiten wird frischen Wind bringen und mir erlauben, mit neuer Energie und neuen Themen zu DotS zurückzukommen!

Fortschrittsbericht: Juli 2019

Es ist noch nicht ganz fertig, aber im Juli habe ich an einem System gearbeitet, dass es dem Spieler erlaubt, auszuwählen, was genau er tun will, wenn er mit der Welt interagiert und mehrere Möglichkeiten hat.

Bis anhin wurde zufällig eine aller zur Verfügung stehenden Möglichkeiten ausgeführt, was weder während des Spielens, noch des Debuggens besonders praktisch war.

Aktionsmenü

Ausblick

Ich bin noch nicht ganz sicher, was ich als nächstens in Angriff nehmen werde. Erst mal muss ich das Aktionsmenü fertig machen.
Ein Fechtsystem steht hoch auf meiner Liste der Dinge, die ich bald anpacken möchte. Darüber denke ich schon lange nach, aber ich habe noch immer keinen Plan, wie das genau aussehen sollte.
Falls ich das wirklich als nächstes angehe, wird es wohl in den nächsten Monaten nicht all zu viel zu zeigen geben. Nicht nur muss ich meine Idee(n) umsetzen, ich muss überhaupt erst durch die kreative Findungsphase und das macht mir fast mehr sorgen als die Arbeit danach…

Rückschrittsbericht: Juni 2019

Leider gab es im Juni kaum Fortschritte. Gute 3 Wochen wurden dmait verbracht, einen Bug (oder, wie sich dann herausstellte, mehrere Bugs) zu beheben, die dazu führten, dass im Schiffskampf entweder das Spielerschiff, der Gegner oder beide ruckelten.

Als ich die  Koordinaten in Funktion der Zeit plottete, sah alles butterweich aus. Darum kam ich relativ schnell zum Schluss, dass das Problem wahrscheinlich mit der Kamera zu tun hatte, was sich als richtig erwies.
Ich werde nicht zu sehr ins Detail gehen, aber es hatte damit zu tun, dass verschiedene Dinge in Unity zu verschiedener Zeit bewegt werden (beispielsweise wird die Position von physikgesteuerten Objekten nicht zur selben Zeit aktualisiert, wie Objekte, die durch das Navigationssystem bewegt werden). Hinzu kam dann noch die Frage, wann denn die Kamera ihre Position aktualisieren sollte.

Normalerweise messe ich visuellen Fehlern zu diesem Zeitpunkt noch keine all zu grosse Bedeutung bei. Ich hatte jedoch die Befürchtung, dass die Lösung dieses Problems massgeblich den Code beeinflussen könnte, der bestimmt, wann und wie ich alle Objekte im Spiel bewege.
Aus architektonischer Sicht ist diese Code ein fundamentales Stück des Projekts und erfahrungsgemäss wird das Ändern solchen Codes immer aufwändiger und schwieriger, je weiter das Projekt fortgeschritten ist. Darum habe ich mich dazu entschlossen, das Problem so schnell wie möglich aus der Welt zu schaffen.

In der verbleibenden Woche verblieb nicht mehr genug Zeit, um etwas Neues fertig zu machen, das ich präsentieren könnte.
Zugebenermassen, ich war zwischenzetlich schon ziemlich frustriert als ich 3 Sommerwochenenden nur damit verbracht habe, wieder dahin zu kommen, wo ich vorher war. Das war der Motivation definitiv nicht zuträglich aber gelegentliche Rückschläge gehören einfach dazu und ich habe ja keinen Zeitdruck. Nächsten Monat gehts dann sicher hoffentlich wieder voran!

Fortschrittsbericht: Mai 2019

  • Das Wichtigste zuerst: Es sieht so aus, als ob ich bald etwas Hilfe bekommen könnte, von der das Projekt auf jeden Fall stark profitieren würde. Ein schöner Nebeneffekt wäre, dass es mir mehr Spass macht, mit Gleichgesinnten zusammen an etwas zu Arbeiten, es ist einfach schön und motivierend, eine Passion teilen zu können 🙂
  • Etliche Zeit wurde rund ums Thema Soundtrack investiert. Es ist aber noch nicht der rechte Zeitpunkt, da mehr zu verraten.
  • Einige Menüs wurden geupdated. Weitere kleinere grafische Änderungen wie das einbauen von Reflektionen in echte Kampfszenen.
    Auch wenn die Grafik an sich momentan noch  keine Priorität hat, müssen doch ein paar Dinge ausgetestet werden, um zu sehen ob und wie man diese dann aus technischer Sicht umsetzenm kann.
  • Interne Umtstrukturiereng damit Szenen feststellen können, ob sie direkt aus dem Editor oder von einer anderen Szene/einem Speicherstand aus geladen wurden. Das ist wichtig, damit einzelnen Komponenten wissen, ob und von wo sie ihre Initialisierungsdaten laden müssen (z.B. die Spielerposition).
  • Es gibt nun eine Werft, in der das Schiff repariert werden kann. Endlich haben wir nun wirklich einen kleinen aber 100% abgeschlossenend Gameplayloop bestehend aus „Schiffe bekämpfen -> gewinnen -> Gold erhalten -> In einem Hafen das Schiff reparieren -> Schiffe bekämpfen -> …“!

Fortschrittsbericht: April 2019

Ahoi!

Folgende Dinge konnte ich im April erledigen:

  • Abschluss der Überarbeitung des Speichersystems (vorläufig ;))
  • Dank des neuen Speichersystems, konnte den Speicherständen ich nun einige weitere Dinge ohne viel Aufwand hinzufügen. Diese gehen nun nicht mehr verloren, wenn man einen Spielstand lädt oder das Level wechselt:
  • Richtung, in die der Spielcharakter schaut
  • Richtung, in die das Spielerschiff schaut
  • All die NPC Schiffe auf der Weltkarte
  • Der Schaden, den das eigene Schiff verlitten hat
  • Game Over Bildschirm
  • Das Spiel pausiert nun, wenn man auf der Weltkarte das Menü aufruft.
  • Der Blog läuft nun mit https, was hoffentlich zusätzlich bei den Suchmaschinenrankings hilft.
  • NPC Schiffe können nun auf der Weltkarte angegriffen werden
  • Ein grösseres Update für den NavMesh2DSurfaceBaker. Das wurde zwar nicht für DotS benötigt, aber jemand, der den 2DSurfaceBaker nutzt, bat mich um ein paar neue Features. Es freut mich, wenn etwas, das von mir gemacht wurde, für jemanden nützlich ist und dann möchte ich diese Leute auch so gut es geht unterstützen. Ich liste das hier nur auf, weil ich dafür das ganze Osterwochenende benötigte und euch eine möglichst gute Idee davon geben möchte, wo all meine private „Programmierzeit“ hinfliesst. Mit etwas Glück wird sich das Update irgendwann auch für DotS auszahlen 🙂
  • Besiegt man ein NPC Schiff, erhält man nun Beute und kann zurück zur Weltkarte kehren

Alles in allem bin ich mit den Resultaten ziemlich glüklich. Da man nun die auf der Weltkarte erscheinenden Schiffe angreifen und auch Beute ergattern kann, haben wir endlich soetwas wie einen kleinen Gameplay Loop.
Etwas, auf das ich lange, lange gewartet habe und von dem ich schon seit etwa einem Jahr das Gefühl hatte „ich bin fast da!“…

 

Fortschrittsbericht: März 2019

Ursprünglich wollte ich im März etwas mehr gameplayrelevante Elemente einbauen. Aber erstes kommt es ander und zweitens als man denkt.
Es hat sich dann während der Umsetzung gezeigt, dass es wesentlich sinnvoller wäre, zuerst das Speichersystem und einige Dinge bezüglich des Persistierens von Daten zwischen verschiendenen Levels zu überarbeiten.

Kurze Übersicht, was im März dann letzten Endes so ging:

  • Viele Änderungen im Speichersystem und beim Persistieren von Daten zwischen verschiedenen Leveln (noch nicht abgeschlossen).
  • Da Google bei der Bewertung der Suchresultate auch die Ladezeit der Seiten miteinbezieht, musste mein CESMAPRM (Chief Executive Social Media And Public Relationship Manager , manchen auch bekannt als „ich“) den Blog optimieren. Zugegeben, eigentlich war’s schon lange Zeit, vorher hat es manchmal ewig gedauert, bis die Seite geladen war. Aber man hat halt immer wichtigeres zu tun…

    Für die, die Zahlen genau so lieben wie ich, hier ein paar Statistiken. Laut gtmetrix.com konnte ich durch die Optimierungen:

    • Den Google PageSpeed Score von F(49%) auf A(96%) erhöhen
    • Den YSlow Score von D(63%) auf B(86%) erhöhen
    • Die Ladezeit von 4.4s auf 1.3s verkürzen
    • Die Datenmenge von 2.95MB auf 1.62MB reduzieren
    • Die Anzahl the HTTP Aufrufe von 73 auf 27 senken
    • Einen halben Tag verlieren
    • Mehr über WordPress lernen, als ich je wollte.
  • Behelfsmässiger Titelbildschirm
  • Das alte Textsystem wurde durch ein neues ersetzt, welches  bessere Lesbarkeit biete, ohne dass man für jeden Text noch mal manuell Anpassungen vornehmen muss:

    Es lässt sich leicht erkennen, welche Teile dieses Menüs bereits das neue Textsystem benutzen und wesentlich schärfer aussehen.
  • Eine Simple KI für Schiffe auf der Weltkarte. Schiffe erscheinen zufällig in der Nähe des Spielers und segeln dann zu einer Stadt, bei der sie anlegen. Hier ein kurzes Demonstrationsvideo:

Fortschrittsbericht: Februar 2019

  • Alle meine in-hous gehosteten Tools (Code Repository, Issue Tracker, Wiki) wurden in die Cloud verlagert. Wie es in der IT halt so üblich ist, artete was zuerst wie eine simple Aufgabe aussah, ziemlich schnell aus. Es ging alles schief, was nur schief gehen konnte (und mehr…) und aus den initial geschätzten 6-8 Stunden wurden letzten Endes fast 30.
    Mit etwas Abstand bin ich aber trotzdem froh, den Umzug gemacht zu haben. Es war keine Frage, ob, sondern wann mein Server das zeitliche segnen würde. Wenn das unweigerlich eingetroffen wäre, hätte ich sogar noch mehr Zeit benötigt, die Daten zu retten und alles wieder herzustellen, von den Anschaffungskosten neuer Hardware ganz zu schweigen.
  • Ich habe angefangen, mich in Shader einzuarbeiten. Zugegeben zu diesem Zeitpunkt sicher nicht die allerdringendste Aufgabe, aber nach dem Umzug in die Cloud war ich etwas frustriert und manchmal muss man sich auch belohnen 🙂
    Hier einer meiner Versuche, eine Art von Wasserreflektion für die Schiffskämpfe zu kreieren:
  • Herausgefunden, wie ich gewisse UI bezogene DInge umsetzen werde.

Fortschrittsbericht: Januar 2019

Im Januar hat sich einiges getan, aber das meiste davon habe ich bereits geposted.

Hauptsächlich habe ich:

  • Ein System entwickelt um NavMeshes (Daten, die der KI sagen, wo sie hinlaufen kann und wo nicht) aus 2D Objekten zu generieren.
  • Endlich den ersten Schiffskampfprototypen fertiggestellt.

Aus reiner Neugier habe ich ein Diagramm erstellt, welches darstellt, wie viele Tasks ich in den letzten 120 erstellt und abgeschlossen habe. ich war überrascht, wie gut sich die verschiedenen Geschehnisse meines Lebens aus dieser Grafik erhauslesen lassen (Da ich mir aus Zeitgründen vorgenommen habe, die Blogeinträge etwas effizienter zu gestalten, sind die Beschreibungen leider nur in Englisch, ich bitte um Verständnis.):

Es lebt! Es lebt!

Endlich!

Nach einer gefühlten Ewigkeit kann ich endlich voller Freude die ersten Version meiner Schiffskampf-KI präsentieren!
Sie äusserst simpel, z.B. versucht sie immer, auf die Mitte des gegnerischen Schiffs zu zielen, obwohl es oft mehr Sinn machen würde, eher richtung Bug zu feuern.
Aber für einen Prototypen, der dazu dient, rauszufinden, ob sich alles ungefähr so umsetzen lassen sollte, wie ich mir das vorstelle, bin ich mehr als zufrieden damit!

Hier ein kurzes Demonstrationsvideo. Das schwarze Schiff wird von mir gesteuert, das gelbe von der KI: