Я разрабатываю 2D Metroidvania, который состоит из ряда взаимосвязанных уровней, которые могут быть пересмотрены.
Каждый уровень представлен файлом Tiled TMX, в котором я указал, где появляются различные объекты различных классов спрайтов (например, враги, пикапы, рычаги и т. Д.). При запуске новой игры, загрузке сохраненной игры или изменении уровня мой игровой цикл проходит через соответствующий файл TMX и генерирует все объекты на этом уровне.
Я обрабатываю изменения уровня следующим образом: если Player
объект пересекается с Portal
объектом, change_map()
вызывается метод, который загружает новую карту (ту, которая связана с пересекающимся порталом) и помещает игрока в соответствующую позицию на новой карте.
Некоторые из моих объектов имеют состояния, которые я хотел бы сохранять постоянными при смене уровня, сохранении и выходе из игры. Например, если игрок открывает дверь, а атрибут состояния двери установлен на «открыто», я бы хотел, чтобы дверь была открыта, когда игрок вернется. Я хочу что-то подобное для рычагов, которые могут быть установлены влево или вправо, и различных других объектов. Кроме того, у игрока иногда будут собираться предметы, которые я не хочу возрождать, когда игрок повторно посещает область.
Мой вопрос, таким образом, как я могу справиться с такой настойчивостью?
Я работаю в Python, хотя я думаю, что вы можете абстрагироваться от этого.
источник
properties
поле, которое вы изменяете, и использовать плиткиproperties
только для указания того, какое свойство нужно изменить (но все данные хранятся в вашем спрайте). Вы также можете просто передать плитку своему спрайту, чтобы вы могли изменить плитку из спрайта :), если неясно, что я имею в виду, я могу