Bir macera oyunu planlıyorum ve hikaye ilerlemesine bağlı olarak bir seviyenin davranışını uygulamanın doğru yolunun ne olduğunu anlayamıyorum.
Tek oyunculu oyunum, oyuncunun bir kasabadaki insanlarla oyunun çeşitli noktalarında etkileşim kurması gereken dev bir dünyaya sahip. Bununla birlikte, hikaye ilerlemesine bağlı olarak, oyuncuya farklı şeyler sunulacaktır, çünkü Lonca Lideri kasaba meydanından şehirdeki çeşitli konumlara yer değiştirecektir; Kapılar sadece belirli bir rutini bitirdikten sonra günün belirli saatlerinde açılır; Farklı kesme-ekran / tetikleme olayları ancak belirli bir aşamaya ulaşıldıktan sonra gerçekleşir.
NPC'nin ne söylemesi veya hangisinde bulunabileceğine karar vermek için başlangıçta bir switch {} ifadesi kullanmayı ve görev hedeflerini ancak küresel bir game_state değişkeninin durumunu kontrol ettikten sonra etkileşimli hale getirmeyi düşündüm. Ancak bir nesnenin davranışını değiştirmek için çok sayıda farklı oyun durumuna ve geçiş senaryosuna gireceğimi fark ettim. Bu anahtar ifadesinin hata ayıklaması da büyük ölçüde zor olacak ve sanırım bir seviye düzenleyicide kullanmak zor olabilir.
Bu yüzden, birden çok durumlu tek bir nesneye sahip olmak yerine, belki de tek bir durumla aynı nesnenin birden çok örneğine sahip olmam gerektiğini düşündüm. Bu şekilde, bir seviye editörü gibi bir şey kullanırsam, NPC'nin bir örneğini, görülebileceği tüm farklı konumlara ve ayrıca sahip olduğu her konuşma durumu için bir örnek koyabilirim. Ancak bu, seviye etrafında yüzen, bellek için sorun yaratabilecek veya bir seviye düzenleyicide görmek zor olan bir çok inaktif, görünmez oyun nesnesi olacağı anlamına geliyor, bilmiyorum.
Veya her oyun durumu için aynı, ancak ayrı bir seviye yapın. Bu, işleri yapmanın en temiz ve hatasız yolunu hisseder, ancak seviyenin her versiyonunun birbiriyle gerçekten aynı olduğundan emin olmak için büyük bir manuel çalışma gibi hisseder.
Tüm yöntemlerim o kadar verimsiz hissediyor, öyleyse sorumu yeniden özetlemek için, hikaye ilerlemesine bağlı olarak bir seviyenin davranışını uygulamanın daha iyi veya standart bir yolu var mı?
Not: Henüz bir seviye editörüm yok - JME SDK gibi bir şey kullanmayı ya da kendimi yapmayı düşünüyorum.