ผู้เขียนเกมทุกคนควรรู้คณิตศาสตร์ [ปิด]


163

คำถามง่ายๆพอ: โปรแกรมเมอร์เกมทุกคนควรมีความเข้าใจอย่างถ่องแท้เพื่อให้ประสบความสำเร็จ

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

หมายเหตุ:เนื่องจากไม่มีคำตอบที่ถูกต้องคำถามนี้ (และคำตอบ) คือวิกิชุมชน

นอกจากนี้ถ้าคุณอยากสมการทางคณิตศาสตร์น้ำยางแฟนซีรู้สึกอิสระที่จะใช้http://mathurl.com/


1
mmm ฉันคิดว่ามีหัวข้อที่พูดถึงหนังสือคณิตศาสตร์ทุกโปรแกรมเมอร์ควรอ่านหรืออะไรทำนองนั้นฉันจำไม่ได้จริงๆ ... แต่มันมีบางอย่างที่ดีอยู่ในนั้น .... ไม่แน่ใจว่ามันอยู่ที่นี่หรือ stackoverflow เช่นกันฮ่า ๆ ๆ
สูงสุด


@Prix: คุณหมายถึงสิ่งนี้: gamedev.stackexchange.com/questions/1210/ … ;)
Michael Klement

15
ปิดเนื่องจากสร้างสรรค์มากเกินไปโดยTetrad ♦
Thomas Eding

1
@ThomasEding ใช่กว้างเกินไปอาจเหมาะสมกว่าเนื่องจากนี่เป็นคำถามที่ชัดเจน
Anko

คำตอบ:


137

มีคณิตศาสตร์อีกหลายรูปแบบที่มีประโยชน์ แต่อย่างน้อยที่สุดคุณต้องรู้สิ่งเหล่านี้:

  • พีชคณิตและเลขคณิต

สิ่งเหล่านี้เป็นสิ่งพื้นฐาน แต่ถ้าคุณไม่รู้สิ่งเหล่านี้คุณจะไม่มีโอกาสได้เป็นโปรแกรมเมอร์แม้แต่นักพัฒนาเกม

วัตถุในเกมโลกจะแสดงด้วยเวกเตอร์ เวกเตอร์หมายถึงสิ่งต่าง ๆ เช่นตำแหน่งของวัตถุทิศทางการมองและความเร็ว การคำนวณทางคณิตศาสตร์ของเวกเตอร์เช่นผลิตภัณฑ์ Dot , Cross Productและการทำให้เป็นมาตรฐานของ Vector เป็นสิ่งจำเป็น

ฉันจะย้ายวัตถุเกมของฉันได้อย่างไร สามเณรอาจพูดว่า:

object.position.x++"ฉันรู้ว่าฉันก็จะทำ"

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

เหตุผลหลักที่ใช้เกม quaternions เป็นเพราะพวกเขาเป็นตัวแทนผลัดเกือบจะเป็นพื้นที่ที่มีประสิทธิภาพเป็นสมการได้โดยไม่ต้องทุกข์ทรมานจากGimbal ล็อค Gimbal Lock เริ่มต้นเมื่อมุมออยเลอร์หมุนได้รอบ 90 องศารอบแกนใด ๆ : คุณสูญเสียอิสรภาพในทันที Quaternions แก้ไขปัญหานี้โดยเพิ่มมิติที่สี่ หากคุณติดอยู่กับมุมออยเลอร์คุณจะต้อง จำกัด หนึ่งแกนเพื่อไม่ให้หมุนเกิน ~ 89 องศา

หากคุณกำลังจะเขียนโปรแกรมคณิตศาสตร์สำหรับการตอบสนองทางฟิสิกส์ในเกมการเรียนวิชาฟิสิกส์จะไม่เป็นความคิดที่ไม่ดี

เหตุผลที่คุณจะต้องรู้สมการฟิสิกส์:

  1. ทำให้ลูกบอลเด้ง (ดู: co-efficient ของการชดใช้ความเสียหาย)
  2. ทำให้ลูกบอลเคลื่อนที่ไปในทิศทางที่มีแรง 'x' นิวตัน
  3. ทำให้บางสิ่งมีแรงเสียดทานไม่มากก็น้อยดังนั้นมันจะเลื่อนด้วยความเร็วที่แตกต่างกัน
  4. การตอบสนองการชน: วัตถุจะหมุนไปทางใดเมื่อฉันกด 'ที่นี่'?

ถ้าคุณใช้เอนจิ้นฟิสิกส์ (หรือเอนจิ้นเกมที่มีเอ็นจิ้นฟิสิกส์ติดตั้งอยู่ภายใน) คุณก็สามารถหนีไปได้ด้วยการรู้น้อยมากเกี่ยวกับฟิสิกส์ ถึงกระนั้นมันก็ค่อนข้างดีที่จะรู้ว่าเมื่อคุณต้องการทำให้มือสกปรกเพราะเครื่องมือฟิสิกส์ทำงานได้ไม่ดี


1
สำหรับฟิสิกส์บทความของ Chris Hecker เกี่ยวกับการเปลี่ยนแปลงของร่างกายที่แข็งแกร่งรวมถึงการตอบสนองการชนและการชดใช้ความเสียหายที่ยิ่งใหญ่: chrishecker.com/Rigid_Body_Dynamics
tenpn

25
คุณพูดถึง quaternions แต่ไม่เปลี่ยนเมทริกซ์?
Andrew Russell

8
"Gimble [sic] lock คือเอฟเฟกต์ที่เมื่อคุณเลื่อนเมาส์เพื่อดูมันจะหยุดลงเมื่อคุณมองลงไปที่ ... " ที่จริงแล้วมักจะทำเพื่อผู้เล่นที่มีสติและไม่มีอะไรเกี่ยวข้องกับ gimbal lock

4
มันทำให้ฉันประหลาดใจเพียงใดที่ควอเทอร์เนียนเชื่อมโยงกับการล็อคแบบ gimble ฉันเขียนเกมสามมิติโดยไม่มีการดัดแปลงใด ๆ และไม่เคยมีปัญหาการล็อคที่น่ากลัว หากคุณเข้าใจคณิตศาสตร์แบบ 3 มิติและรู้ว่าล็อค gimble จริง ๆ แล้วคุณจะไม่มีปัญหานั้น
Skizz

7
การล็อกแบบ Gimbal นั้นเกิดจากการหมุนแบบไร้เดียงสากับมุมออยเลอร์ (โดยทั่วไปมุม Tait – Bryan: Yaw, Pitch, Roll) การเป็นตัวแทนทางเลือกเช่น Axis-Angle ยังสามารถใช้เพื่อป้องกันการเกิดขึ้น อย่างไรก็ตามควอเทอร์เนียนมีประโยชน์ในการแก้ไขอย่างง่ายและโดยทั่วไปมักชอบด้วยเหตุผลดังกล่าว
Jason Kozak

51

ฉันฝันถึงวันที่การพัฒนาเกมเป็นไปตามข้อมูลที่ขับเคลื่อนเหมือนกับงานสร้าง ฉันไม่เห็นที่ใด ๆ บนขอบฟ้าดังนั้นสำหรับตอนนี้รู้ว่าคณิตศาสตร์บางอย่างดูเหมือนจะมีความจำเป็น

คณิตศาสตร์เป็นเหมือนเทคนิคยิ่งคุณใช้มันได้นานเท่าไหร่ก็ยิ่งดีเท่านั้น

นี่คือลำดับความสำคัญที่ฉันเห็น

  • คณิตศาสตร์
  • พีชคณิตเชิงเส้น (พร้อมการตีความทางเรขาคณิต)
  • แคลคูลัส (ฟิสิกส์)
  • Combinatorics (ระดับสุ่ม)
  • ความน่าจะเป็น (สมดุล)
  • สถิติ (Bayesian esp. สำหรับ AI)

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


4
แคลคูลัสเป็นสนามขนาดใหญ่ อาจจำเป็นต้องใช้เพียงเล็กน้อยในการพัฒนาเกม
Noldorin

2
@ โนลโดรินครับ ในสถานการณ์ส่วนใหญ่การทำความเข้าใจความสัมพันธ์ระหว่างอนุพันธ์ความเร่งความเร็วและตำแหน่งอาจเพียงพอ ... แต่แคลคูลัสนั้นยอดเยี่ยม
Jonathan Fischoff

Bayesian AIs มีแนวโน้มที่จะไม่ได้ใช้สำหรับเกมเนื่องจากการใช้หน่วยความจำขนาดใหญ่ค่อนข้างดี debuggability และคาดการณ์ได้ดีและพื้นที่ปัญหาที่กำหนดไว้อย่างดี การใช้การค้นหาแบบคลาสสิกที่ดีพร้อมการวิเคราะห์พฤติกรรมที่ชาญฉลาดมักเป็นเครื่องมือที่ดีกว่า (แต่ไม่เสมอไป)

1
สำหรับฉันมันไม่ใช่อัลกอริทึมแบบเบย์ที่ฉันพบว่ามีความสำคัญ แต่เข้าใจกระบวนการให้เหตุผลตามที่ ET Jaynes นำมาใช้ ฉันไม่คิดว่าอะไรที่ช้าลงเกี่ยวกับการใช้เหตุผลแบบเบย์
Jonathan Fischoff

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

25

พื้นฐานที่หนึ่งคือทฤษฎีบทพีทาโกรัส เรียกอีกอย่างว่าสูตรระยะทาง

a ^ 2 + B ^ 2 c = ^ 2โดยที่aและbเป็นขอบของสามเหลี่ยมมุมฉากและcคือด้านตรงข้ามมุมฉาก ซึ่งหมายความว่าในการค้นหาความยาวของเวกเตอร์คุณต้องทำสิ่งนี้:

distance = sqrt (a ^ 2 + b ^ 2)

สิ่งที่น่าสนใจอีกอย่างคือถ้าคุณเพิ่งเปรียบเทียบระยะทางคุณไม่จำเป็นต้องใช้สแควร์รูท (ซึ่งอาจมีค่าใช้จ่ายค่อนข้างสูง) นั่นเป็นสาเหตุที่เฟรมเวิร์กส่วนใหญ่มีฟังก์ชัน "distance squared" หรือ "length squared" สำหรับเวกเตอร์


1
ผมค่อนข้างมั่นใจว่าผมเคยอ่านที่ไหนสักแห่งอื่น ๆ บนเว็บไซต์นี้ก่อน :)
ricket

แน่นอนว่าโพสต์นี้ได้รับแรงบันดาลใจจากกระทู้ / ความคิดเห็นนั้น
Tetrad

ฉันจะได้รับเดจาวูที่นี่ ... :)
mmyers

2
โดยทั่วไปความยาวของเวกเตอร์คือสแควร์รูทของผลคูณจุดด้วยตัวมันเอง ดังนั้นsqrt(V dot V)ความยาวของมันคือ ดังนั้นระยะห่างระหว่างสองจุดคือ:sqrt((A-B) dot (A-B))
greyfade

ที่ยอดเยี่ยมคือการเข้าใจในบริบทของตัวตนตรีโกณมิติsin² (x) + cos² (x) = 1

19
  • ตรวจสอบทั้ง 3D และ 4D และสิ่งที่ควรกำหนดให้ส่วนประกอบ W
  • ระบบพิกัดทางซ้ายและขวาและเป็นที่หนึ่งในเกมของคุณ
  • ผลิตภัณฑ์ดอทและสิ่งที่มีประโยชน์
  • ผลิตภัณฑ์ข้ามและสิ่งที่มีประโยชน์
  • เมทริกซ์วิธีแสดงถึงการวางแนวและตำแหน่งและวิธีรวมเข้าด้วยกัน
  • quaternions

แม้ว่าคุณจะไม่ใช่ The Graphics Guy คุณก็จะใช้เวกเตอร์และคณิตศาสตร์เวกเตอร์ 80% ของเวลา พวกเขาเป็นหัวหอมของโบโลเนสที่สนุกของเรา


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

3
@Tradrad วิกิพีเดียไม่ได้ให้คุณอย่างนั้นหรือ en.wikipedia.org/wiki/Dot_product#Definition
Jonathan Fischoff

1
ไม่ใช่สำหรับเกมโดยเฉพาะไม่มี
Tetrad

5
มันทำ มันบอกคุณว่าดอทโปรดัคคือโคไซน์ของมุม นั่นคือทั้งหมดที่คุณต้องรู้ (และสามารถรู้ได้) เนื่องจากแอปพลิเคชันยังคงขึ้นอยู่กับสิ่งที่คุณต้องการใช้ การวางแนว AI หรือไม่ คุณต้องการมุมดังนั้นจุดคือเพื่อนของคุณ แสดงแสง? คุณต้องการมุม สิ่งที่กล่าวได้ก็คือมัน (ผลคูณของจุดในกรณีนี้) นิยามโคไซน์ของมุมคูณความยาวของเวกเตอร์ a, คูณความยาวของเวกเตอร์ b นั่นคือความรู้ที่สามารถให้ได้ ส่วนใดที่ใช้งานและไม่สามารถบอกได้ว่าแอปพลิเคชันนั้นไม่มีที่สิ้นสุด
Kaj


10

เข้าใจ บริษัท+, -, และ* /หากไม่มีพวกเขาคุณจะเมาอย่างสมบูรณ์


12
ฉันคิดว่าเราทุกคนสามารถเห็นด้วยกับสิ่งนี้ไม่ใช่คำถามที่ถาม (เช่นคุณลืม%)
coderanger

2
คำตอบอื่น ๆ ได้รับการโหวตสำหรับเรื่องนี้ (เลขคณิตพื้นฐาน) ....
RCIX

7
ไม่ใช่แค่เลขคณิตพื้นฐาน แต่เข้าใจว่าการทำงานทั้งหมดนั้นทำงานในสภาพแวดล้อม twos-complement, fixed point และ IEEE หรือไม่ หากไม่เข้าใจอย่างลึกซึ้งว่าทำไม 0.1 * 3! = 0.3 หรือทำไม -x อาจไม่ใช่สิ่งที่คุณคาดหวัง

1
@ user744 ฉันเมาจริง ๆ เวทมนตร์นี้คืออะไร?
Neon Warge

9

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

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

หากคุณต้องการสร้างแบบจำลองฟิสิกส์ระยะไกลที่เหมือนจริงคุณต้องมีแคลคูลัสสำหรับสิ่งนั้น (นี่คือสิ่งที่ทำให้นิวตันขับเคลื่อนให้สร้างแคลคูลัสหลังจากนั้น)

การคำนวณความน่าจะเป็นประเภทใด ๆ นั้นจำเป็นต้องมีความรู้เกี่ยวกับสถิติและทฤษฎีความน่าจะเป็นเพื่อให้ได้ผลลัพธ์ที่มีสติโดยไม่ต้องมีการลองผิดลองถูก

อาจมีอีกมาก แต่นั่นคือสิ่งที่อยู่ในใจออกมาจากหัวของฉัน


ฉันจำได้ว่าตอนที่น้องชายของฉันพยายามสร้างเกม Bang-Bang เป็นโปรเจ็กต์สำหรับชั้นเรียน VB ของโรงเรียนมัธยมของเขา เขาทำทุกอย่างออกไปได้เว้นแต่เขาจะไม่รู้ว่าจะทำให้ลูกกระสุนปืนใหญ่บินไปในแนวโค้งตามมุมและพลังได้อย่างไรเพราะเขายังไม่ได้รับ Trig 1 หลังจากที่ฉันอธิบายพื้นฐานแล้วมันก็ใช้ได้ดี
Mason Wheeler

s=u.t + a.t.t/2ไม่มีหนุนที่จำเป็นสำหรับโค้งเพียงแค่ใช้ คุณต้องใช้ตรีโกณมิติเพื่อรับความเร็วเริ่มต้น (u)
Skizz

ทำไมถึงไม่สูงกว่านี้? โปรแกรมเมอร์ครึ่งหนึ่งที่ฉันทำงานด้วยไม่สามารถใช้ไซน์และโคไซน์สำหรับชีวิตของพวกเขาได้
zaratustra

@Skizz: ใช่ คุณต้องใช้ตรีโกณฯ เพื่อเปลี่ยนมุมและพลังงานให้เป็นเวกเตอร์เริ่มต้น หลังจากนั้นคุณเพียงแค่ต้องการวนลูปภาพเคลื่อนไหวและค่าคงตัวโน้มถ่วง
Mason Wheeler

9

อย่างน้อยที่สุดคุณจะต้อง

  • พีชคณิต
  • เรขาคณิตพื้นฐาน
  • ตรีโกณมิติพื้นฐาน

คุณจะต้องมีความรู้เกี่ยวกับการทำงานของ Vector อย่างน้อยและคุณต้องการทราบว่า Matrix คืออะไรและสามารถใช้งานได้ถึงแม้ว่ารายละเอียดจะไม่จำเป็นอย่างเคร่งครัด

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


9

Binaryและเลขฐานสิบหกระบบหมายเลขและวิธีการแปลงให้ / จากตัวเลขทศนิยม

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

Hex ไม่ค่อยสำคัญเท่าไหร่ (เว้นแต่คุณต้องการประมวลผล0xDEADBEEF ) แต่อย่างน้อยที่สุดคุณจะต้องจดจำเมื่อมีการใช้งานและทำไม


1
หากคุณไม่สามารถอ่าน hex คุณจะไม่สามารถโปรแกรมได้อย่างมีประสิทธิภาพ ค่าคงที่บิตค่าบิตส่วนใหญ่ใน C และ C ++ จะถูกระบุเป็นค่าเลขฐานสิบหก

ฉันคิดว่าคุณมีBooleanและbinaryมั่ว ไม่แน่ใจว่าพวกเขาจำเป็นสำหรับการเขียนโปรแกรมเกม
Skizz

@Skizz จุดดี - คงที่ (และอีกจุดเล็ก ๆ น้อย ๆ มันเป็นวิกิ - ไม่มีอะไรหยุดคุณจากการเปลี่ยน :)
ไซคลอปส์

หากคุณไม่สามารถอ่าน hex ให้ใช้เครื่องมือในการแปลงให้คุณ
Thomas Eding

6

ไม่มีการกล่าวถึงพื้นฐานทางคณิตศาสตร์ของการเขียนโปรแกรมคอมพิวเตอร์หรือไม่? ทฤษฎีกราฟทฤษฎีจำนวนทฤษฎีเซตและคณิตศาสตร์ที่เป็นรูปธรรมมักจะรวมเข้าด้วยกันเป็นคลาสที่เจ็บปวดและมีคุณภาพต่ำที่เรียกว่า "คณิตศาสตร์ไม่ต่อเนื่อง" ที่มหาวิทยาลัย

"เคล็ดลับ Stupid บิต" บันทึกเวลาของโปรแกรมทุกชนิด (และพวกเขามักจะเทียบเท่ากับเทคนิคสตริงและชุดเทคนิค), ชนิดกราฟและการสำรวจเส้นทางจะถูกใช้ทั่วสถานที่ (แม้ว่าคุณจะเพียงแค่เลือก STL คอนเทนเนอร์) และความซับซ้อนของอัลกอริทึมคือกุญแจสำคัญในการปรับให้เหมาะสมเมื่อภาษามีระดับที่สูงขึ้น


5

ฉันคิดว่าเมทริกซ์ผลตอบแทนเป็นเครื่องมือที่สำคัญทีเดียว เกมมักจะสนุกกว่าเมื่อพวกเขาเข้าใกล้สมดุลการเล่นที่ยุติธรรมซึ่งมีผลรวมเป็นศูนย์ที่น่าสนใจและเมทริกซ์การจ่ายผลตอบแทนจะช่วยให้คุณหาจำนวนในกรณีที่ซับซ้อน ฉันเดาว่าบทความวิกิพีเดียนี้ดีพอ ๆ กับแนวคิดพื้นฐานที่จำเป็น: http://en.wikipedia.org/wiki/Normal-form_game


ดูเหมือนว่าฉันจะทำสิ่งนี้ไม่ได้ คุณคิดว่า Starcraft หรือ Warcraft 3 มีความสมดุลโดยใช้วิธีการเช่นนี้หรือไม่? ฉันไม่คิดอย่างนั้นฉันเชื่อว่ามันเป็นการวนซ้ำและการทดสอบและการปะต่ออย่างต่อเนื่อง
bobobobo

เอ่อพวกมันเกือบจะแน่นอนแล้วกองทัพของ warcraft เริ่มต้นถูกดัดแปลงซ้ำกันซึ่งอาจถูกสร้างขึ้นด้วยเมทริกซ์ผลตอบแทนที่ออกแบบมาเพื่อทำให้พวกมันสมดุลโดยรวม หลังจากนั้นพวกเขาอาจสร้างสิ่งที่พวกเขาเรียนรู้ที่จะปรับแต่งสิ่งต่าง ๆ แต่พวกเขาอาจจะต้องทำมันอีกครั้งด้วย starcraft เพื่อให้ได้ระดับสมดุลที่เหมาะสมในขณะนี้ที่กองทัพต่าง ๆ สามกองทัพเข้ามาเกี่ยวข้อง เห็นได้ชัดว่าคุณไม่ได้หยุดอยู่แค่ตัวแบบ playtesting มักจะแสดงคุณสมบัติที่โผล่ออกมา แต่เมทริกซ์ผลตอบแทนคือความซับซ้อนของแบบจำลองในตอนแรก
Kzqai

[ต้องการอ้างอิง]?
bobobobo

1
มันเป็นแบบนี้: amazon.com/Game-Ar Architecture-Design- New-Edition/ dp/0735713634/ …ฉันหวังว่ารุ่น amazon เปิดใช้งานการค้นหาภายในหนังสือเพราะมันอาจเป็นสิ่งที่ดีในการอ้างอิงเป็นบิตสำหรับเว็บไซต์นี้ แม้ว่าการค้นหาในหนังสือของ amazon อาจไม่ได้ผลเช่นนั้น อย่างไรก็ตามนั่นคือที่ที่พวกเขาไปฝึกอบรมเรื่องการจ่ายผลตอบแทนโดยใช้ warcraft เป็นตัวอย่างและข้อดีของการจัดการความซับซ้อนนั้นชัดเจนมากมันทำให้ฉันเปลี่ยนใจได้ทันที นั่นไม่ใช่การรับประกันว่า Blizzard ใช้วิธีการนั้นจริง ๆ แต่พวกเขาเป็นคนฉลาดดังนั้นพวกเขาจึงอาจมีวิธีแก้ปัญหาทางคณิตศาสตร์ ...
Kzqai

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

4

ทำความเข้าใจกับผลคูณของจุด: ถ้าเวกเตอร์สองตัวมีทิศทางเดียวกัน, (theta <90 องศา), จากนั้นผลคูณของจุดนั้นเป็นบวก, หรืออย่างอื่น, เป็นลบ มันสามารถใช้ในการทดสอบเมื่อใดก็ตามที่ผู้เล่นอยู่ในสายตา (สมมติว่า FOV คือ 90 องศา)

และทำให้เกม 2D ทั่วไปของคุณมีขนาดใหญ่ขึ้น (ใช้การคำนวณเวกเตอร์)

หากคุณสามารถสร้างเอ็นจิ้น 3 มิติได้ด้วยตัวเองคุณก็พร้อมที่จะไป


4

มันขึ้นอยู่กับสิ่งที่คุณทำ

โปรแกรมเมอร์เกมทุกคนควรรู้พีชคณิตของโรงเรียนอย่างน้อยที่สุด นั่นหมายความว่า:

  • ความรู้สึกที่ดีของตัวเลข
  • สะดวกสบายกับคณิตศาสตร์พื้นฐาน (เพิ่ม, ย่อย, หลายส่วน, หาร)
  • ตรีโกณมิติ (บาปและ cos)
  • เวกเตอร์, มุมระหว่างเวกเตอร์, ดอทโปรดัค, ครอสโปรดัค

โปรแกรมเมอร์กราฟิกของคุณต้องรู้:

โปรแกรมเมอร์ฟิสิกส์ของคุณต้องรู้:

  • จากทั้งหมดข้างต้นและ
  • สมการเชิงอนุพันธ์
  • วิธีการเชิงตัวเลข

3

นอกจากไซน์และโคไซน์ (ซึ่ง 50-75% ของโปรแกรมเมอร์ที่ฉันเคยรู้จักไม่รู้วิธีใช้), เรียนรู้ฟังก์ชั่นอาร์ค - แทนนที่มีมนต์ขลังและวิธีใช้มันเพื่อให้ได้มุมเวกเตอร์ใด ๆ


5
ในกรณีส่วนใหญ่คุณต้องการatan2ตั้งแต่นี้จะจัดการกับการจัดการด้าน Quadrant ด้วยตัวเอง
CodesInChaos

0

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


2
ฉันพูดถึง quaternions
tenpn

อ๊ะขอโทษฉันพลาดไป
Raoul

3
สำหรับ 1% ของโปรแกรมเมอร์เกมที่เขียนโค้ดอนิเมชั่นระดับต่ำในเอ็นจิ้นการเรนเดอร์ quaternions เป็นเครื่องมือที่มีประโยชน์ สำหรับโปรแกรมเมอร์เกมอื่น ๆ 99% พวกเขาไม่ต้องการจริงๆ
Skizz

-1

การทำเกมเกี่ยวกับการนำชีวิต "ของจริง" มาสู่ความเป็นจริงเสมือน มันเป็นการดีที่จะรู้มากขึ้นเกี่ยวกับโลกแห่งความเป็นจริง / จักรวาลน้อยกว่า :) .. คณิตศาสตร์เป็นเครื่องมือเท่านั้น และถ้าคุณกำลังวางแผนคุณต้องใช้เวลาในการศึกษาในแผนด้วย

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


1
เตตริสในชีวิตจริงมีเท่าไร?
tenpn

มากมาย :). เตตริสเป็นเรื่องของการคิดเชิงตรรกะภายใต้ความกดดัน เหมือนเกมลอจิคัลอื่น ๆ มันเกี่ยวกับการฝึกฝน ฝึกฝนมากขึ้นดันมากขึ้นคุณสามารถจัดการและยังคงสนุกจากมัน ดูเหมือนว่าชีวิตจริงสำหรับฉัน
:)

3
คุณไม่สมเหตุสมผลเมื่อคุณไม่สามารถตอบคำถามได้อย่างยุติธรรม
Heath Hunnicutt

@Heath Hunnicutt คุณพูดถูก
samboush

3
ฉันเคารพคำตอบนั้นจริงๆ
Heath Hunnicutt

-2

คำตอบง่ายๆ: มาก ๆ !

คำตอบโดยละเอียด:

คณิตศาสตร์, ระดับประถมศึกษาและพีชคณิตเชิงเส้นในกรณีส่วนใหญ่ Trig หากคุณสร้างเกม 3 มิติ, แคลคูลัสแน่นอนและฟิสิกส์ (ฟิสิกส์ต้องการแคลคูลัส)!


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