Version 2.2.1

  • Es wurde ein weiterer Edge-Case behoben, indem Ressourcen vom Spiel nicht wieder freigegeben wurden, falls der Prozess des Spiels mittels SIGKILL beendet wurde.

Version 2.2.0

  • Hinzugefügte Funktionen:
    • Die Kampagnen 6.1 und 6.2 wurden funktional hinzugefügt.
    • Es ist nun möglich die vom Spiel für die Ausführung von Spielern zu verwendeten Ressourcen mittels Kommandozeilenparameter festzulegen. Dies geht mittels -executionResource THREAD | PROCESS | VARIABLE Parameter, um einzustellen, ob immer Threads (1.), immer Prozesse (2.) oder nur Threads bei internen und sonst Prozesse (3.) verwendet werden sollen.
  • Fehlerbehebungen:
    • Falls das Spiel dem Spiel beim Start mit grafischer Oberfläche ausreichend Kommandozeilenparameter zum Start einer Runde übergeben werden, sodass das Hauptmenü übersprungen wird, werden nun die UI-Elemente wie der Rundenzähler korrekt angezeigt.
    • Alle vom Spiel verwendeten Ressourcen sollten nun korrekt freigegeben werden, falls der Prozess mit SIGKILL beendet wird.

Version 2.1.2

  • Da v2.1.1 nicht alle vorher aufgetretenen Probleme beseitigt hat, wurden in diesem Release weitere Änderungen vorgenommen, die dafür sorgen sollten, dass Bots in dieser Version und v2.0.0 gleich verhalten sollten.

Version 2.1.1

  • Eine Änderung, in der Abarbeitung der Botbefehle wurde zurückgenommen, die in Version 2.1.0 dazu geführt hat, dass Bots sich anders verhalten und zum Teil bestimmte Spiele nicht mehr gewinnen.

Version 2.1.0

  • Hinzugefügte Funktionen:
    • Die Kampagnen 5.1 und 5.2 wurden funktional hinzugefügt.
    • Ein Prototyp für den Online-Multiplayer wurde hinzugefügt. Mehr Details zu diesem, gibt es hier.

Version 2.0.0

  • Nicht-rückwärtskompatible Änderungen:
    • Die Klasse ObstacleTile wurde zu WaterTile umbenannt.
    • Die Klasse GrassTile wurde hinzugefügt.
      • Das von der StaticPlayerState.getBoard() Methode zurückgegebene 2-dimensionale Array, welches die Karte des Spiels repräsentiert, hat leere Felder bisher mit null-Werten dargestellt. Dies ist nicht mehr der Fall!
        Stattdessen werden leere Felder nun durch GrassTile-Instanzen repräsentiert.
  • API-Anpassungen:
    • Die StaticPlayerState.getEnemyCost() Methode wurde hinzugefügt, um die Kosten zum Spawnen einer Maus beim gegnerischen Spieler zu berechnen.
    • Zusätzlich zur Tile.isBuildable() und Tile.isPath() Methode, gibt es nun die Tile.isTower() und Tile.isWater() Methoden hinzugefügt.
    • Die Tile.getType() Methode wurde hinzugefügt. Zusammen mit dem TileType Enum der Tile Klasse kann diese Methode nun zur Unterscheidung von Tile-Instanzen in switch(tile.getType()) {...} Statements verwendet werden.
  • Hinzugefügte Funktionen:
    • Die Kampagnen 4.1 und 4.2 wurden funktional hinzugefügt.
    • Die Namen der von uns bereitgestellten Standardmaps wurden angepasst.
    • Die Formatierung der Ausgabe über das Spielergebnis wurde angepasst.
  • Fehlerbehebungen:
    • Wenn ein Bot der Controller.setTowerTarget() Methode Koordinaten übergibt, die außerhalb des Spielfeldes liegen, kommt es nicht länger aufgrund einer ArrayIndexOutOfBoundsException zu Fehlern.
    • Wenn das Spiel in der grafischen Oberfläche gestartet wird, werden am Spielende keine Popups mehr angezeigt, dass Spieler disqualifiziert seien, wenn dies nicht der Fall sein sollte.
    • Man verliert nun automatisch in Kampagne 3.1, falls man den gegnerischen Spieler nicht bis Runde 50 besiegt hat.
    • Man verliert nun automatisch in Kampagne 3.2, falls man den gegnerischen Spieler nicht bis Runde 60 besiegt hat.

Version 1.4.0

  • Hinzugefügte Funktionen:
    • Die Kampagnen 3.1 und 3.2 wurden funktional hinzugefügt.
  • Balancing-Änderungen:
    • Der Schaden von Magiekatzen wird um 10% reduziert für jede weitere Magiekatze in ihrer Reichweite bis zu einem Maximum an 50%.
      Das gleiche gilt für Minigunkatzen und andere Minigunkatzen in ihrer Reichweite.
  • Fehlerbehebungen:
    • Alle vom Spiel verwendeten Ressourcen sollten korrekt freigegeben werden, falls das Prozess mittels SIGINT oder SIGKILL beendet wird.

Version 1.3.0

  • Hinzugefügte Funktionen:
    • Die Kampagnen 2.1 und 2.2 wurden funktional hinzugefügt.
  • Balancing-Änderungen:
    • In den Kampagnen 1.1 und 1.2 wurde das Spawning der Gegner angepasst, sodass nicht mehr zu starke Gegner spawnen können, die von den Türmen nicht besiegt werden können.
  • Sonstige Änderungen:
    • Die Kampagnen im Auswahlscreen sind im Dropdown nun strukturierter sortiert.

Version 1.2.0

  • API-Anpassungen:
    • Der Schaden der Katanakatze wurde angepasst:
      • Level 1: 10 -> 12 Schaden
      • Level 2: 15 -> 18 Schaden
      • Level 3: 25 -> 30 Schaden
    • Tower.getTowerRange() wurde als statische Methode hinzugefügt, um, ohne eine Tower-Instanz zu haben, sich die Reichweite der Türme beschaffen zu können.
  • Fehlerbehebungen:
    • Das Spiel stürzt nicht länger ab, wenn man es mit einem eigenen Bot ausführen möchte und dieser eine Strafe, aufgrund eines Timeouts oder einer geworfenen Exception, erhält.
    • Wenn man in einem eigenen Bot innere Klassen verwendet und diesen Bot kompiliert, stürzt das Spiel im graphischen Modus nicht länger beim Starten ab bzw. sorgt nicht mehr für java.lang.ClassNotFoundExceptions während der Runden mit Headless-Modus.
    • Im Exam Admission Modus wirft der Gegnerbot nicht länger NullPointerExceptions.
    • Das Spiel stürzt nicht länger ab, wenn man im graphischen Modus versucht eine Kampagne zu starten.
  • Sonstige Änderungen:
    • Die Ausgabe auf der Konsole, ob eine Kampagne bzw. die Prüfungszulassung erfolgreich bestanden wurde, wurde angepasst.

Version 1.1.2

  • Die Formatierung der Hilfeseite (java -jar gaTDsen-[Version].jar --help) wurde angepasst.
  • Die Leben der Spieler in den Kampagnen 1.1 und 1.2 wurden ursprünglich falsch zugeordnet, was nun korrigiert wurde. Der eingereichte Bot hat nun 100, während der IdleBot 300 Leben hat.

Version 1.1.1

  • Das Spiel stürzt nicht länger ab, wenn man versucht mit einem selbst erstellten Bot zu spielen.

Version 1.1.0

  • Die Minigun-, Katana- und Magekatzen sind nun die verfügbaren Türme.
  • Die Schild-, EMP- und Rüstungsmäuse sind die spawnbaren Gegner.
  • Die Zieloption von Türmen können nun gewechselt werden zwischen: Fokus auf Stärksten, Schwächsten, Ersten und Letzten.
  • viele interne Änderungen seit letztem Release, die hier nicht alle erwähnt werden können…

Version 1.0.5

  • Das Spiel beendet nun korrekt im Modus ohne grafische Benutzeroberfläche und hängt nicht länger in einem Deadlock fest.

Version 1.0.4

  • Beim Start des Spiels wird nun in der Konsole die aktuelle Version ausgegeben.
  • Das Spiel stürzt nicht länger ab, sofern man versucht mit grafischer Benutzeroberfläche zu starten.
  • Das Spiel stürzt nicht länger ab, wenn sich im bots Ordner Klassen befinden, die von einer neueren Java Version kompiliert wurden, als der mit der das Spiel in dem Moment ausgeführt wird. Stattdessen wird nun eine Fehlermeldung ausgegeben und die Klasse ignoriert.
  • Es wurden einige unnötige Konsolenausgaben entfernt.

Version 1.0.3

  • Die Jar-Datei des Spiels wurde nun mit Java 11 kompiliert statt Java 19, sodass auch niedrigere Java Versionen unterstützt werden.

Version 1.0.2

  • Das Spiel stürzt nun nicht länger aufgrund einer NullPointerException ab, wenn man in der grafischen Oberfläche mit vielen Türmen auf den gleichen Gegner schießt.

Version 1.0.1

  • Die Knöpfe zum Starten der unterschiedlichen Spielmodi (Normal und Weihnachtsaufgabe) sind nun nicht länger soweit unten im Hauptmenü positioniert, sondern mittiger.
  • Bots, die die Methode Controller.placeTower() können nun nicht länger Türme auf Hindernissen wie dem Wasser platzieren.

Version 1.0.0

  • Erste Version des Spiels, welche mit der Freischaltung der Weihnachtsaufgabe veröffentlicht wurde.