Opracowuję 2D Metroidvania, która składa się z szeregu powiązanych ze sobą poziomów, które można ponownie odwiedzić.
Każdy poziom jest reprezentowany przez kafelkowy plik TMX , w którym określiłem, gdzie pojawiają się różne obiekty różnych klas duszków (na przykład wrogowie, przetworniki, dźwignie itp.). Podczas uruchamiania nowej gry, ładowania zapisanej gry lub zmiany poziomu, moja pętla gry przechodzi przez odpowiedni plik TMX i generuje wszystkie obiekty na tym poziomie.
Obsługuję zmiany poziomów w następujący sposób: Jeśli Player
obiekt przecina Portal
obiekt, change_map()
wywoływana jest metoda, która ładuje nową mapę (powiązaną z przecinającym się portalem) i ustawia gracza w odpowiednim miejscu na nowej mapie.
Niektóre z moich przedmiotów mają stany, które chciałbym być trwałe przez zmiany poziomu i zapisywanie i kończenie gry. Na przykład, jeśli gracz odblokuje drzwi, a atrybut stanu drzwi jest ustawiony na „otwarte”, chciałbym, aby drzwi były otwarte, gdy gracz powróci. Chcę coś podobnego do dźwigni, które można ustawić w lewo lub w prawo, i różnych innych przedmiotów. Co więcej, gracz czasami zbiera przedmioty, których nie chcę odradzać, gdy gracz powróci na dany obszar.
Moje pytanie brzmi zatem, jak poradzić sobie z tego rodzaju wytrwałością?
Pracuję w Pythonie, choć myślę, że można od tego oderwać się.
źródło
properties
pole, które zmodyfikujesz, a zamiast tego użyć kafelkówproperties
jako wskazania, którą właściwość chcesz zmodyfikować (ale wszystkie dane są przechowywane w twoim ikonce). Możesz także przekazać kafelek do swojego duszka, aby móc modyfikować kafelek z ikonki :) jeśli nie jest jasne, co mam na myśli, mogę