Tôi đang phát triển một Metroidvania 2D bao gồm một loạt các cấp độ liên kết có thể được xem xét lại.
Mỗi cấp độ được biểu thị bằng tệp TMX Tiled trong đó tôi đã chỉ định nơi các đối tượng khác nhau của các lớp sprite khác nhau sinh ra (ví dụ: kẻ thù, kẻ nhặt đồ, đòn bẩy, v.v.). Khi bắt đầu một trò chơi mới, tải một trò chơi đã lưu hoặc thay đổi một cấp độ, vòng lặp trò chơi của tôi chạy qua tệp TMX thích hợp và tạo ra tất cả các đối tượng ở cấp độ đó.
Tôi xử lý các thay đổi cấp độ theo cách sau: Nếu Player
đối tượng giao nhau với một Portal
đối tượng, một change_map()
phương thức được gọi là tải một bản đồ mới (một liên kết với cổng thông tin giao nhau) và đặt người chơi ở vị trí thích hợp trên bản đồ mới.
Một số đối tượng của tôi có trạng thái mà tôi muốn kiên trì thông qua thay đổi cấp độ và lưu và thoát khỏi trò chơi. Ví dụ: nếu người chơi mở khóa cửa và thuộc tính trạng thái của cửa được đặt thành "mở", tôi muốn cửa mở khi người chơi quay lại. Tôi muốn một cái gì đó tương tự cho các đòn bẩy, có thể được đặt sang trái hoặc phải và nhiều đối tượng khác. Hơn nữa, đôi khi người chơi sẽ thu thập các vật phẩm mà tôi không muốn hồi sinh khi người chơi ghé thăm lại khu vực đó.
Câu hỏi của tôi là làm thế nào tôi có thể xử lý loại kiên trì này?
Tôi đang làm việc trong Python, mặc dù tôi nghĩ bạn có thể trừu tượng ra khỏi đó.