Главная проблема, с которой он столкнулся — это конфликт двух разных типов движения. Нужно было объединить жёсткую логистику по сетке с плавным перемещением толпы (как в классических RTS).
В итоге получилась гибридная система, которая умеет работать в двух режимах:
— RTS Mode: Вы можете выделить сразу толпу агентов и отправить их в одну точку. Они плавно огибают препятствия с помощью стандартного
mp_grid, но в движении отвязываются от сетки. Чтобы толпа не слипалась в одну точку по прибытии, автор прикрутил алгоритм Бойдсов (Boids) для отталкивания и спираль Улама для поиска свободных парковочных мест вокруг цели.
— Strict Route: Режим для фабричной логистики. Агенты идут по жёстко заданным направляющим на карте. Они заранее резервируют за собой клетки в матрице по пути следования, чтобы умно регулировать трафик и избегать столкновений на перекрёстках.
Исходный код полностью открыт на GitHub, можно свободно забирать в свои проекты или дорабатывать математику векторов: https://github.com/T-Toni/AGENT_SYSTEM
@make_game