Самый эффективный способ найти несколько целей для нескольких целей? 2D MMORPG на основе сеткиC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Гость
 Самый эффективный способ найти несколько целей для нескольких целей? 2D MMORPG на основе сетки

Сообщение Гость »


В настоящее время я пытаюсь решить будущую «проблему» поиска целей в онлайн-игре, которую сейчас разрабатываю. Это очень простая 2D MMORPG, которую я разрабатывал в качестве хобби в течение последних нескольких лет, используя C#.

Это на 2D-карте, оси X и Y. Карта разделена на координаты одинакового размера, каждый объект занимает на карте 1 координату.

Теперь эти карты различаются по размеру: от 1000x1000 до 300x300. Каждый из них содержит разное количество неигровых объектов (врагов). Все это вычисляется на стороне сервера, поэтому эффективность имеет решающее значение.

В настоящее время эти враги не нацелены друг на друга, они нацелены только на персонажей, управляемых игроком. Так что это относительно просто: когда игрок присоединяется к карте, добавляется в список, на который можно нацеливаться, каждый враг просматривает список и проверяет, находятся ли они в пределах досягаемости или нет, 20-30 игроков на карту не проблема.

Я хочу добавить больше интерактивного ИИ и позволить неигровым объектам карты нацеливаться друг на друга и, по сути, сражаться между собой в зависимости от определенного набора условий.

В настоящее время я делаю это с помощью цикла for: у каждого врага есть установленный «диапазон обзора», и поэтому он эффективно просматривает окружающие координаты, проверяя, есть ли в каждой ячейке объект, на который он может нацелиться.

Среднее количество объектов карты на карте составляет около 300, а средний диапазон просмотра составляет около 8. Таким образом, каждый цикл процесса требует около 20 тысяч итераций поиска цели на карте, в настоящее время в игре около 200 карт. на данный момент получается около 4-5 миллионов координат, просматриваемых за каждый цикл процесса.

Может ли кто-нибудь предложить более эффективный способ целевого поиска? На данный момент это не влияет на производительность, но я знаю, что это не будет хорошо масштабироваться. Я рассмотрел деревья четырехугольников, но уже разделил карту на координаты, что является частью основ игры. Я не знал, есть ли у кого-нибудь более простой метод поиска?

Спасибо

Как и выше, в настоящее время я использую цикл for для каждого объекта карты для поиска в окружающей области.
for (int d = 0; d
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»