Я розробляю 2D Metroidvania, що складається з серії взаємопов'язаних рівнів, які можна переглянути.
Кожен рівень представлений файлом Tiled TMX, в якому я вказав, де породжуються різні об'єкти різних класів спрайтів (наприклад, вороги, пікапи, важелі тощо). Запускаючи нову гру, завантажуючи збережену гру або змінюючи рівень, мій цикл гри проходить через відповідний файл TMX і генерує всі об'єкти на цьому рівні.
Я обробляю зміни рівня таким чином: Якщо Player
об'єкт перетинає Portal
об'єкт, change_map()
називається метод, який завантажує нову карту (ту, що пов'язана з перерізаним порталом) і розміщує гравця у відповідній позиції на новій карті.
Деякі з моїх об'єктів мають стан, який я хотів би бути стійким через зміни рівня, збереження та вихід із гри. Наприклад, якщо гравець відчиняє двері, а атрибут стану дверей встановлений на "відкрити", я б хотів, щоб двері були відкриті, коли гравець повертається. Я хочу щось подібне для важелів, які можна встановити вліво або вправо, і різних інших об'єктів. Крім того, гравець іноді буде збирати предмети, які я не хочу відновлювати, коли гравець перегляне область.
Моє запитання полягає в тому, як я можу впоратися з такою наполегливістю?
Я працюю в Python, хоча я думаю, що ви можете абстрагуватися від цього.