W pracach mam strategię opartą na kafelkach 2D. Wędruję, jak poradzić sobie z relacją między mapą a jednostkami na mapie.
Biorąc pod uwagę współrzędne kafelków, będę musiał móc postawić na nim jednostkę, jeśli taka istnieje. W tym samym czasie, jeśli otrzymam jednostkę, będę chciał uzyskać współrzędną jednostki.
Widziałem dwa rozwiązania tego. Pierwszym rozwiązaniem byłoby, aby jednostki zapisywały współrzędne, a odniesienia do jednostek mapy zapisywały na swoich kafelkach. Stwarza to cykliczną zależność między mapą a jednostkami. Muszę się upewnić, że mapa dowolnej jednostki będzie zsynchronizowana, jeśli jednostka się poruszy.
Drugim rozwiązaniem byłoby śledzenie współrzędnych tylko przez jednostki. Aby stwierdzić, czy kafelek zawiera jednostkę i uzyskać tę jednostkę, przejrzałbym cały zestaw jednostek, które znajduję, z pasującymi współrzędnymi. Otrzymują one cykliczną zależność, ale tracą właściwość O (1), jaką miało pierwsze rozwiązanie do wyszukiwania jednostek z mapy. Może się to sumować, ponieważ chcę móc regularnie skanować mapę w poszukiwaniu takich rzeczy, jak znalezienie ścieżki, określenie zasięgu ruchu i znalezienie prawidłowych celów dla danej jednostki.
Nie mogę też po prostu przechowywać jednostek na mapie (czy mogę?). Jednostki są powiązane z „armiami”, zarówno graczami, jak i AI. Armia powinna mieć łatwy dostęp i iterację wszystkich swoich jednostek.
Ponieważ wydaje się, że jest to częsty problem w grach strategicznych, czy istnieją jakieś inne wzorce oprócz dwóch opisanych przeze mnie do zarządzania relacjami między jednostkami a mapami?