У каждого координаты и ориентация.
У каждого капелька своей памяти плюс общий алгоритм поведения плюс (относительные) координаты ближайших нескольких соседей.
Плюс есть некий несложный внешний рельеф и, возможно, ветер.
Собственно вопрос, в чем можно быстро это реализовать не слишком отвлекаясь на собственно 3д-движок, а сосредоточившись на алгоритме внутре объекта и перекособочивании списка/типа/итп датчиков?
От движка нужно вращение, зум, вызов функции алгоритма поведения с итерацией по блокам данных, обновление блоков данных (координаты себя, относительные координаты ближайших 0..Ы соседей)