Tagebuch: Tower Defense

Ja Ihr seht richtig. Industry City liegt auf Eis und ich hoffe, dass wird das einzige Projekt sein - welches dieses Schicksal erleiden muss.

Aber ich bin zuversichtlich, dass ich mit das Tower Defense Spiel fertig entwickeln werde (mit Feature Runner hatte es ja auch geklappt).

Warum? Ganz einfach: ich hab schon einen funktionsfähigen und spielbaren Prototypen :slight_smile:. Der wurde natürlich Quick’n’dirty entwickelt und diente mir zuerst mal als Machbarkeitsstudie. Und die Grundlegenden Spielelemente sind darin enthalten + tun auch was sie sollen. Bedeutet:

  • Tower platzieren (drag’n’drop-style)
  • Tower erkennen Feinde + greifen an
  • Minions finden automatisch den besten Weg zum Ziel
  • Minions können getötet werden
  • Minions können mit jeder Welle stärker werden
  • Eigene Kamerasteuerung

Ein kleines Demo-Video vom Prototypen seht ihr hier (wurde auch im Industry-City-Thread bereits gepostet):

Ich hab die letzten Tage jetzt damit verbracht, einen Namen für das Spiel zu finden. Und wisst Ihr was? Es war erfolglos. Ich weiß noch nicht welche Gegner ich laufen lassen oder was konkret zerstört wird. Momentan sind alles einfache Formen. Aber ich glaube der Name sollte etwas mit den Gegnern und/oder Ziel zu tun haben. Und bevor ich jetzt noch mehr Zeit verschwende, bekommt das Spiel vorerst einfach keinen. Es läuft einfach unter dem Projekt-namen Tower Defense (ja ich weiß: extrem kreativ :smiley:). Aber so kann ich wenigstens mal anfangen!

Und mit diesem Post erledige ich tatsächlich meinen ersten Meilenstein. Denn ab jetzt steht das grobe Grundgerüst. Ich hab ein Board eingerichtet, das Projekt eingerichtet, ein Gitlab-repo eingerichtet und den Tagebuch-Thread erstellt.

Als nächstes erstelle ich mir Aufgaben in Hacknplan auf Basis des Prototypen und werde dieses Stück für Stück umsetzen. Das Ziel für den ersten Wurf wird recht einfach sein: Den Prototypen jetzt in möglichst gut umsetzen :slight_smile:.

1 „Gefällt mir“

Bin gerade an der Map dran. Und ich dachte mir, ich nutze dafür richtiges Terrain :slight_smile:. Somit schaut die erste Arena wie folgt aus:

Wie Ihr seht ist das ganze erstmal sehr einfach gehalten. In der Mitte seht ihr einen Minion welcher von der Größe her einem späteren Minion entsprechen sollte (stell ich mir zumindest mal so vor). Daran hab ich mich dann auch orientiert was die Größe von der Arena angeht.

Oben links und unten rechts könnt Ihr zwei Lichter sehen (rot und blau). Bei Rot sollen die Minions spawnen und zu blau sollen diese dann später hin laufen.

Somit hätte ich schonmal alle Informationen auf meiner Map die ich so brauche :slight_smile:.

So. Die Kamera ist nun auch platziert:

Und ich glaube landscape macht für so ein Spiel einfach mehr Sinn :stuck_out_tongue:

zusätzlich wäre sicherlich eine Zoom-Funktion sinnvoll

Vermutlich hast du da recht - ob es diese ins MVP schaffen wird ist aber noch unklar. Denn das müsste ich wohl alles selber programmieren. Hab da erstauntlicherweise nichts (kostenloses) im AssetStore gefunden, was mir das Problem mit der Kamerasteuerung lösen würde. Deswegen musste ich die für meinen Prototypen selber schreiben. Und das kennt bisher noch keine Zoom-Funktion.

So. Ich hab die Kamerasteuerung vom Prototyp übernommen und etwas verbessert. Was hauptsächlich neu ist, ist das man sich nur in einem definierten Bereich bewegen kann:

Im Editor der Szene wird das durch das grüne Rechteck hier dargestellt (welches nur gezeichnet wird, wenn ich den Kamera Arm auswähle :slight_smile:).

Und letztendlich schaut das ganze dann so bisher aus:

Hab heute sehr viel gemacht bekommen (wie erhofft). Insgesamt hab ich 7 Tasks abschließen können:

  1. Spielwelt
  2. Kamera ausrichtung
  3. Kamera Steuerung

Soweit habt ihr es ja schon gesehen. Aber weiter gings mit:

  1. Minion (Prefab)
  2. Tower (Prefab)
  3. Versionsanzeige
  4. Wegfindung

Und das ganze inkl. Tests (wo möglich).Und so schaut der aktuelle Stand aus:

Ein Hoch auf Integrationstests. Meine Türme können noch nicht schießen. Also kann ich in der Szene momentan nicht den Tot eines Minions simulieren. Aber ich konnte einen Integrationstest schreiben, der mir genau dieses Verhalten testet :slight_smile:.

Zusätzlich wird natürlich auch das betreten und verlassen des „Schussradius“ getestet. Hatte erwartet, dass die Tests komplizierter wären. Aber freut mich, dass ich das doch recht einfach umgesetzt bekommen hab :slight_smile:.

So, der Tower kann jetzt seine Zielerfassung sinnvoll nutzen und Minions angreifen :slight_smile::

Weiter gehts. Tower sollten nicht auf unebenes Terrain platziert werden können. Versucht man es dennoch, so wird der Tower rot gefärbt und verschwindet beim Drop (von drag’n’drop). Hier könnt ihr es sehen:

Und natürlich sollen Tower auch nicht übereinander platziert werden können. Das hab ich jetzt auch drin:

Zusätzlich hab ich auch noch einige Tests geschrieben, die mir das Verhalten absichern sollen :slight_smile:.

So heute hab ich hauptsächlich an Spielmechaniken gearbeitet die im UI nicht wirklich sichtbar sind. Zum einen updaten jetzt platzierte Tower die Wegfindung (wodurch Minions flüssig laufen sollten) und ich hab ein neues EventSystem eingeführt. Das EventSystem hatte ich schon bei Feature Runner genutzt und die Idee hab ich von einem Talk übernommen. Damit werden Events auf ScriptableObjects ausgelagert und … ich spar mir mal das Unity-blablabla.

Um es kurz zu machen: Ich sehe damit an der Komponente selber auf welche Events sie hört und ich erhöhe meine Testbarkeit. Denn vorher hab ich nur testen können, dass irgendein Event gefeuert wird. Und jetzt hab ich Kontext dazu. Somit kann ich gewährleisten dass:

a) das richtige Event gesendet wird
b) etwas bestimmtes passiert WENN eben ein bestimmtes Event gesendet wird.

In meiner Taskliste sind nur noch 3 offene geplante Punkte um das MVP fertig zu stellen. Sofern mir nicht auffällt, dass ich etwas vergessen hab, sollte ich es bald haben.

Aber ich glaube nicht, dass ich es diese Woche noch fertig bekomme, da am WE doch relativ viel schon verplant ist.

Basle als nächstes daran, dass Tower angegriffen werden, wenn Spieler meint das Ziel zubauen zu müssen.

Ursprünglich wollte ich, dass Minions die Tower dann angreifen. Aber hab mich umentschieden. Es wird eine Kugel vom Startpunkt zum Zielpunkt geschossen und räumt jeden Tower weg, der im Weg steht. Verwende hier dann auch das erste mal wirklich Partikeleffekte (damit schaut das Projektil einfach cooler aus):


(da noch nicht fertig, bekommt ihr erstmal „nur“ ein Bild :stuck_out_tongue:)

Ok, es gibt doch ein Video vom Zwischenstand. Aber nur weil ich das Geschoss grad voll toll finde :smiley::

So. Schaut soweit ganz gut aus. Nun kann das Geschoss „aufräumen“ :smiley::

1 „Gefällt mir“

So. Hab heute wieder weiter gemacht. Ich bin jetzt soweit, dass ich den MinionSpawner hab. Dieser erkennt auch wenn eine Welle tot ist und schickt dann schön ein Event raus. Darauf basierend hat es ein Button ins Spiel geschafft, über welchen man eine neue Welle triggern kann (nachdem die vorherige getötet wurde).

Nun - das ganze ist jetzt in der Testphase und danach ist das MVP auch fast fertig. Ich hab dann nur noch zwei neue Sachen auf der Todo-Liste:

  • Es muss ein Game Over geben
  • Ich will anzeigen, auf welchem Level man ist

Also nicht mehr wirklich viel. Denke spätestens Sonntag Abend stelle ich das MVP dann in den Play Store :slight_smile:.

Video liefere ich nach, da ich gerade HotS am zocken bin ^^.

So. Wie versprochen - hier das video:

Ok. Hab eben noch zwei Bugs gefunden:

  1. Das Geschoss braucht einen größeren Wirkungsradius. Es war mir (sehr einfach) möglich eine Blockade für die Minions zu bauen, welche durch das Geschoss nicht aufgelöst werden konnte.
  2. Die Logik die das Geschoss eigentlich zerstören sollte nach der Kollision mit dem Terrain funktioniert nicht mehr. Ergo bleibt es für immer bestehen.

Sooooo. Mein MVP ist jetzt soweit fertig. Bin damit auch bisher sehr zufrieden. Werde es jetzt auf meinem Handy ein wenig testen/zocken bevor ich es final in den PlayStore stelle.

Da ich heute auch noch etwas Hausarbeit vor mir hab, wird das mit dem PlayStore vermutlich nicht vor heute Abend passieren.

Hier ein Video vom bisherigen GamePlay:

Ok, das Siel ist im Play Store eingereicht. Sobald es freigeschaltet ist werde ich hier den Link posten :slight_smile:.