CATATAN: Saya menanyakan hal ini di Stack Overflow beberapa hari yang lalu tetapi hanya memiliki sedikit tampilan dan tidak ada respons. Kupikir aku harus bertanya pada gamdev.stackexchange sebagai gantinya.
Ini adalah pertanyaan / permintaan umum untuk saran tentang pemeliharaan sistem pembuatan prosedural melalui beberapa pembaruan pasca-rilis, tanpa merusak konten yang dihasilkan sebelumnya.
Saya mencoba mencari informasi dan teknik untuk menghindari masalah "Butterfly Effect" ketika membuat konten prosedural untuk game. Saat menggunakan generator nomor acak yang diunggulkan, urutan nomor acak yang diulang dapat digunakan untuk membuat dunia yang dapat direproduksi. Sementara beberapa gim hanya menyimpan dunia yang dihasilkan ke disk yang pernah dihasilkan, salah satu fitur canggih generasi prosedural adalah fakta bahwa Anda dapat mengandalkan kemampuan reproduksi urutan nomor untuk menciptakan kembali suatu wilayah beberapa kali dengan cara yang sama, menghilangkan kebutuhan akan kegigihan. Karena kendala situasi khusus saya, saya harus meminimalkan kegigihan, dan perlu mengandalkan konsentrasi murni semaksimal mungkin.
Bahaya utama dalam pendekatan ini adalah bahwa perubahan sekecil apa pun dalam sistem generasi prosedural dapat menyebabkan efek kupu-kupu yang mengubah seluruh dunia. Ini membuatnya sangat sulit untuk memperbarui permainan tanpa menghancurkan dunia yang dijelajahi para pemain.
Teknik utama yang saya gunakan untuk menghindari masalah ini adalah merancang generasi prosedural dalam beberapa fase, yang masing-masing memiliki generator nomor acak unggulan sendiri. Ini berarti bahwa setiap sub-sistem mandiri, dan jika ada yang rusak itu tidak akan mempengaruhi semua yang ada di dunia. Namun ini sepertinya masih memiliki banyak potensi untuk "kerusakan", bahkan jika di bagian yang terisolasi dari permainan.
Cara lain yang mungkin untuk menangani masalah ini bisa dengan mempertahankan versi lengkap generator Anda di dalam kode, dan tetap menggunakan generator yang tepat untuk instance dunia tertentu. Ini tampaknya seperti mimpi buruk pemeliharaan bagi saya, dan saya ingin tahu apakah ada yang benar-benar melakukan ini.
Jadi, pertanyaan saya sebenarnya adalah permintaan saran umum, teknik, dan pola desain untuk menangani masalah efek kupu-kupu ini, terutama dalam konteks pembaruan game pasca-rilis. (Semoga itu bukan pertanyaan yang terlalu luas.)
Saat ini saya bekerja di Unity3D / C #, meskipun ini adalah pertanyaan agnostik bahasa.
MEMPERBARUI:
Terima kasih atas balasannya.
Terlihat lebih dan lebih seperti data statis adalah pendekatan terbaik dan teraman, dan juga bahwa ketika menyimpan banyak data statis bukanlah suatu pilihan, memiliki kampanye panjang di dunia yang dihasilkan akan membutuhkan versi ketat dari generator yang digunakan. Alasan keterbatasan dalam kasus saya adalah perlunya cloud save / sync berbasis mobile. Solusi saya mungkin menemukan cara menyimpan sejumlah kecil data ringkas tentang hal-hal penting.
Saya menemukan konsep Stormwind tentang "Kandang" menjadi cara yang sangat berguna untuk memikirkan berbagai hal. Kandang pada dasarnya adalah titik reseed, mencegah efek perubahan kecil, yaitu mengurung kupu-kupu.