Как правильно реализовать работу искусственного интеллекта в игре, чтобы не проседал FPS?
Создаю игру. В ней есть игрок и довольно много монстров (от 10 штук). Для монстров необходимо прописать элементарный ИИ, чтобы они могли бегать, прыгать и т.д. У меня получилось это сделать в отдельном классе:
public static class MonsterAI
{
private static Timer actionTimer = new Timer() { Interval = 100 };
public static void IdleMove(Monster monster)
{
actionTimer.Tick += (s, e) =>
{
if (monster.OnGround)
monster.Jump();
};
actionTimer.Start();
}
}
Однако, когда я неоднократно вызываю этот метод, то фпс сильно просаживается и игра начинает сильно лагать. Вызываю я этот метод для каждого монстра. Насколько я понимаю, мне необходимо запускать этот метод в другом потоке, однако совершенно не понимаю как это реализовать. Была попытка, но она безуспешна:
public static class MonsterAI
{
private static Timer actionTimer = new Timer() { Interval = 100 };
public static void IdleMove(Monster monster)
{
actionTimer.Tick += async (s, e) =>
{
if (monster.OnGround)
await Task.Run(() => { monster.Jump(); } );
};
actionTimer.Start();
}
}