การพัฒนาเครื่องกำเนิดภูมิประเทศ


12

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

ฉันค่อนข้างมั่นใจว่า GP สามารถใช้งานได้เพื่อช่วยค้นหาเครื่องมือสร้างภูมิประเทศใหม่ คำถามที่ฉันได้รับคือสิ่งที่จะเกิดขึ้นได้อย่างไร

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

คำถามสั้น ๆ :

  • คุณจะเป็นตัวแทนของเครื่องกำเนิดภูมิประเทศด้วยวิธีที่สามารถแยกวิเคราะห์เป็นต้นไม้ได้อย่างไร

  • ภูมิประเทศแบบนี้ต้องสร้างแบบไหน? (ความสูงแผนที่, กราฟจุดยอด, ... )

    ยิ่งน้อยสิ่งนี้จะขึ้นอยู่กับ hightmap ที่ดีกว่า

  • จะใช้อะไรในการประเมินความเหมาะสมของโซลูชัน

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


1
ฉันรู้สึกว่าคุณไม่ต้องการ GP สำหรับสิ่งนี้ แต่เป็น GA ยกตัวอย่างเช่นอัลกอริธึมในการสร้างเสียงรบกวนนั้นยากที่จะสร้างขึ้นมาทันทีและมันจะยากกว่าที่จะสร้างฟังก์ชั่นการออกกำลังกายมากกว่าที่จะเป็นการสร้างระบบที่ตอบสนองได้ GA เหมาะสมกว่าที่จะปรับแต่งพารามิเตอร์ของระบบที่มีอยู่
DampeS8N

GP ทำให้ทางออกที่น่าสนใจที่มนุษย์ไม่เคยนึกถึง นั่นคือสิ่งที่ฉันกำลังมองหา GP นั้นใช้งานยากและอาจจะไม่ใช่วิธีที่ดีที่สุดในการใช้งานในอุตสาหกรรม แต่มันจะแสดงถึงความเป็นไปได้ที่สำคัญถ้ามันกลายเป็น
Alex Shepard

คำตอบ:


11

คุณอาจจะมีโชคบางคนที่มีวิธีการคล้ายกับภาพทางพันธุกรรมคาร์ลซิมส์

เขาใช้ชุดที่เรียบง่ายของผู้ประกอบการในเสียงกระเพื่อมเหมือนภาษาดังกล่าวว่าการส่งออกของผู้ประกอบการใด ๆ ที่สามารถนำไปใช้จะมีผลต่อภาพคล้าย ๆ กับในภาษา Shader บาง (ie. สเกลาจะเป็นค่าเฉดสีเทาที่vector3จะRGBฯลฯ .. )

แม้ว่าฉันเดาว่าเป็นสิ่งที่นำไปใช้งานดังนั้นสิ่งที่คุณอาจต้องการคือคำหลักของเขาซึ่ง (iirc) มีพื้นฐานทั้งหมด:

  • ฟังก์ชั่นตรีโกณมิติ ( sin, cos, tanฯลฯ .. )
  • ตำแหน่ง ( x, y)
  • ตัวดำเนินการทางคณิตศาสตร์ขั้นพื้นฐาน ( sqrt, pow, abs, inverse)
  • ฟังก์ชั่นเสียงรบกวน ( fBm, noise2, noise3)
  • เศษส่วนอื่น ๆ ( mandelbrot, julia)
  • ฟังก์ชั่นการแก้ไข ( lerp, quad, step, smoothstep)

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

ทำให้มันน่าสนใจ (และรวดเร็ว)

ฉันมีโชคเล็กน้อยด้วยวิธีการหลายชั้นซึ่งช่วยลดปริมาณการวิวัฒนาการที่ตายลงอย่างหนาแน่น

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

อย่างไรก็ตาม ...

ตอนนี้ฉันได้ข้ามอัลกอริธึมการออกกำลังกายไปอย่างสะดวกสบายฉันมักใช้วิธีของ Karl Sims ในการเลือก "ผิดธรรมชาติ" ซึ่งคุณจะเห็นคนรุ่นปัจจุบันที่อยู่ตรงกลางของกลุ่มลูกหลาน (นิยมโดย Kai's Power Tools ย้อนหลังไปวันนี้ภาพของสิ่งที่ฉันหมายความ ) ..

อย่างไรก็ตามคุณอาจจะมีชุดของภาพการฝึกอบรมบางทีบางส่วนจากภาพถ่ายดาวเทียมและภาพประดิษฐ์สองสามตัวที่มีคุณสมบัติเฉพาะและจากนั้นอาจใช้การวิเคราะห์เวฟเล็ตหรือ 2D FFT เทียบกับภูมิประเทศที่คุณกำลังทดสอบอยู่

นี่เป็นหัวข้อที่น่าสนใจ แต่ฉันสงสัยในสิ่งที่คุณต้องการคำตอบใน :)

แก้ไข: อ่า ต้องลบลิงก์ออกเยอะ ๆ เพราะฉันเป็นผู้ใช้ใหม่: - |


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

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

1
@Alex บางทีบทความนี้ก็เป็นที่สนใจเช่นกัน ฉันคิดว่าถ้าคุณเปิดเทคนิคที่กล่าวถึงบนหัวคุณสามารถใช้มันเพื่อเป็นแนวทางในการออกกำลังกาย (หรืออาจเป็นเพียงสิ่งที่คุณต้องการ :)
pentaphobe

@phobius WOAH !! เย็น. ฉันต้องสำรวจมันมากกว่านี้ แต่มันดูมีแนวโน้มมาก ตอนนี้จะทำให้มันกลายเป็นปัญหาการค้นหา ...
อเล็กซ์ Shepard

2

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

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

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

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


อ่า ... ฉันคิดว่าคุณสับสนอัลกอริธึมวิวัฒนาการกับโปรแกรมทางพันธุกรรม EAs ใช้สำหรับปรับแต่งและปรับแต่งอินพุตให้เป็นอัลกอริธึม GP ใช้สำหรับสร้างอัลกอริธึมเองและนั่นคือสิ่งที่ฉันกำลังมองหา คำตอบที่ดีแม้ว่า ตามหมายเหตุ: ภูมิประเทศเหล่านี้ไม่จำเป็นต้องเป็นจริงและน่าสนใจ
Alex Shepard

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

0

ภูมิประเทศแบบนี้ต้องสร้างแบบไหน? (ความสูงแผนที่, กราฟจุดยอด, ... )

กราฟจุดสุดยอดแน่นอน (ตาข่าย) มันคือการจัดเก็บข้อมูลขนาดกะทัดรัดที่ชาญฉลาดและสามารถ rasterized (tesselated) ตามความต้องการ

คุณจะเป็นตัวแทนของเครื่องกำเนิดภูมิประเทศด้วยวิธีที่สามารถแยกวิเคราะห์เป็นต้นไม้ได้อย่างไร

ออโตเซลลูล่าร์ ฉันนึกถึงการนำไปใช้งานสองแบบ:

  1. กฎการตั้งค่าออโตมาตะอาจมีองค์ประกอบของออโต้ จำกัด (เมื่อสถานะปัจจุบันเช่นความพยายามนับหรือเวลาว่างจะถูกนำมาพิจารณา)

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

Rule-set เองอาจถูกแสดงเป็นแผนผังการตัดสินใจแยกย่อยหรือชุดคำสั่งง่าย ๆ (ไม่แน่ใจว่ามันจะทำงาน)

มันเป็นเพียงกฎเดียวที่กำหนดไว้สำหรับทุกโหนด

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

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

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

จะใช้อะไรในการประเมินความเหมาะสมของโซลูชัน

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

ต้องลองด้วยตัวเองกับเครื่องกำเนิดตาข่ายของฉันเมื่อ / หากมีเวลาว่าง =)

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