Этот вопрос немного сложен, но я постараюсь прояснить его.
Допустим, я создаю онлайн-игру (не в масштабе MMO), но она поддерживает как можно больше игроков в рамках авторитетного серверного подхода. Я хочу действительно большие миры с большим количеством искусственных врагов.
Мне известно о нескольких стратегиях экономии процессорного времени сервера путем разделения пространства, а не обработки того, что не требует обработки. Я уже разделил мир по регионам, что потребует времени загрузки и небольших переходов, что я считаю важным для поддержания качества игрового процесса при локальной игре (в одиночку или даже с парой друзей). Я не ожидаю, что игроки будут в более чем одном или двух регионах.
Проблема в том, что регион может стать довольно большим, и одновременно имитировать множество NPC. Как мне справиться с этим, не влияя на опыт игроков? Подходы, такие как один сервер на регион и так далее, не указаны в таблице.
Я в основном ищу структуры данных для хранения полчищ врагов и даже мирных NPC. Чтобы завершить вопрос, пожалуйста, обратите внимание, что транспортные средства существуют, поэтому его можно быстро перемещать в пределах региона, влияя на «когда» отбирать участки.
Ответы:
Из того, что я понимаю, на вашем сервере будет работать какая-то физика.
Если это так, есть и другие методы, доступные для ИИ / физики, кроме разделения пространства. От самого к менее очевидному:
После того, как вы внедрили эти механизмы, вы можете решить, сколько и как часто они вам нужны. Самое замечательное в этом то, что позже вы можете добавить несколько серверов, которые смогут выполнять некоторые задачи вместо клиентских приложений.
Конечно, приблизительное обнаружение столкновений создаст некоторые аберрации, но вы сможете их решить, добавляя время от времени больше точности.
Также в отношении физики вы должны взглянуть на библиотеки, которые поддерживают какую-то систему GPGPU , такую как OpenCL или CUDA, если у вас есть доступ к серверу, который поддерживает либо.
источник