Po dzisiejszym spędzeniu czasu na zanotowaniu notatek dotyczących implementacji ścian w mojej grze opartej na kafelkach, nagle zdałem sobie sprawę, że nie będzie to takie proste, jak sobie wyobrażałem. Chociaż obecny etap mojej pracy nie jest nawet bliski zrobienia kodu związanego ze ścianą, wymyśliłem trzy różne sposoby na zrobienie tego. W tej chwili nie jestem pewien, który z moich pomysłów zadziała najlepiej i czy coś mi umknęło, czy nie.
Ważne: postać MOŻE stać na kafelku, który ma ściany, niezależnie od ich formy.
Wspólna rzecz dla wszystkich trzech wariantów: mapa tilem będzie „trzymana” w pojemniku opartym na std :: vector (lub podobnym) w jednym wymiarze. Przyczyny tego są (niewiarygodnie) wyjaśnione w odpowiedziach na inne pytanie.
Klasy kontenerów w grach opartych na kafelkach.
Powrót do ścian.
A) Proste podejście.
Nic szczególnego tutaj. Każdy pojemnik z płytkami może pomieścić nie tylko postacie, ale jeden lub kilka obiektów ściany, które są przymocowane do krawędzi wewnątrz płytki.
Plusy: łatwe do wdrożenia, nie trzeba nic zmieniać w silniku. Minusy: Dwie rzeczy. Po pierwsze - może być tylko w mojej głowie, ale niektóre kombinacje wyglądają po prostu brzydko. Po drugie - takie podejście pozwala na wykonanie podwójnej ściany z dwóch sąsiadujących ze sobą płytek. Budowanie będzie ważną częścią gry, a podwójne ściany pozwolą budowniczym na rezygnację z ulepszania materiału ścian za pomocą środków gry i osiągnięcie większej wytrzymałości dzięki podwojeniu istniejącej ściany. To nie jest pożądane. Jasne, mógłbym dołączyć procedurę, która zabrania podwójnego murowania, ale będzie to miało zły nastrój.
B) Inteligentne (?) Podejście.
Zamiast pozwolić graczom podwoić ścianę całej mapy, zamierzam ich pokonać. Każda ściana ma dwie połówki, które są przymocowane do krawędzi płytki od wewnątrz. Tak więc, aby stworzyć pojedynczą „jednostkę ścienną”, będę musiał stworzyć dwa obiekty w połowie ściany w dwóch sąsiadujących płytkach.
Plusy: Jest symetryczny !!! Ponadto nie jest wymagana znacząca zmiana aktualnych specyfikacji silnika. Minusy: więcej kłopotów, więcej przedmiotów i oczywiście „czapki”. Jak widać na zdjęciu, narożnik będzie w zasadzie wołał o obiekt „czapki”. Naprawdę jestem z tym spoko, nie jest tak trudno dodać. Hej, mam już plan cienkich kolumn wykonanych z czterech połączonych ze sobą nasadek. Słodkie. Mimo to mam pewne obawy dotyczące możliwych problemów z polem widzenia i linią widzenia.
C) Całkowity wariant remontu.
Albo mógłbym po prostu tworzyć granice i narożniki jako osobne pojemniki na obiekty gry. Właśnie tak.
Plusy: nawet nie jestem pewien. Cóż, to proste. Zdecydowanie. Minusy: Będzie to wymagało remontu. Na szczęście nie kodu, ale obecnej mentalności mechaniki gry - to na pewno. Korzyści nie są tak oczywiste. Również to podejście wymaga znacznie więcej pojemników niż dwa poprzednie. Matematyka indeksowania również będzie trochę bolesna.
Mamy więc trzy różne sposoby tworzenia ścian między płytkami. Jeśli są jakieś alternatywy - chętnie je sprawdzę. Jeśli są jakieś zalety / wady któregoś z podejść, których nie widziałem - proszę o ich wskazanie.