Godot Version
4.2
Question
Im a new godot developer and i dont know much about optimization. Im making a wave system for my game and its really long.
func _on_timeout():
wave += 1
if wave == 1:
enemies = [1,0,0,0]
if wave == 2:
enemies = [1,0,0,0]
if wave == 3:
enemies = [2,0,0,0]
if wave == 4:
enemies = [1,1,0,0]
if wave == 5:
enemies = [2,1,0,0]
if wave == 6:
enemies = [3,1,0,0]
if wave == 7:
enemies = [2,2,0,0]
if wave == 8:
enemies = [0,0,2,0]
if wave == 9:
enemies = [0,1,2,0]
if wave == 10:
enemies = [6,0,0,0]
if wave == 11:
enemies = [0,4,0,0]
if wave == 12:
enemies = [0,0,3,0]
if wave == 13:
enemies = [2,2,2,0]
if wave >= 14:
enemies = [3,3,3,0]
enemy_spawn(enemies)
this is what i use for each level, for each level i rewrite it and put
If Global.level =2 then i rewrite all that but change the enemies around.
i want each wave to be unique and not randomly generated.
i try and keep everything in one script but im not sure if i should make a new script for each level.
this is what i use to decide the enemies on the level
func _ready():
if Global.level == 1:
enemy1 = preload("res://world/enemies/1cavemen/caveman.tscn")
enemy2 = preload("res://world/enemies/1cavemen/caveman_sling.tscn")
enemy3 = preload("res://world/enemies/1cavemen/caveman_brute.tscn")
enemy4 = 0
elif Global.level == 2:
enemy1 = preload("res://world/enemies/2spartan_age_enemies/spear_helm.tscn")
enemy2 = preload("res://world/enemies/2spartan_age_enemies/bow_robe.tscn")
enemy3 = preload("res://world/enemies/2spartan_age_enemies/griffin.tscn")
enemy4 = 0
elif Global.level == 3:
enemy1 = preload("res://world/enemies/3egyptians/bow_skin.tscn")
enemy2 = preload("res://world/enemies/3egyptians/cat_sword.tscn")
enemy3 = preload("res://world/enemies/3egyptians/mage_sheep.tscn")
enemy4 = 0
it keeps going like this until level 8
Would it be more efficient to make a new script for each level or should i keep this?. how could i optimize the wave system and write it with less code.
the complete code is here:
extends Timer
extends Timer
var enemy1
var enemy2
var enemy3
var enemy4
var wave = 0
var enemies = [0,0,0,0]
func _ready():
if Global.level == 1:
enemy1 = preload("res://world/enemies/1cavemen/caveman.tscn")
enemy2 = preload("res://world/enemies/1cavemen/caveman_sling.tscn")
enemy3 = preload("res://world/enemies/1cavemen/caveman_brute.tscn")
enemy4 = 0
elif Global.level == 2:
enemy1 = preload("res://world/enemies/2spartan_age_enemies/spear_helm.tscn")
enemy2 = preload("res://world/enemies/2spartan_age_enemies/bow_robe.tscn")
enemy3 = preload("res://world/enemies/2spartan_age_enemies/griffin.tscn")
enemy4 = 0
elif Global.level == 3:
enemy1 = preload("res://world/enemies/3egyptians/bow_skin.tscn")
enemy2 = preload("res://world/enemies/3egyptians/cat_sword.tscn")
enemy3 = preload("res://world/enemies/3egyptians/mage_sheep.tscn")
enemy4 = 0
elif Global.level == 4:
enemy1 = preload("res://world/enemies/4medival/knight.tscn")
enemy2 = preload("res://world/enemies/4medival/bow_chain.tscn")
enemy3 = preload("res://world/enemies/4medival/paladin.tscn")
enemy4 = 0
elif Global.level == 5:
enemy1 = preload("res://world/enemies/5renaissance/metalarmour_sword.tscn")
enemy2 = preload("res://world/enemies/5renaissance/musket.tscn")
enemy3 = preload("res://world/enemies/5renaissance/metalarmour_spear.tscn")
enemy4 = 0
elif Global.level == 6:
enemy1 = preload("res://world/enemies/6modern/military_gun.tscn")
enemy2 = preload("res://world/enemies/6modern/drone.tscn")
enemy3 = preload("res://world/enemies/6modern/tank.tscn")
enemy4 = 0
elif Global.level == 7:
enemy1 = preload("res://world/enemies/7furture/future_soldier.tscn")
enemy2 = preload("res://world/enemies/7furture/mech_armour.tscn")
enemy3 = preload("res://world/enemies/7furture/advanced_mech.tscn")
enemy4 = 0
elif Global.level == 8:
enemy1 = preload("res://world/enemies/8alien/alien.tscn")
enemy2 = preload("res://world/enemies/8alien/sphere_ship.tscn")
enemy3 = preload("res://world/enemies/8alien/mothership.tscn")
enemy4 = 0
func _process(delta):
pass
func _on_timeout():
wave += 1
if Global.level == 1:
if wave == 1:
enemies = [1,0,0,0]
if wave == 2:
enemies = [1,0,0,0]
if wave == 3:
enemies = [2,0,0,0]
if wave == 4:
enemies = [1,1,0,0]
if wave == 5:
enemies = [2,1,0,0]
if wave == 6:
enemies = [3,1,0,0]
if wave == 7:
enemies = [2,2,0,0]
if wave == 8:
enemies = [0,0,2,0]
if wave == 9:
enemies = [0,1,2,0]
if wave == 10:
enemies = [6,0,0,0]
if wave == 11:
enemies = [0,4,0,0]
if wave == 12:
enemies = [0,0,3,0]
if wave == 13:
enemies = [2,2,2,0]
if wave >= 14:
enemies = [3,3,3,0]
if Global.level == 2:
if wave == 1:
enemies = [1,0,0,0]
if wave == 2:
enemies = [1,0,0,0]
if wave == 3:
enemies = [2,0,0,0]
if wave == 4:
enemies = [1,1,0,0]
if wave == 5:
enemies = [2,1,0,0]
if wave == 6:
enemies = [3,1,0,0]
if wave == 7:
enemies = [2,2,0,0]
if wave == 8:
enemies = [0,0,2,0]
if wave == 9:
enemies = [0,1,2,0]
if wave == 10:
enemies = [6,0,0,0]
if wave == 11:
enemies = [0,4,0,0]
if wave == 12:
enemies = [0,0,3,0]
if wave == 13:
enemies = [2,2,2,0]
if wave >= 14:
enemies = [3,3,3,0]
enemy_spawn(enemies)
func enemy_spawn(enemies):
for i in enemies[0]:
spawn(enemy1)
for i in enemies[1]:
spawn(enemy2)
for i in enemies[2]:
spawn(enemy3)
for i in enemies[3]:
spawn(enemy4)
func spawn(type):
var enemy_type = type.instantiate()
if type == enemy3 or enemy4:
enemy_type.position = Vector2(randf_range(180,200), 4* int(2)+97)
else:
enemy_type.position = Vector2(randf_range(140,160), round(randf_range(4,16))+97)
add_child(enemy_type)
i havent made the waves unique for each level and wanted to ask for advice before i spent an hour writing the enemy number for each level.
i attach this script to each level and yeah idk if you have any questions i can asnwer them