Saya merencanakan permainan petualangan, dan tidak tahu apa cara yang tepat untuk menerapkan perilaku tingkat tergantung pada tingkat perkembangan cerita.
Permainan pemain tunggal saya menampilkan dunia yang sangat besar di mana pemain harus berinteraksi dengan orang-orang di kota di berbagai titik dalam permainan. Namun, tergantung pada perkembangan cerita, hal-hal yang berbeda akan disajikan kepada pemain, misalnya Pemimpin Guild akan mengubah lokasi dari alun-alun kota ke berbagai lokasi di sekitar kota; Pintu hanya akan membuka pada waktu-waktu tertentu dalam sehari setelah menyelesaikan rutinitas tertentu; Acara cut-screen / trigger yang berbeda terjadi hanya setelah tonggak pencapaian tertentu telah tercapai.
Saya secara naif berpikir untuk menggunakan pernyataan switch {} pada awalnya untuk memutuskan apa yang harus dikatakan oleh NPC atau di mana ia dapat ditemukan, dan membuat tujuan pencarian hanya dapat berinteraksi setelah memeriksa kondisi variabel game_state global. Tetapi saya menyadari bahwa saya akan dengan cepat mengalami banyak keadaan permainan dan saklar-kasus yang berbeda untuk mengubah perilaku suatu objek. Pernyataan peralihan itu juga akan sangat sulit untuk di-debug, dan saya kira mungkin juga akan sulit untuk digunakan dalam editor tingkat.
Jadi saya berpikir, alih-alih memiliki satu objek dengan banyak status, mungkin saya harus memiliki beberapa instance dari objek yang sama, dengan satu status. Dengan begitu, jika saya menggunakan sesuatu seperti editor level, saya dapat menempatkan instance NPC di semua lokasi berbeda yang pernah ia temui, dan juga sebuah instance untuk setiap status percakapan yang ia miliki. Tapi itu berarti akan ada banyak objek permainan yang tidak aktif dan tidak terlihat mengambang di sekitar level, yang mungkin kesulitan untuk memori, atau hanya sulit dilihat di editor level, saya tidak tahu.
Atau sederhananya, buat level yang identik, tetapi terpisah untuk setiap kondisi permainan. Ini terasa cara terbersih dan bebas bug untuk melakukan sesuatu, tetapi rasanya seperti kerja manual besar memastikan setiap versi level benar-benar identik satu sama lain.
Semua metode saya terasa sangat tidak efisien, sehingga untuk merangkum pertanyaan saya, apakah ada cara yang lebih baik atau standar untuk menerapkan perilaku tingkat tergantung pada tingkat perkembangan cerita?
PS: Saya belum memiliki editor level - berpikir untuk menggunakan sesuatu seperti JME SDK atau membuat milik saya.