คำถามติดแท็ก ai

การออกแบบและ / หรือตรรกะของเอนทิตีในเกมตัดสินใจเกี่ยวกับพฤติกรรมของมัน

1
ตัวอย่างรหัสพฤติกรรมต้นไม้
http://altdevblogaday.org/2011/02/24/introduction-to-behavior-trees/ เห็นได้ชัดว่าบทความที่น่าสนใจที่สุดที่ฉันพบในเว็บไซต์นี้ คุณคิดยังไงกับเรื่องนี้? มันไม่มีตัวอย่างโค้ดคุณไม่รู้หรือไม่? ฉันยังอ่านว่าสภาพเครื่องจักรไม่ยืดหยุ่นมากเมื่อเทียบกับแผนผังพฤติกรรม ... ด้านบนฉันไม่แน่ใจว่ามีการเชื่อมโยงระหว่างเครื่องรัฐและรูปแบบของรัฐจริงหรือไม่?
23 ai  state  tree  behavior 

6
การร่ายเวทย์ - วิธีเพิ่มประสิทธิภาพความเสียหายต่อวินาที
ลองนึกภาพเรามีพ่อมดที่รู้เวทย์บางอย่าง แต่ละคาถามี 3 คุณสมบัติ: ดาเมจ, เวลาเย็นลงและเวลาร่าย สิ่งที่มาตรฐาน RPG สวย เวลาคูลดาวน์: ระยะเวลา (t) ที่ใช้ก่อนที่จะสามารถใช้คาถานั้นได้อีกครั้ง คาถาจะ "คูลดาวน์" ทันทีที่มันเริ่มร่าย ระยะเวลาร่าย: ระยะเวลา (t) ที่ใช้ในการใช้คาถา ในขณะที่ตัวช่วยสร้างกำลังทำการร่ายคาถาอย่างอื่นไม่สามารถร่ายและไม่สามารถยกเลิกได้ คำถามคือคุณจะสร้างความเสียหายให้มากที่สุดด้วยคาถาต่าง ๆ ได้อย่างไร? มันง่ายในการคำนวณความเสียหายสูงสุดต่อเวลาร่าย แต่จะเกี่ยวกับอะไรในสถานการณ์ที่ดีกว่าที่จะรอก่อนที่จะ "จมปลัก" ร่ายคาถาสร้างความเสียหายต่ำเมื่อมีสกิลที่สูงกว่ามาก? ตัวอย่างเช่น, Fireball: 3000 ดาเมจ, ระยะเวลาร่าย 3 วินาที, 6 วินาทีทำให้เย็นลง Frostbolt: 20 ดาเมจ, ระยะเวลาร่าย 4 วินาที, 4 วินาทีทำให้เย็นลง Fireblast: 3 ดาเมจ, ระยะเวลาร่าย 3 …

10
มิดเดิลแวร์ของ AI ที่มีอยู่ [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว รายการที่เป็นประโยชน์ของมิดเดิลแวร์ AI โปรดระบุ URL ฟรี / โอเพนซอร์ซหรือมีใบอนุญาตและคำอธิบายโดยย่อเกี่ยวกับความสามารถ รูปแบบ: *Package* (License) Link Pros Cons
22 ai 

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

3
วิธีการใช้ AI สำหรับตัวตรวจสอบ / ร่าง?
ฉันเห็นเกมตัวตรวจสอบนี้และฉันสงสัยว่าการนำ AI มาใช้อย่างไร ฉันจะใช้ AI กับตัวตรวจสอบได้อย่างไร (ฉบับร่าง, dama, dame) มีอัลกอริทึมที่รู้จักหรือไม่? พวกเขาเต็มไปด้วยทุกสิ่ง ฉันประหลาดใจมากที่เห็นโพสต์บล็อกการสอนเกมTic Tac Toeนี้ ดังนั้นฉันต้องการอัลกอรึทึมเกม Damaโอเพนซอร์สและโพสต์บล็อก .. มีลิงค์ที่เป็นประโยชน์หรือไฟล์เอกสารใด ๆ .. ? โปรดแจ้งให้เราทราบ ..
21 algorithm  ai 

6
นำไปใช้หลีกเลี่ยงการชนกัน 100%
ฉันเป็นผู้เริ่มต้นที่สมบูรณ์ด้วยการพัฒนาเกมและทั้งหมดที่ฉันรู้เกี่ยวกับการหลีกเลี่ยง / การชนกันของข้อมูลฉันเรียนรู้ในหรือผ่านเว็บไซต์นี้ในสัปดาห์ที่ผ่านมา ... ดังนั้นอย่าลังเลที่จะแก้ไขให้ถูกต้องหากสิ่งที่ฉันถามที่นี่คือ ตามสมมติฐานที่ผิด / ความเข้าใจผิด ฉันพยายามทำให้ดีที่สุดเพื่อความชัดเจน แต่นั่นบอกว่าเรื่องนี้ยังคงเป็นนวนิยายสำหรับฉัน ยานพาหนะ ในเกมของฉันฉันมียานพาหนะที่เคลื่อนที่อย่างอิสระ พวกมันถูกวางไว้ในพื้นที่ 3 มิติและการเคลื่อนไหวของพวกเขาถูกควบคุมโดยตัวแปรหลายตัวที่แตกต่างกันไปในแต่ละยานพาหนะ สิ่งที่น่าสนใจอย่างหนึ่งของที่นี่คือ: เคลื่อนไหวไปข้างหน้าเท่านั้น ความเร็วที่สามารถแตกต่างกันระหว่างนาทีและสูงสุด แต่มีนาทีเป็นไม่ได้ (ได้ใกล้เคียงกับ) ศูนย์ รัศมีพวงมาลัยที่จะขึ้นจากความเร็ว (ความเร็วสูงกว่ารัศมีขนาดใหญ่) การเร่งสูงสุดสองครั้ง(สำหรับการลดและเพิ่มความเร็ว) เป้าหมาย เป้าหมายของฉันคือการใช้ AI บางประเภทซึ่งจะหลีกเลี่ยงการชนที่แม่นยำ 100% (เช่นฉันจะแน่ใจว่ายานพาหนะจะไม่ชนกัน) ออกแบบ แม้ว่าฉันจะต้องการความคิดเพิ่มเติมเกี่ยวกับการมี AI "onboard" (เช่นรถแต่ละคันที่มี "การหลีกเลี่ยงการชนกันของ AI" ในที่สุดการสอบถามและ / หรือส่งข้อความไปยังยานพาหนะอื่น ๆ ) ก็เป็นไปได้เช่นกันสำหรับฉัน ระดับกลาง (ส่งคำสั่งไปยังยานพาหนะ) ในกรณีส่วนใหญ่ยานพาหนะจะต้องหลีกเลี่ยงซึ่งกันและกันในทุกทิศทาง แต่ภายใต้สถานการณ์บางอย่างพวกเขาจะต้องหลีกเลี่ยงการชนและไปสู่เป้าหมายเดียวกัน สิ่งที่ฉันพบจนถึงตอนที่ฉันติดอยู่ ภายในลิงค์ต่าง ๆ …

4
วิธีการใช้พฤติกรรมในสถาปัตยกรรมเกมตามองค์ประกอบ?
ฉันเริ่มใช้ผู้เล่นและศัตรู AI ในเกม แต่ฉันสับสนเกี่ยวกับวิธีการนำสิ่งนี้ไปใช้ในสถาปัตยกรรมเกมตามส่วนประกอบได้ดีที่สุด ว่าฉันมีตัวละครของผู้เล่นดังต่อไปนี้ที่สามารถนิ่งวิ่งและแกว่งดาบ ผู้เล่นสามารถผ่านไปยังสถานะดาบสวิงจากทั้งที่อยู่กับที่และนิ่ง แต่จากนั้นจะต้องสวิงให้เสร็จสิ้นก่อนที่ผู้เล่นจะสามารถกลับมายืนหรือวิ่งต่อได้ ในระหว่างการแกว่งผู้เล่นไม่สามารถเดินไปรอบ ๆ อย่างที่ฉันเห็นฉันมีสองวิธีดำเนินการ: สร้างส่วนประกอบ AI เดียวที่มีลอจิกของผู้เล่นทั้งหมด (แยกออกจากองค์ประกอบจริงหรือฝังเป็น PlayerAIComponent) ฉันสามารถบังคับใช้ข้อ จำกัด ของรัฐได้อย่างง่ายดายโดยไม่ต้องสร้างการเชื่อมต่อระหว่างส่วนประกอบแต่ละอย่างที่ประกอบกันเป็นเอนทิตีของผู้เล่น อย่างไรก็ตามส่วนประกอบ AI ไม่สามารถแตกหักได้ ตัวอย่างเช่นถ้าฉันมีศัตรูที่สามารถยืนและเดินไปมาหรือเดินไปรอบ ๆ และแกว่งดาบเป็นครั้งคราวฉันต้องสร้างส่วนประกอบ AI ใหม่ แยกพฤติกรรมออกเป็นส่วน ๆ โดยระบุแต่ละสถานะ ฉันได้รับ StandComponent, WalkComponent และ SwingComponent ในการบังคับใช้กฎการเปลี่ยนแปลงฉันต้องจับคู่แต่ละองค์ประกอบ SwingComponent ต้องปิดการใช้งาน StandComponent และ WalkComponent ในช่วงระยะเวลาของการสวิง เมื่อฉันมีศัตรูที่ยืนอยู่เฉยๆแกว่งดาบเป็นครั้งคราวฉันต้องแน่ใจว่า SwingComponent นั้นปิดการใช้งาน WalkComponent หากมีอยู่ แม้ว่าสิ่งนี้จะช่วยให้ส่วนประกอบผสมและการจับคู่ที่ดีขึ้น แต่ก็สามารถนำไปสู่ฝันร้ายในการบำรุงรักษาได้เมื่อมีการเพิ่มการพึ่งพาแต่ละครั้งส่วนประกอบที่มีอยู่จะต้องได้รับการอัปเดตเพื่อให้เล่นได้ดีขึ้นกับข้อกำหนดใหม่ สถานการณ์ในอุดมคติคือผู้ออกแบบสามารถสร้างศัตรู / …

6
วิธีการสร้าง "ปริมาณการใช้ AI"?
โครงการที่ฉันกำลังทำอยู่ตอนนี้มี "การจราจร" จำนวนมากในแง่ของรถยนต์ที่กำลังแล่นไปตามถนน, เครื่องบินกำลังเคลื่อนย้ายผ้ากันเปื้อนเป็นต้น ณ ตอนนี้พา ธ ที่พร้อมใช้งานจะถูกคำนวณล่วงหน้าดังนั้นโหนดจะถูกสร้างขึ้นโดยอัตโนมัติสำหรับการข้ามที่ตัวเองเชื่อมต่อกันด้วยขอบ เมื่อตัวละคร / เอเจนต์เกิดขึ้นในโลกมันเริ่มต้นที่บางโหนดและค้นหาเส้นทางไปยังโหนดเป้าหมายโดยใช้อัลกอริธึม A * ตัวแทนตามเส้นทางและในที่สุดก็มาถึงปลายทาง ไม่มีปัญหาจนถึงตอนนี้ ตอนนี้ฉันต้องเปิดใช้งานตัวแทนเพื่อหลีกเลี่ยงการชนและจัดการกับสถานการณ์การจราจรที่ซับซ้อน ตั้งแต่ฉันยังใหม่กับสนามของ AI ฉันค้นหาบทความ / บทความเกี่ยวกับพฤติกรรมการบังคับเลี้ยว แต่พบว่าพวกเขาอยู่ในระดับต่ำเกินไป ปัญหาของฉันประกอบด้วยการหลีกเลี่ยงการชนที่เกิดขึ้นจริงน้อยกว่า (ซึ่งค่อนข้างง่ายในกรณีนี้เนื่องจากตัวแทนปฏิบัติตามเส้นทางที่กำหนดอย่างเคร่งครัด) แต่ในสถานการณ์เช่นตัวแทนหนึ่งออกจากจุดจบในขณะที่อีกคนหนึ่งต้องการป้อนสิ่งเดียวกัน หรือตัวแทนสองคนพบกันที่คอขวดซึ่งอนุญาตให้ตัวแทนหนึ่งรายผ่านแต่ละครั้ง แต่ทั้งคู่ต้องผ่าน (ตามเส้นทางที่ดีที่สุดที่พบก่อนหน้านี้) และพวกเขาต้องการหาวิธีที่จะให้อีกฝ่ายหนึ่งผ่านไปก่อน ประเด็นหลักของปัญหาคือการคาดคะเนการเคลื่อนไหวของการจราจรเพื่อหลีกเลี่ยงการล็อกที่ตายแล้ว ยากที่จะอธิบาย แต่ฉันเดาว่าคุณเข้าใจในสิ่งที่ฉันหมายถึง คุณมีคำแนะนำใด ๆ สำหรับฉันที่จะเริ่มมองหา? เอกสารโครงการตัวอย่างหรือสิ่งที่คล้ายกันที่สามารถเริ่มต้นได้บ้าง ฉันขอขอบคุณสำหรับความช่วยเหลือของคุณ!
21 ai  movement 

3
ทำให้ศัตรู flocking หลายตัวล้อมรอบสิ่งกีดขวางได้อย่างมีประสิทธิภาพ
ฉันกำลังพยายามปรับปรุงการหาเส้นทางสำหรับศัตรูในเกมของฉัน ตอนนี้พวกเขาเพียงแค่ขยับไปยังตำแหน่งที่แน่นอนของผู้เล่นโดยการคำนวณมุมระหว่างพวกเขากับผู้เล่นและเคลื่อนที่ไปในทิศทางนั้น ฉันยังมีอัลกอริทึม flocking ที่ป้องกันศัตรูจากการซ้อนทับกันดังนั้นพวกเขาจะรวมตัวกันเป็นกลุ่มแทนที่จะจับกลุ่มกัน อย่างไรก็ตามตอนนี้ฉันได้เพิ่มแผนที่แบบเรียงต่อกันแล้วฉันต้องการศัตรูเพื่อให้สามารถเดินไปรอบ ๆ สิ่งกีดขวางและกำแพงได้เช่นกัน ในขั้นต้นฉันพยายามเพิ่มค่าการแยกลงในไทล์ "ไม่สามารถเดินได้" เพื่อที่อัลกอริทึม flocking จะพิจารณาผนังและอุปสรรคเป็นวัตถุที่จะย้ายออกไป ฉันยังไม่ทราบว่าเป็นไปได้หรือไม่เพราะการทดสอบครั้งแรกของฉันแสดงให้เห็นว่าศัตรูชนกำแพงที่มองไม่เห็นซึ่งไม่มีกระเบื้องที่ไม่สามารถเดินได้ แต่ด้วยเหตุผลบางอย่างพวกเขาชนและเริ่มพูด ฉันสงสัยว่ามันอาจจะทำงานหนักเกินไปหรือไม่ในการคำนวณเส้นทางไปยังผู้เล่นโดยใช้ A * จากนั้นใช้อัลกอริทึม flocking เพื่อป้องกันการจับกันเป็นก้อน เดิมทีเกมของฉันจะเป็นเกมยิงตามคลื่น แต่ฉันตัดสินใจที่จะทำให้เกมนี้อยู่ในระดับที่เส้นเลือดของ Hotline Miami ดังนั้นจึงเป็นไปได้ที่ฉันจะมีศัตรูน้อยลง พวกเขาแข็งแกร่งขึ้น นี่เป็นทางออกที่ทำงานได้หรือไม่? ฉันใช้ Java กับ Slick2D เป็นเอ็นจิ้นเกมของฉัน หรือมีวิธีแก้ปัญหา / อัลกอริทึมที่ดีกว่าที่จัดการกับปัญหาทั้งสองนี้ได้หรือไม่

1
ต้นไม้พฤติกรรม :: การกระทำที่ใช้เวลานานกว่าหนึ่งขีด
จากสิ่งที่ฉันเข้าใจในต้นไม้พฤติกรรมพฤติกรรมแต่ละอย่างควรเป็นเป้าหมายสั้น ๆ ที่สามารถทำได้ในการทำซ้ำสองสามครั้ง ตัวอย่างเช่นด้านล่างเป็นรูปภาพของแผนผังพฤติกรรม: ตอนนี้ให้เราสมมติว่าพฤติกรรมDrive To Enemyใช้เวลามากกว่าสองสามซ้ำในต้นไม้ ดังนั้นในการขับผ่านไปยังศัตรูแต่ละครั้งจะถูกเรียกเพราะตอนนี้อยู่ในสถานะ ใช้งาน ปัญหาคือฉันต้องการเรียกEvade Enemyหาก Enemy อยู่ใกล้ ๆ และการพิจารณาว่าDrive To Enemyมักถูกเรียกว่าฉันไม่เคยได้รับโอกาสที่จะเรียกEvade Enemy ( ควรเรียกว่าหลีกเลี่ยงศัตรู ) ฉันควรสำรวจ Tree EACHผ่านไม่ว่า Action จะทำงานอะไร ฉันจะทำในสิ่งที่ถูกต้องหรือไม่ วิธีที่เหมาะสมในการจัดการพฤติกรรมดังกล่าวคืออะไร? ตอนแรกถูกถามใน Stackoverflow ความคิดที่นี่น่าจะเหมาะกว่าที่จะถามคำถามนี้
19 ai  game-loop  behavior 

6
พฤติกรรมใดบ้างที่ควรใช้ในการสร้างนักสู้ AI ที่“ ไม่สมบูรณ์”
เมื่อทำการต่อสู้กับ npc เป็นเรื่องง่าย ที่จะทำอย่างไรเพื่อให้ได้หุ่นยนต์มรณะโดยการปรับยุทธวิธีการต่อสู้เวลาและประเภทการโจมตีให้ได้ผล แต่ยากขึ้น (และน่าสนใจกว่าในการต่อสู้) เพื่อให้ได้ศัตรู พฤติกรรมใด (อัลกอริทึม) มีประโยชน์สำหรับการสร้างศัตรูที่แปลกใหม่และไม่เป็นทางการ? แก้ไข:กรณีการใช้งานเฉพาะของฉันคือมีศัตรูที่เหมือน MMO เช่น World of Warcraft แม้ว่าจะมีกราฟิกที่เกี่ยวข้องน้อยกว่า โปรดทราบว่านั่นหมายถึงศัตรูทั้งมนุษย์และไร้มนุษยธรรม (สัตว์สัตว์ประหลาด ฯลฯ )
19 ai  npc  combat 

6
การควบคุม AI สำหรับเรือที่มีโมเดลฟิสิกส์
ฉันกำลังมองหาแนวคิดที่จะใช้งานสิ่งต่อไปนี้ในพื้นที่ 2D น่าเสียดายที่ฉันยังไม่ค่อยรู้เกี่ยวกับ AI / การค้นหาเส้นทาง / การควบคุมอัตโนมัติ สมมติว่าเรือลำนี้สามารถเคลื่อนที่ได้อย่างอิสระ แต่มันมีมวลและโมเมนตัม นอกจากนี้กองกำลังภายนอกอาจส่งผลกระทบต่อมัน (การระเบิด ฯลฯ ) ผู้เล่นสามารถกำหนดเป้าหมายสำหรับเรือได้ทุกเวลาและควรถึงจุดนั้นและหยุด หากไม่มีฟิสิกส์นี่จะง่ายเพียงแค่ชี้ไปที่ทิศทางและไป แต่วิธีจัดการกับโมเมนตัมที่มีอยู่แล้วหยุดตรงจุด? ฉันไม่ต้องการแก้ไขตำแหน่งของเรือโดยตรง แก้ไข: เพื่อให้ชัดเจนคณิตศาสตร์ที่เกี่ยวข้องกับฟิสิกส์ของตัวเรือเองไม่ใช่ปัญหา

7
ฉันจะทำให้ตัวแทน A * หลีกเลี่ยงตัวแทนอื่น ๆ ได้อย่างไร
ฉันใช้อัลกอริทึม A * หลายเอเจนต์บนแผนที่ย่อย ตัวแทนเคลื่อนไหวในแกน X และ Y เท่านั้น ฉันหลีกเลี่ยงการชนกันระหว่างพวกเขาโดยการตรวจสอบที่อื่น ๆ เมื่อคำนวณเส้นทาง มันทำงานได้ดียกเว้นสถานการณ์ที่ตัวแทนต้องผ่านไทล์เดียวกันจากทิศทางที่แตกต่างกัน ในสถานการณ์เช่นนี้ทางออกที่ดีที่สุดคือให้ตัวแทนหนึ่งรอให้ตัวแทนผ่าน: นอกจากนี้หากไม่มีทางเดินตอนเหนือเส้นทางเดินก็จะล้มเหลว ฉันจะใช้อัลกอริทึมดังกล่าวได้อย่างไร

8
พงษ์ AI ที่ไม่สมบูรณ์
ดังนั้นฉันเริ่มเรียนรู้ Java และ OpenGL บางส่วนในขณะที่ใช้ LWJGL เพื่อเริ่มต้นง่ายฉันเขียนโคลนของอาตาริโป่ง ฉันได้ตั้งค่าหน้าจอเกมอย่างถูกต้องการตรวจจับการชนและเกมส่วนใหญ่ทำงานได้จริงถ้าเป็นเกมผู้เล่น 2 คนที่ฉันจะทำตอนนี้ แต่ขณะที่ฉันวางแผนที่จะทำเกมผู้เล่นคนเดียว ฉันต้องหา AI ง่าย ๆ เพื่อควบคุมผู้เล่นคนที่สอง การรู้ว่าลูกบอลจะถูกตีที่ใดจะเป็นเรื่องที่ค่อนข้างยุติธรรมและการสร้าง AI ซึ่งมักจะทำให้ลูกบอลดูเหมือนว่าเป็นเรื่องง่ายที่จะทำ แต่ฉันต้องการให้เกมชนะได้ดังนั้นฉันจึงไม่สามารถทำให้ IA ตี ลูกบอล. ดังนั้นนี่คือคำถามของฉันฉันควรเขียนโค้ดนี้อย่างไรเพื่อเพิ่มความไม่สมบูรณ์แบบเหมือนมนุษย์ลงใน AI ฉันควรสุ่มเลือกว่า AI จะล้มเหลว ณ จุดที่กำหนดหรือไม่? หรือมีสิ่งที่ฉลาดกว่า (หรืออาจชัดเจน) ที่ฉันหายไปที่นี่ ขอบคุณมาก.
19 java  ai 

3
ฉันจะรักษารูปแบบสี่เหลี่ยมเมื่อเพิ่มหรือลบหน่วยได้อย่างไร
ฉันมีบ็อตในรูปแบบสี่เหลี่ยมผืนผ้าที่มีแถวและคอลัมน์ ปัญหาเกิดขึ้นเมื่อบอทถูกเพิ่มหรือลบออกจากการสร้าง เมื่อสิ่งนี้เกิดขึ้นบอตจะต้องจัดเรียงตัวเองใหม่เพื่อให้การก่อตัวของรูปสี่เหลี่ยมผืนผ้ายังคงอยู่ในอัตราส่วนเดียวกันโดยประมาณและเป็นรูปสี่เหลี่ยมเท่าที่จะทำได้ ทำอย่างไร ความคิดบางอย่าง: เมื่อบอตถูกเพิ่มหรือลบให้ใช้จำนวนบอทใหม่ทั้งหมดและอัตราส่วนภาพคงที่ที่ต้องการเพื่อคำนวณความกว้างและความสูงใหม่ของการก่อตัวที่ใกล้เคียงที่สุดกับอัตราส่วนภาพนั้น จากนั้นจึงสลับสับเปลี่ยนบ็อตให้พอดีกับมิติใหม่ เมื่อบอทถูกลบออกให้ย้ายบอทที่อยู่ด้านหลังเข้าไปในที่ของมันและทำต่อไปจนกว่าจะถึงจุดสิ้นสุดของการก่อตัว จากนั้นให้ทำการจัดอันดับย้อนหลังให้มากที่สุดเท่าที่จะทำได้โดยการสับบอทในอันดับหลัง ความคิดที่แตกต่างอย่างสิ้นเชิงคือการเลียนแบบโครงสร้างของโมเลกุลที่อยู่ร่วมกัน ทำให้บอททุกคนต้องการล้อมรอบด้วยบ็อตอีกสี่ตัวด้วยการดึงดูดบอทที่อยู่ใกล้ที่สุดทั้งสี่และป้องกันส่วนที่เหลือ ขับไล่บ็อตทั้งหมด (รวมถึงสี่) ที่อยู่ใกล้เกินไปเพื่อให้แน่ใจว่าแยกโดยใช้กฎหมายกำลังสองผกผัน คุณต้องการแรงเพิ่มเติมในการสร้างรูปร่างของโครงสร้างทั้งหมด แต่มันฟังดูแพงมาก UPDATE : ดังนั้นเมื่อพิจารณาถึงคำตอบของซาร่าห์ฉันจึงมีฟังก์ชั่นทั่วไปที่ดีซึ่งให้มิติที่ดี แรกฉันแก้ไขสมการด้านล่างพร้อมกันสำหรับความกว้างและความสูงแล้วปัดคำตอบ width/height=aspect ratio of your choice width*height=number of bots สิ่งนี้จะช่วยให้คุณได้สัดส่วนจำนวนเต็มที่ใกล้เคียงที่สุดกับอัตราส่วนนั้นสำหรับจำนวนบอทของคุณ สี่เหลี่ยมจัตุรัสที่ใกล้เคียงที่สุดจะครึ่งหนึ่งมีขนาดใหญ่เกินไปและครึ่งเวลาเล็กเกินไป (แน่นอนว่าบางครั้งมันอาจจะถูกต้อง แต่ใครสนใจพวกนั้น) ในกรณีที่รูปสี่เหลี่ยมผืนผ้ามีขนาดใหญ่เกินไปเล็กน้อยไม่จำเป็นต้องทำสิ่งใด อันดับหลังจะจบลงด้วยการเกือบเต็มซึ่งเป็นอุดมคติ ในกรณีที่สี่เหลี่ยมผืนผ้าเป็นเล็ก ๆ น้อย ๆที่มีขนาดเล็กเกินไปคุณมีปัญหาเพราะที่เล็กล้นขนาดเล็กจะต้องไปในการจัดอันดับของตัวเองสร้างขึ้นตำแหน่งที่มีเพียงไม่กี่บอทกับมันซึ่งไม่ได้ดูสวย นอกจากนี้ยังมีกรณีที่ความแตกต่างมีขนาดใหญ่(ใหญ่กว่าความกว้างครึ่งหนึ่ง) ซึ่งในกรณีนี้จะเพิ่มหรือลบอันดับหนึ่งเพื่อสร้างความแตกต่างเล็ก ๆ จากนั้นเมื่อสี่เหลี่ยมผืนผ้าเล็กเกินไปให้เพิ่มหนึ่งคอลัมน์เพื่อทำให้ใหญ่ขึ้นอีกหน่อย หลังจากทำแล้วดูเหมือนว่าอันดับหลังจะมีอย่างน้อยครึ่งบอทมากพอ ๆ กับอันดับอื่น ๆ UPDATE เมื่อคุณได้มิติแล้วให้เปรียบเทียบกับมิติปัจจุบัน หากด้านหน้าของมิติใหม่ใหญ่กว่าสำหรับทุก ๆ …

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