การสุ่ม / ขั้นตอนการเทียบกับการสร้างระดับก่อนหน้านี้


31

ข้อดี / ข้อเสียของการใช้การสร้างแบบสุ่ม / ขั้นตอนเทียบกับระดับที่ทำไว้ล่วงหน้าคืออะไร

ดูเหมือนว่ามีบางอย่างที่ฉันสามารถคิดได้นอกเหนือจากข้อเท็จจริงที่ว่ารายการอาจเป็นปัญหาในการเผยแพร่ในภูมิประเทศที่สร้างแบบสุ่มและภูมิประเทศที่สร้างขึ้นอาจดูแปลก

ข้อเสียของระดับที่ทำก่อนหน้านี้คือฉันจะต้องสร้างเครื่องมือแก้ไขระดับ ฉันไม่สามารถตัดสินใจได้ว่าจะใช้อะไรดีกว่า

คำตอบอาจรวมถึงรหัส / ตัวอย่างของทั้งกระบวนการและ premade รวมถึงข้อดีข้อเสีย?

คำตอบ:


26

ในการตอบคำถามหลักของคุณสั้น ๆ ก่อนข้อได้เปรียบหลักของโลกของเกมที่สร้างขึ้นแบบขั้นตอนคือ:

  • โลกอาจใหญ่โตกว่าโลกเกมที่ออกแบบด้วยตนเอง

  • โลก (หรือบางส่วนของมัน) สามารถสร้างใหม่สำหรับแต่ละเกมซึ่งอาจเพิ่มมูลค่าการเล่นซ้ำเนื่องจากผู้เล่นจะมีสิ่งใหม่ที่จะค้นพบอยู่เสมอ

ในทางกลับกันข้อเสียที่สำคัญของการสร้างโพรซีเดอร์คือ:

  • ขึ้นอยู่กับวิธีการสร้างที่ใช้มันอาจเป็นเรื่องยากที่จะตรวจสอบให้แน่ใจว่าโลกสามารถเล่นได้เสมอนั่นคือผู้เล่นไม่สามารถติดอยู่กับวิธีที่จะดำเนินการต่อไปไม่ได้เพราะพวกเขาเสียใจกับคนรุ่นโลก

  • แม้ว่าคุณจะสามารถหลีกเลี่ยงการสร้างโลกที่ไม่สามารถเล่นได้อย่างสมบูรณ์การสร้างโลกแบบสุ่มสามารถนำไปสู่ระดับความยากลำบากที่แปรผันได้สูง: บางครั้งผู้เล่นอาจพบทุกสิ่งที่พวกเขาต้องการเพียงแค่เรียงแถวเพื่อความสะดวก .

    ในช่วงระยะเวลานานความผันผวนแบบสุ่มนั้นมีแนวโน้มที่จะเฉลี่ย แต่ถ้าความยากของเกมเป็นแบบโหลดหนัก (ปกติสำหรับเกมเอาชีวิตรอด) การเริ่มต้นที่ไม่ดีสามารถทำลายเกมได้ในขณะที่การเริ่มต้นที่โชคดีมาก

  • การสร้างขั้นตอนที่ทำได้ไม่ดีสามารถทำให้โลกรู้สึกว่าเป็นเสียงเดียวและน่าเบื่อ: หลังจากที่คุณได้เห็นเขาวงกตที่สร้างขึ้นแบบสุ่มนับสิบพวกเขาทั้งหมดก็เริ่มเหมือนกันแม้ว่าพวกเขาจะมีรายละเอียดแตกต่างกันก็ตาม

  • นอกจากนี้หากโลกของเกมได้รับการสร้างใหม่อย่างสมบูรณ์สำหรับแต่ละเกมจะไม่มีสถานที่หรือคุณลักษณะที่ผู้เล่นสามารถจดจำได้จากเกมก่อนหน้านี้ การขาดความคุ้นเคยเช่นนี้อาจทำให้ผู้เล่นยากที่จะมีส่วนร่วมกับเกมในระดับอารมณ์หรือแบ่งปันประสบการณ์กับผู้เล่นคนอื่น

นอกจากนี้ยังมีอีกสิ่งหนึ่งที่คุณสามารถนับได้ในรายการใดเกมหนึ่ง: ในเกมที่โลกถูกสร้างใหม่แบบสุ่มสำหรับแต่ละเกมไม่มีสิ่งใดที่จะเป็นคู่มือ "คำแนะนำ" เนื่องจากการเล่นทุกครั้งจะแตกต่างกัน

(ความสามารถในการทำซ้ำนี้อาจเป็นปัญหาสำหรับการทดสอบและการดีบักแม้ว่าจะสามารถหลีกเลี่ยงได้บางส่วนอย่างน้อยโดยการอนุญาตให้ระบุเมล็ดพันธุ์ RNG อย่างน้อยก็ในโหมดแก้ไขข้อบกพร่องและ / หรือโดยการให้คำสั่ง "โกง" ที่สามารถใช้ เล่นไปข้างหน้าอย่างรวดเร็วไปยังด่านต่าง ๆ )


อย่างไรก็ตามหากคุณดูรายการข้อเสียคุณจะเห็นว่าส่วนใหญ่อธิบายถึงข้อเสียของการสร้างขั้นตอนที่บริสุทธิ์ จำนวนมากของพวกเขาสามารถหลีกเลี่ยงได้โดยการผสมด้วยตนเองและเนื้อหาที่สร้าง procedurally

ตัวอย่างเช่นผู้เล่นสามารถเริ่มต้นในเมืองคงที่ได้รับการออกแบบด้วยตนเองอาจล้อมรอบด้วยพื้นที่บ้านคงที่มากขึ้นหรือน้อยลง แต่สถานที่ห่างไกลจากเมืองสามารถสร้างแบบสุ่มเพื่อให้ภูมิภาคที่ไม่คุ้นเคยสำหรับผู้เล่นในการสำรวจ

อาจมีเมืองที่ออกแบบด้วยตนเองอื่น ๆ หรือสถานที่อื่น ๆ (มากหรือน้อย) ที่วางสุ่มในโลกเช่นผู้เล่นจะต้องค้นหาพวกเขา แต่จะรู้ว่าจะเกิดอะไรขึ้นเมื่อพวกเขาไปถึงที่นั่น ในทางกลับกันคุณลักษณะที่โดดเด่นเช่นภูเขาสามารถวางได้ด้วยตนเอง (อย่างน้อยในบริเวณใกล้เคียงกับตำแหน่งเริ่มต้นที่แน่นอน) แต่รายละเอียดของภูมิประเทศสามารถสุ่มได้

สำหรับการจัดวางแบบสุ่มที่ก่อให้เกิดการหยุดชะงักและความแปรปรวนของความยากลำบากสามารถแก้ไขได้โดยการใช้การตรวจสอบความสอดคล้องและความสมดุลที่หลากหลายด้านบนของอัลกอริทึมการสร้างโลกของคุณ ตัวอย่างเช่นหากผู้เล่นต้องการไอเท็มบางอย่างเพื่อให้สามารถข้ามน้ำได้คุณสามารถใส่รหัสเพื่อให้แน่ใจว่ามีไอเท็มดังกล่าวอย่างน้อยหนึ่งรายการเพื่อให้ผู้เล่นสามารถเข้าถึงได้โดยไม่ต้องข้ามน้ำ

ในทำนองเดียวกันคุณอาจต้องการที่จะปรับแต่งกฎตำแหน่งรายการของคุณเพื่อให้ไม่มีไม้กายสิทธิ์ของความสมดุลทำลาย awesomenessจะถูกวางไว้ก่อนที่จะให้ผู้เล่นได้ถึงระดับxและอาจจะเพื่อให้มั่นใจว่าอย่างน้อยหนึ่งถูกวางไว้ในสถานที่คงที่ที่ผู้เล่นสามารถเข้าถึง ก่อนที่จะขึ้นสู่เวทีซึ่งพวกเขาจะต้องการมันเพื่อความอยู่รอด


โดยทั่วไปแล้ววิธีที่จะทำให้การสร้างเนื้อหาตาข่ายแบบโพรซีเดอร์และแบบแมนนวลมากขึ้นหรือน้อยลงอย่างต่อเนื่องคือการเริ่มต้นกระบวนการสร้างด้วยตนเองโดยใช้ตัวสร้างโพรซีเดอร์โลกแบบโพรซีเดอร์ ) เพื่อเริ่มต้นภูมิภาคที่คุณกำลังออกแบบจากนั้นปรับแต่งด้วยตนเองเพื่อเพิ่มและปรับรายละเอียดที่คุณต้องการ (สิ่งนี้สามารถอนุญาตการจัดเก็บในระดับที่เล็กมากโดยบันทึกเฉพาะการเปลี่ยนแปลงด้วยตนเองและเมล็ดกำเนิดและพารามิเตอร์ที่ใช้)

วิธีอื่น ๆ ในการรวมเนื้อหาแบบแมนนวลและขั้นตอนรวมถึงการปล่อยจุดที่ว่างในระดับที่คุณออกแบบเองเพื่อเติมเนื้อหาแบบสุ่ม (เช่นปราสาทอาจรวมถึงเขาวงกตที่สร้างแบบสุ่มในดันเจี้ยนโดยมีเฉพาะโครงร่างและทางออก) หรือ การออกแบบด้วยตนเองสามารถระบุได้เพียงคร่าวๆของบางส่วนของระดับ (เช่นตำแหน่งของบ้านในเมือง) และปล่อยให้รายละเอียด (เช่นลักษณะที่แน่นอนของแต่ละบ้าน) ที่จะถูกสุ่มเลือก

ในความเป็นจริงแม้แต่เกมจำนวนมากที่ได้รับการแก้ไขอย่างสิ้นเชิงโลกของเกมที่ใช้บางรูปแบบของขั้นตอนรุ่นเป็นส่วนหนึ่งของขั้นตอนการออกแบบระดับของพวกเขาเนื่องจากมีบางแง่มุมของการสร้างโลก (เช่นการผลิตภูมิประเทศที่ดูเป็นธรรมชาติหรือการวางต้นไม้ของแต่ละบุคคลในป่า) ที่ยากและ / หรือน่าเบื่อที่ต้องทำด้วยมือ แต่ค่อนข้างง่ายที่จะทำให้เป็นอัตโนมัติ

ตรงกันข้ามส่วนใหญ่ขั้นตอนการกำเนิดโลกจะใช้เวลาอย่างน้อยบางส่วนวัตถุที่ได้รับการออกแบบด้วยตนเองและองค์ประกอบในการสร้างโลกออกจาก ใคร ๆ ก็สามารถมีหลายระดับของการสร้างแบบสุ่ม / คู่มือหลายระดับ: ตัวอย่างเช่นโลกที่สร้างขึ้นในขั้นตอนอาจรวมถึงเมืองที่สร้างขึ้นด้วยตนเองล้อมรอบด้วยป่าที่สร้างขึ้นด้วยกระบวนการที่มีโครงร่างที่วาดด้วยตนเอง


โปรดทราบว่าการสร้างเนื้อหาขั้นตอนไม่จำเป็นต้องขัดกับโลกคงที่: คุณสามารถเลือกเมล็ดพันธุ์ RNG ที่คงที่และใช้เพื่อสร้างโลกของคุณได้ สิ่งนี้มีประโยชน์หากคุณต้องการโลกที่กว้างใหญ่สำหรับผู้เล่นในการสำรวจ แต่ต้องการให้มันเหมือนเดิมสำหรับทุกเกมและผู้เล่นทุกคน

โปรดทราบว่าหากคุณทำเช่นนี้ (หรืออาจเป็นไปได้ว่าคุณไม่ได้ทำ) คุณควรออกแบบตัวสร้างโลกของคุณให้ทำงานแบบลำดับชั้นโดยใช้อินสแตนซ์ RNG หลายรายการเช่นเช่นตัวสร้างแผนที่โดยรวมจะเก็บอินสแตนซ์ RNG เดี่ยว มันจะใช้ในการสร้างภูมิภาคย่อยกำหนดให้แต่ละภูมิภาคย่อยเป็นค่าเมล็ดที่แตกต่างกันที่เครื่องกำเนิดภูมิภาคจะใช้เพื่อเมล็ดอินสแตนซ์ RNG แยกต่างหากที่มันจะใช้ในการสร้างภูมิภาคและอื่น ๆ นี่คือการหลีกเลี่ยง "เอฟเฟกต์ของผีเสื้อ" ซึ่งการเปลี่ยนแปลงแม้รายละเอียดที่น้อยที่สุดของส่วนที่เล็กที่สุดของแผนที่อาจทำให้ RNG หลุดพ้นไปและทำให้ทุกอย่างในโลกแตกต่างไปจากเดิมอย่างสิ้นเชิง

อีกวิธีที่สำคัญในการหลีกเลี่ยงเอฟเฟกต์ของผีเสื้อโดยเฉพาะอย่างยิ่งถ้าคุณกำลังสร้างโลก "ในทันที" ในขณะที่ผู้เล่นสำรวจมันคือการหลีกเลี่ยง RNG ปกติทั้งหมด (ยกเว้นกระบวนการที่เกิดขึ้น "ทันที" จากมุมมองของผู้เล่นเช่นการสร้าง ระดับใหม่เมื่อผู้เล่นเข้ามา) และใช้วิธีการสร้างตัวเลขสุ่มแทนซึ่งจะไม่เก็บสถานะภายในใด ๆ ตัวอย่างเช่นเมื่อเลือกเมล็ดพันธุ์สำหรับอนุภูมิภาคผู้เล่นกำลังจะเข้าสู่โลกกำเนิดโดยรวมสามารถรับพิกัดของอนุภูมิภาค (และเมล็ดพันธุ์โดยรวมของมันเอง) และป้อนพวกเขาไปยังฟังก์ชันแฮชเพื่อสร้างเมล็ดพันธุ์ย่อย ด้วยวิธีนี้แต่ละภูมิภาคจะดูเหมือนกันเสมอโดยไม่คำนึงถึงลำดับที่ผู้เล่นเข้ามา


ps หลังจากการพูดนอกเรื่องนั้นผมขอตอบคำถามสุดท้ายของคุณสั้น ๆ เกี่ยวกับรหัสจริงที่ใช้สำหรับการสร้างขั้นตอน อนิจจาผมไม่คิดว่ามันเป็นคำตอบจริงๆในความรู้สึกที่มีความหมายใด ๆ โดยไม่ต้องมีจำนวนมากรายละเอียดมากกว่าที่คุณเคยให้ไว้ตั้งแต่มีตัวอักษรว่าหลายวิธีที่จะทำขั้นตอนการสร้างโลกที่มีเกมที่ใช้พวกเขา

ตัวอย่างเช่นแกรนด์พ่อที่ยิ่งใหญ่ของเกมการสำรวจที่สร้างขึ้นทั้งหมดอาจเป็นRogueซึ่งอัลกอริทึมการสร้างระดับนั้นประกอบด้วยการสุ่มวางกลุ่มของห้องสี่เหลี่ยมผืนผ้าภายในระดับสี่เหลี่ยมที่มีขนาดใหญ่กว่าและเชื่อมต่อห้องเหล่านั้นด้วยทางเดิน ระดับถัดไปในหนึ่งในนั้น) ผู้สืบทอดที่หลากหลายจากNethackไปจนถึงซีรี่ส์Diabloได้อธิบายรายละเอียดในระบบนี้ในหลาย ๆ ด้าน แต่ส่วนใหญ่ยังคงความคิดพื้นฐานของระดับที่แตกต่างกันซึ่งประกอบด้วยห้องห้องใต้ดินและเขาวงกตที่วางสุ่มบนแผนที่กริด

ในทางกลับกันสำหรับเกมที่มีการตั้งค่ากลางแจ้งแบบเปิดคุณอาจต้องการเริ่มต้นด้วยอัลกอริธึมการสร้างภูมิประเทศเศษส่วนบางชนิดและสร้างคุณลักษณะอื่น ๆ (แม่น้ำป่าเมือง ฯลฯ ) หรือคุณสามารถทำสิ่งที่Minecraftทำและสร้างพื้นผิวขั้นตอน 3 มิติแบบสุ่มเพื่อกำหนดว่าส่วนใดของภูมิประเทศของคุณเป็นพื้นดินและอากาศตามลำดับ ดิน / หินพืชพรรณ ฯลฯ ที่อยู่ด้านบน

แน่นอนว่าไม่มีข้อใดถูกนำไปใช้ถ้าคุณพูดเขียนเกมสำรวจอวกาศซึ่งในกรณีนี้คุณเพียงแค่ต้องสร้างระบบดาวที่มีการวางสุ่มตามฟังก์ชั่นความหนาแน่นแล้วสร้างแบบสุ่ม ชุดดาวและดาวเคราะห์ในแต่ละดาว หรือบางทีคุณอาจกำหนดให้ผู้เล่นสำรวจภูมิทัศน์ที่ไม่ใช่แบบยูคลิดซึ่งในกรณีนี้คุณจะต้องเผชิญกับความท้าทายที่แตกต่างไปจากเดิมอย่างสิ้นเชิง (เช่นความจริงที่ว่าปริมาณภายในรัศมีที่กำหนดนั้นเพิ่มขึ้นแบบทวีคูณมากกว่าแบบพหุนามยากมากที่จะเก็บแผนที่ขนาดใหญ่ไว้ในหน่วยความจำ)


7

ข้อดีของการสร้างขั้นตอน

  1. สามารถปรับขนาดแผนที่ / การออกแบบให้มีขนาดใหญ่ขึ้นอย่างแท้จริงใหญ่กว่าที่คุณสามารถสร้างด้วยมือได้อย่างง่ายดาย

  2. ด้วยการสร้างระบบที่ชิ้นส่วนของภูมิประเทศถูกสร้างขึ้นอย่างรวดเร็วคุณสามารถหลีกเลี่ยงการเขียนโค้ดเพื่อโหลดเป็นชิ้น ๆ จากหน่วยความจำถาวร

  3. ในระยะยาวคุณอาจค้นพบระดับที่เป็นไปได้มากขึ้นโดยใช้การออกแบบขั้นตอนมากกว่าการแก้ไขแผนที่ด้วยตนเอง

  4. สำหรับเกม 'explorer' ของคุณคุณสามารถสร้างหลายสิบหลายร้อยหรือหลายพันระดับที่แตกต่างกันซึ่งทำให้ผู้เล่นไม่เบื่อ

ข้อเสียของการสร้างขั้นตอน

  1. ต้องใช้งานมากเพื่อให้แน่ใจว่าภูมิประเทศที่สร้างขึ้นนั้นมีลักษณะ 'วิธีที่คุณต้องการ'

  2. การสร้าง 'ระดับการทดสอบ' จะกลายเป็นเรื่องยุ่งยาก

  3. การวางสิ่งของและสิ่งต่าง ๆ อย่างที่คุณพูดถึงต้องทำอย่างระมัดระวังแม้ว่าสำหรับเกมสำรวจบนลงล่างนี่อาจเป็นปัญหาน้อยกว่าที่คุณคิด

  4. หากไม่มีการทดสอบอย่างละเอียดคุณอาจได้รับสถานการณ์ที่การเล่นเกมของคุณแตกหักอย่างสมบูรณ์ด้วยระดับขั้นตอนที่เฉพาะเจาะจงมากกว่านั้นถ้าคุณทำด่านด้วยมือ

  5. สำหรับภูมิประเทศที่ซับซ้อนอย่างแท้จริงคุณอาจใช้เวลามากขึ้นในการแก้ไขข้อบกพร่องและงานออกแบบจากนั้นคุณต้องใช้เครื่องมือสร้างแผนที่พื้นฐานและตัวโหลดไฟล์

ข้อดีของการออกแบบด้วยตนเอง

  1. ผู้ออกแบบเกมสามารถมั่นใจได้มากขึ้นว่าการเล่นเกมทำงานตามที่ควรจะเป็นในบริบทของแต่ละระดับ

  2. มันเป็นไปได้ที่จะสร้างและวาง 'รายละเอียดที่ดีกว่า' ได้ง่ายขึ้นแล้วคุณสามารถสร้างขั้นตอนได้

  3. ลักษณะภูมิประเทศบางอย่างนั้นยากมากในการสร้างขั้นตอนเช่นน้ำที่ไหลลงมาจากภูเขา การทำเช่นนั้นจะต้องมีการประเมินอย่างละเอียดของแผนที่ระดับความสูงซึ่งอาจออกแบบได้ยาก

  4. ง่ายกว่าที่จะแนะนำผู้เล่นตาม 'เส้นทางแบบเส้นตรง' แม้ว่าคุณจะพูดว่าคุณกำลังสร้างเกม 'นักสำรวจ' สิ่งนี้อาจไม่เกี่ยวข้องกัน

ข้อเสียของการออกแบบด้วยตนเอง

  1. การใช้การเปลี่ยนแปลงอย่างกว้างขวางกับภูมิประเทศของคุณจะใช้เวลานานในขณะที่การสร้างขั้นตอนเพียงการแก้ไขค่าเพียงไม่กี่อย่างนั้นจะทำให้ภูมิประเทศแตกต่างกันโดยสิ้นเชิง

  2. คุณจะต้องเก็บแผนที่แต่ละอันไว้ในหน่วยความจำซึ่งอาจเป็นที่ยอมรับในระดับเล็ก แต่สำหรับระดับที่ใหญ่กว่าการสร้างขั้นตอนอาจเป็นตัวเลือกเดียวของคุณ เพิ่มข้อกำหนดการติดตั้งหน่วยความจำถาวรของเกมของคุณ

  3. อาจต้องมีการสร้างตัวแก้ไขแผนที่และระบบโหลดไฟล์

ฉันสิ้นสุดการแสดงรายการข้อเสียเพิ่มเติมสำหรับการสร้างเนื้อหาตามขั้นตอนแม้ว่าอาจเป็นเพราะโครงการของฉันเป็นขั้นตอนทั้งหมดดังนั้นฉันจึงทราบถึงข้อผิดพลาด สำหรับเกมสำรวจฉันขอแนะนำให้คุณพิจารณาว่าคุณต้องการให้แต่ละแผนที่มีขนาดใหญ่เพียงใดและการสร้างเครื่องมือแก้ไขแผนที่แยกต่างหากเป็นสิ่งที่คุณต้องการทำหรือไม่


คุณ (ไม่ใช่ที่นี่ แต่อยู่ที่ใดที่หนึ่ง) สามารถแสดงรหัสสำหรับการสร้างขั้นตอนของคุณได้หรือไม่ ฉันจะไม่ใช้มัน แต่ฉันไม่เคยพยายามสร้างแผนที่ของฉันมาก่อน (ซึ่งเป็นเหตุผลที่ฉันถามคำถามนี้: P) นอกจากนี้ฉัน upvote คำตอบของคุณ แต่ต้องการเรียงลำดับความคิดเห็นของผู้อื่นดังนั้นฉันไม่อาจยอมรับได้ทันที
Pip
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.