คำถามติดแท็ก procedural-generation

การสร้างขั้นตอนคือการสร้างเนื้อหาตามขั้นตอนวิธีและการคำนวณมากกว่าด้วยมือ

4
ขั้นตอนการสร้างแม่น้ำหรือถนนเพื่อภูมิประเทศที่ไม่มีที่สิ้นสุด
ฉันควรจะบอกว่าเส้นทางไม่ใช่ถนนอย่างที่ฉันคิดในยุคกลาง ยังไม่ได้มองหาสัจนิยม คำตอบที่ฉันกำลังมองหาจะเหมาะกับแม่พิมพ์ที่ฉันอธิบายมากกว่าความสมจริง ฉันกำลังมองหาวิธีในการสร้างถนน / แม่น้ำตามขั้นตอนในแบบโค้ง แต่ฉันต้องการทำเช่นนั้นสำหรับระบบภูมิประเทศแบบไม่ จำกัด เช่นเดียวกับที่เสียงเพอร์ลินสร้าง blobs ฉันต้องการสร้างเซ็กเมนต์ความยาวแบบสุ่ม (อาจเป็นความยาวไม่ จำกัด ) ฉันรู้กลยุทธ์ต่าง ๆ เช่นคำตอบที่แนะนำที่นี่แต่ขึ้นอยู่กับจุดเริ่มต้นและจุดสิ้นสุดที่ระบุในการทำงานฉันไม่มีจุดเริ่มต้นและจุดสิ้นสุดที่ระบุ ฉันต้องการที่จะสามารถเรียกใช้ฟังก์ชั่นโดยใช้พิกัดโดยพลการและมันกลับมาว่าพิกัดที่เฉพาะเจาะจงเป็นส่วนหนึ่งของแม่น้ำ / ถนน ฉันไม่ต้องการที่จะต้องสร้างภูมิประเทศล่วงหน้า ที่มีความสูง (เช่นใช้สำหรับการจำลองปริมาณน้ำฝนหรือคล้ายกัน) ฉันไม่ต้องการจุดเริ่มต้น / สิ้นสุด มีอัลกอริธึมดังกล่าวหรือปรับแต่งอัลกอริธึมเสียงรบกวนที่บางคนอาจรู้เพื่อบรรลุสิ่งที่ฉันพยายามอธิบายหรือไม่ ที่ใกล้ที่สุดที่ฉันเคยไปคือเศษส่วนหลายรอยถ้าฉันใช้ชื่ออย่างถูกต้อง ฉันแค่เอาค่าสัมบูรณ์ของสัญญาณรบกวนค่า (สมมติว่ามันถูกปรับเป็น -1 ถึง +1) และตั้งค่าขีด จำกัด ปัญหาหลักของฉันคือเส้นทับซ้อนกันบ่อยเกินไปส่วนใหญ่เป็นวงกลมบางครั้งมาบรรจบกันเป็นทะเลสาบขนาดใหญ่ที่เรียบร้อย แต่ไม่พึงประสงค์และบ่อยครั้งที่ความหนาของเส้นแตกต่างกันมากเกินไป นี่คือภาพสิ่งที่ฉันมีในแบบ 2D แต่มีความถี่สูงมากเพื่อแสดงรายละเอียดเพิ่มเติม:

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


8
อัลกอริทึมสำหรับการสร้างทรงกลม?
ไม่มีใครมีอัลกอริทึมสำหรับการสร้างโพรซีเดอร์ทรงกลมที่มีlaจำนวนเส้นรุ้งloจำนวนเส้นแวงและรัศมีrหรือไม่? ฉันต้องการมันเพื่อทำงานกับ Unity ดังนั้นตำแหน่งจุดสุดยอดจำเป็นต้องกำหนดและจากนั้นสามเหลี่ยมที่กำหนดผ่านดัชนี ( ข้อมูลเพิ่มเติม ) แก้ไข ฉันจัดการเพื่อให้รหัสทำงานเป็นเอกภาพ แต่ฉันคิดว่าฉันอาจทำอะไรผิดไป เมื่อฉันเปิดใช้detailLevelงานทั้งหมดจะเพิ่มจุดยอดและรูปหลายเหลี่ยมเพิ่มเติมโดยไม่ย้ายไปรอบ ๆ ฉันลืมอะไรไปหรือเปล่า แก้ไข 2 ฉันลองไต่ตาข่ายตามบรรทัดฐาน นี่คือสิ่งที่ฉันได้รับ ฉันคิดว่าฉันขาดอะไรไป ฉันควรจะปรับมาตรฐานบางอย่างเท่านั้นหรือไม่

2
อัลกอริทึมสำหรับแผนที่ 2D ขั้นตอนที่มีเส้นทางเชื่อมต่อ
ปัญหาที่จะต้องแก้ไข:สร้างแผนที่ดันเจี้ยน 2D แบบสุ่มสำหรับเกมแบบเรียงต่อกันที่ห้องทั้งหมดเชื่อมต่อกัน ฉันกำลังมองหาวิธีแก้ปัญหาที่ดีกว่าสิ่งที่ฉันมีอยู่ในปัจจุบัน โซลูชันปัจจุบันของฉันคือฉันรันสองอัลกอริธึม ครั้งแรกที่สร้างดันเจี้ยนที่มีห้องพัก ที่สองตรวจสอบให้แน่ใจว่าห้องพักทุกห้องเชื่อมต่อกัน ฉันอยากรู้ว่าการแก้ปัญหาอื่นอาจมีอยู่ เร็วขึ้นและ / หรือง่ายขึ้นเป็นต้นความเร็วไม่ใช่เรื่องที่น่ากังวล แต่ถ้าความเร็วสามารถเพิ่มได้โดยไม่ต้องเสียค่าใช้จ่ายจริงนั่นเป็นเรื่องดี ที่สำคัญกว่านั้นคือฉันและคนอื่น ๆ ที่อ่านอาจเรียนรู้วิธีต่าง ๆ ในการเข้าถึงและแก้ไขปัญหา ด้านล่างคือการใช้งานปัจจุบันของฉัน ขณะนี้ห้องพักไม่มีทางออกหรือออกในทิศทาง 2, 3 หรือ 4 สร้างห้องดันเจี้ยน ตั้งค่า: ตั้งค่าห้องปัจจุบันเป็นห้องซ้ายบน รับประเภทห้องที่ถูกต้องสำหรับห้องพัก (ที่ประเภทห้องที่ถูกต้องเป็นประเภทที่ไม่มีทางออกจากคุกใต้ดินและห้องที่ออกตรงกับทางออกของห้องด้านบนและห้องทางด้านซ้ายเพียงตรวจสอบด้านบนและ เหลือเนื่องจากขั้นตอนที่ 2 ด้านล่าง) วางห้องลงแล้วเลื่อนพิกัด x หนึ่งก้าว หากพิกัด x เกินความกว้างของดันเจี้ยนให้ตั้งค่าพิกัด x เป็น 0 และเลื่อนไปข้างหน้าพิกัด y หนึ่งก้าว หากพิกัด y เกินความสูงของดันเจี้ยนเราก็เสร็จเรียบร้อย ทำซ้ำจาก # 1 ฉันจะตรวจสอบเพื่อดูว่าห้องทั้งหมดเชื่อมต่อกันหรือไม่หากพวกเขาไม่ได้เชื่อมต่อกันทั้งหมดฉันเรียกใช้อัลกอริทึมที่สองว่าในวิธีที่ไม่เซ็กซี่ …

3
ทีมป้องกันการเขียนทับทำงานในไฟล์ต้นฉบับได้อย่างไร [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว มันเป็นไปได้สำหรับฉันที่มีหลายคนที่กำลังทำงานอยู่ในขณะเดียวกันเช่นเอ็นจิ้นเกม สมมติว่านักพัฒนาคนหนึ่งกำลังทำงานAudio.cppและนักพัฒนาที่สองก็กำลังทำงานอยู่Audio.cppสิ่งนี้จัดการโดยทั่วไปในทีมขนาดใหญ่เพื่อต่อสู้กับการเขียนทับได้อย่างไร (ในคำอื่น ๆ ที่จะหยุดสองนักพัฒนาจากการเปิดไฟล์จนกว่านักพัฒนาคนหนึ่งจะเสร็จสิ้น)
26 project-management  version-control  teamwork  java  2d  collision-detection  vector  collision-resolution  unity  directx  directx11  directx10  xna  ios  monogame  windows-phone-8  xamarin  design-patterns  oop  xna  collision-detection  collision-resolution  bounding-boxes  rotation  collision-detection  mathematics  javascript  algorithm  separating-axis-theorem  xna  2d  monogame  image  xna  directx  graphics  performance  opengl  2d  3d  c++  directx11  unity  c#  scale  c#  xna  collision-detection  collision-resolution  leaderboards  scoring  glsl  srgb  tilemap  three.js  tiled  unity  physics  xml  dialog-tree  xna  c#  .net  opengl  lwjgl  vbo  physics  graphics  procedural-generation  simulations  water  opengl  java  textures  lwjgl  frame-buffer  unity  unity  2d  collision-detection  collision-resolution  trigonometry  java  android  libgdx  xna  c#  frame-rate  c++  unreal-4  procedural-generation  java  graphics  lwjgl  slick  c++  software-engineering 

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

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

4
กำลังสร้างแผนที่ย่อย
ฉันกำลังเขียนโปรแกรมเกมแบบเรียงต่อกันและมีพื้นฐานบางอย่าง (หญ้าดิน ฯลฯ ) แต่ฉันไม่สามารถหาวิธีสร้างแผนที่แบบสุ่มที่ดีเพราะเมื่อฉันเลือกแบบสุ่มจริงๆถ้าเป็นไทล์ ควรเป็นหญ้า / สิ่งสกปรกฉันได้สิ่งนี้: ฉันเข้าใจว่าทำไมสิ่งนี้ถึงเกิดขึ้น แต่สิ่งที่ฉันต้องการคือการสร้างพื้นที่ต่อเนื่องของหญ้าหรือดินอย่างต่อเนื่อง บางสิ่งที่เหมาะสมกว่านี้:

6
วิธีที่ง่ายที่สุดในการสร้างภูมิประเทศที่ราบรื่นสำหรับเกม 2d คืออะไร?
วิธีที่ง่ายที่สุดในการสร้างภูมิประเทศที่ราบรื่นสำหรับเกม 2d เช่น "Moon Buggy" หรือ "Route 960" คืออะไร? ฉันได้รับคำตอบที่ stackoverflow.com เกี่ยวกับการสร้างอาเรย์ของความสูงแบบสุ่มและเบลอในภายหลัง ใช่มันค่อนข้างโอเค แต่มันจะเป็นการดีกว่าถ้าคุณให้คะแนนและรับโค้งที่ราบรื่น

6
เกิดอะไรขึ้นกับพื้นผิวที่สร้างขึ้นแบบขั้นตอน? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการ4 ปีที่แล้ว ฉันจำได้ว่าเมื่อไม่นานมานี้ว่าพื้นผิวที่สร้างตามกระบวนการได้กลายเป็นเรื่องใหญ่ที่ผู้คน / บริษัท จำนวนมากให้ความสนใจกับผลประโยชน์ที่จริงจัง (การปรับใช้ขนาดเล็กโหลดเร็วขึ้นคุณภาพสูงขึ้นพื้นผิวที่ปรับขนาดได้ ) จากสิ่งที่ฉันสามารถบอกได้ว่า Buzz นั้นตายแล้วและไม่มีเกมใดในเรดาร์ที่ใช้พวกเขา เกิดอะไรขึ้น? ฉันหวังว่าฉันจะเห็นพื้นผิวขั้นตอนเป็นไปตามที่สิ่งของของ NaturalMotion มี (การนำไปใช้อย่างช้า ๆ แต่คงที่)

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

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

1
“ การสร้างขั้นตอน” คืออะไรและทำอย่างไร
ฉันได้ยินเกี่ยวกับ "แผนที่เชิงปฏิบัติ" และ "พื้นผิวตามขั้นตอน" เป็นอย่างมาก มันหมายความว่าอะไรกันแน่และมีทรัพยากรอะไรบ้างในการเรียนรู้เทคนิคเหล่านี้ในเกม?

4
วิธีง่าย ๆ ในการสร้างหน้ากากแผนที่เกาะ
ฉันกำลังค้นหาวิธีที่ดีและง่ายในการสร้างมาสก์สำหรับแผนที่เกาะด้วย C # โดยทั่วไปฉันใช้กับแผนที่ความสูงแบบสุ่มที่สร้างด้วยเสียงเพอร์ลินซึ่งภูมิประเทศไม่ได้ล้อมรอบด้วยน้ำ ขั้นตอนต่อไปคือการสร้างหน้ากากเพื่อให้แน่ใจว่ามุมและเส้นขอบเป็นเพียงน้ำ จากนั้นฉันก็สามารถลบหน้ากากออกจากภาพเสียงเพอร์ลินเพื่อเกาะได้ และเล่นกับความคมชัด .. และเส้นโค้งการไล่ระดับสีฉันสามารถรับความสูงของเกาะได้เช่นเดียวกับที่ฉันต้องการ .. (นี่เป็นเพียงตัวอย่างของหลักสูตร) อย่างที่คุณเห็น "ขอบ" ของเกาะเพิ่งถูกตัดออกซึ่งไม่ใช่ปัญหาใหญ่ถ้าค่าสีไม่ขาวเกินไปเพราะฉันจะแบ่งสีเทาออกเป็น 4 ชั้น (น้ำทรายหญ้าและ ร็อค) คำถามของฉันคือฉันจะสร้างมาสก์หน้าตาดีได้อย่างไรในภาพที่สอง? UPDATE ฉันได้พบเทคนิคนี้ดูเหมือนว่าจะเป็นจุดเริ่มต้นที่ดีสำหรับฉัน แต่ฉันไม่แน่ใจว่าฉันจะสามารถนำไปใช้เพื่อให้ได้ผลลัพธ์ที่ต้องการได้อย่างยอดเยี่ยมเพียงใด http://mrl.nyu.edu/~perlin/experiments/puff/ อัพเดท 2 นี่คือทางออกสุดท้ายของฉัน ฉันใช้งานmakeMask()ฟังก์ชั่นภายในลูปการทำให้ปกติของฉันเป็นแบบนี้: //normalisation for( int i = 0; i < width; i++ ) { for( int j = 0; j < height; j++ ) { …

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