05.04.2024 - Eine Map erwacht zum Leben
Cryptceeper lehnt sich an 'Dungeon Keeper II' (DKII) an, wie jeder der DKII kennt, unschwer erkennen kann. Das Spiel spielte in meinem Leben eine größere Rolle, da es meiner Frau und mir viele schöne Stunden bereitete und eines der ersten Geschenke war, die ich von meiner besseren Hälfte bekommen habe. Leider hat das Spiel schon etliche Jahre auf dem Buckel und war es noch vor einigen Jahren zumindest etwas zu spielen, funktioniert es mittlerweile überhaupt nicht mehr.
Sehr schade, wenn man eines seiner Lieblingsspiele nicht mehr spielen kann.
Mit der Idee eines eigenen DKII spielte ich schon einige Jahre, jedoch traute ich mich bisher noch nicht an dieses Projekt heran. Grund ist, dass es schlicht und einfach sehr komplex für einen Programmierer allein ist. Der Zustand hat sich bisher nicht geändert, jedoch hat sich Unity weiter entwickelt und das neue 'DOTS'-System bietet viele neue Möglichkeiten, die es bisher nicht gab. Mit 'DOTS' kann ich nun tausende 'Objekte' bzw. in diesem Falle heißen sie 'Entities' auf der Map haben und trotzdem eine Top- Performance besitzen. Dies ermöglicht mir das neue 'Entitie-System', 'Burst', das 'Job-System' und einige andere Neuerungen mit denen ich nicht nur im Haupt-Thread, sondern auch in anderen Threads arbeiten kann. Das ganze ist zwar nun aufwendiger zu durchdenken und eine sehr genaue Planung ist bei jedem Stück Code von nöten, jedoch bringt es halt viele Vorteile und ich lerne gern etwas dazu.
Der derzeitige Stand ist noch recht überschaubar, wenn man an den Screenshots sieht:
Man möge es nicht glauben, aber an dem Projekt arbeite ich schon seit Januar diesen Jahr. Ziel war es zuerst eine Map generieren zu lassen. Jedes einzlne Feld was ihr auf dem Screenshot seht, egal ob Bodenplatte, Wand oder Decke ist eine 1x1 Plane (eine einfache Fläche) die nach Informationen, die ich einspeise, generiert wird.
Gespeichert werden die Grunddaten einer Map in einer simplen Grafik:
Jedes Pixel repräsentiert dabei ein Feld auf der Map. Beim Start des Spiels wird jedes Pixel ausgelesen und nach einem Farbcode die Map generiert. Dieses vollautomatische System sorgt dafür, dass Maps sehr einfach erzeugt werden können, sich also Zeit beim Levelbau spart und man später auch als Spieler so eigene Karten sehr einfach ins Spiel einpflegen kann.
Da ich noch am Anfang bin, sind bisher nur folgende Tile-Types vorhanden:
- Wasser
- Erde
- Stein (undurchdringlich)
- Gold
- Diamanten
- Mauer
Später kommen noch weitere Tile-Types hinzugefügt werden, aber dazu gleich mehr.
Nach dem der grafische Aspekt abgeschlossen war, folgte das Problem der Collider. Collider sind dafür da, dass kein Charakter durch den Boden fallen oder durch die Wand laufen kann.
Etwas tricky aber nach mehreren Tagen konnte auch das Problem gelöst werden. Fehler oder Problem war, dass DOTS ein komplett neues Physik-System nutzt und hier alles anders funktioniert als mit der normalen Physik die in Unity normal genutzt wird.
Der Debug zeigt nun das grüne Collidernetz. Wird eine Wand abgebaut, wird sofort das Collidernetz angepasst:
Ich muss hier im Debug mal den Alpha-Wert etwas reduzieren.^^"