Я работаю над симулятором космического боя, который разворачивается на относительно больших территориях (куб пространства ~ 20 световых минут в сторону) и использует (в основном) реалистичную физику. Один из ключевых элементов, которые я хочу смоделировать, - это скорость распространения информации по всему пространству битвы, то есть, если игрок А задействует свой основной диск на одной стороне поля битвы, то до того, как его увидит игрок Б, будет 20 минут может реагировать на это
Даже для относительно небольших боевых пространств это важный фактор, учитывая скорость. Корабль длиной 500 м, совершающий 30 к / с, собирается сместиться на полную длину в 1/60 секунды, поэтому даже при нацеливании на противника, находящегося всего в нескольких десятых доли секунды, будет слабое отставание.
Я не видел, чтобы это было сделано раньше, и мне интересно, есть ли лучшие практики для моделирования этого. Прямо сейчас я ставлю метки времени на каждое событие и отмечаю его местоположением, помещаю его в очередь, а затем проверяю каждый тик, чтобы увидеть, есть ли какие-либо объекты в игровом мире, недавно на краю светового конуса, и добавляю событие в их очередь датчиков. Я буду (но пока не оптимизировал) оптимизировать его, удалив все события, которые уже были обнаружены всеми объектами, которые могут это почувствовать, но, тем не менее, я думаю, что это станет слишком громоздким и чертовски быстрым и съедает много циклов, если в игре есть сотни чувствительных объектов (что довольно обычное дело).
Есть ли модели данных, которые лучше подходят для этого, которые я должен проверить?