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

คำถามคณิตศาสตร์ที่เกี่ยวข้องกับคณิตศาสตร์เรขาคณิตแคลคูลัสสูตรและการคำนวณอื่น ๆ ที่ใช้ในการพัฒนาเกม

1
ปัญหาการตรวจจับการชนวงกลม -line
ขณะนี้ฉันกำลังพัฒนาโคลนการฝ่าวงล้อมและฉันได้ตีสิ่งกีดขวางบนถนนในการตรวจจับการชนกันระหว่างลูกบอล (วงกลม) และอิฐ (รูปหลายเหลี่ยมนูน) ทำงานอย่างถูกต้อง ฉันใช้การทดสอบการตรวจจับการชนกันของข้อมูลเส้นวงกลมโดยที่แต่ละบรรทัดแสดงถึงและขอบบนก้อนอิฐรูปหลายเหลี่ยมนูน ส่วนใหญ่แล้วการทดสอบแบบ Circle-Line นั้นทำงานได้อย่างถูกต้องและจุดของการชนนั้นได้รับการแก้ไขอย่างถูกต้อง การตรวจจับการชนกันทำงานอย่างถูกต้อง อย่างไรก็ตามในบางครั้งรหัสตรวจจับการชนของฉันคืนเท็จเนื่องจากการเลือกปฏิบัติเชิงลบเมื่อลูกบอลตัดกับก้อนอิฐ การตรวจหาการชนกันล้มเหลว ฉันตระหนักถึงความไร้ประสิทธิภาพด้วยวิธีนี้และฉันใช้กล่องที่จัดเรียงตามแนวแกนเพื่อลดจำนวนอิฐที่ทดสอบ ความกังวลหลักของฉันคือถ้ามีข้อบกพร่องทางคณิตศาสตร์ในรหัสของฉันด้านล่าง /* * from and to are points at the start and end of the convex polygons edge. * This function is called for every edge in the convex polygon until a * collision is detected. */ …

4
ฉันจะใช้การลดความเร็วได้อย่างไร
ฉันพูดว่า "การชะลอตัว" เพราะฉันไม่ได้ใช้การเร่งความเร็วในขณะนี้ สิ่งที่ฉันหมายถึงคือการย้ายความเร็วกลับไปที่ศูนย์ในที่สุดก็หยุด ฉันยังใหม่กับเวกเตอร์และไม่ค่อยมีเรื่องเกี่ยวกับฟิสิกส์และเช่นนั้น ปกติจะมีการจัดการ "การชะลอตัว" อย่างไร ตอนนี้สิ่งที่ฉันได้ผล แต่ดูเหมือนว่าแฮ็ค update:function(Game, t, dt) { var speed = Game.Input.isKeyDown('shift') ? 8 : 4; if (Game.Input.isKeyDown('a')) { this.velocity.i -= speed; } else if (Game.Input.isKeyDown('d')) { this.velocity.i += speed; } else { if (Math.abs(this.velocity.i) > 3) { this.velocity.i += (this.velocity.i > 0) ? …

2
ลอยสองหรือทั้งสองอย่างสำหรับคลาส Vector 2 มิติ?
ขณะนี้ฉันกำลังเขียนเอนจิ้นเกม 2D ที่ใช้ OpenGL เป็นแพลตฟอร์มขนาดเล็กสำหรับสตูดิโอของเรา เมื่อฉันค้นคว้าคลาส Vector 2 มิติที่จะใช้ฉันสะดุดกับกระบวนทัศน์การออกแบบที่แตกต่างกันสามแบบ: ลอยและโทรโดยค่าเหมือนในบทความ Gamasutra นี้ ดูเหมือนว่าจะเร็ว แต่มีความแม่นยำน้อย (ดูหัวข้อนี้ ) Pro: รวดเร็วพกพาและใช้งานได้กับห้องสมุดส่วนใหญ่ Double & Call-by-Reference หากฉันเข้าใจบทความข้างต้นถูกต้องฉันสามารถใช้ตัวแปรความแม่นยำสองคู่แทนตัวเลขทศนิยม 4 ตัว ตามด้ายข้างต้นสองครั้งยังคงช้ากว่าลอย เทมเพลตสำหรับ double และ float: หนังสือยอดนิยม " Game Engine Architecture " ใช้เทมเพลตเพื่อให้สามารถใช้ float และ double ได้ตามต้องการ ข้อเสียที่ชัดเจนคือการขยายโค้ด นอกจากนี้ฉันสงสัยว่ารหัสสามารถปรับให้เหมาะสมโดยไม่ต้องเขียนสองชั้นโดยทั่วไป ฉันขอขอบคุณที่เรียนรู้วิธีแก้ไขปัญหาที่คุณใช้ในเอ็นจิ้นภายในองค์กรของคุณและความแม่นยำของเอ็นจิ้นเกมยอดนิยมดังนั้นฉันสามารถตัดสินใจได้ว่าโซลูชั่นใดที่ฉันจะใช้ในเอ็นจิ้นของเรา ในช่วงเวลาที่ฉันคิดเพียงแค่ใช้ความแม่นยำลอยและอยู่กับมัน

2
วิธีทำให้ผู้เล่นเลื่อนไปตามภูมิประเทศอย่างราบรื่น
ฉันทำเกมสามมิติ เมื่อผู้เล่นพยายามที่จะเดินแนวทแยงมุมเข้าไปในกำแพงฉันต้องการให้พวกเขาเลื่อนไปมาได้อย่างราบรื่นดังนั้นส่วนใดของการเคลื่อนไหวก็จะถูกใช้อย่างถูกกฎหมาย กำแพงอาจเป็นมุมใดก็ได้ไม่เพียงแค่แนวตั้งหรือแนวนอนและผู้เล่นมีการเคลื่อนไหว 360 องศา ฉันรู้สึกว่าฉันเกือบจะอยู่ที่นั่น แต่ฉันไม่สามารถวางชิ้นสุดท้ายไว้ได้ อัพเดท: ข่าวดีสำหรับทุกคน! ฉันทำงานแล้ว แต่ ... ฉันสับสนนิดหน่อยว่าฉันควรทำอะไรให้เป็นปกติและไม่ดี ปกติก็ต้องเป็นเวกเตอร์หน่วยจริงไหม? แต่จากนั้นฉันกำลังผสมกับอินพุตของฉันดังนั้นฉันจึงทำให้เป็นปกติ - ฉันผิด โดยวิธีการที่ฉันได้พบว่าฉันต้องผลักดันผู้เล่น 1 พิกเซลในทิศทางปกติเพื่อให้พวกเขาไม่ได้ติดอยู่กับสิ่งต่าง ๆ - ทำงานได้ดี

2
วิธีการคำนวณมุมยิงและความเร็วในการยิงเป้าเคลื่อนที่?
ฉันกำลังพัฒนาเกม 2D บน Android และฉันกำลังสร้างอัลกอริธึมการเล็งสำหรับขีปนาวุธ AI เพื่อโจมตีศัตรูไม่ว่าจะตามเส้นทางหรือเคลื่อนที่ได้ฟรี ในขณะนี้มันเพียงแค่คำนวณว่าเป้าหมายจะอยู่หลังระยะทางใดและยิงกระสุนปืนเพื่อไปพบมันในระยะทางนั้น แน่นอนว่านี่หมายถึงการเปลี่ยนแปลงความเร็วของกระสุนปืนเพื่อให้บรรลุเป้าหมาย ไม่มีใครมีเคล็ดลับสำหรับอัลกอริทึมแบบง่าย - ish (เหมาะสมที่สุด - ish) ในการคำนวณเมื่อกระสุนปืนต้องการยิงและตำแหน่งที่ต้องการเล็งหากมันสามารถเคลื่อนที่ด้วยความเร็วคงที่เท่านั้น? พูดว่า projectile ไปที่ความเร็วของเป้าหมายเป็นสองเท่า? วิธีเดียวที่ฉันสามารถนึกถึงเกี่ยวข้องกับการค้นหาและดูเหมือนจะค่อนข้างใหญ่
11 2d  android  mathematics  ai  aiming 

3
วิธีรับการแปลจากมุมมองเมทริกซ์
ฉันจะดึงข้อมูลตำแหน่งโลกของกล้องจากเมทริกซ์มุมมองได้อย่างไร คำตอบเดียวที่ฉันเคยเห็นสำหรับคำถามนี้แนะนำให้แปลอยู่ในแถว / คอลัมน์สุดท้าย แต่สิ่งนี้จะไม่ทำงานเนื่องจากเมทริกซ์มี [x (dot) ขวา, y (dot) up, z (dot) look]
11 3d  mathematics  matrix 

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

3
RPGs สมดุลสูตรความเสียหายเชิงเส้นอย่างไร
ฉันกำลังพัฒนาสูตรความเสียหายสำหรับเกม RPG ฉันได้ตรวจสอบสูตรชื่อหนังสือยอดนิยมมากมายสำหรับการอ้างอิง (Final Fantasy, Chrono Trigger, Golden Sun และ Castlevania) และส่วนใหญ่ดูเหมือนจะใช้ฟังก์ชันเชิงเส้น ปัญหาของฉันคือว่าสำหรับฟังก์ชั่นเชิงเส้น% ซึ่งความเสียหายเพิ่มขึ้นเมื่อการปรับระดับขึ้นลงในทุกระดับ ตัวอย่างเช่นเมื่อคุณไปจาก Lvl 2 ถึง Lvl 3 และสร้างความเสียหายเพิ่มขึ้น 50% แต่เมื่อคุณไปจาก Lvl 50 ถึง Lvl 51 การโจมตีจะสร้างความเสียหายแก่ศัตรูเดียวกัน 0.5% เท่านั้น ประกอบกับความจริงที่ว่า XP ในการเพิ่มเลเวลนั้นเพิ่มขึ้นอย่างมากในชื่อเหล่านี้มันไม่สมเหตุสมผลสำหรับฉัน ดังนั้นในขณะที่ฉันอยากจะละทิ้งฟังก์ชั่นประเภทนี้สำหรับเกมของฉันฉันรู้สึกว่ามีบางสิ่งที่ฉันจะต้องหายไปเนื่องจากเกมโปรดของฉันหลายคนใช้ ยิ่งกว่านั้นฉันได้เล่นเกมเหล่านี้และฉันไม่เคยสังเกตเห็นสิ่งนี้ เช่นการคำนวณความเสียหาย Golden Sun นั้นง่ายมาก: Damage = Attack - Defense สูตรความเสียหายของโปเกมอนด้านล่างนั้นซับซ้อนกว่าเล็กน้อย แต่การเติบโตของความเสียหายแบบสัมบูรณ์จะลดลงในแต่ละระดับ ฉันถูกต้องหรือไม่ที่จะคิดว่าความเสียหายในเกมเหล่านี้เพิ่มขึ้นในอัตราร้อยละที่ต่ำกว่าในแต่ละระดับ? พวกเขาสมดุลเกมอย่างไรเพื่อให้ระดับยังคงมีความสำคัญในภายหลังในเกม?

2
หมุนกล้องคนที่ 3 ไปยังเป้าหมาย
ฉันมีกล้องคนที่ 3 ที่ไม่ได้ดูที่ผู้เล่นโดยตรง แต่อยู่ตรงหน้าเขา เมื่อผู้ใช้เข้าสู่โหมดถ่ายภาพฉันต้องการให้กล้องหมุนไปรอบ ๆ ผู้เล่นเพื่อเผชิญหน้ากับเป้าหมาย ในภาพด้านบน "O" คือผู้เล่น (ต้นทาง) "L" คือการค้นหา "C" คือตำแหน่งกล้องและ "T" เป็นเป้าหมาย ฉันต้องการหมุนเส้น lookat C-> L เพื่อให้มันผ่าน T (C '-> L' -> T ') รอบ Origin ("O") โดยทั่วไปฉันต้องหามุมอัลฟาที่ใส่สีแดงไว้ในภาพ ฉันเก็บตำแหน่งกล้องของฉันในโครงสร้างเช่น: struct CameraTarget { Quaternion absoluteRotation; Vec3 absolutePosition; Vec3 cameraOffset; Vec3 lookatOffset; float FOV; } ดังนั้นหากฉันสามารถหามุมที่ฉันกำลังมองหาฉันสามารถทำสิ่งที่ชอบ: cam->absoluteRotation …

5
ฉันจะฉายจุดหลังกล้องได้อย่างถูกต้องได้อย่างไร?
ฉันกำลังสร้างเกม 3 มิติโดยใส่เครื่องหมายอัศเจรีย์เหนือจุดสนใจ เพื่อที่จะหาว่าในหน้าจอ 2D ที่ฉันควรวางเครื่องหมายของฉันฉันกำลังฉายจุด 3D ด้วยตนเองที่เครื่องหมายควร ดูเหมือนว่านี้: ดูดีทีเดียว เมื่อเครื่องหมายอยู่นอกหน้าจอฉันเพียงแค่คลิปพิกัดเพื่อให้พอดีกับหน้าจอ ดูเหมือนว่านี้: จนถึงตอนนี้ความคิดก็ไปได้สวย อย่างไรก็ตามเมื่อจุดที่น่าสนใจอยู่ด้านหลังกล้องพิกัด X, Y ที่ได้จะกลับด้าน (เหมือนเป็นบวก / ลบ) และฉันก็ได้เครื่องหมายที่ปรากฏบนมุมตรงข้ามของหน้าจอดังนี้: (จุดที่คาดการณ์ไว้จากนั้นเป็นจุดปลายของเครื่องหมายไม่ต้องคำนึงถึงการหมุนของเครื่องหมาย) มันสมเหตุสมผลแล้วเนื่องจากพิกัดที่อยู่เบื้องหลัง frustum นั้นกลับด้านใน X และ Y ดังนั้นสิ่งที่ฉันทำคือสลับกลับพิกัดเมื่ออยู่ด้านหลังกล้อง อย่างไรก็ตามฉันยังไม่รู้ว่าอะไรเป็นเงื่อนไขที่แน่นอนเมื่อพิกัดควรกลับด้าน นี่คือสิ่งที่รหัสการคาดการณ์ของฉันดูเหมือน (ใน C # กับ SharpDX): public override PointF ProjectPosition(float viewportWidth, float viewportHeight, float y) { var projectionMatrix = Matrix.PerspectiveFovRH(GetCalibratedFOV(Camera.FOV, …

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

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

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

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 …

6
มี (ครอบครัวของ) ฟังก์ชั่นเสียงรบกวนไม่ลดลง monotonically (s)?
ฉันต้องการฟังก์ชั่นในการเคลื่อนไหววัตถุที่เคลื่อนที่จากจุด A ไปยังจุด B เมื่อเวลาผ่านไปเช่นถึงจุด B ในเวลาที่กำหนด แต่ตำแหน่งของมันในเวลาใดก็ได้จะถูกรบกวนแบบสุ่มอย่างต่อเนื่อง แต่ไม่ย้อนกลับ วัตถุเคลื่อนที่ไปตามเส้นตรงดังนั้นฉันต้องการเพียงมิติเดียว ในทางคณิตศาสตร์นั่นหมายความว่าฉันกำลังมองหา f (x) ต่อเนื่อง, x ∈ [0,1], เช่นนั้น: f (0) = 0 f (1) = 1 x <y → f (x) ≤ f (y) ที่คะแนน "มากที่สุด" f (x + d) - f (x) ไม่มีความสัมพันธ์ที่ชัดเจนกับ d (ฟังก์ชั่นไม่ได้เพิ่มขึ้นอย่างสม่ำเสมอหรือคาดการณ์ได้ฉันคิดว่ามันก็เทียบเท่ากับการบอกว่าไม่มีอนุพันธ์ระดับใดคงที่) โดยหลักการแล้วฉันอยากได้ครอบครัวที่มีฟังก์ชั่นเหล่านี้โดยระบุสถานะเมล็ดพันธุ์ ฉันต้องการเมล็ดพันธุ์อย่างน้อย 4 บิต …

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