Tagebuch: Tower Defense

Die Verkaufen-Funktionalität ist fertig und gemergt. Hab gestern dann mit den Upgrades angefangen.

Ich hab sowohl simple Buttons als auch schon meine ersten Tests. Was mir fehlt sind Tests für ein maximal-limit und das upgrades mit jedem „Level“ teurer werden. Und im UI fehlt noch die Darstellung der kosten.

Fokus liegt aber erstmal auf den Tests und ich hoffe heute abend die Zeit dafür zu finden, alle zu schreiben :slight_smile:.

Mal doch wieder etwas anderes. Um meine 3D-Skills weiter zu trainieren wollt ich mal ein Waffe basteln. Und das ist bei raus gekommen:

Die Texturen sind zwar imho etwas langweilig und nicht ganz so, wie ich es mir ursprünglich vorgestellt hatte - aber es soll ja nur ein Übungsmodell sein. Interessant waren hier vor allem die Runden Parts gewesen.

Als ich damit fertig war, wollte ich mal ein Projekt angehen, was mir schon seit Jahren im Kopf rum geistert. Damals zu Zeiten als man noch eine Band hatte, wollte ich mal ein Model basteln, was einem simplen Ritterhelm gleich kam. Und heute hab ich es mal ausprobiert. Mein Zwischenstand bisher:

Der Ritterhelm ist zwar glaub nicht ganz so, als ich es mir zuvor vorgestellt hatte - aber ich find die Figur irgendwie ganz cool. Vielleicht nutz ich das sogar in Arena Defender. Vielleicht auch einfach als generells Maskotchen oder so :stuck_out_tongue:.

Lange Zeit war es Still und heute kann ich endlich wieder mal was zum Spiel schreiben. Die letzte Aufgabe hat sich um Upgrades gedreht. Letztendlich hab ich dafür aber dann doch noch mal einiges refactored.

Aber dafür bin ich jetzt auch (relativ) zufrieden mit der Implementierung. In der Testphase gab es noch kleine Probleme (texte haben sich nicht richtig geupdated) - aber das konnte ich dann doch relativ schnell beheben.

Ums kurz zu machen: die Upgrades sind jetzt wieder Teil vom Spiel.

Als nächstes wird es darum gehen, den Wirkungsradius vom Turm darzustellen. Ich bin relativ guter Dinge, dass ich das morgen hinbekommen sollte. Wenn dann nichts unerwartetes dazwischen kommt sollte ich auch morgen abend dann ein neues Update im Store einreichen können. Dann könnt ihr auch (ENDLICH) mal die neue Arena + das neue GamePlay ausprobieren :slight_smile:.

So. Den Radius einzubauen war relativ einfach und auch wieder TDD :slight_smile:. Momentan baue ich gerade das apk und danach werde ich den Store-Eintrag updaten.

Also freut euch, heute kommt ein neues release. Bin mal gespannt, was Ihr dann dazu sagen werdet.

Sobald ich alles im Play-Store eingereicht hab, werde ich hier natürlich wieder bescheid geben.

So. Das neue Update ist online :slight_smile::

https://play.google.com/store/apps/details?id=de.jfruit.arenad

Hab jetzt auch schon mit Version 0.4.1 begonnen. Und eine Aufgabe davon sind Lebensbalken, welche jetzt gerade die Testphase erreichen. Bin aber soweit schon mal ganz zufrieden damit und es schaut bisher so aus:

Wollte eigentlich ein Video machen, aber bei mir spinnt gerade OBS etwas und ich kann keine Quelle (Monitor) mehr auswählen.

Und das nächste Feature geht in die Testphase: Sterbeanimation für Minions.

War überraschend einfach. Mit Unity animationen zu erstellen ist ja jetzt nicht wirklich schwer und vor etlichen Wochen hatte ich mich mal etwas mehr damit auseinander gesetzt.

Das tolle ist, dass man sehr flexible Events damit registrieren kann. Ich glaub so ziemlich jeder hier weiß, was ein Keyframe bei Animationen sind. Und ich kann neben Keyframes auch Events in den Zeitstrahl setzen. Dem Event gebe ich dann mit, welche Methode getriggert werden soll und der macht das dann an entsprechender Stelle.

Das ist echt sehr sehr cool. Von daher gesehen musste ich nicht wirklich mehr machen, als das aufräumen der „Leiche“ nach hinten zu verschieben.

Es gibt eine Methode Kill. die hat vorher das GameObject zerstört. Anstelle der Zerstörung wird nun die Animation getriggert und die triggert am Ende ein CleanUp :slight_smile:.

Hab jetzt Mal übers Handy ne Aufnahme gemacht und hochgeladen:

nee - wenn man dahinter gestiegen ist, ist es eigentlich ganz simpel. Ich habe mich damit jetzt bei BlackPlanet auch nochmal damit auseinander gesetzt. Ist echt einfach. Unity nimmt einem viel Programmieren ab. Man braucht das nur noch zusammen bauen und ein bischen Code. Schon gehts los…

Ja, dass überrascht mich aber doch als immer mal wieder, wie viel einem abgenommen wird. Wenn man es vorher noch nie gebraucht hat, dann rechnet man halt einfach erstmal mit dem schlimmsten.

Und gerade beim Abendessen hab ich mir noch überlegt was es wohl bedeutet hätte, das selber zu implementieren.

Was mich auch nach wie vor öfters mal positiv überrascht. Aber mit einer gescheiten Architektur bekommt man die Sachen echt verdammt schnell hin. Ich profitiere extrem davon, dass die Events über ScriptableObjects gesendet werden. Somit klatsch ich einfach eine Listener-Komponente an ein GameObject und kann wunderbar drauf reagieren. Und die anderen Komponenten brauchen absolut nichts voneinander zu wissen. Das ist sooooo wunderbar :slight_smile:.

Hab jetzt mal mit Shader-Animationen rumgespielt und einen kleinen Prototyp geschrieben. Ich hab einen Windows-Build rausgelassen und Ihr könnt den hier sehen:

https://1drv.ms/u/s!Av4-trM0Vnk9wnZToala7xdYNA5Y

Und genau solche Shader waren der Grund warum ich damals auf die andere Render-Pipeline umstellen wollte :slight_smile:

Oha, das sieht spitze aus.

1 „Gefällt mir“

Danke ^^. War auch tatsächlich nicht viel Aufwand dazu zu kommen (was mich überrascht hat, denn ich hatte das schonmal versucht - aber viel mehr eigenen Code benötigt).

Das ist echt klasse - dank LW-RP kann ich mir den Shader einfach in einem Node-Editor zusammenklicken, so wie ich den brauche. Hatte eigentlich mal ein Shader-Tutorial auf udemy gestartet und schon einfache kleinere Shader selbst geschrieben. Aber ich bevorzuge dann doch den Node-Editor.

Wo es damals etwas blöd geworden ist - war die Animation an sich. Ich wusste nicht, wie ich die Shader-Eigenschaften animiere. Dabei kann ich einfach das Material vom zu-animierenden-GameObjekt ausklappen und die Änderung aufnehmen.

Alles andere war dann recht simpel. Eigenen Code hatte ich erst schreiben müssen, als ich die Buttons platziert habe und die Kamera um das Objekt in der Mitte rotieren lassen wollte.

Ich seh gerade, dass ich schonmal eine Shader-Animation vorbereitet hatte - aber nie eingebaut. Sie schaut aber etwas anders aus als die aus der Tech-Demo. Gefällt mir glaub aber besser, da sie mehr was von „Teleportieren“ hat.

Werde es jetzt mal auf meinem Smartphone testen :slight_smile:

Ok, wird wohl ein Kompromiss aus beidem. Es wird nämlich weder der existente noch wird es exakt so wie in der Techdemo. Warum? Ganz einfach: der nutzt Emissions (Leuchteffekte) und die hab ich für die LW-RP deaktiviert und weiß auch nicht, ob ich die aktivieren werde.

Zum einen war das (afair) für manche Geräte tötlich und zum anderen kosten die Performance. Immerhin ist das eine Textur die ich weniger laden muss. Zusätzlich macht es den Shader auch einfacher.

Und so schaut es aus:

2 „Gefällt mir“

So. Hier mal ein paar Updates zum Spiel. Das letzte was ich euch vorgestellt hatte, waren die Animationen beim platzieren der Türme. Die selbe Animation spiele ich dann auch beim verkaufen wieder ab - nur halt rückwärts. Bietet sich an, denn ich hab nicht vor den Shader zu wechseln oder komplizierter zu machen.

Aus meinem Bekanntenkreis kam der Hinweis, dass die Kugeln kacke sind und etwas in Richtung „Laser“ besser wäre. Die Idee fand ich gut und außerdem wäre ein Laser aus Sicht der Performance sicher besser - da weniger komplex. Anfangs war mir nicht klar, wie ich das mache - aber dann hab ich die Line-Render-Komponente entdeckt. Vereinfacht erklärt: damit kann ich ein Polygon zeichnen. Gefreut hab ich mich darüber, dass ich die Anzahl der Vertecies der Enden und Ecken anpassen kann. Den damit hab ich den Schuss abgerundet bekommen.

Desweiteren hab ich noch einen Bug gefixt. Die Türme haben Ihre Liste an Minions nicht richtig aktualisiert. Dadurch war an erster Stelle in Minion der nicht mehr existiert - dementsprechend hat der Turm nie wieder gefeuert. Wird mit dem kommenden Update behoben werden.

Damit hab ich auch nur noch einen offenen Punkt auf meiner Liste:

  • Türme sollen sich langsamer drehen.

Ist auch ein Feedback gewesen um das ich mich kümmern möchte. Stellenweise ist das doch sehr Ruckartig. Außerdem muss ich da auch implementieren, dass Türme erst feuern, wenn ausgerichtet. Gerade beim Laser schaut der erste Schuss sehr seltsam aus.

Ich hätte gerne ein Video angehängt - aber mein Aufnahme-Programm erkennt die Monitore nicht mehr, was das Aufzeichnen schwer macht. Aber da ich hoffentlich spätestens bis Ende der Woche eine neue Version veröffentliche, kann ich eigentlich euch auch selber die Änderungen entdecken lassen :stuck_out_tongue:.

Oh mann. Hab endlich mein OBS-Problem gelöst, dank diesem YT-Video hier:

Hatte letzten Monat mal eine Occulus Rift ausprobiert und dafür auch meine NVIDIA-Settings angepasst gehabt. Nachdem ich dort OBS explizit intern laufen lasse funktioniert alles wieder wie gewohnt (yay … hip hip).


Abgesehen davon bereite ich gerade das nächste Release vor :slight_smile::

  • Fix: Turm schießt erst nach Anvisierung
  • Bugfix: Türme hatten Gegner nicht mehr anvisiert
  • Bugfix: Lebenspunkte von Minions werden nun korrekt mit jedem Level erhöht
  • Radius von Türmen ist besser zu erkennen
  • Lebensbalken für Minions
  • Turm schießt nun laser anstatt Kugeln
  • Animation: Nach töten von Minions
  • Animation: Bei Platzierung von Türmen
  • Animation: Nach Verkauf von Türmen

Und laut Play-Store Benachrichtigung ist das Update nun online :slight_smile:

Ich kann ja mal einen Ausblick auf v0.5 geben. Geplant ist ein Hauptmenü einzuführen mit erstmal den folgenden Funktionen:

  • Spiel starten
  • Laufendes Spiel beenden
  • Changelog einsehen

Daneben hab ich noch einen weiteren wichtigen Punkt:

  • 64bit support
  • AppBundle-Builds für kleinere apk-größe (solls zuminest mal bewirken [glaub ich])

Denn momentan ist die App nur 32bit fähig und der Play-Store wird das auch nicht mehr all zu lange mitmachen.