ฉันกำลังพัฒนา Metroidvania 2D ซึ่งประกอบด้วยชุดของระดับที่เชื่อมต่อระหว่างกันที่สามารถมาได้อีกครั้ง
แต่ละระดับจะแสดงด้วยไฟล์ Tiled TMXซึ่งฉันได้ระบุตำแหน่งที่วัตถุต่าง ๆ ของคลาสสไปรต์ที่แตกต่างกันวางไข่ (ตัวอย่างเช่นศัตรูรถปิคอัพคันโยก ฯลฯ ) เมื่อเริ่มเกมใหม่โหลดเกมที่บันทึกไว้หรือเปลี่ยนระดับลูปเกมของฉันจะทำงานผ่านไฟล์ TMX ที่เหมาะสมและสร้างวัตถุทั้งหมดในระดับนั้น
ฉันจัดการกับการเปลี่ยนแปลงระดับด้วยวิธีต่อไปนี้: หากPlayer
วัตถุตัดกันPortal
วัตถุchange_map()
วิธีการหนึ่งถูกเรียกใช้ซึ่งโหลดแผนที่ใหม่ (อันที่เกี่ยวข้องกับพอร์ทัลที่ตัดกัน) และวางตำแหน่งผู้เล่นในตำแหน่งที่เหมาะสมบนแผนที่ใหม่
วัตถุบางอย่างของฉันมีสถานะซึ่งฉันต้องการที่จะคงอยู่ผ่านการเปลี่ยนแปลงระดับและบันทึกและเลิกเล่นเกม ตัวอย่างเช่นหากผู้เล่นปลดล็อคประตูและคุณลักษณะสถานะของประตูถูกตั้งค่าเป็น "เปิด" ฉันต้องการให้ประตูเปิดเมื่อผู้เล่นกลับมา ฉันต้องการสิ่งที่คล้ายกับคันโยกซึ่งสามารถตั้งค่าเป็นซ้ายหรือขวาและวัตถุอื่น ๆ นอกจากนี้ผู้เล่นบางครั้งจะมีรายการที่ฉันไม่ต้องการที่จะเกิดใหม่เมื่อผู้เล่นกลับมาที่พื้นที่
คำถามของฉันคือฉันจะจัดการกับความเพียรแบบนี้ได้อย่างไร
ฉันทำงานใน Python แม้ว่าฉันคิดว่าคุณสามารถหลีกเลี่ยงได้