ฉันจะระบุภูมิภาคของสถานที่ในโลกที่สร้างขึ้นได้อย่างไร?


26

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

  • ในป้อมปราการ Dwarf หนึ่งในแง่มุมที่ประณีตของยุคโลกคือเกมที่ดูเหมือนจะรู้พื้นที่และตั้งชื่อให้พวกมันแม้ว่ามันจะไม่ใช่รูปสี่เหลี่ยมผืนผ้า ฉันต้องการที่จะ "จดจำ" ป่าของฉันแม่น้ำของฉันเนินเขาของฉัน ... ความคิดใด ๆ ที่ฉันสามารถใช้อัลกอริทึมในการสแกนแผนที่และตีความพื้นที่ของมันได้อย่างไร แล้วคุณจะเก็บมันอย่างไร? ฉันกำลังใช้กราฟ C ++ พื้นฐานที่ทำจากเวกเตอร์ของเวกเตอร์ของ "tile object"

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

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


ขอบคุณสำหรับการแก้ไขและขอโทษสำหรับคุณภาพที่ไม่ดีของ :) ภาษาอังกฤษของฉัน
Raveline

ภาษาอังกฤษของคุณยอดเยี่ยมเพียงว่า "ชื่อเรื่อง" นั้นเป็นวลีที่ดีกว่าสำหรับคำถามบนไซต์ StackExchange
dlras2

คำตอบ:


21

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

หากฉันแบ่งเขตทางภูมิศาสตร์ออกเป็นสองกลุ่มฉันจะใช้การผสมผสานของภูเขาแหล่งต้นน้ำและการตรวจจับขอบบน biomes ต่างๆบนแผนที่ของฉัน

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


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

@Raveline - หากคุณใช้การสร้างขอบเขตทางการเมืองแสดงความคิดเห็นที่นี่และแจ้งให้เราทราบ! ฉันชอบที่จะดูว่ามันจะเปิดออก
dlras2

13

หากต้องการเพิ่มคำตอบของ Dan Rasmussen :

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

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

ฉันไม่แน่ใจว่าป้อมปราการคนแคระทำอย่างไร ฉันจะไม่แปลกใจหากพวกเขามีอัลกอริธึมชนิด "การมองเห็นคอมพิวเตอร์" ที่ซับซ้อน


ฉันเข้าใจเหตุผลแม้ว่าฉันไม่แน่ใจว่าเส้นทางของคุณนั้นง่าย ... เนื่องจากโครงการของฉันค่อนข้างต่ำต้อยฉันจะพยายามแก้ไขสิ่งที่ไม่ซับซ้อนเกินไป แต่ไม่มีรูปหลายเหลี่ยมเนื่องจากมันจะหมายถึงการศึกษาอัลกอริทึมมากขึ้น โดยนัย (PS: เว็บไซต์ของคุณเป็นแหล่งของแรงบันดาลใจที่น่าทึ่งและฉันรักมัน!)
Raveline

3
บทความสร้างแผนที่รูปหลายเหลี่ยมนั้นยอดเยี่ยมมาก
เรน

3

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

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.