Tagebuch: Tower Defense

Und es wurde veröffentlicht. Der direkte Play-Store link ist folgender:

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

Ich wünsche euch viel Spaß beim testen :slight_smile:.

Ich werde es mir heute Nachmittag auf jedenfall anschauen. War schon zu WC3 Zeiten ein Fan von Tower Defences :smiley:

Und im Studium hatten wir auch ein Projekt, indem wir ein Tower Defence programmieren mussten. Wir haben es allerdings in 2D gehalten

Da hats bei mir auch angefangen gehabt :smiley:.

Schonmal vorab: vielen Dank fürs anschauen :slight_smile: . Hab auch gestern schon angefangen an der neuen Version zu arbeiten. In der kommenden Version werden Türme dann Geld (SPIELGELD!!!) kosten welches man durch das Töten von Minions bekommt.

Und wie immer gilt: Wenn Ihr Ideen/Kritik habt oder Fehler findet: als her damit :slight_smile:.

Bug Report :smile:

  • Türme in der Nähe des Ziels schießen nicht.
  • Vermutung: die Türme behalten einen despawnten Gegner als Ziel und bleiben dann regungslos.

Feedback:
Hab es nur kurz ausprobiert, weil die Performance auf dem Smartphone… ufff. Also bei mir ruckelt schon das Unity Logo Intro. :slight_smile:

1 „Gefällt mir“

Das muss ich mir mal anschauen. Kann sein, dass es falsch dargestellt wird und du den Schuss einfach nicht siehst. Die Türme drehen sich noch zu langsam (sollte ich auch auf jeden Fall mal als Aufgabe erfassen).

Oha - ja wenn schon das Unity-Logo ruckelt, dann glaube ich nicht, dass ich das jemals für dein Smartphone optimiert bekomme. Ich hoffe jetzt mal mehr als inständig, dass du ein sehr sehr sehr altes Smartphone hast ^^.

Also ich hab es mal kurz angetestet. Es lief eigentlich „relativ“ flüssig mal davon abgesehen das mein Android eh ein billig Teil ist und das Display nicht schön anzufassen ist^^

Was mich gestört hatte, ich wusste nicht wie viel platz die Gegner brauchen. Ich hab eine Lücke von einem Turm gelassen nur um zu merken dass es nicht reicht.
Ich hab es zwar dann nicht beobachtet aber ich hatte das Gefühl, als kein Weg gefunden wurde (und dann das Geschoss kam) dass die Türme erstmal nicht weiter geschossen haben.

Das Problem mit den Türmen die nicht schießen wollen auch wenn der Gegner da ist, hab ich auch beobachtet. Gibt es einen Mindestabstand?

Und ein visueller Hinweis, wie groß die Reichweite ist, wäre vllt auch ganz nett :smiley:

1 „Gefällt mir“

Hab ich mal als Bug aufgenommen. Ich lasse mir dafür ein NavigationsMesh berechnen und das berechnet immer etwas mehr Platz für einen Turm als dessen Körper eigentlich braucht. Ich hoffe, das sich da relativ einfach Einfluss auf den Wert nehmen kann.

Nein gibt es nicht. Der Turm sammelt alle Minions in seiner Reichweite und schießt immer auf den Minion mit Index 0. Ich denke, dass hier einfach nur das visuelle Feedback nicht ausreicht und so das Gefühl entsteht (momentan haben die Minions auch eigentlich zu viel Lebenspunkte). Werde mir das aber tortzdem anschauen.

Ein sehr guter Punkt. Auch den hab ich aufgenommen.

Guter Punkt, eventuell die Möglichkeit bieten, Lebensbalken anzuzeigen. Per Button oder so an und abschaltbar

Das kommt definitiv. War mir für das MVP nicht wichtig genug, deswegen befindet der sich noch im Backlog ^^.

Ich hab mal meine Aufgaben geordnet. Für Version 0.2 hatte ich geplant, dass kosten eingeführt werden. Da ich damit schon angefangen hab, würde ich auch damit erstmal weiter machen.

Aber Version 0.2.1 dreht sich dann mit Priorität um das Feedback was bisher schon gekommen ist. 0.2.1 wird dann also Hauptsächlich ein Bugfix-Release. Momentan schaut das dann auch so aus:

image

Hier ist auch an Tags gut zu sehen, welche Tasks aus dem Forum kommen. Das einzige was nicht drin ist [sofern ich nix überlesen hab], ist der Punkt mit den Lebensbalken. Die würde ich glaub eher für Version 0.3 (frühestens) anpeilen.

Ok, konnte gerade unerwartet den Bug verifizieren:

Es ist kein Anzeigefehler. Wie man rechts sehen kann erkennt er die 3 Minions, aber updated warum auch immer nicht das Target.

Das dürfte ziemlich genau das Verhalten sein, was Ihr gemeldet habt.

So. Mir war dann auch relativ schnell klar, wo der Fehler lag. Schaut soweit alles gut aus. Also wird der eine Bugfix schon mit 0.2 kommen anstatt erst mit 0.2.1

Hey, wir sind hier immerhin in einem Programmierforum, raus mit der Sprache, woran lag es? Erleuchte die Nachwelt :smiley:

Schonmal dran gedacht, dass ich das so allgemein gehalten hab weil peinlich dummer Fehler? Hast du? Hast du? … NA GUUUT.

Ich hatte das Ziel brav geupdated, sobald ein Minion den Trigger-Collider (die Grüne Sphere aufm Bild) verlässt. Jeder Tower registriet sich sogar selber bei jedem Minion um zu erfahren, wann er stirbt. Nur dieses eine winzige Detail hab ich vergessen zu nutzen, um das nächste Ziel in der Liste auszuwählen :roll_eyes:

Edit Fix vergessen zu erwähnen: Aber solch einfache Dinge haben immerhin einen Vorteil - sie sind einfach zu fixen :stuck_out_tongue:. Um jetzt absolut sicher zu gehen, prüfe ich in der Update-Methode (wird 1x pro Frame aufgerufen) ob es ein aktuelles Target gibt. Ist dem nicht so, dann wähle ich das nächste in der Liste aus (sofern vorhanden).

War aber tatsächlich etwas mehr coding nötig als einfach nur ein target == null. Rider hat mir angemeckert, dass so ein Vergleich auf ein GameObjekt in Untiy wohl recht teuer ist. Und ausgerechnet in der Update-Methode möchte ich solche natürlich gerne vermeiden. Dementsprechend hab ich ein der Klasse neues boolean-Feld spendiert welches beim setzen vom Target geupdatet wird. Der Vergleich ist günstiger und sollte keinen Performance-impact haben.

So. Nun geht es in die Testphase für “Türme kosten Geld”. Bei dem ganzen ist mir im übrigen noch ein Bug bei dem Geschoss aufgefallen. Derzeit wird es ab und an fälschlicherweise getriggert. Da ich aber vllt heute noch ein Release hinbekommen könnte, hab ich den fix für v.0.2.1 geplant.

Ansonsten hier mal wieder ein Video vom aktuellen Stand:

Ok. Hab mal meine Aufgaben neu durchgeplant. Eigentlich wollte ich für das nächste Release die Funktion drin haben, dass man Türme verkaufen kann. Hab mich aber dagegen entschieden. Das wird Teil von v0.3. Denn um Türme verkaufen zu können, brauchen diese auch ein Kontext-Menü. Und wenn man sich überlegt, welche Aktionen da drin sein sollen, dann kommt wohl mit als erstes der Gedanke an Upgrades. Demenetsprechend hab ich daraus einfach ein eigenes Release geplant.

Also schaut meine Roadmap gerade so aus:

v0.2: Geld & Kosten
v0.2.1: Bugfixes und kleine Verbesserungen
v0.3: Turmmenü & Upgrades

So. Die neue Version ist eingereicht. Spätestens heute abend sollte das ganze dann im Playstore zum Download bereit stehen :slight_smile:


Edit: Ok - sollte bereits zum Download bereit stehen =)

Bin gerade dran einzubauen, dass Minions jetzt auch wirklich zwischen zwei Towern durchlaufen können. Und es schaut soweit ganz gut aus. Zum Vergleich (Die blaue Fläche ist „walkable“):

vorher:
image

nachher
image

Jetzt kommt der Minion auch durch, ohne eine Rakete zünden zu müssen:

War alles ohne Code lösbar. Hat zwar etwas gedauert, bis ich die richtige Stellschraube gefunden hatte - aber jetzt passts :slight_smile:

Puh und ich dachte erst, das ganze könnte ich nicht einbauen. Denn auf einmal spawnte das Minion geschoss schon zu anfang - auch wenn noch kein Turm platziert wurde. Hat wohl aber mit einem anderen Bug zu tun gehabt, welcher aber auch bereits auf meiner Todo-liste stand.

Vermutung: Der Minion befindet sich in der Luft - kein Weg ist frei: Booom. Jetzt hab ich eingebaut, dass der Minion 10 Frames lang keinen Weg haben darf bevor das Geschoss gespawnt wird. Das behebt das Problem :slight_smile:

Mh bei mir standen sie relativ lange rum, bis das Geschoss kam