У меня есть 2D-стратегия на основе плиток в работах. Я брожу, как справиться с отношениями между картой и единицами на карте.
Учитывая координаты тайла, я должен быть в состоянии заставить юнит стоять на нем, если таковой имеется. В то же время, если мне дадут единицу, я захочу получить координату единицы.
Я видел два решения этого. Первое решение состоит в том, чтобы юниты сохраняли координаты, а юниты карты хранилища ссылались на свои тайлы. Это создает циклическую зависимость между картой и единицами. Мне нужно убедиться, что карта любого юнита синхронизирована, если юнит перемещается.
Второе решение состоит в том, чтобы только единицы отслеживали свои координаты. Чтобы узнать, содержит ли тайл единицу, и чтобы получить эту единицу, я бы перебрал весь набор единиц юнитов, и я нашел одну с соответствующими координатами. Это избавляет от циклической зависимости, но при этом теряется свойство O (1), которое было в первом решении для поиска единиц на карте. Это может сложиться так, как я хочу, чтобы иметь возможность регулярно сканировать карту на предмет таких вещей, как поиск пути, определение диапазона движения и нахождение допустимых целей для данного подразделения.
Я также не могу просто хранить единицы на карте (или я могу?). Юниты связаны с «армиями», будь то игрок или ИИ. Армия должна иметь возможность легко получить доступ и перебирать все свои подразделения.
Так как это кажется распространенной проблемой в стратегических играх, есть ли какие-либо другие шаблоны, кроме двух, которые я описал для управления отношениями юнит / карта?