diff --git a/README.md b/README.md index 664d2e7565b260b0b0945d07f06459e7e62ef74c..23dd821794ef6e5164dc17405249ce4d8ab5948b 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Das Projekt hat einige Dependencies, die vorhanden sein müssen, damit erfolgrei - SDL2 - SDL2_image -- Box2D +- Box2D (v2.4.*) - QT6 - Boost diff --git a/levelspec.md b/levelspec.md new file mode 100644 index 0000000000000000000000000000000000000000..a273c2667fa490fbbac63937f5b2e564b98adae1 --- /dev/null +++ b/levelspec.md @@ -0,0 +1,58 @@ +# Levelformat + +## Spezifikation +Das Spiel verwaltet alle notwendigen Daten in einer HDF5-Datei. Dabei sieht der Aufbau folgendermaßen aus: + +```mermaid +flowchart TD + A[root] --> B[enemies] + A[root] --> C[objects] + A --> D[player] + A --> E[rooms] + A --> F[tileset] + + B --> b1[health] + B --> b2[hitbox_x] + B --> b3[hitbox_y] + B --> b4[ids] + B --> b5[sprites] + + C --> c1[hitbox_x] + C --> c2[hitbox_y] + C --> c3[ids] + C --> c4[sprites] + C --> c5[name] + + D --> d1[health] + D --> d2[bullets] + D --> d3[sprites] + + E --> e1[0] + + e1 --> e11[enemies] + + e11 --> e111[ids] + e11 --> e112[positions_x] + e11 --> e113[positions_y] + + e1 --> e12[width] + e1 --> e13[height] + e1 --> e14[id] + e1 --> e15[name] + e1 --> e16[tiles] +``` + +### Enemies +Hier werden die möglichen Gegner gespeichert, welch vom Level-Editor in Räumen platziert werden können. Ein Enemy enthält eine ID, die Health zu Beginn sowie Breite und Höher der Hitbox. Außerdem ist im `sprites` dataset angegeben, welche Tiles aus dem Tilesheet zum Gegner gehören. + +### Objects +Analog zu Enemies, da Objects ebenfalls Kollision und Sprites haben. Allerdings haben Objects keine Healthbar, weswegen dieser Wert entfällt + +### Sprites +Hier ist das Spritesheet als ein dreidimensionales dataset aus RGBA8-Daten abgespeichert. Außerdem verfügt das dataset über ein Attribute, welches angibt, wie groß eine Tile ist. + +### Player +Hier werden die grundlegenden Einstellungen für den Spieler, wie Health zu Beginn und die Bulletsprites, gespeichert. Der Spieler wird daraus initialisiert und ab da vom Spiel gemanaged. + +### Rooms +Dieses Dataset enthält einzelne Räume als Subgroups. Räume enthalten Breite, Höhe, ID, Namen und eine Untergruppe aus Gegnerdaten. Diese Daten umfassen die X und Y Position, wo ein Gegner gespawned werden soll und die ID des Gegners. Außerdem enthält der Raum ein dataset, welches Tile-IDs enthält. Diese beschreiben den Hintergrund des Raumes und die enthaltenen Objekte als ein lineares Array aus TileIDs. Der Wert -1 beschreibt dabei Empty Space. \ No newline at end of file