Tagebuch: Tower Defense

So. Meine letzte Änderung für heute: Ich hab den Schussradius nun sichtbar drin :slight_smile:. Und das sowohl für platzierte Türme als auch für welche die erst noch platziert werden müssen:

Und ich muss sagen, ich bin echt froh über die SVGs. Die haben mir bisher schon sooo sehr das Leben erleichtert. Das ist echt Klasse :slight_smile:.


Edit: Ach ja. Was ich auch mittlerweile drin hab ist das Verkaufen von Türmen (sieht man ja auch im Video)

Wie geht das mit den SVG? Werden die vorgerendert? GPUs eignen sich ja eher schlecht zur Darstellung von SVGs, es sei denn die SVGs werden in Meshes dargestellt?

Ich geh stark von aus dass die vor gerendert werden. Den ich kann auswählen was daraus generiert wird + Grafikoptionen.

Da es von unity kommt wird das hoffentlich schon optimiert sein.

Um nicht aus der Übung zu kommen, hab ich heute Abend mal Modelliert anstatt zu programmieren. Und heraus kam mein erster Minion:

Außerdem hatte ich mir vor einiger Zeit mal die neueste Version von Substance Painter gegönnt. Das bietet ein Plugin an, womit man dann auch die Textur direkt mit Unity syncen kann. Was ziemlich cool ist. Und so schaut der kleine Kerl dort aus:

image

Hab die Textur im übrigen gestern doch nochmal ein klein wenig angepasst:

Ich weiß nicht ob es an mir liegt - aber ich finde diese kleine Details haben durchaus viel Einfluss drauf wie das Objekt später wirkt.

Die neuen Minions hab ich schon fast drin. Nur fällt mir jetzt auf, dass die Kugeln der Türme nicht aufgeräumt werden :frowning:. Und die Minions tragen die munter mit sich :open_mouth:.

Noch lacht er:

Aber auf dem Bild ist tatsächlich der Bugfix zu sehen :stuck_out_tongue:. Ich erschieße ihn praktisch gerade.

Ja, das Problem war relativ einfach. Zuvor hatten die Türme immer auf die „Füße“ der Minions gezielt. Diese Minons aber schweben. Und am Boden befindet sich kein Collider mehr mit dem die Kugeln interagieren können.

Nun fliegen die Kugeln so, dass sie das Zentrum vom Collider des Minons fliegen. Und das sieht man jetzt oben auf dem Bild: Jeder Schuss ist ab sofort ein Headshot. Tötet den Minion. Tötet den Bug.

Erinnert mich an die Anleitung von jemandes elektrischer Fliegenklatsche. Übersetzung lautete: „Töte Sie den Fehler“

Da hat wohl die Entwicklungsabteilung dann übersetzt :smiley:.

:sweat_smile: zumindest sorgte es für einen kurzen Lacher. Sieht lustig aus.

Hab zuerst nur den Bug gesehen gehabt. Aber jetzt wo du es sagst erinnern die Mininos mich auf dem Bild an Wallee oder meine Oma (hat ungefähr die selbe größe und den gleichen Antrieb alles aufzuräumen) ^^.

So. Es war zwar einiges an Refactoring notwendig - aber ich hab jetzt auch Schadensupgrades drin :slight_smile:. Mal schauen wie viel ich noch mache, aber vllt bekomme ich auch noch das zweite und letzte Upgrade (Reichweite) implementiert. Dann wäre die Version eigentlich fertig und ich könnte ein Update in den Store einreichen :slight_smile:.

So - das letzte Upgrade einzubauen war tatsächlich nicht mehr viel arbeit (dank dem Refactoring).

Ich mach jetzt meine letzten tests, dann merg ich alles nach master und erstelle das Release. Da ich mir ziemlich sicher bin, dass ich das heute raus spielen werde hier der Changelog:

Behoben: Lag nach Platzierung von Türmen
Neu: Kontextmenü
-- Neu: Türme verkaufen
-- Neu: Upgrades für Schaden
-- Neu: Upgrades für die Range
Neu: Markierung von ausgewählten/aktiven Türmen
Neu: Sichtbarer Schussradius
Neu: 3D-Modelle für Minions

Ein Video gibt es diesmal nicht. Wenn Ihr es sehen wollt, dann müsst ihr euch die App installieren :stuck_out_tongue:.

So. Die neue Version ist eingereicht und sollte bald in Version 0.3 verfügbar sein. Hier nochmal der Link zum PlayStore :slight_smile::

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

Wie immer würd ich mich über Feedback freuen :slight_smile:

Gerade geprüft. Das Update ist frei :slight_smile:

So. Heute hab ich mit v0.3.1 angefangen. Der einfachste Task bisher war: Dependencies updaten. Hat keine Probleme gemacht.

Der nächste Task den ich mir geschnappt hatte, war dann die Kamerasteuerung. Bisher konnte man ja die Kamera ja nur bewegen. Mit Version 0.3.1 wird es aber (endlich!) eine Zoomfunktion geben:

So. Hab dann danach auch noch einiges gemacht. Zum einen sind Minions nun immer nach dem Spawnen auf das Ziel ausgerichtet, dann sind Start und Ziel jetzt durch Partikeleffekte besser zu erkennen. Auch wenn ich noch nicht 100% zufrieden bin - so ist das Ergebnis glaub jetzt schon besser als ohne.

Als letztes hab ich heute noch einen Bug gefixt. Wenn z.B. der erste Minion einer Welle gekillt wurde bevor der nächste spawnt, dann wurde der Spawn-Button aktiviert.

Da ich es gerne erwähne, erwähne ich es nochmal: Der Bugfix ist duch einen Test abgesichert :slight_smile:.

Für Version 0.3.1 sind jetzt noch 2 Tickets offen - aber zu denen komme ich heute nicht mehr. Aber spätestens nächsten Sonntag sollte es dann das nächste Update geben :slight_smile:.

Gestern abend hatte ich eigentlich nur mal experimentellen Code schreiben wollen - so kleine Machbarkeitsstudie. Und das hat letztendlich zu einem netten Refactoring geführt.

Und zwar war ich nicht zufrieden, mit meinem TowerSpawner. Denn der hatte mitunter die Anforderung, das Türme 1 breit und 1 tief waren. Und jeder gesetzte Turm wurde sich extra in einer Liste gemerkt. Wollte man einen neuen Turm platzieren, dann ging der immer diese Liste durch und hat geguckt, ob an der Stelle schon ein Turm steht. Dann hatte er noch eine Prüfung auf die Höhe vom Terrain drin - aber nur an einen Punkt und nicht auf einer Fläche. Es hat mir also nicht gefallen.

Ich dachte mir, dass muss doch besser gehen. Vor allem der erste Punkt müsste sich doch mit Collidern lösen können. Und was soll ich sagen: klar lässt es sich lösen.

Und den zweiten Punkt hab ich auch umgebaut und über einen TriggerCollider gelöst. Es liegt einfach ein großer Trigger auf dem Spielfeld - befindet sich der Turm darin, dann löst er aus und ich weiß: ich bin in einem gültigen Bereich.

Zudem hab ich das ganze jetzt auch in mehrere Komponenten aufgesplittet. Was vorher in einer einzigen Komponente behandelt wurde, sind jetzt mehrere.

Vorher

  • TowerSpawnerButton (Spawnt, färbt Tower im Fehlerfall ein, prüft ob platziert werden kann).

Nachher

  • TowerSpawnerButton (Aktiviert das Spawnen durch Drag-Event und ein Drop-Event gibt den Platzierungsbefehl)
  • TowerSpawner (Wenn aktiv: Spawnt einen Turm und bewegt relativ zum Finger/Maus)
  • MeshColorizer (Kümmert sich um das einfärben des Turmes)
  • CollisionValidator (Wird als Komponente an den Turm rangehängt und prüft ob der Turm andere Türme berührt + ob er sich im Trigger befindet)

Es war vor allem schön zu sehen, dass mein Refactoring keine Wellen geschlagen hat. Dadurch, dass die Komponenten untereinander Event-Basiert aufeinander reagieren, musste ich den TowerSpawner lediglich die Events feuern lassen, welche der TowerSpawnerButton vorher gefeuert hatte. Dementsprechend hatte das Refactoring bisher keine Seiteneffekte mit sich gebracht :slight_smile:.

Ich installier gerade eine neue Unity-Version (2019.1.0f2) und die kommt auch mit neuen RenderingPipelines (LW RP und HW RP) - also für kleine Geräte mit wenig Speicher und eine für Highend.

Muss jetzt mal die Tage damit rumspielen. Je nachdem wieviel Aufwand es ist werde ich das Spiel vermutlich auf die LW RP umstellen.

Na dann bin ich aber mal gespannt, bei mir läuft es ja nicht so sonderlich bisher. :smiley: