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

เกี่ยวข้องกับการเคลื่อนที่ของวัตถุผ่านอวกาศและเวลา รวมถึงแนวคิดต่าง ๆ เช่นการเร่งความเร็ว (แรงขับและแรงโน้มถ่วง) มวลการตอบสนองการชนแรงเสียดทานและอื่น ๆ

3
ฉันสามารถกระโดดจาก A ถึง B ได้หรือไม่
ฉันกำลังทำ AI พื้นฐานสำหรับนักเลื่อนด้านข้างของฉันและฉันจำเป็นต้องรู้ว่าหน่วย AI สามารถเข้าถึงจุด B จากจุด A ได้ง่ายๆหรือไม่โดยการกระโดด เที่ยวบินวิถีของตัวละครของฉันเป็นบิตผิดปกติเพราะพวกเขาสามารถใช้บังคับในกลางอากาศ (เช่นในแจ๊ส Jackrabbit 2 ตัวอย่าง) ดังนั้นจึงแตกต่างจากวิถีดั้งเดิมของกระสุนปืนซึ่งเป็นเรื่องเกี่ยวกับ ... เส้นทางที่กระสุนปืนโยนหรือเปิดตัวจะใช้เวลา (... ) โดยไม่มีแรงขับ ... ฉันคิดว่าปัญหาของฉันเป็นเรื่องเกี่ยวกับกระสุนปืนด้วยการขับเคลื่อน (เช่นจรวด) เพื่อแสดงให้เห็นว่านี่เป็นลักษณะที่โค้งของเที่ยวบินสำหรับตัวละครของฉันถ้าฉันกระโดดและกดปุ่ม "ซ้าย" อย่างต่อเนื่อง (มันดูแตกต่างกันที่ปลายด้านซ้ายนี่คือจุดที่ฉันสร้าง manuevers กลางอากาศ): แรงที่กระทำระหว่างการบินจะขนานกับแกน X เสมอดังนั้นมันจึงเป็นF = (-f, 0)ถ้าฉันถือ "ซ้าย" และมันคือF = (f, 0)ถ้าฉันถือ "ขวา" เขาสามารถเคลื่อนไหวได้เหมือนนักเล่นสกี: ดังนั้นมันจึงแตกต่างจากวิถีคลาสสิกซึ่งเป็นเพียงพาราโบลา (ที่มา: วิกิพีเดีย ): เพื่อให้ยากขึ้นฉันกำลังจำลองการต้านทานอากาศอย่างง่ายเพื่อให้ตัวละครของฉันสามารถเร่งความเร็วได้สูงสุดถึงค่าความเร็วสูงสุดเท่านั้น ทำได้โดยใช้แรงเล็กน้อยในทิศทางตรงกันข้ามของการเดินทาง : b2Vec2 …

1
โปรแกรมจำลองการบินที่ง่าย
ในการจำลองการบินแบบ 3 มิติที่มีระดับความสมจริงของ Crimson Skies (เช่นเดียวกับในระดับอาร์เคดมากกว่าที่เหมือนจริง) คุณจะทราบความเคลื่อนไหวของเครื่องบินแต่ละเห็บได้อย่างไร (Crimson Skies เป็นโปรแกรมจำลองการบินคล้ายอาร์เคด: http://youtu.be/OWmYt0LZDnU?t=3m ) ฉันเข้าใจว่าเกมก้าวหน้าในขั้นตอนคงที่และแต่ละขั้นตอนแต่ละวัตถุที่เคลื่อนที่จะเคลื่อนที่เป็นเส้นตรงด้วยความเร็วคงที่จากตำแหน่งปัจจุบันไปยังตำแหน่งถัดไป คุณต้องการพารามิเตอร์พื้นฐานอะไรบ้างในการพิจารณามวลความเร็วเค้น. ฯลฯ คุณจะรวมมันยังไง?

1
Multiplayer platformer - ปกติแล้วการแก้ไขเซิร์ฟเวอร์จะต้องใช้กับไคลเอนต์เดียวบนเซิร์ฟเวอร์หรือไม่?
ขณะนี้ฉันกำลังทำงานบน platformer ที่มีผู้เล่นหลายคนค่อนข้างง่าย ฉันอ่านบทความเกี่ยวกับเทคนิคต่าง ๆ ที่ใช้ในการซ่อนเวลาแฝงอยู่ แต่ฉันก็ยังไม่เข้าใจแนวคิดบางอย่าง ฉันพบว่าหัวข้อน่าสนใจมากและต้องการลองใช้ความคิดด้วยตัวเอง แต่ฉันคิดว่าการขอแลกเปลี่ยน gamedev จะมีประสิทธิภาพมากขึ้นสำหรับคำถามของฉัน ฉันจะพยายามอย่างดีที่สุดเพื่ออธิบายสถานการณ์ปัจจุบันของฉันและคำถามใดที่เกิดขึ้นระหว่างทาง ตอนนี้ฉันต้องการซิงค์ผู้เล่นคนเดียวกับเซิร์ฟเวอร์เท่านั้น ในทางทฤษฎีผมสันนิษฐานว่าผู้เล่นคนเดียวที่มีการคาดการณ์ฝั่งไคลเอ็นต์จะไม่ต้องการการแก้ไขเซิร์ฟเวอร์เนื่องจากไม่มีปัจจัยภายนอกที่มีอิทธิพลต่อการเคลื่อนไหวของเขา ดังนั้นต้นแบบของฉันในปัจจุบันมีผู้เล่นเพียงคนเดียวที่ซิงค์กับเซิร์ฟเวอร์โดยไม่ต้องทำการแก้ไขเซิร์ฟเวอร์ หากคุณคุ้นเคยกับระบบเครือข่ายเกมฉันคิดว่าคุณอาจข้ามส่วนบริบทแม้ว่าฉันอาจทำสิ่งผิดปกติไปพร้อมกัน ลูปไคลเอ็นต์ (หนึ่งครั้งต่อเฟรมหนึ่งครั้งทุกๆ ~ 16.67ms) ลูปไคลเอนต์แบบง่ายดูเหมือนว่า: ตรวจสอบอินพุตภายใน (WASD) และจัดทำแพ็กเกจเป็นการกระทำ (เช่นType=MoveLeft, Time=132.0902, ID=15) เราเก็บการกระทำที่บรรจุไว้เพื่อส่งในที่สุด นอกจากนี้เรายังนำการกระทำที่ต้องการไปใช้กับการจำลองทางฟิสิกส์ของเกมโดยตรง ตัวอย่างเช่นหากเรามีการMoveLeftดำเนินการเราจะใช้กำลังไปทางซ้ายกับความเร็วของผู้เล่น ตรวจสอบเพื่อส่งการกระทำ เพื่อป้องกันการใช้แบนด์วิดท์ของลูกค้าที่ไม่เหมาะสมให้ส่งการกระทำที่ทำแพคเกจในช่วงเวลาที่แน่นอนเท่านั้น (เช่น 30ms) ใช้การแก้ไขเซิร์ฟเวอร์ ณ จุดนี้จะจัดการกับเดลต้าและการแก้ไขที่ได้รับจากเซิร์ฟเวอร์และนำไปใช้กับการจำลองสถานการณ์ของเกม สำหรับคำถามนี้ไม่ได้ใช้ อัปเดตฟิสิกส์ท้องถิ่น ใช้วงฟิสิกส์ของผู้เล่นหลัก โดยพื้นฐานแล้วสิ่งนี้จะทำการทำนายการเคลื่อนไหวของผู้เล่น สิ่งนี้เป็นการเพิ่มแรงโน้มถ่วงให้กับความเร็วของผู้เล่นใช้ความเร็วของผู้เล่นกับตำแหน่งของเขาแก้ไขการชนกันตลอดทาง ฯลฯ ฉันควรระบุว่าการจำลองทางฟิสิกส์มักจะดำเนินการด้วยเดลต้าวินาทีคงที่ (เรียกหลายครั้งขึ้นอยู่กับวินาทีเดลต้าจริง) . ฉันข้ามรายละเอียดเฉพาะบางอย่างเกี่ยวกับฟิสิกส์และส่วนอื่น ๆ เพราะฉันรู้สึกว่าพวกเขาไม่จำเป็นสำหรับคำถามนี้ แต่อย่าลังเลที่จะแจ้งให้เราทราบหากพวกเขาจะเกี่ยวข้องกับคำถาม …

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

1
รับระบบคลาวด์ 2D พิกเซลเพื่อติดตามเมาส์
ฉันกำลังทำงานกับเกม 2D ที่พยายามหา "ก้อนเมฆ" ของก้อนหรือแผ่นดิสก์เล็ก ๆ สองสามร้อยก้อนเพื่อติดตามเคอร์เซอร์เมาส์โดยไม่ทับซ้อนกัน อย่างไรก็ตามการใช้เอ็นจิ้นฟิสิกส์จะทำให้ประสิทธิภาพการทำงานช้าลงเมื่อจำนวนของแผ่นดิสก์เพิ่มขึ้นและการตรวจจับการชนโดยทั่วไปนั้นไม่ค่อยมีประสิทธิภาพ มีวิธีง่ายๆในการเพิ่มประสิทธิภาพของเครื่องยนต์สำหรับสิ่งนี้หรือไม่? ถ้าไม่ฉันจะดีกว่าถ้าปิดเครื่องยนต์แล้วเขียนสิ่งที่ฉันเป็นของตัวเอง? (จับที่ฟางที่นี่ แต่ :) มีแหล่งข้อมูลหรือตัวอย่างที่ดีเกี่ยวกับวิธีการทำสิ่งนี้หรือไม่?
10 2d  physics  unity 

1
คำนวณส่วนหัวของจักรยานจากล้อหน้าและความเร็ว
ฉันมีเกมจักรยานบนล่างที่เรียบง่ายที่ฉันพยายามเพิ่มการควบคุม ฉันต้องการทราบวิธีการใช้ส่วนหัวของล้อหน้าเพื่อกำหนดหัวเรื่องและความเร็วของจักรยาน void Update () { //Get input from user Vertical: 0 to 1, Horizontal -1 to 1 float forwardInput = Input.GetAxis("Vertical"); float sidewaysInput = Input.GetAxis("Horizontal") * m_steeringAmount; // Turn front wheel m_frontWheelTransform.localEulerAngles = new Vector3(0, sidewaysInput, 90); // get speed and drag float speed = m_velocity.magnitude; Vector3 forwardDrag = …
10 physics  car 

1
สิ่งที่จะเป็นตัวกรองที่ดีในการสร้าง 'แม่เหล็ก deformers' จากแผนที่เชิงลึก?
ในโครงการของฉันฉันกำลังสร้างระบบสำหรับการเปลี่ยนรูปแบบตาข่ายที่มีรายละเอียดสูง (เสื้อผ้า) เพื่อให้พอดีกับตาข่ายนูน ในการทำเช่นนี้ฉันใช้แผนที่ความลึกของรายการและ 'ฮัลล์' เพื่อพิจารณาว่าจุดใดในอวกาศโลกที่เกิดการเบี่ยงเบนและขอบเขต เพียงแค่เปลี่ยนจุดยอดที่เกิดขึ้นทั้งหมดให้เป็นความลึกตามที่กำหนดโดย 'ฮัลล์' นั้นมีประสิทธิภาพพอสมควรและมีประสิทธิภาพที่ดี แต่มันประสบปัญหาในการไม่รักษาคุณสมบัติของตาข่ายและต้องการการคัดที่กว้างขวางเพื่อหลีกเลี่ยง ฉันต้องการสร้างจากแผนที่เบี่ยงเบนเชิงลึกชุด 'deformers' ที่เรียบง่ายซึ่งจะ 'ดัน' * จุดยอดทั้งหมดของตาข่ายที่ผิดรูปออกไปด้านนอก (ในอวกาศโลก) ด้วยวิธีนี้คุณสมบัติทั้งหมดของตาข่ายจะได้รับการเก็บรักษาไว้และไม่จำเป็นต้องมีฮิวริสติกแบบซับซ้อนเพื่อกำจัดจุดยอดที่ไม่เหมาะสม ฉันไม่แน่ใจว่าจะทำอย่างไรเกี่ยวกับการสร้างชุด deformer นี้ ฉันจินตนาการถึงบางสิ่งบางอย่างเช่นอัลกอริทึมที่พยายามจับคู่พื้นผิวทรงกลมกับแต่ละส่วนของการเบี่ยงเบนที่ต่อเนื่องกันในช่วงที่กำหนด แต่ไม่รู้ว่าจะเริ่มทำสิ่งนี้ได้ที่ไหน ใครสามารถแนะนำตัวกรองหรืออัลกอริทึมที่เหมาะสมสำหรับการสร้างตัวเปลี่ยนรูป? หรือจะใช้วิธีการ 'บีบอัด' แผนที่เชิงลึกอีกวิธีหนึ่ง (* กดเนื่องจากการปรับให้พอดีกับรูปร่างมนุษย์นูน 'ดังนั้น' การแปลงมีแนวโน้มที่จะเป็น 'ทรงกลม' จากมุมมองของพื้นผิว) แก้ไข:นี่คือภาพ / แผนภาพแนะนำอย่างถูกต้องที่แสดงให้เห็นถึงสิ่งที่ฉันพยายามที่จะบรรลุ นอกจากนี้ฉันควรพูดตั้งแต่คำถามนี้ถูกโพสต์ฉันทำงานมากขึ้นเกี่ยวกับปัญหานี้และแม้ว่าฉันไม่เคยแก้ไขวิธีการรับ deformers ที่ฉันได้ในที่สุดตัดสินใจว่าแผนที่เชิงลึกสำหรับสิ่งนี้ไม่เหมาะสมเป็น: หากตาข่ายที่ผิดรูปไม่สมบูรณ์เป็นไปได้ที่จะรับข้อความในแผนที่ที่มีความหมายว่าอยู่อีกด้านหนึ่งของตาข่ายนูน (เพราะไม่ถูกบดบังโดยผู้ที่อยู่ใกล้กับกล้องในด้านที่ถูกต้อง) ประสิทธิภาพไม่สูงอย่างที่ฉันหวังไว้เพราะต้องการแผนที่ 6 แผนที่ต่อการเปลี่ยนรูป ไม่ใช่ว่าสิ่งเหล่านี้จะแก้ไม่ตก แต่โซลูชันอื่น ๆ ซึ่งเกี่ยวข้องกับการทดสอบการชนกันของเมล็ดที่ทำงานบน GPU ทำให้ได้ผลลัพธ์ที่มีคุณภาพสูงกว่าและง่ายกว่ามากแม้ว่ามันอาจจะไม่เร็วก็ตาม …

3
การคำนวณความเฉื่อยเทนเซอร์
คำถามที่ซับซ้อนและยาวนิดหน่อยที่ฉันจะยอมรับฉันยังไม่ค่อยเข้าใจดีนักดังนั้นฉันจะพยายามอธิบายให้ดีที่สุดเท่าที่จะทำได้ เวอร์ชั่นย่อ:มีสูตร c ++ / physx ทั่วไปที่นั่นเพื่อคำนวณแรงเฉื่อยเทนเซอร์ตามรูปร่างของวัตถุหรือไม่? รุ่นยาว: สำหรับฟิสิกส์ของเราเราต้องระบุเทนเซอร์แรงเฉื่อย x, y และ z ในปัจจุบันวิธีที่เราทำมันก็แค่อัตราส่วนตามมวล ดังนั้นหากวัตถุยาวบนแกน X และบางบน Y และ Z และมวลเป็น 10,000 เราจะตั้งค่า Z และ Y เป็น 7000 และ X ถึง 3000 (นี่ไม่แน่นอน แต่เพื่อให้ความคิด) วิธีนี้ใช้งานได้ค่อนข้างดี แต่ปัญหาที่ใหญ่ที่สุดของเราคือเมื่อมีความไม่แน่นอนของข้อต่อบางแห่งเราต้องคาดเดาที่เทนเซอร์จนกว่าเราจะรู้ว่าอะไรดีที่สุด สิ่งนี้อาจใช้เวลานานมากหากเรามีการจำลองทางฟิสิกส์ที่ยิ่งใหญ่มากและข้อต่อหนึ่งใน 20 ข้อทำให้ผู้อื่นเสียเสถียรภาพ สิ่งที่ฉันกำลังทำคือฟังก์ชั่นที่จะใช้กล่องขอบเขตของวัตถุและหวังว่าจะคำนวณเมตริกซ์ที่ค่อนข้างแม่นยำ ฉันใช้คณิตศาสตร์บางส่วนจากhttp://en.wikipedia.org/wiki/List_of_moment_of_inertia_tensorsและสร้างฟังก์ชั่นที่ทำงานคล้ายกับการหมุนข้างล่างนี้ หรือถ้าการหมุนสิ้นสุดแล้วเช่นนี้ ดังนั้นนี่ดูเหมือนจะให้ผลลัพธ์ที่คล้ายกับวิธีที่เราทำ แต่ฉันไม่ต้องการเปลี่ยนมาใช้วิธีนี้โดยไม่ทำให้แน่ใจว่ามันจะใช้งานได้ทั่วไป ด้านล่างเป็นรหัสสำหรับฟังก์ชั่นของฉันตามภาพแรกที่มีลูกบาศก์และเดือยกลาง NxVec3 CalculateInertiaTensor( VisBoundingBox_cl boundingBox, float …

1
การเปลี่ยนรูปพื้นผิว
ฉันกำลังพยายามทำให้พฤติกรรมทางฟิสิกส์ที่ผิดรูปสำหรับพื้นผิวระดับสำเร็จ แต่ยังไม่มีความคิดว่าจะเริ่มต้นอย่างไรกับการดำเนินการจนถึงปัจจุบัน โดยไม่คำนึงถึงรูปร่างของพื้นผิว (เครื่องบิน, ก้อน, ทรงกลม…), ฉันต้องการให้มีการเยื้องเล็กน้อยที่ตำแหน่งจากเอนทิตีของเกม (ผู้เล่น, ศัตรู, วัตถุ ... ) มันเป็นเรื่องซับซ้อนที่จะอธิบายดังนั้นฉันจึงแสดงสิ่งที่ฉันกำลังพูดถึงนี่เป็นตัวอย่างของทรงกลม: ดังนั้นพื้นผิวควรจะสามารถทำให้เสียโฉมได้เล็กน้อย (ให้ดูเหมือนเตียงนุ่มหรือโซฟาจริงๆ) พื้นผิวของฉันอาจต้องมีจุดยอดสูงเพื่อให้การเปลี่ยนรูปราบรื่น แต่ปัญหาใหญ่ของฉันคือคณิตศาสตร์สำหรับการคำนวณการเสียรูปนี้ ฉันกำลังเขียนโปรแกรมใน C / C ++ กับ OpenGL แต่คำแนะนำใด ๆ ในทิศทางที่ถูกต้องจะใช้ได้

2
เทคนิคการตรวจจับการชนของเครื่องยนต์ฟิสิกส์อย่างต่อเนื่อง
ฉันกำลังทำงานกับเอนจินฟิสิกส์แบบต่อเนื่องล้วนๆและฉันต้องเลือกอัลกอริทึมสำหรับการตรวจจับการชนกันของเฟสกว้างและแคบ "ต่อเนื่องอย่างหมดจด" หมายถึงฉันไม่เคยทำการทดสอบทางแยก แต่ต้องการหาวิธีที่จะจับการชนกันทุกครั้งก่อนที่มันจะเกิดขึ้นและวางลงในสแต็ก "การชนกันตามแผน" ที่จัดทำโดย TOI ช่วงกว้าง วิธีเดียวในช่วงกว้างอย่างต่อเนื่องที่ฉันสามารถนึกได้คือการห่อหุ้มร่างกายแต่ละดวงในวงกลมและทดสอบว่าแต่ละวงกลมจะทับซ้อนกันหรือไม่ อย่างไรก็ตามเรื่องนี้ดูเหมือนว่าจะไม่มีประสิทธิภาพอย่างน่ากลัวและขาดการคัดเลือกใด ๆ ฉันไม่มีความคิดว่า analogs แบบต่อเนื่องอาจมีอยู่สำหรับวิธีการคัดแยกการชนกันของวันนี้เช่นต้นไม้สี่ต้นอย่างใดอย่างหนึ่ง ฉันจะป้องกันการทดสอบในวงกว้างที่ไม่เหมาะสมและไม่มีจุดหมายได้อย่างไรเช่นเครื่องยนต์ไม่ต่อเนื่องทำอย่างไร ฉันต้องการเห็นการชนกันมากกว่า 1 เฟรมก่อนหน้า Narrow Phase ฉันพยายามปรับ SAT แคบ ๆ ให้เป็นการตรวจสอบอย่างต่อเนื่องมากกว่าที่จะแยก แต่ฉันแน่ใจว่ามีอัลกอริธึมอื่นที่ดีกว่าในเอกสารหรือเว็บไซต์ที่คุณอาจเจอ คุณแนะนำให้ฉันใช้อัลกอริทึมแบบเร็วและแม่นยำแบบใดและข้อได้เปรียบ / ข้อเสียของแต่ละข้อคืออะไร? หมายเหตุสุดท้าย: ฉันพูดถึงเทคนิคและไม่ใช่อัลกอริธึมเพราะฉันยังไม่ได้ตัดสินใจว่าฉันจะเก็บรูปหลายเหลี่ยมหลายรูปแบบได้อย่างไรซึ่งอาจเป็นเว้านูนกลมหรือมีรู ฉันวางแผนที่จะตัดสินใจบนพื้นฐานของสิ่งที่อัลกอริทึมต้องการ (เช่นถ้าฉันเลือกอัลกอริทึมที่แบ่งรูปหลายเหลี่ยมออกเป็นรูปสามเหลี่ยมหรือรูปทรงนูนฉันจะเก็บข้อมูลรูปหลายเหลี่ยมในรูปแบบนี้)


5
ฉันจะจำลองแก้วแตกได้อย่างไร
ฉันต้องทำการจำลองด้วยหินขว้างผ่านหน้าต่างกระจก ฉันจะทำให้สำเร็จได้อย่างไร ฉันหมายถึงฉันกำลังคิดที่จะสร้างแบบจำลอง 3 มิติของหินและแก้วใน 3D Studio Max 2012 ทุบกระจกและส่งออกทั้งสองไปยัง XNA 4.0 เป็นรุ่น. x จากนั้นใน XNA สร้างแอนิเมชัน - เขียนเอนจินฟิสิกส์ของฉันเอง เป็นไปได้ไหม? เป็นไปได้หรือไม่ที่จะทำลายกระจกใน XNA หลังจากกระทบหรือควรทำใน 3DS Max หรือไม่? โดยการ 'ทำลายแก้ว' ฉันหมายถึงปลดเศษแก้วที่แตกก่อนหน้านี้ออกจากกันเนื่องจากขึ้นอยู่กับความเร็วเริ่มต้นและน้ำหนักของหินและความต้านทาน (ความแข็ง?) ของแก้ว (กำหนดโดยผู้ใช้ทั้งหมด) บิตจะปลดจาก ซึ่งกันและกันในรูปแบบที่แตกต่างกัน
10 xna  physics  xna-4.0  3dsmax 


3
การสร้างแผนที่แบบสุ่ม - กลยุทธ์สำหรับการกระจาย / การรวมโหนดแบบสุ่ม
ฉันกำลังเล่นเกมกลยุทธ์ 4X ง่ายๆในอวกาศที่แต่ละโหนดเป็นจุดสนใจ (ดาวเคราะห์ดาวเคราะห์น้อยและอื่น ๆ ) ในการสร้างแผนที่แบบสุ่มฉันจะทำตามขั้นตอนด้านล่าง ตัดสินใจว่าจะมีกี่โหนดในแต่ละแผนที่ (อาจจะบอกว่ามีดาวเคราะห์คล้ายโลก 5 ดวงหรือดาวเคราะห์ที่แห้งแล้ง 10 ดวงเป็นต้น) วางแต่ละโหนดบนแผนที่ สำหรับขั้นตอนที่ 2 ฉันต้องการที่จะมีการแพร่กระจายของแต่ละโหนดประเภท ตัวอย่างเช่นฉันจะเริ่มต้นด้วยการวางดาวเคราะห์คล้ายโลกทั้งหมด ถ้าฉันทำแรนด์ (map.width, map.height) เพื่อกำหนดตำแหน่งฉันอาจจะรวมดาวเคราะห์คล้ายโลกทั้งหมดเข้าด้วยกันซึ่งจะให้ประโยชน์กับผู้เล่นที่เริ่มต้นในพื้นที่นั้น มีวิธีการใดบ้างเช่นการใช้ฟังก์ชั่นกราฟที่แตกต่างกันหรือฟังก์ชั่นเสียงรบกวนซึ่งสามารถสร้างลำดับของ (x, y) พิกัดซึ่งกระจายออกจากกัน มีวิธีใดบ้างในการสร้างพิกัดที่ใกล้เคียงกัน?

1
มีอัลกอริทึมที่รู้จักกันดีในการปรับรูปหลายเหลี่ยมให้เหมาะสมกับรูปร่างหรือไม่?
ฉันใช้เครื่องยนต์ฟิสิกส์ Chipmunk เพื่อสร้างระดับสำหรับเกม 2D C ฉันต้องการให้พอดีกับรูปหลายเหลี่ยมกับรูปร่างที่กำหนดเองเพื่อใช้เป็นหน้ากากปะทะกัน ให้รูปแบบการชนสีดำและสีขาวสำหรับวัตถุระดับโดยพลการดังนี้ มีอัลกอริทึมที่รู้จักกันดีสำหรับการรับนี้: ฉันสามารถใช้รูปหลายเหลี่ยมสีแดงเพื่อสร้างวัตถุฟิสิกส์เพื่อไปกับภาพ

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