ฉันเขียนสิ่งที่คล้ายกับสิ่งที่คุณต้องการสำหรับการโคลนของ Civilization สไตล์สกรีนเซฟเวอร์อัตโนมัติสำหรับบันทึกฉันเขียนสิ่งนี้ใน VB.net แต่เนื่องจากคุณไม่ได้พูดถึงอะไรเกี่ยวกับภาษาหรือแพลตฟอร์มในคำถามของคุณฉันจะเก็บไว้ มันเป็นนามธรรม
"แผนที่" ระบุจำนวนทวีปความแปรปรวนของขนาดทวีป (เช่น 1.0 จะทำให้ทุกทวีปมีพื้นที่แผ่นดินโดยประมาณเท่ากันโดยลดลงเหลือ 0.1 ทำให้ทวีปมีอยู่ได้โดยมีมวล 1 ใน 10 ของทวีปที่ใหญ่ที่สุด) พื้นที่สูงสุด (เป็นเปอร์เซ็นต์) ในการสร้างและอคติที่ดินส่วนกลาง "เมล็ดพันธุ์" จะกระจายแบบสุ่มรอบ ๆ แผนที่สำหรับแต่ละทวีปโดยถ่วงน้ำหนักไปที่จุดศูนย์กลางของแผนที่ตามอคติส่วนกลาง (เช่นความเอนเอียงที่ต่ำจะทำให้เกิดทวีปที่มีการกระจายคล้ายกับโลกมากขึ้นโดยที่อคติส่วนกลางที่สูงจะคล้ายกับ a Pangea). จากนั้นสำหรับการเติบโตซ้ำแต่ละครั้ง "เมล็ด" จะกำหนดกระเบื้องที่ดินตามอัลกอริธึมการกระจาย (เพิ่มเติมในภายหลัง) จนกว่าจะถึงพื้นที่สูงสุด
อัลกอริธึมการกระจายที่ดินสามารถแม่นยำเท่าที่คุณต้องการ แต่ฉันพบผลลัพธ์ที่น่าสนใจกว่าโดยใช้อัลกอริทึมทางพันธุกรรมต่างๆและหมุนลูกเต๋า "เกมแห่งชีวิต" ของคอนเวย์เป็นเกมที่ง่ายมากที่จะเริ่มต้นด้วย คุณจะต้องเพิ่มตรรกะที่รับรู้ทั่วโลกบางส่วนเพื่อหลีกเลี่ยงสิ่งต่างๆเช่นทวีปที่เติบโตต่อกัน แต่ส่วนใหญ่ดูแลตัวเอง ปัญหาที่ฉันพบเมื่อใช้วิธีการที่ใช้เศษส่วนมากขึ้น (ซึ่งเป็นความโน้มเอียงแรกของฉัน) คือผลลัพธ์ที่ได้ดูมีแบบแผนเกินไปหรือนำไปสู่สถานการณ์มากเกินไปที่ต้องใช้กฎการแก้ปัญหาความรู้สึกเหมือนแฮ็กเพื่อให้ได้ผลลัพธ์ที่ยังไม่รู้สึกถึงไดนามิกเพียงพอ ขึ้นอยู่กับอัลกอริทึมที่คุณใช้คุณอาจต้องการใช้การส่งผ่าน "การเบลอ" เพื่อกำจัดสิ่งต่างๆเช่นกระเบื้องมหาสมุทรสี่เหลี่ยมจัตุรัสเดี่ยวที่มีอยู่มากมายและแนวชายฝั่งตาหมากรุก ในกรณีที่มีบางสิ่งบางอย่างเช่นทวีปถูกสร้างขึ้นโดยรอบโดยคนอื่น ๆ อีกหลายคนและไม่มีที่ให้เติบโตให้ย้ายเมล็ดพันธุ์ไปยังจุดใหม่บนแผนที่และดำเนินการต่อจากการเติบโต ใช่มันอาจหมายความว่าบางครั้งคุณต้องจบลงด้วยทวีปมากกว่าที่วางแผนไว้ แต่ถ้าเป็นสิ่งที่คุณไม่ต้องการอย่างแน่วแน่วิธีอื่นที่จะช่วยหลีกเลี่ยงได้ก็คืออัลกอริธึมการเติบโตที่มีอคติดังนั้นพวกเขาจึงสนับสนุนการเติบโตในทิศทางที่ใกล้เคียงกับอื่น เมล็ด. ที่แย่ที่สุด (ในความคิดของฉันอยู่แล้ว) คุณสามารถตั้งค่าสถานะชุดว่าไม่ถูกต้องเมื่อเมล็ดพันธุ์ไม่เหลือที่ให้เติบโตและสร้างแผนที่ใหม่ ตรวจสอบให้แน่ใจว่าคุณได้กำหนดจำนวนครั้งสูงสุดดังนั้นหากมีการระบุสิ่งที่ไม่สมจริง (เช่นการติดตั้งทวีปที่มีน้ำหนักเท่ากัน 50 รายการบนกระดาน 10x10) จะไม่ใช้เวลาตลอดไปในการพยายามหาวิธีแก้ปัญหาที่ถูกต้อง
ฉันไม่สามารถรับรองได้ว่า Civ และอื่น ๆ ทำได้อย่างไรและแน่นอนว่าไม่ครอบคลุมถึงสิ่งต่างๆเช่นสภาพอากาศอายุที่ดิน ฯลฯ แต่ด้วยการเล่นกับอัลกอริธึมการเติบโตของเมล็ดพันธุ์คุณจะได้ผลลัพธ์ที่น่าสนใจซึ่งมีลักษณะคล้ายทวีปหมู่เกาะ ฯลฯ คุณสามารถ ใช้แนวทางเดียวกันในการผลิตแม่น้ำที่มีลักษณะ 'อินทรีย์' ภูเขา ฯลฯ ด้วย