ในการตอบคำถามหลักของคุณสั้น ๆ ก่อนข้อได้เปรียบหลักของโลกของเกมที่สร้างขึ้นแบบขั้นตอนคือ:
ในทางกลับกันข้อเสียที่สำคัญของการสร้างโพรซีเดอร์คือ:
ขึ้นอยู่กับวิธีการสร้างที่ใช้มันอาจเป็นเรื่องยากที่จะตรวจสอบให้แน่ใจว่าโลกสามารถเล่นได้เสมอนั่นคือผู้เล่นไม่สามารถติดอยู่กับวิธีที่จะดำเนินการต่อไปไม่ได้เพราะพวกเขาเสียใจกับคนรุ่นโลก
แม้ว่าคุณจะสามารถหลีกเลี่ยงการสร้างโลกที่ไม่สามารถเล่นได้อย่างสมบูรณ์การสร้างโลกแบบสุ่มสามารถนำไปสู่ระดับความยากลำบากที่แปรผันได้สูง: บางครั้งผู้เล่นอาจพบทุกสิ่งที่พวกเขาต้องการเพียงแค่เรียงแถวเพื่อความสะดวก .
ในช่วงระยะเวลานานความผันผวนแบบสุ่มนั้นมีแนวโน้มที่จะเฉลี่ย แต่ถ้าความยากของเกมเป็นแบบโหลดหนัก (ปกติสำหรับเกมเอาชีวิตรอด) การเริ่มต้นที่ไม่ดีสามารถทำลายเกมได้ในขณะที่การเริ่มต้นที่โชคดีมาก
การสร้างขั้นตอนที่ทำได้ไม่ดีสามารถทำให้โลกรู้สึกว่าเป็นเสียงเดียวและน่าเบื่อ: หลังจากที่คุณได้เห็นเขาวงกตที่สร้างขึ้นแบบสุ่มนับสิบพวกเขาทั้งหมดก็เริ่มเหมือนกันแม้ว่าพวกเขาจะมีรายละเอียดแตกต่างกันก็ตาม
นอกจากนี้หากโลกของเกมได้รับการสร้างใหม่อย่างสมบูรณ์สำหรับแต่ละเกมจะไม่มีสถานที่หรือคุณลักษณะที่ผู้เล่นสามารถจดจำได้จากเกมก่อนหน้านี้ การขาดความคุ้นเคยเช่นนี้อาจทำให้ผู้เล่นยากที่จะมีส่วนร่วมกับเกมในระดับอารมณ์หรือแบ่งปันประสบการณ์กับผู้เล่นคนอื่น
นอกจากนี้ยังมีอีกสิ่งหนึ่งที่คุณสามารถนับได้ในรายการใดเกมหนึ่ง: ในเกมที่โลกถูกสร้างใหม่แบบสุ่มสำหรับแต่ละเกมไม่มีสิ่งใดที่จะเป็นคู่มือ "คำแนะนำ" เนื่องจากการเล่นทุกครั้งจะแตกต่างกัน
(ความสามารถในการทำซ้ำนี้อาจเป็นปัญหาสำหรับการทดสอบและการดีบักแม้ว่าจะสามารถหลีกเลี่ยงได้บางส่วนอย่างน้อยโดยการอนุญาตให้ระบุเมล็ดพันธุ์ RNG อย่างน้อยก็ในโหมดแก้ไขข้อบกพร่องและ / หรือโดยการให้คำสั่ง "โกง" ที่สามารถใช้ เล่นไปข้างหน้าอย่างรวดเร็วไปยังด่านต่าง ๆ )
อย่างไรก็ตามหากคุณดูรายการข้อเสียคุณจะเห็นว่าส่วนใหญ่อธิบายถึงข้อเสียของการสร้างขั้นตอนที่บริสุทธิ์ จำนวนมากของพวกเขาสามารถหลีกเลี่ยงได้โดยการผสมด้วยตนเองและเนื้อหาที่สร้าง procedurally
ตัวอย่างเช่นผู้เล่นสามารถเริ่มต้นในเมืองคงที่ได้รับการออกแบบด้วยตนเองอาจล้อมรอบด้วยพื้นที่บ้านคงที่มากขึ้นหรือน้อยลง แต่สถานที่ห่างไกลจากเมืองสามารถสร้างแบบสุ่มเพื่อให้ภูมิภาคที่ไม่คุ้นเคยสำหรับผู้เล่นในการสำรวจ
อาจมีเมืองที่ออกแบบด้วยตนเองอื่น ๆ หรือสถานที่อื่น ๆ (มากหรือน้อย) ที่วางสุ่มในโลกเช่นผู้เล่นจะต้องค้นหาพวกเขา แต่จะรู้ว่าจะเกิดอะไรขึ้นเมื่อพวกเขาไปถึงที่นั่น ในทางกลับกันคุณลักษณะที่โดดเด่นเช่นภูเขาสามารถวางได้ด้วยตนเอง (อย่างน้อยในบริเวณใกล้เคียงกับตำแหน่งเริ่มต้นที่แน่นอน) แต่รายละเอียดของภูมิประเทศสามารถสุ่มได้
สำหรับการจัดวางแบบสุ่มที่ก่อให้เกิดการหยุดชะงักและความแปรปรวนของความยากลำบากสามารถแก้ไขได้โดยการใช้การตรวจสอบความสอดคล้องและความสมดุลที่หลากหลายด้านบนของอัลกอริทึมการสร้างโลกของคุณ ตัวอย่างเช่นหากผู้เล่นต้องการไอเท็มบางอย่างเพื่อให้สามารถข้ามน้ำได้คุณสามารถใส่รหัสเพื่อให้แน่ใจว่ามีไอเท็มดังกล่าวอย่างน้อยหนึ่งรายการเพื่อให้ผู้เล่นสามารถเข้าถึงได้โดยไม่ต้องข้ามน้ำ
ในทำนองเดียวกันคุณอาจต้องการที่จะปรับแต่งกฎตำแหน่งรายการของคุณเพื่อให้ไม่มีไม้กายสิทธิ์ของความสมดุลทำลาย awesomenessจะถูกวางไว้ก่อนที่จะให้ผู้เล่นได้ถึงระดับxและอาจจะเพื่อให้มั่นใจว่าอย่างน้อยหนึ่งถูกวางไว้ในสถานที่คงที่ที่ผู้เล่นสามารถเข้าถึง ก่อนที่จะขึ้นสู่เวทีซึ่งพวกเขาจะต้องการมันเพื่อความอยู่รอด
โดยทั่วไปแล้ววิธีที่จะทำให้การสร้างเนื้อหาตาข่ายแบบโพรซีเดอร์และแบบแมนนวลมากขึ้นหรือน้อยลงอย่างต่อเนื่องคือการเริ่มต้นกระบวนการสร้างด้วยตนเองโดยใช้ตัวสร้างโพรซีเดอร์โลกแบบโพรซีเดอร์ ) เพื่อเริ่มต้นภูมิภาคที่คุณกำลังออกแบบจากนั้นปรับแต่งด้วยตนเองเพื่อเพิ่มและปรับรายละเอียดที่คุณต้องการ (สิ่งนี้สามารถอนุญาตการจัดเก็บในระดับที่เล็กมากโดยบันทึกเฉพาะการเปลี่ยนแปลงด้วยตนเองและเมล็ดกำเนิดและพารามิเตอร์ที่ใช้)
วิธีอื่น ๆ ในการรวมเนื้อหาแบบแมนนวลและขั้นตอนรวมถึงการปล่อยจุดที่ว่างในระดับที่คุณออกแบบเองเพื่อเติมเนื้อหาแบบสุ่ม (เช่นปราสาทอาจรวมถึงเขาวงกตที่สร้างแบบสุ่มในดันเจี้ยนโดยมีเฉพาะโครงร่างและทางออก) หรือ การออกแบบด้วยตนเองสามารถระบุได้เพียงคร่าวๆของบางส่วนของระดับ (เช่นตำแหน่งของบ้านในเมือง) และปล่อยให้รายละเอียด (เช่นลักษณะที่แน่นอนของแต่ละบ้าน) ที่จะถูกสุ่มเลือก
ในความเป็นจริงแม้แต่เกมจำนวนมากที่ได้รับการแก้ไขอย่างสิ้นเชิงโลกของเกมที่ใช้บางรูปแบบของขั้นตอนรุ่นเป็นส่วนหนึ่งของขั้นตอนการออกแบบระดับของพวกเขาเนื่องจากมีบางแง่มุมของการสร้างโลก (เช่นการผลิตภูมิประเทศที่ดูเป็นธรรมชาติหรือการวางต้นไม้ของแต่ละบุคคลในป่า) ที่ยากและ / หรือน่าเบื่อที่ต้องทำด้วยมือ แต่ค่อนข้างง่ายที่จะทำให้เป็นอัตโนมัติ
ตรงกันข้ามส่วนใหญ่ขั้นตอนการกำเนิดโลกจะใช้เวลาอย่างน้อยบางส่วนวัตถุที่ได้รับการออกแบบด้วยตนเองและองค์ประกอบในการสร้างโลกออกจาก ใคร ๆ ก็สามารถมีหลายระดับของการสร้างแบบสุ่ม / คู่มือหลายระดับ: ตัวอย่างเช่นโลกที่สร้างขึ้นในขั้นตอนอาจรวมถึงเมืองที่สร้างขึ้นด้วยตนเองล้อมรอบด้วยป่าที่สร้างขึ้นด้วยกระบวนการที่มีโครงร่างที่วาดด้วยตนเอง
โปรดทราบว่าการสร้างเนื้อหาขั้นตอนไม่จำเป็นต้องขัดกับโลกคงที่: คุณสามารถเลือกเมล็ดพันธุ์ RNG ที่คงที่และใช้เพื่อสร้างโลกของคุณได้ สิ่งนี้มีประโยชน์หากคุณต้องการโลกที่กว้างใหญ่สำหรับผู้เล่นในการสำรวจ แต่ต้องการให้มันเหมือนเดิมสำหรับทุกเกมและผู้เล่นทุกคน
โปรดทราบว่าหากคุณทำเช่นนี้ (หรืออาจเป็นไปได้ว่าคุณไม่ได้ทำ) คุณควรออกแบบตัวสร้างโลกของคุณให้ทำงานแบบลำดับชั้นโดยใช้อินสแตนซ์ RNG หลายรายการเช่นเช่นตัวสร้างแผนที่โดยรวมจะเก็บอินสแตนซ์ RNG เดี่ยว มันจะใช้ในการสร้างภูมิภาคย่อยกำหนดให้แต่ละภูมิภาคย่อยเป็นค่าเมล็ดที่แตกต่างกันที่เครื่องกำเนิดภูมิภาคจะใช้เพื่อเมล็ดอินสแตนซ์ RNG แยกต่างหากที่มันจะใช้ในการสร้างภูมิภาคและอื่น ๆ นี่คือการหลีกเลี่ยง "เอฟเฟกต์ของผีเสื้อ" ซึ่งการเปลี่ยนแปลงแม้รายละเอียดที่น้อยที่สุดของส่วนที่เล็กที่สุดของแผนที่อาจทำให้ RNG หลุดพ้นไปและทำให้ทุกอย่างในโลกแตกต่างไปจากเดิมอย่างสิ้นเชิง
อีกวิธีที่สำคัญในการหลีกเลี่ยงเอฟเฟกต์ของผีเสื้อโดยเฉพาะอย่างยิ่งถ้าคุณกำลังสร้างโลก "ในทันที" ในขณะที่ผู้เล่นสำรวจมันคือการหลีกเลี่ยง RNG ปกติทั้งหมด (ยกเว้นกระบวนการที่เกิดขึ้น "ทันที" จากมุมมองของผู้เล่นเช่นการสร้าง ระดับใหม่เมื่อผู้เล่นเข้ามา) และใช้วิธีการสร้างตัวเลขสุ่มแทนซึ่งจะไม่เก็บสถานะภายในใด ๆ ตัวอย่างเช่นเมื่อเลือกเมล็ดพันธุ์สำหรับอนุภูมิภาคผู้เล่นกำลังจะเข้าสู่โลกกำเนิดโดยรวมสามารถรับพิกัดของอนุภูมิภาค (และเมล็ดพันธุ์โดยรวมของมันเอง) และป้อนพวกเขาไปยังฟังก์ชันแฮชเพื่อสร้างเมล็ดพันธุ์ย่อย ด้วยวิธีนี้แต่ละภูมิภาคจะดูเหมือนกันเสมอโดยไม่คำนึงถึงลำดับที่ผู้เล่นเข้ามา
ps หลังจากการพูดนอกเรื่องนั้นผมขอตอบคำถามสุดท้ายของคุณสั้น ๆ เกี่ยวกับรหัสจริงที่ใช้สำหรับการสร้างขั้นตอน อนิจจาผมไม่คิดว่ามันเป็นคำตอบจริงๆในความรู้สึกที่มีความหมายใด ๆ โดยไม่ต้องมีจำนวนมากรายละเอียดมากกว่าที่คุณเคยให้ไว้ตั้งแต่มีตัวอักษรว่าหลายวิธีที่จะทำขั้นตอนการสร้างโลกที่มีเกมที่ใช้พวกเขา
ตัวอย่างเช่นแกรนด์พ่อที่ยิ่งใหญ่ของเกมการสำรวจที่สร้างขึ้นทั้งหมดอาจเป็นRogueซึ่งอัลกอริทึมการสร้างระดับนั้นประกอบด้วยการสุ่มวางกลุ่มของห้องสี่เหลี่ยมผืนผ้าภายในระดับสี่เหลี่ยมที่มีขนาดใหญ่กว่าและเชื่อมต่อห้องเหล่านั้นด้วยทางเดิน ระดับถัดไปในหนึ่งในนั้น) ผู้สืบทอดที่หลากหลายจากNethackไปจนถึงซีรี่ส์Diabloได้อธิบายรายละเอียดในระบบนี้ในหลาย ๆ ด้าน แต่ส่วนใหญ่ยังคงความคิดพื้นฐานของระดับที่แตกต่างกันซึ่งประกอบด้วยห้องห้องใต้ดินและเขาวงกตที่วางสุ่มบนแผนที่กริด
ในทางกลับกันสำหรับเกมที่มีการตั้งค่ากลางแจ้งแบบเปิดคุณอาจต้องการเริ่มต้นด้วยอัลกอริธึมการสร้างภูมิประเทศเศษส่วนบางชนิดและสร้างคุณลักษณะอื่น ๆ (แม่น้ำป่าเมือง ฯลฯ ) หรือคุณสามารถทำสิ่งที่Minecraftทำและสร้างพื้นผิวขั้นตอน 3 มิติแบบสุ่มเพื่อกำหนดว่าส่วนใดของภูมิประเทศของคุณเป็นพื้นดินและอากาศตามลำดับ ดิน / หินพืชพรรณ ฯลฯ ที่อยู่ด้านบน
แน่นอนว่าไม่มีข้อใดถูกนำไปใช้ถ้าคุณพูดเขียนเกมสำรวจอวกาศซึ่งในกรณีนี้คุณเพียงแค่ต้องสร้างระบบดาวที่มีการวางสุ่มตามฟังก์ชั่นความหนาแน่นแล้วสร้างแบบสุ่ม ชุดดาวและดาวเคราะห์ในแต่ละดาว หรือบางทีคุณอาจกำหนดให้ผู้เล่นสำรวจภูมิทัศน์ที่ไม่ใช่แบบยูคลิดซึ่งในกรณีนี้คุณจะต้องเผชิญกับความท้าทายที่แตกต่างไปจากเดิมอย่างสิ้นเชิง (เช่นความจริงที่ว่าปริมาณภายในรัศมีที่กำหนดนั้นเพิ่มขึ้นแบบทวีคูณมากกว่าแบบพหุนามยากมากที่จะเก็บแผนที่ขนาดใหญ่ไว้ในหน่วยความจำ)