Я кодирую сервер для многопользовательской RPG, и сейчас я борюсь с внедрением дальности обзора. Поскольку некоторые карты довольно большие, я должен ограничить то, что видит клиент. Мой подход:Дальность обзора, обновление позиции игрока
Если я получаю новые координаты от клиента, я сохраняю их как пункт назначения вместе с временем начала перемещения. Как только каждый х мс я просматриваю все существа в мире и обновляю их текущую позицию, после сохранения позиции они были в последний раз, когда я их обновил. В основном я вычисляю новую позицию, основанную на времени начала и скорости перемещения, и записываю их в текущие переменные позиции, сохраняя при этом новое время начала. Как только это обновление будет завершено, я пройду через всех созданных существ, а также тех, у кого другая позиция, чем у последнего обновления. В суб-петле я снова провожу всех существ/клиентов, чтобы проверить, должен ли я уведомлять их о появляющемся существе (dis). На данный момент я запускаю это обновление каждые 100 мс.
Этот подход работает, но у меня есть ощущение, что это не лучший способ сделать это. И я не уверен, что произойдет, когда у меня будет несколько тысяч существ (игроков, монстров и т. Д.) В мире, которые нужно обновить и проверить.
Поскольку я не мог найти ресурсы по этой конкретной проблеме, я спрашиваю здесь. Подходит ли этот подход? У меня скоро возникнут проблемы? Каков стандарт для этого? Каков наилучший способ?