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