หมายเหตุ: ฉันถามสิ่งนี้ใน Stack Overflow เมื่อสองสามวันก่อน แต่มีมุมมองน้อยมากและไม่มีการตอบสนอง คิดว่าฉันควรถาม gamdev.stackexchange แทน
นี่เป็นคำถาม / คำขอทั่วไปสำหรับคำแนะนำเกี่ยวกับการบำรุงรักษาระบบการผลิตตามขั้นตอนผ่านการอัพเดทหลังการเผยแพร่หลายครั้งโดยไม่ทำลายเนื้อหาที่สร้างขึ้นก่อนหน้านี้
ฉันพยายามค้นหาข้อมูลและเทคนิคในการหลีกเลี่ยงปัญหา "Butterfly Effect" เมื่อสร้างเนื้อหาขั้นตอนสำหรับเกม เมื่อใช้เครื่องกำเนิดตัวเลขสุ่มแบบ seeded ลำดับการทำซ้ำของตัวเลขสุ่มสามารถใช้เพื่อสร้างโลกที่ทำซ้ำได้ ในขณะที่เกมบางเกมบันทึกโลกที่สร้างไว้บนดิสก์ที่สร้างขึ้นครั้งเดียวหนึ่งในคุณสมบัติที่ทรงพลังของขั้นตอนการสร้างคือความจริงที่ว่าคุณสามารถพึ่งพาความสามารถในการทำซ้ำของลำดับหมายเลขเพื่อสร้างภูมิภาคหลายครั้งในลักษณะเดียวกัน วิริยะ. เนื่องจากข้อ จำกัด ของสถานการณ์เฉพาะของฉันฉันจึงต้องลดการคงอยู่ให้เหลือน้อยที่สุดและจำเป็นต้องพึ่งพาจุดเริ่มต้นที่บริสุทธิ์อย่างเต็มที่เท่าที่จะทำได้
อันตรายหลักในแนวทางนี้คือแม้แต่การเปลี่ยนแปลงเพียงเล็กน้อยในระบบการสร้างขั้นตอนสามารถทำให้เกิดผลกระทบของผีเสื้อที่เปลี่ยนแปลงโลกทั้งใบ ทำให้การอัปเดตเกมเป็นเรื่องยากมากโดยไม่ทำลายโลกที่ผู้เล่นสำรวจ
เทคนิคหลักที่ฉันใช้เพื่อหลีกเลี่ยงปัญหานี้คือการออกแบบการสร้างโพรซีเดอร์ในหลายเฟสซึ่งแต่ละอันมีตัวสร้างตัวเลขสุ่มแบบสุ่ม ซึ่งหมายความว่าแต่ละระบบย่อยนั้นมีอยู่ในตัวเองและหากมีสิ่งใดเสียหายก็จะไม่ส่งผลกระทบต่อทุกสิ่งในโลก อย่างไรก็ตามเรื่องนี้ดูเหมือนว่ามันยังมีศักยภาพมากมายสำหรับ "การแตก" แม้ว่าจะอยู่ในส่วนที่แยกจากเกม
วิธีที่เป็นไปได้อีกวิธีหนึ่งในการจัดการกับปัญหานี้คือการรักษาเครื่องกำเนิดไฟฟ้าของคุณให้สมบูรณ์ในรหัสและใช้เครื่องกำเนิดที่เหมาะสมสำหรับอินสแตนซ์ของโลกที่กำหนด ดูเหมือนว่าจะเป็นฝันร้ายสำหรับฉันและฉันอยากรู้ว่าใครทำสิ่งนี้จริง ๆ
ดังนั้นคำถามของฉันคือคำขอคำแนะนำเทคนิคและรูปแบบการออกแบบทั่วไปเพื่อจัดการกับปัญหานี้ของเอฟเฟกต์ผีเสื้อโดยเฉพาะอย่างยิ่งในบริบทของการอัปเดตเกมหลังวางจำหน่าย (หวังว่านั่นจะไม่ใช่คำถามที่กว้างเกินไป)
ฉันกำลังทำงานใน Unity3D / C # ถึงแม้ว่านี่จะเป็นคำถามที่ไม่เชื่อเรื่องภาษา
UPDATE:
ขอบคุณสำหรับคำตอบ
ดูเหมือนว่าข้อมูลแบบคงที่จะเป็นวิธีที่ดีที่สุดและปลอดภัยที่สุดและเมื่อการจัดเก็บข้อมูลจำนวนมากไม่ใช่ตัวเลือกการมีแคมเปญที่ยาวนานในโลกที่สร้างขึ้นจะต้องใช้เวอร์ชันที่เข้มงวดของเครื่องกำเนิดไฟฟ้า เหตุผลของข้อ จำกัด ในกรณีของฉันคือความต้องการบันทึก / ซิงค์บนคลาวด์บนอุปกรณ์เคลื่อนที่ โซลูชันของฉันอาจหาวิธีจัดเก็บข้อมูลขนาดเล็กจำนวนเล็กน้อยเกี่ยวกับสิ่งจำเป็น
ฉันพบแนวคิดของ Stormwind เกี่ยวกับ "กรง" เพื่อเป็นวิธีที่มีประโยชน์อย่างยิ่งในการคิดเกี่ยวกับสิ่งต่าง ๆ กรงนั้นเป็นจุด reseed ซึ่งป้องกันผลกระทบจากการเปลี่ยนแปลงเล็กน้อยเช่นการยกกรงผีเสื้อ