Привет, маленький top-down шутер для учебного проекта, Godot 4. Две проблемы, может один баг, может два.

1. Бомба. Игрок подбирает бомбу, она вызывает kill_all() на менеджере волн. Из 10 врагов умирают только 5. Остальные 5 остаются, и волна никогда не заканчивается. Я вывожу alive_enemies.size() до и после бомбы. До пишет 10, после пишет 5. Я думаю, может бомба срабатывает не в то время в кадре, поэтому пробую call_deferred на ней. Всё равно непонятно. В моём старом проекте на Godot 3 такой цикл работал нормально.

func kill_all() -> void:
	for e in alive_enemies:
		e.take_damage(9999)

func _on_enemy_died(enemy: Enemy) -> void:
	alive_enemies.erase(enemy)
	score += 10

take_damage вызывает сигнал died, потом queue_free().

2. Движение. Я двигаю игрока в _process, потому что хочу плавно:

func _process(delta: float) -> void:
	var dir := Input.get_vector("move_left", "move_right", "move_up", "move_down")
	velocity = dir * speed
	move_and_slide()

С моим ноутбуком всё нормально. Друг с монитором 144 Гц говорит, что игрок быстрее и застревает на углу стены.

Это тайминг кадров для обоих случаев? Или два разных бага?