Что такое хороший тип данных для сбора единиц в rts?
Я помогаю API, который позволяет вам писать ботов для стратегической игры Starcraft2 на Python .
Прямо сейчас существует класс units
, который наследуется от list
. Каждый кадр создается новый units
объект, а затем производится выбор этих юнитов, создавая новые units
объекты, например, с фильтром для всех вражеских юнитов или всех летающих юнитов.
Мы используем этот выбор, чтобы найти ближайшего врага для управления нашими юнитами, выбрать наших юнитов, которые могут атаковать прямо сейчас или нуждаются в другом порядке, и т. Д.
Но это также означает, что мы делаем большую фильтрацию по атрибутам каждой единицы в каждом кадре, что занимает много времени. Время инициализации одного объекта units
составляет от 2e-5 до 5e-5 секунд, и мы делаем это миллионы раз за игру, что может замедлить работу бота и провести много тестов, в дополнение к процессу фильтрации с циклами над каждым юнитом. в объекте units
.
Есть ли лучший тип данных для этого?
Может быть, что-то, что не нужно воссоздавать каждый раз для каждого выбора в одном кадре, а просто начинается с начального списка всех единиц, которые мы получаем из буфера протокола, а затем выборки и фильтры могут применяться без воссоздания объекта? Что может быть хорошим способом реализовать это, чтобы фильтрация несколько раз за кадр не была такой медленной и / или сложной?