Browse Source

Lesson 24.10

Godzil 3 years ago
parent
commit
b47d0429a4
73 changed files with 2909 additions and 13 deletions
  1. BIN
      assets/images/army-cannon-down.png
  2. BIN
      assets/images/army-cannon-killed.png
  3. BIN
      assets/images/army-cannon-left.png
  4. BIN
      assets/images/army-cannon-right.png
  5. BIN
      assets/images/army-cannon-up.png
  6. BIN
      assets/images/army-gun-down.png
  7. BIN
      assets/images/army-gun-left.png
  8. BIN
      assets/images/army-gun-right.png
  9. BIN
      assets/images/army-gun-up.png
  10. BIN
      assets/images/army-walk-down.png
  11. BIN
      assets/images/army-walk-killed.png
  12. BIN
      assets/images/army-walk-left.png
  13. BIN
      assets/images/army-walk-right.png
  14. BIN
      assets/images/army-walk-up.png
  15. BIN
      assets/images/bf109-spritesheet.png
  16. BIN
      assets/images/boat.png
  17. BIN
      assets/images/bomber-spritesheet.png
  18. BIN
      assets/images/bomber.png
  19. BIN
      assets/images/carrier.png
  20. BIN
      assets/images/chopper-green-spritesheet.png
  21. BIN
      assets/images/chopper-white-spritesheet.png
  22. BIN
      assets/images/f22-spritesheet.png
  23. BIN
      assets/images/f22.png
  24. BIN
      assets/images/fw190-spritesheet.png
  25. BIN
      assets/images/fw190.png
  26. BIN
      assets/images/obstacles-1.png
  27. BIN
      assets/images/obstacles-2.png
  28. BIN
      assets/images/obstacles-3.png
  29. BIN
      assets/images/obstacles-4.png
  30. BIN
      assets/images/obstacles-5.png
  31. BIN
      assets/images/obstacles-6.png
  32. BIN
      assets/images/obstacles-7.png
  33. BIN
      assets/images/radar-spritesheet.png
  34. BIN
      assets/images/runway.png
  35. BIN
      assets/images/sam-tank-left-spritesheet.png
  36. BIN
      assets/images/sam-tank-left.png
  37. BIN
      assets/images/sam-tank-right-spritesheet.png
  38. BIN
      assets/images/sam-truck-right.png
  39. BIN
      assets/images/su27-spritesheet.png
  40. BIN
      assets/images/su27.png
  41. BIN
      assets/images/tank-panther-killed.png
  42. BIN
      assets/images/tank-panther-spritesheet.png
  43. BIN
      assets/images/tank-tiger-killed.png
  44. BIN
      assets/images/tank-tiger-spritesheet.png
  45. BIN
      assets/images/tree-1.png
  46. BIN
      assets/images/tree-10.png
  47. BIN
      assets/images/tree-11.png
  48. BIN
      assets/images/tree-12.png
  49. BIN
      assets/images/tree-13.png
  50. BIN
      assets/images/tree-14.png
  51. BIN
      assets/images/tree-15.png
  52. BIN
      assets/images/tree-16.png
  53. BIN
      assets/images/tree-17.png
  54. BIN
      assets/images/tree-18.png
  55. BIN
      assets/images/tree-19.png
  56. BIN
      assets/images/tree-2.png
  57. BIN
      assets/images/tree-20.png
  58. BIN
      assets/images/tree-3.png
  59. BIN
      assets/images/tree-4.png
  60. BIN
      assets/images/tree-5.png
  61. BIN
      assets/images/tree-6.png
  62. BIN
      assets/images/tree-7.png
  63. BIN
      assets/images/tree-8.png
  64. BIN
      assets/images/tree-9.png
  65. BIN
      assets/images/truck-ford-spritesheet.png
  66. BIN
      assets/images/upf7-spritesheet.png
  67. BIN
      assets/images/upf7.png
  68. 117 0
      assets/scripts/Level0.lua
  69. 2761 12
      assets/scripts/Level1.lua
  70. 30 0
      assets/tilemaps/desert.map
  71. BIN
      assets/tilemaps/desert.png
  72. BIN
      assets/tilemaps/jungle-night.png
  73. 1 1
      assets/tilemaps/jungle.map

BIN
assets/images/army-cannon-down.png


BIN
assets/images/army-cannon-killed.png


BIN
assets/images/army-cannon-left.png


BIN
assets/images/army-cannon-right.png


BIN
assets/images/army-cannon-up.png


BIN
assets/images/army-gun-down.png


BIN
assets/images/army-gun-left.png


BIN
assets/images/army-gun-right.png


BIN
assets/images/army-gun-up.png


BIN
assets/images/army-walk-down.png


BIN
assets/images/army-walk-killed.png


BIN
assets/images/army-walk-left.png


BIN
assets/images/army-walk-right.png


BIN
assets/images/army-walk-up.png


BIN
assets/images/bf109-spritesheet.png


BIN
assets/images/boat.png


BIN
assets/images/bomber-spritesheet.png


BIN
assets/images/bomber.png


BIN
assets/images/carrier.png


BIN
assets/images/chopper-green-spritesheet.png


BIN
assets/images/chopper-white-spritesheet.png


BIN
assets/images/f22-spritesheet.png


BIN
assets/images/f22.png


BIN
assets/images/fw190-spritesheet.png


BIN
assets/images/fw190.png


BIN
assets/images/obstacles-1.png


BIN
assets/images/obstacles-2.png


BIN
assets/images/obstacles-3.png


BIN
assets/images/obstacles-4.png


BIN
assets/images/obstacles-5.png


BIN
assets/images/obstacles-6.png


BIN
assets/images/obstacles-7.png


BIN
assets/images/radar-spritesheet.png


BIN
assets/images/runway.png


BIN
assets/images/sam-tank-left-spritesheet.png


BIN
assets/images/sam-tank-left.png


BIN
assets/images/sam-tank-right-spritesheet.png


BIN
assets/images/sam-truck-right.png


BIN
assets/images/su27-spritesheet.png


BIN
assets/images/su27.png


BIN
assets/images/tank-panther-killed.png


BIN
assets/images/tank-panther-spritesheet.png


BIN
assets/images/tank-tiger-killed.png


BIN
assets/images/tank-tiger-spritesheet.png


BIN
assets/images/tree-1.png


BIN
assets/images/tree-10.png


BIN
assets/images/tree-11.png


BIN
assets/images/tree-12.png


BIN
assets/images/tree-13.png


BIN
assets/images/tree-14.png


BIN
assets/images/tree-15.png


BIN
assets/images/tree-16.png


BIN
assets/images/tree-17.png


BIN
assets/images/tree-18.png


BIN
assets/images/tree-19.png


BIN
assets/images/tree-2.png


BIN
assets/images/tree-20.png


BIN
assets/images/tree-3.png


BIN
assets/images/tree-4.png


BIN
assets/images/tree-5.png


BIN
assets/images/tree-6.png


BIN
assets/images/tree-7.png


BIN
assets/images/tree-8.png


BIN
assets/images/tree-9.png


BIN
assets/images/truck-ford-spritesheet.png


BIN
assets/images/upf7-spritesheet.png


BIN
assets/images/upf7.png


+ 117 - 0
assets/scripts/Level0.lua

@@ -0,0 +1,117 @@
+-- Define a table with the values of the first level
+Level = {
+    ----------------------------------------------------
+    -- Table to define the list of assets
+    ----------------------------------------------------
+    assets = {
+        [0] =
+        { type = "texture", id = "tilemap-texture", file = "assets/tilemaps/jungle.png" },
+        { type = "texture", id = "chopper-texture", file = "assets/images/chopper-spritesheet.png" },
+        { type = "texture", id = "tank-texture",    file = "assets/images/tank-tiger-up.png" },
+        { type = "texture", id = "bullet-texture",  file = "assets/images/bullet.png" },
+        { type = "font"   , id = "pico8-font-5",    file = "assets/fonts/pico8.ttf", font_size = 5 },
+        { type = "font"   , id = "pico8-font-10",   file = "assets/fonts/pico8.ttf", font_size = 10 }
+    },
+
+    ----------------------------------------------------
+    -- table to define the map config variables
+    ----------------------------------------------------
+    tilemap = {
+        map_file = "assets/tilemaps/jungle.map",
+        texture_asset_id = "tilemap-texture",
+        num_rows = 20,
+        num_cols = 25,
+        tile_size = 32,
+        scale = 2.0
+    },
+
+    ----------------------------------------------------
+    -- table to define entities and their components
+    ----------------------------------------------------
+    entities = {
+        [0] =
+        {
+            -- Player
+            tag = "player",
+            components = {
+                transform = {
+                    position = { x = 242, y = 110 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                rigidbody = {
+                    velocity = { x = 0.0, y = 0.0 }
+                },
+                sprite = {
+                    texture_asset_id = "chopper-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 4,
+                    fixed = false,
+                    src_rect_x = 0,
+                    src_rect_y = 0
+                },
+                animation = {
+                    num_frames = 2,
+                    speed_rate = 10 -- fps
+                },
+                boxcollider = {
+                    width = 32,
+                    height = 25,
+                    offset = { x = 0, y = 5 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = 200, y = 200 },
+                    projectile_duration = 10, -- seconds
+                    repeat_frequency = 0, -- seconds
+                    hit_percentage_damage = 10,
+                    friendly = true
+                },
+                keyboard_controller = {
+                    up_velocity = { x = 0, y = -50 },
+                    right_velocity = { x = 50, y = 0 },
+                    down_velocity = { x = 0, y = 50 },
+                    left_velocity = { x = -50, y = 0 }
+                },
+                camera_follow = {
+                    follow = true
+                }
+            }
+        },
+        {
+            -- Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 200, y = 497 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tank-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 2
+                },
+                boxcollider = {
+                    width = 25,
+                    height = 18,
+                    offset = { x = 0, y = 7 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = 100, y = 0 },
+                    projectile_duration = 2, -- seconds
+                    repeat_frequency = 1, -- seconds
+                    hit_percentage_damage = 20,
+                    friendly = false
+                }
+            }
+        }
+    }
+}

+ 2761 - 12
assets/scripts/Level1.lua

@@ -1,23 +1,89 @@
--- Define a table with the values of the first level
+-- Define a table with the start values of the first level
 Level = {
     ----------------------------------------------------
     -- Table to define the list of assets
     ----------------------------------------------------
     assets = {
         [0] =
-        { type = "texture", id = "tilemap-texture", file = "assets/tilemaps/jungle.png" },
-        { type = "texture", id = "chopper-texture", file = "assets/images/chopper-spritesheet.png" },
-        { type = "texture", id = "tank-texture",    file = "assets/images/tank-tiger-up.png" },
-        { type = "texture", id = "bullet-texture",  file = "assets/images/bullet.png" },
-        { type = "font"   , id = "pico8-font-5",    file = "assets/fonts/pico8.ttf", font_size = 5 },
-        { type = "font"   , id = "pico8-font-10",   file = "assets/fonts/pico8.ttf", font_size = 10 }
+        { type = "texture", id = "tilemap-texture",             file = "./assets/tilemaps/jungle.png" },
+        { type = "texture", id = "chopper-texture",             file = "./assets/images/chopper-green-spritesheet.png" },
+        { type = "texture", id = "su27-texture",                file = "./assets/images/su27-spritesheet.png" },
+        { type = "texture", id = "f22-texture",                 file = "./assets/images/f22-spritesheet.png" },
+        { type = "texture", id = "fw190-texture",               file = "./assets/images/fw190-spritesheet.png" },
+        { type = "texture", id = "upf7-texture",                file = "./assets/images/upf7-spritesheet.png" },
+        { type = "texture", id = "bf109-texture",               file = "./assets/images/bf109-spritesheet.png" },
+        { type = "texture", id = "bomber-texture",              file = "./assets/images/bomber-spritesheet.png" },
+        { type = "texture", id = "carrier-texture",             file = "./assets/images/carrier.png" },
+        { type = "texture", id = "boat-texture",                file = "./assets/images/boat.png" },
+        { type = "texture", id = "tank-tiger-up-texture",       file = "./assets/images/tank-tiger-up.png" },
+        { type = "texture", id = "tank-tiger-right-texture",    file = "./assets/images/tank-tiger-right.png" },
+        { type = "texture", id = "tank-tiger-down-texture",     file = "./assets/images/tank-tiger-down.png" },
+        { type = "texture", id = "tank-tiger-left-texture",     file = "./assets/images/tank-tiger-left.png" },
+        { type = "texture", id = "tank-tiger-killed-texture",   file = "./assets/images/tank-tiger-killed.png" },
+        { type = "texture", id = "tank-panther-up-texture",     file = "./assets/images/tank-panther-up.png" },
+        { type = "texture", id = "tank-panther-right-texture",  file = "./assets/images/tank-panther-right.png" },
+        { type = "texture", id = "tank-panther-down-texture",   file = "./assets/images/tank-panther-down.png" },
+        { type = "texture", id = "tank-panther-left-texture",   file = "./assets/images/tank-panther-left.png" },
+        { type = "texture", id = "tank-panther-killed-texture", file = "./assets/images/tank-panther-killed.png" },
+        { type = "texture", id = "truck-ford-up-texture",       file = "./assets/images/truck-ford-up.png" },
+        { type = "texture", id = "truck-ford-right-texture",    file = "./assets/images/truck-ford-right.png" },
+        { type = "texture", id = "truck-ford-down-texture",     file = "./assets/images/truck-ford-down.png" },
+        { type = "texture", id = "truck-ford-left-texture",     file = "./assets/images/truck-ford-left.png" },
+        { type = "texture", id = "truck-ford-killed-texture",   file = "./assets/images/truck-ford-killed.png" },
+        { type = "texture", id = "army-walk-up-texture",        file = "./assets/images/army-walk-up.png" },
+        { type = "texture", id = "army-walk-right-texture",     file = "./assets/images/army-walk-right.png" },
+        { type = "texture", id = "army-walk-down-texture",      file = "./assets/images/army-walk-down.png" },
+        { type = "texture", id = "army-walk-left-texture",      file = "./assets/images/army-walk-left.png" },
+        { type = "texture", id = "army-walk-killed-texture",    file = "./assets/images/army-walk-killed.png" },
+        { type = "texture", id = "army-gun-up-texture",         file = "./assets/images/army-gun-up.png" },
+        { type = "texture", id = "army-gun-right-texture",      file = "./assets/images/army-gun-right.png" },
+        { type = "texture", id = "army-gun-down-texture",       file = "./assets/images/army-gun-down.png" },
+        { type = "texture", id = "army-gun-left-texture",       file = "./assets/images/army-gun-left.png" },
+        { type = "texture", id = "army-gun-killed-texture",     file = "./assets/images/army-gun-killed.png" },
+        { type = "texture", id = "sam-truck-right-texture",     file = "./assets/images/sam-truck-right.png" },
+        { type = "texture", id = "sam-tank-left-texture",       file = "./assets/images/sam-tank-left-spritesheet.png" },
+        { type = "texture", id = "sam-tank-right-texture",      file = "./assets/images/sam-tank-right-spritesheet.png" },
+        { type = "texture", id = "takeoff-base-texture",        file = "./assets/images/takeoff-base.png" },
+        { type = "texture", id = "landing-base-texture",        file = "./assets/images/landing-base.png" },
+        { type = "texture", id = "runway-texture",              file = "./assets/images/runway.png" },
+        { type = "texture", id = "obstacles1-texture",          file = "./assets/images/obstacles-1.png" },
+        { type = "texture", id = "obstacles2-texture",          file = "./assets/images/obstacles-2.png" },
+        { type = "texture", id = "obstacles3-texture",          file = "./assets/images/obstacles-3.png" },
+        { type = "texture", id = "obstacles4-texture",          file = "./assets/images/obstacles-4.png" },
+        { type = "texture", id = "obstacles5-texture",          file = "./assets/images/obstacles-5.png" },
+        { type = "texture", id = "obstacles6-texture",          file = "./assets/images/obstacles-6.png" },
+        { type = "texture", id = "obstacles7-texture",          file = "./assets/images/obstacles-7.png" },
+        { type = "texture", id = "tree1-texture",               file = "./assets/images/tree-1.png" },
+        { type = "texture", id = "tree2-texture",               file = "./assets/images/tree-2.png" },
+        { type = "texture", id = "tree3-texture",               file = "./assets/images/tree-3.png" },
+        { type = "texture", id = "tree4-texture",               file = "./assets/images/tree-4.png" },
+        { type = "texture", id = "tree5-texture",               file = "./assets/images/tree-5.png" },
+        { type = "texture", id = "tree6-texture",               file = "./assets/images/tree-6.png" },
+        { type = "texture", id = "tree7-texture",               file = "./assets/images/tree-7.png" },
+        { type = "texture", id = "tree8-texture",               file = "./assets/images/tree-8.png" },
+        { type = "texture", id = "tree9-texture",               file = "./assets/images/tree-9.png" },
+        { type = "texture", id = "tree10-texture",              file = "./assets/images/tree-10.png" },
+        { type = "texture", id = "tree11-texture",              file = "./assets/images/tree-11.png" },
+        { type = "texture", id = "tree12-texture",              file = "./assets/images/tree-12.png" },
+        { type = "texture", id = "tree13-texture",              file = "./assets/images/tree-13.png" },
+        { type = "texture", id = "tree14-texture",              file = "./assets/images/tree-14.png" },
+        { type = "texture", id = "tree15-texture",              file = "./assets/images/tree-15.png" },
+        { type = "texture", id = "tree16-texture",              file = "./assets/images/tree-16.png" },
+        { type = "texture", id = "tree17-texture",              file = "./assets/images/tree-17.png" },
+        { type = "texture", id = "tree18-texture",              file = "./assets/images/tree-18.png" },
+        { type = "texture", id = "tree19-texture",              file = "./assets/images/tree-19.png" },
+        { type = "texture", id = "tree20-texture",              file = "./assets/images/tree-20.png" },
+        { type = "texture", id = "bullet-texture",              file = "./assets/images/bullet.png" },
+        { type = "texture", id = "radar-texture",               file = "./assets/images/radar-spritesheet.png" },
+        { type = "font"   , id = "pico8-font-5",                file = "./assets/fonts/pico8.ttf", font_size = 5 },
+        { type = "font"   , id = "pico8-font-10",               file = "./assets/fonts/pico8.ttf", font_size = 10 }
     },
 
     ----------------------------------------------------
     -- table to define the map config variables
     ----------------------------------------------------
     tilemap = {
-        map_file = "assets/tilemaps/jungle.map",
+        map_file = "./assets/tilemaps/jungle.map",
         texture_asset_id = "tilemap-texture",
         num_rows = 20,
         num_cols = 25,
@@ -81,6 +147,92 @@ Level = {
                 }
             }
         },
+        {
+            -- Takeoff base
+            components = {
+                transform = {
+                    position = { x = 240, y = 113 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "takeoff-base-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                }
+            }
+        },
+        {
+            -- Landing base
+            components = {
+                transform = {
+                    position = { x = 1396, y = 493 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "landing-base-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                }
+            }
+        },
+        {
+            -- Radar UI animation
+            group = "ui",
+            components = {
+                transform = {
+                    position = { x = 10, y = 10 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "radar-texture",
+                    width = 64,
+                    height = 64,
+                    z_index = 10,
+                    fixed = true
+                },
+                animation = {
+                    num_frames = 8,
+                    speed_rate = 7 -- fps
+                }
+            }
+        },
+        {
+            -- Runway
+            components = {
+                transform = {
+                    position = { x = 940, y = 65 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 270.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "runway-texture",
+                    width = 21,
+                    height = 191,
+                    z_index = 1
+                }
+            }
+        },
+        {
+            -- Runway
+            components = {
+                transform = {
+                    position = { x = 470, y = 385 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "runway-texture",
+                    width = 21,
+                    height = 191,
+                    z_index = 1
+                }
+            }
+        },
         {
             -- Tank
             group = "enemies",
@@ -91,7 +243,7 @@ Level = {
                     rotation = 0.0, -- degrees
                 },
                 sprite = {
-                    texture_asset_id = "tank-texture",
+                    texture_asset_id = "tank-tiger-right-texture",
                     width = 32,
                     height = 32,
                     z_index = 2
@@ -112,6 +264,2603 @@ Level = {
                     friendly = false
                 }
             }
-        }
-    }
-}
+        },
+        {
+            -- Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 785, y = 170 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tank-panther-up-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 17,
+                    height = 18,
+                    offset = { x = 7, y = 10 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = 0, y = -50 },
+                    projectile_duration = 4, -- seconds
+                    repeat_frequency = 2, -- seconds
+                    hit_percentage_damage = 10,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 785, y = 250 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tank-tiger-down-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 20,
+                    height = 18,
+                    offset = { x = 5, y = 7 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = 0, y = 20 },
+                    projectile_duration = 3, -- seconds
+                    repeat_frequency = 3, -- seconds
+                    hit_percentage_damage = 10,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 785, y = 350 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tank-panther-left-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 25,
+                    height = 18,
+                    offset = { x = 5, y = 7 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = -50, y = 0 },
+                    projectile_duration = 3, -- seconds
+                    repeat_frequency = 3, -- seconds
+                    hit_percentage_damage = 10,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 570, y = 520 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tank-panther-right-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 25,
+                    height = 18,
+                    offset = { x = 5, y = 7 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = 60, y = 0 },
+                    projectile_duration = 4, -- seconds
+                    repeat_frequency = 4, -- seconds
+                    hit_percentage_damage = 10,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 570, y = 600 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tank-panther-left-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 25,
+                    height = 18,
+                    offset = { x = 5, y = 7 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = -60, y = 0 },
+                    projectile_duration = 4, -- seconds
+                    repeat_frequency = 4, -- seconds
+                    hit_percentage_damage = 10,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 1050, y = 170 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tank-panther-right-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 25,
+                    height = 18,
+                    offset = { x = 5, y = 7 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = 60, y = 0 },
+                    projectile_duration = 4, -- seconds
+                    repeat_frequency = 4, -- seconds
+                    hit_percentage_damage = 10,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 1170, y = 116 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tank-panther-down-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 17,
+                    height = 18,
+                    offset = { x = 8, y = 6 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = 0, y = 40 },
+                    projectile_duration = 2, -- seconds
+                    repeat_frequency = 2, -- seconds
+                    hit_percentage_damage = 10,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 1380, y = 116 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tank-panther-down-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 17,
+                    height = 18,
+                    offset = { x = 8, y = 6 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = 0, y = 40 },
+                    projectile_duration = 2, -- seconds
+                    repeat_frequency = 2, -- seconds
+                    hit_percentage_damage = 10,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 1265, y = 240 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tank-panther-killed-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                }
+            }
+        },
+        {
+            -- Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 1265, y = 290 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tank-panther-left-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 20,
+                    height = 17,
+                    offset = { x = 7, y = 7 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = -40, y = 0 },
+                    projectile_duration = 2, -- seconds
+                    repeat_frequency = 2, -- seconds
+                    hit_percentage_damage = 10,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 640, y = 800 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tank-tiger-down-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 18,
+                    height = 20,
+                    offset = { x = 7, y = 7 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = 0, y = 100 },
+                    projectile_duration = 5, -- seconds
+                    repeat_frequency = 5, -- seconds
+                    hit_percentage_damage = 10,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 790, y = 745 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tank-tiger-left-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 25,
+                    height = 18,
+                    offset = { x = 7, y = 7 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = -60, y = 0 },
+                    projectile_duration = 10, -- seconds
+                    repeat_frequency = 1, -- seconds
+                    hit_percentage_damage = 10,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 980, y = 790 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tank-tiger-right-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 25,
+                    height = 18,
+                    offset = { x = 0, y = 7 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = 60, y = 0 },
+                    projectile_duration = 2, -- seconds
+                    repeat_frequency = 1, -- seconds
+                    hit_percentage_damage = 10,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 1070, y = 870 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tank-panther-down-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 17,
+                    height = 20,
+                    offset = { x = 8, y = 4 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = 0, y = 100 },
+                    projectile_duration = 4, -- seconds
+                    repeat_frequency = 2, -- seconds
+                    hit_percentage_damage = 10,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 1190, y = 790 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tank-panther-up-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 17,
+                    height = 20,
+                    offset = { x = 7, y = 8 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = 0, y = -200 },
+                    projectile_duration = 2, -- seconds
+                    repeat_frequency = 1, -- seconds
+                    hit_percentage_damage = 10,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 1210, y = 790 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tank-panther-up-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 17,
+                    height = 20,
+                    offset = { x = 7, y = 8 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = 0, y = -200 },
+                    projectile_duration = 2, -- seconds
+                    repeat_frequency = 1, -- seconds
+                    hit_percentage_damage = 10,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 1230, y = 790 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tank-panther-up-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 17,
+                    height = 20,
+                    offset = { x = 7, y = 8 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = 0, y = -200 },
+                    projectile_duration = 2, -- seconds
+                    repeat_frequency = 1, -- seconds
+                    hit_percentage_damage = 10,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 1250, y = 790 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tank-panther-up-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 17,
+                    height = 20,
+                    offset = { x = 7, y = 8 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = 0, y = -200 },
+                    projectile_duration = 2, -- seconds
+                    repeat_frequency = 1, -- seconds
+                    hit_percentage_damage = 10,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 1000, y = 445 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tank-panther-up-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 17,
+                    height = 20,
+                    offset = { x = 7, y = 8 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = 0, y = -200 },
+                    projectile_duration = 2, -- seconds
+                    repeat_frequency = 1, -- seconds
+                    hit_percentage_damage = 10,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 1426, y = 760 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tank-panther-right-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 22,
+                    height = 18,
+                    offset = { x = 5, y = 7 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = 200, y = 0 },
+                    projectile_duration = 2, -- seconds
+                    repeat_frequency = 1, -- seconds
+                    hit_percentage_damage = 10,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 1423, y = 835 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tank-tiger-left-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 25,
+                    height = 18,
+                    offset = { x = 7, y = 7 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = -200, y = 0 },
+                    projectile_duration = 1, -- seconds
+                    repeat_frequency = 2, -- seconds
+                    hit_percentage_damage = 10,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 1450, y = 300 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tank-tiger-down-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 19,
+                    height = 20,
+                    offset = { x = 6, y = 7 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = 0, y = 300 },
+                    projectile_duration = 1, -- seconds
+                    repeat_frequency = 1, -- seconds
+                    hit_percentage_damage = 10,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 195, y = 980 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tank-tiger-up-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 18,
+                    height = 25,
+                    offset = { x = 7, y = 7 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = 0, y = -100 },
+                    projectile_duration = 2, -- seconds
+                    repeat_frequency = 1, -- seconds
+                    hit_percentage_damage = 10,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 110, y = 1125 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tank-panther-down-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 17,
+                    height = 20,
+                    offset = { x = 8, y = 4 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = 0, y = 300 },
+                    projectile_duration = 1, -- seconds
+                    repeat_frequency = 1, -- seconds
+                    hit_percentage_damage = 10,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 1395, y = 540 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tank-panther-killed-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                }
+            }
+        },
+        {
+            -- Truck
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 113, y = 580 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "truck-ford-down-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 12,
+                    height = 25,
+                    offset = { x = 10, y = 2 }
+                },
+                health = {
+                    health_percentage = 100
+                }
+            }
+        },
+        {
+            -- Truck
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 180, y = 1045 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "truck-ford-down-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 12,
+                    height = 25,
+                    offset = { x = 10, y = 2 }
+                },
+                health = {
+                    health_percentage = 100
+                }
+            }
+        },
+        {
+            -- Truck
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 195, y = 1055 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "truck-ford-down-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 12,
+                    height = 25,
+                    offset = { x = 10, y = 2 }
+                },
+                health = {
+                    health_percentage = 100
+                }
+            }
+        },
+        {
+            -- Truck
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 210, y = 1065 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "truck-ford-down-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 12,
+                    height = 25,
+                    offset = { x = 10, y = 2 }
+                },
+                health = {
+                    health_percentage = 100
+                }
+            }
+        },
+        {
+            -- Truck
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 545, y = 660 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "truck-ford-down-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 12,
+                    height = 25,
+                    offset = { x = 10, y = 2 }
+                },
+                health = {
+                    health_percentage = 100
+                }
+            }
+        },
+        {
+            -- Truck
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 560, y = 670 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "truck-ford-down-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 12,
+                    height = 25,
+                    offset = { x = 10, y = 2 }
+                },
+                health = {
+                    health_percentage = 100
+                }
+            }
+        },
+        {
+            -- Truck
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 1360, y = 880 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "truck-ford-up-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 12,
+                    height = 20,
+                    offset = { x = 10, y = 8 }
+                },
+                health = {
+                    health_percentage = 100
+                }
+            }
+        },
+        {
+            -- Truck
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 1380, y = 880 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "truck-ford-up-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 12,
+                    height = 20,
+                    offset = { x = 10, y = 8 }
+                },
+                health = {
+                    health_percentage = 100
+                }
+            }
+        },
+        {
+            -- Truck
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 1400, y = 880 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "truck-ford-up-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 12,
+                    height = 20,
+                    offset = { x = 10, y = 8 }
+                },
+                health = {
+                    health_percentage = 100
+                }
+            }
+        },
+        {
+            -- Truck
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 1505, y = 780 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "truck-ford-left-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+                boxcollider = {
+                    width = 25,
+                    height = 16,
+                    offset = { x = 3, y = 10 }
+                },
+                health = {
+                    health_percentage = 100
+                }
+            }
+        },
+        {
+            -- Truck
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 1515, y = 790 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "truck-ford-left-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 2
+                },
+                boxcollider = {
+                    width = 25,
+                    height = 16,
+                    offset = { x = 3, y = 10 }
+                },
+                health = {
+                    health_percentage = 100
+                }
+            }
+        },
+        {
+            -- SAM Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 495, y = 380 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "sam-tank-left-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 2
+                },
+                animation = {
+                    num_frames = 2,
+                    speed_rate = 2 -- fps
+                },
+                boxcollider = {
+                    width = 17,
+                    height = 15,
+                    offset = { x = 8, y = 8 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = -50, y = -50 },
+                    projectile_duration = 3, -- seconds
+                    repeat_frequency = 2, -- seconds
+                    hit_percentage_damage = 5,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- SAM Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 495, y = 410 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "sam-tank-left-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 2
+                },
+                animation = {
+                    num_frames = 2,
+                    speed_rate = 2 -- fps
+                },
+                boxcollider = {
+                    width = 17,
+                    height = 15,
+                    offset = { x = 8, y = 8 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = -50, y = -50 },
+                    projectile_duration = 3, -- seconds
+                    repeat_frequency = 2, -- seconds
+                    hit_percentage_damage = 5,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- SAM Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 1290, y = 115 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "sam-tank-left-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 2
+                },
+                animation = {
+                    num_frames = 2,
+                    speed_rate = 2 -- fps
+                },
+                boxcollider = {
+                    width = 17,
+                    height = 15,
+                    offset = { x = 8, y = 8 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = -100, y = -75 },
+                    projectile_duration = 2, -- seconds
+                    repeat_frequency = 2, -- seconds
+                    hit_percentage_damage = 5,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- SAM Tank
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 935, y = 557 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "sam-tank-left-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 2
+                },
+                animation = {
+                    num_frames = 2,
+                    speed_rate = 2 -- fps
+                },
+                boxcollider = {
+                    width = 17,
+                    height = 15,
+                    offset = { x = 8, y = 8 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = -100, y = -60 },
+                    projectile_duration = 2, -- seconds
+                    repeat_frequency = 2, -- seconds
+                    hit_percentage_damage = 5,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- SAM Truck
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 114, y = 700 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "sam-truck-right-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 2
+                },
+                boxcollider = {
+                    width = 17,
+                    height = 15,
+                    offset = { x = 8, y = 8 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = 50, y = -50 },
+                    projectile_duration = 2, -- seconds
+                    repeat_frequency = 1, -- seconds
+                    hit_percentage_damage = 5,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- SAM Truck
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 114, y = 720 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "sam-truck-right-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 2
+                },
+                boxcollider = {
+                    width = 17,
+                    height = 15,
+                    offset = { x = 8, y = 8 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = 50, y = -50 },
+                    projectile_duration = 2, -- seconds
+                    repeat_frequency = 1, -- seconds
+                    hit_percentage_damage = 5,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- SAM Truck
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 116, y = 499 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "sam-truck-right-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 2
+                },
+                boxcollider = {
+                    width = 17,
+                    height = 15,
+                    offset = { x = 8, y = 8 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = 50, y = -70 },
+                    projectile_duration = 2, -- seconds
+                    repeat_frequency = 1, -- seconds
+                    hit_percentage_damage = 5,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- SAM Truck
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 1454, y = 215 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "sam-truck-right-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 2
+                },
+                boxcollider = {
+                    width = 17,
+                    height = 15,
+                    offset = { x = 8, y = 8 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = 50, y = -70 },
+                    projectile_duration = 2, -- seconds
+                    repeat_frequency = 1, -- seconds
+                    hit_percentage_damage = 5,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- SAM Truck
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 1454, y = 231 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "sam-truck-right-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 2
+                },
+                boxcollider = {
+                    width = 17,
+                    height = 15,
+                    offset = { x = 8, y = 8 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = 50, y = -70 },
+                    projectile_duration = 2, -- seconds
+                    repeat_frequency = 1, -- seconds
+                    hit_percentage_damage = 5,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- SAM Truck
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 1454, y = 247 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "sam-truck-right-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 2
+                },
+                boxcollider = {
+                    width = 17,
+                    height = 15,
+                    offset = { x = 8, y = 8 }
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = 50, y = -70 },
+                    projectile_duration = 2, -- seconds
+                    repeat_frequency = 1, -- seconds
+                    hit_percentage_damage = 5,
+                    friendly = false
+                }
+            }
+        },
+        {
+            -- Vegetation
+            components = {
+                transform = {
+                    position = { x = 115, y = 633 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tree5-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Vegetation
+            components = {
+                transform = {
+                    position = { x = 117, y = 650 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tree5-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Vegetation
+            components = {
+                transform = {
+                    position = { x = 318, y = 490 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tree6-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Vegetation
+            components = {
+                transform = {
+                    position = { x = 668, y = 526 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tree14-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Vegetation
+            components = {
+                transform = {
+                    position = { x = 1018, y = 738 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tree17-texture",
+                    width = 17,
+                    height = 20,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Vegetation
+            components = {
+                transform = {
+                    position = { x = 1034, y = 738 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tree17-texture",
+                    width = 17,
+                    height = 20,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Vegetation
+            components = {
+                transform = {
+                    position = { x = 1028, y = 745 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tree18-texture",
+                    width = 17,
+                    height = 20,
+                    z_index = 2
+                },
+            }
+        },
+        {
+            -- Vegetation
+            components = {
+                transform = {
+                    position = { x = 1390, y = 440 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tree10-texture",
+                    width = 31,
+                    height = 32,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Vegetation
+            components = {
+                transform = {
+                    position = { x = 1400, y = 445 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tree10-texture",
+                    width = 31,
+                    height = 32,
+                    z_index = 2
+                },
+            }
+        },
+        {
+            -- Vegetation
+            components = {
+                transform = {
+                    position = { x = 1365, y = 290 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "tree14-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 2
+                },
+            }
+        },
+        {
+            -- Obstacles
+            components = {
+                transform = {
+                    position = { x = 669, y = 549 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "obstacles7-texture",
+                    width = 16,
+                    height = 16,
+                    z_index = 2
+                },
+            }
+        },
+        {
+            -- Obstacles
+            components = {
+                transform = {
+                    position = { x = 685, y = 549 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "obstacles7-texture",
+                    width = 16,
+                    height = 16,
+                    z_index = 2
+                },
+            }
+        },
+        {
+            -- Obstacles
+            components = {
+                transform = {
+                    position = { x = 315, y = 505 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "obstacles7-texture",
+                    width = 16,
+                    height = 16,
+                    z_index = 3
+                },
+            }
+        },
+        {
+            -- Obstacles
+            components = {
+                transform = {
+                    position = { x = 330, y = 507 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "obstacles7-texture",
+                    width = 16,
+                    height = 16,
+                    z_index = 2
+                },
+            }
+        },
+        {
+            -- Obstacles
+            components = {
+                transform = {
+                    position = { x = 438, y = 390 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "obstacles7-texture",
+                    width = 16,
+                    height = 16,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Obstacles
+            components = {
+                transform = {
+                    position = { x = 449, y = 408 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "obstacles7-texture",
+                    width = 16,
+                    height = 16,
+                    z_index = 2
+                },
+            }
+        },
+        {
+            -- Obstacles
+            components = {
+                transform = {
+                    position = { x = 431, y = 416 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "obstacles7-texture",
+                    width = 16,
+                    height = 16,
+                    z_index = 2
+                },
+            }
+        },
+        {
+            -- Obstacles
+            components = {
+                transform = {
+                    position = { x = 940, y = 695 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "obstacles7-texture",
+                    width = 16,
+                    height = 16,
+                    z_index = 2
+                },
+            }
+        },
+        {
+            -- Obstacles
+            components = {
+                transform = {
+                    position = { x = 955, y = 705 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "obstacles7-texture",
+                    width = 16,
+                    height = 16,
+                    z_index = 2
+                },
+            }
+        },
+        {
+            -- Obstacles
+            components = {
+                transform = {
+                    position = { x = 1085, y = 507 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "obstacles7-texture",
+                    width = 16,
+                    height = 16,
+                    z_index = 2
+                },
+            }
+        },
+        {
+            -- Obstacles
+            components = {
+                transform = {
+                    position = { x = 1075, y = 527 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "obstacles7-texture",
+                    width = 16,
+                    height = 16,
+                    z_index = 2
+                },
+            }
+        },
+        {
+            -- Obstacles
+            components = {
+                transform = {
+                    position = { x = 1075, y = 547 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "obstacles7-texture",
+                    width = 16,
+                    height = 16,
+                    z_index = 2
+                },
+            }
+        },
+        {
+            -- Obstacles
+            components = {
+                transform = {
+                    position = { x = 1085, y = 567 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "obstacles7-texture",
+                    width = 16,
+                    height = 16,
+                    z_index = 2
+                },
+            }
+        },
+        {
+            -- Obstacles
+            components = {
+                transform = {
+                    position = { x = 1355, y = 449 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "obstacles2-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Obstacles
+            components = {
+                transform = {
+                    position = { x = 1430, y = 446 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "obstacles2-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Obstacles
+            components = {
+                transform = {
+                    position = { x = 1435, y = 195 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "obstacles7-texture",
+                    width = 16,
+                    height = 16,
+                    z_index = 2
+                },
+            }
+        },
+        {
+            -- Obstacles
+            components = {
+                transform = {
+                    position = { x = 1425, y = 215 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "obstacles7-texture",
+                    width = 16,
+                    height = 16,
+                    z_index = 2
+                },
+            }
+        },
+        {
+            -- Obstacles
+            components = {
+                transform = {
+                    position = { x = 1425, y = 235 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "obstacles7-texture",
+                    width = 16,
+                    height = 16,
+                    z_index = 2
+                },
+            }
+        },
+        {
+            -- Obstacles
+            components = {
+                transform = {
+                    position = { x = 1425, y = 255 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "obstacles7-texture",
+                    width = 16,
+                    height = 16,
+                    z_index = 2
+                },
+            }
+        },
+        {
+            -- Obstacles
+            components = {
+                transform = {
+                    position = { x = 1435, y = 275 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "obstacles7-texture",
+                    width = 16,
+                    height = 16,
+                    z_index = 2
+                },
+            }
+        },
+        {
+            -- Obstacles
+            components = {
+                transform = {
+                    position = { x = 1360, y = 310 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "obstacles7-texture",
+                    width = 16,
+                    height = 16,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Obstacles
+            components = {
+                transform = {
+                    position = { x = 1380, y = 312 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "obstacles7-texture",
+                    width = 16,
+                    height = 16,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Obstacles
+            components = {
+                transform = {
+                    position = { x = 1330, y = 212 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "obstacles1-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Obstacles
+            components = {
+                transform = {
+                    position = { x = 1360, y = 232 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "obstacles1-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Army
+            components = {
+                transform = {
+                    position = { x = 630, y = 405 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "army-walk-left-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Army
+            components = {
+                transform = {
+                    position = { x = 497, y = 450 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "army-walk-right-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Army
+            components = {
+                transform = {
+                    position = { x = 572, y = 560 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "army-gun-left-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Army
+            components = {
+                transform = {
+                    position = { x = 114, y = 980 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "army-walk-up-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Army
+            components = {
+                transform = {
+                    position = { x = 114, y = 1030 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "army-walk-down-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Army
+            components = {
+                transform = {
+                    position = { x = 883, y = 490 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "army-walk-left-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Army
+            components = {
+                transform = {
+                    position = { x = 113, y = 851 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "army-gun-right-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Army
+            components = {
+                transform = {
+                    position = { x = 750, y = 630 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "army-walk-left-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Army
+            components = {
+                transform = {
+                    position = { x = 800, y = 630 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "army-walk-right-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Army
+            components = {
+                transform = {
+                    position = { x = 856, y = 115 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "army-gun-down-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Army
+            components = {
+                transform = {
+                    position = { x = 900, y = 115 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "army-gun-up-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Army
+            components = {
+                transform = {
+                    position = { x = 1117, y = 530 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "army-walk-right-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Army
+            components = {
+                transform = {
+                    position = { x = 755, y = 440 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "army-gun-down-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Army
+            components = {
+                transform = {
+                    position = { x = 810, y = 440 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "army-gun-down-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Army
+            components = {
+                transform = {
+                    position = { x = 1390, y = 690 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "army-walk-killed-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Army
+            components = {
+                transform = {
+                    position = { x = 1425, y = 690 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "army-walk-killed-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Army
+            components = {
+                transform = {
+                    position = { x = 1465, y = 690 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "army-walk-killed-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Boat
+            components = {
+                transform = {
+                    position = { x = 80, y = 520 },
+                    scale = { x = 0.8, y = 0.8 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "boat-texture",
+                    width = 21,
+                    height = 126,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Boat
+            components = {
+                transform = {
+                    position = { x = 80, y = 790 },
+                    scale = { x = 0.8, y = 0.8 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "boat-texture",
+                    width = 21,
+                    height = 126,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Boat
+            components = {
+                transform = {
+                    position = { x = 345, y = 423 },
+                    scale = { x = 0.8, y = 0.8 },
+                    rotation = 270.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "boat-texture",
+                    width = 21,
+                    height = 126,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Boat
+            components = {
+                transform = {
+                    position = { x = 1510, y = 460 },
+                    scale = { x = 0.8, y = 0.8 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "boat-texture",
+                    width = 21,
+                    height = 126,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Carrier
+            components = {
+                transform = {
+                    position = { x = 670, y = 150 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "carrier-texture",
+                    width = 59,
+                    height = 191,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- Carrier
+            components = {
+                transform = {
+                    position = { x = 300, y = 975 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "carrier-texture",
+                    width = 59,
+                    height = 191,
+                    z_index = 1
+                },
+            }
+        },
+        {
+            -- F-22 fighter jet
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 688, y = 165 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "f22-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 4
+                },
+                animation = {
+                    num_frames = 2,
+                    speed_rate = 10 -- fps
+                },
+                boxcollider = {
+                    width = 20,
+                    height = 25,
+                    offset = { x = 5, y = 5}
+                },
+                health = {
+                    health_percentage = 100
+                }
+            }
+        },
+        {
+            -- SU-27 fighter jet
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 685, y = 300 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = -10.0, -- degrees
+                },
+                rigidbody = {
+                    velocity = { x = -5.5 , y = -35.0 }
+                },
+                sprite = {
+                    texture_asset_id = "su27-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 5
+                },
+                animation = {
+                    num_frames = 2,
+                    speed_rate = 10 -- fps
+                },
+                boxcollider = {
+                    width = 25,
+                    height = 30,
+                    offset = { x = 5, y = 0 }
+                },
+                health = {
+                    health_percentage = 100
+                }
+            }
+        },
+        {
+            -- Bomber plane
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 464, y = 520 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "bomber-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 5
+                },
+                animation = {
+                    num_frames = 2,
+                    speed_rate = 10 -- fps
+                },
+                boxcollider = {
+                    width = 32,
+                    height = 32,
+                    offset = { x = 0, y = 0 }
+                },
+                health = {
+                    health_percentage = 100
+                }
+            }
+        },
+        {
+            -- FW190 plane
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 1000, y = 143 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = -90.0, -- degrees
+                },
+                rigidbody = {
+                    velocity = { x = -50.0, y = 0.0 }
+                },
+                sprite = {
+                    texture_asset_id = "fw190-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 6
+                },
+                animation = {
+                    num_frames = 3,
+                    speed_rate = 15 -- fps
+                },
+                boxcollider = {
+                    width = 32,
+                    height = 30,
+                    offset = { x = 0, y = 0 }
+                },
+                health = {
+                    health_percentage = 100
+                }
+            }
+        },
+        {
+            -- UPF7 plane
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 920, y = 179 },
+                    scale = { x = 0.8, y = 0.8 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "upf7-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 5
+                },
+                animation = {
+                    num_frames = 2,
+                    speed_rate = 10 -- fps
+                }
+            }
+        },
+        {
+            -- UPF7 plane
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 950, y = 179 },
+                    scale = { x = 0.8, y = 0.8 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "upf7-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 5
+                },
+                animation = {
+                    num_frames = 2,
+                    speed_rate = 10 -- fps
+                }
+            }
+        },
+        {
+            -- UPF7 plane
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 980, y = 179 },
+                    scale = { x = 0.8, y = 0.8 },
+                    rotation = 0.0, -- degrees
+                },
+                sprite = {
+                    texture_asset_id = "upf7-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 5
+                },
+                animation = {
+                    num_frames = 2,
+                    speed_rate = 10 -- fps
+                }
+            }
+        },
+        --[[
+        {
+            -- SU-27 fighter jet
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 317, y = 985 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 0.0, -- degrees
+                },
+                rigidbody = {
+                    velocity = { x = 0.0, y = -50.0 }
+                },
+                sprite = {
+                    texture_asset_id = "su27-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 5
+                },
+                animation = {
+                    num_frames = 2,
+                    speed_rate = 10 -- fps
+                },
+                boxcollider = {
+                    width = 32,
+                    height = 32
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = 0, y = -100 },
+                    projectile_duration = 5, -- seconds
+                    repeat_frequency = 1, -- seconds
+                    hit_percentage_damage = 10,
+                    friendly = false
+                },
+                on_update_script = {
+                    [0] =
+                    function(entity, delta_time, ellapsed_time)
+                        -- print("Executing the SU-27 fighter jet Lua script!")
+
+                        -- this function makes the fighter jet move up and down the map shooting projectiles
+                        local current_position_x, current_position_y = get_position(entity)
+                        local current_velocity_x, current_velocity_y = get_velocity(entity)
+
+                        -- if it reaches the top or the bottom of the map
+                        if current_position_y < 10  or current_position_y > map_height - 32 then
+                            set_velocity(entity, 0, current_velocity_y * -1); -- flip the entity y-velocity
+                        else
+                            set_velocity(entity, 0, current_velocity_y); -- do not flip y-velocity
+                        end
+
+                        -- set the transform rotation to match going up or down
+                        if (current_velocity_y < 0) then
+                            set_rotation(entity, 0) -- point up
+                            set_projectile_velocity(entity, 0, -200) -- shoot projectiles up
+                        else
+                            set_rotation(entity, 180) -- point down
+                            set_projectile_velocity(entity, 0, 200) -- shoot projectiles down
+                        end
+                    end
+                }
+            }
+        },
+        {
+            -- F-22 fighter jet
+            group = "enemies",
+            components = {
+                transform = {
+                    position = { x = 10, y = 10 },
+                    scale = { x = 1.0, y = 1.0 },
+                    rotation = 90.0, -- degrees
+                },
+                rigidbody = {
+                    velocity = { x = 0.0, y = 0.0 }
+                },
+                sprite = {
+                    texture_asset_id = "f22-texture",
+                    width = 32,
+                    height = 32,
+                    z_index = 5
+                },
+                animation = {
+                    num_frames = 2,
+                    speed_rate = 10 -- fps
+                },
+                boxcollider = {
+                    width = 32,
+                    height = 32
+                },
+                health = {
+                    health_percentage = 100
+                },
+                projectile_emitter = {
+                    projectile_velocity = { x = 200, y = 0 },
+                    projectile_duration = 1, -- secondsm
+                    repeat_frequency = 1, -- seconds
+                    hit_percentage_damage = 10,
+                    friendly = false
+                },
+                on_update_script = {
+                    [0] =
+                    function(entity, delta_time, ellapsed_time)
+                        -- print("Executing BF-109 Lua script!")
+
+                        -- change the position of the the airplane to follow a sine wave movement
+                        local new_x = ellapsed_time * 0.09
+                        local new_y = 200 + (math.sin(ellapsed_time * 0.001) * 50)
+                        set_position(entity, new_x, new_y) -- set the new position
+                    end
+                }
+            }
+        }
+        --]]
+    }
+}
+
+-- Define some useful global variables
+map_width = Level.tilemap.num_cols * Level.tilemap.tile_size * Level.tilemap.scale
+map_height = Level.tilemap.num_rows * Level.tilemap.tile_size * Level.tilemap.scale

+ 30 - 0
assets/tilemaps/desert.map

@@ -0,0 +1,30 @@
+21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21
+21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21
+21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21
+21,21,21,21,21,17,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13
+21,21,21,21,21,11,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+21,21,21,21,21,11,00,01,00,00,00,00,04,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+21,21,21,21,21,11,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,00,00
+21,21,21,21,21,11,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01,01,00,00,00,00,00,00,00,00,00,00,00,00
+21,21,21,21,21,11,00,00,00,00,02,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+21,21,21,21,21,11,00,00,00,00,00,00,05,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,04,00,00,00,00,00
+21,21,21,21,21,11,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+21,21,21,21,21,11,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,00,00,04,00,00,00
+21,21,21,21,21,11,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+21,21,21,21,21,11,00,00,00,00,00,00,00,00,00,00,00,00,00,05,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+21,21,21,21,21,11,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+21,21,21,21,21,11,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,04,00,00,00,00,00
+21,21,21,21,21,11,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,06,00,00,00,00,00,00,00,00,00,01,00,00,00,00,00
+21,21,21,21,21,11,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,02,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+21,21,21,21,21,11,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00,00,00
+21,21,21,21,21,11,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,02,00,00,00,00,00,00,08,00,00
+21,21,21,21,21,11,00,00,00,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+21,21,21,21,21,11,00,00,00,00,00,00,02,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+21,21,21,21,21,11,00,00,00,00,00,00,02,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+21,21,21,21,21,11,00,00,00,00,00,00,02,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+21,21,21,21,21,11,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+21,21,21,21,21,11,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+21,21,21,21,21,11,00,00,01,02,00,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,02,02,00,00,00
+21,21,21,21,21,11,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+21,21,21,21,21,11,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
+21,21,21,21,21,11,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00

BIN
assets/tilemaps/desert.png


BIN
assets/tilemaps/jungle-night.png


+ 1 - 1
assets/tilemaps/jungle.map

@@ -17,4 +17,4 @@
 11,03,07,00,22,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21
 11,04,06,00,22,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21
 16,09,09,09,19,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21
-21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21
+21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21