อะไรคือคณิตศาสตร์ที่เฉพาะเจาะจง, ฟิสิกส์, AI และแนวคิดทั่วไปที่โปรแกรมเมอร์ควรรู้เพื่อพัฒนาเอ็นจิ้นเกม? [ปิด]


9

ในฐานะโปรแกรมเมอร์ของเว็บและแอพพลิเคชั่นศูนย์กลาง DB ฉันมีความรู้ในโครงสร้างข้อมูลเช่นลิสต์ต้นไม้แผนภูมิและอื่น ๆ ฉันใช้อัลกอริธึมโครงสร้างข้อมูลในการเข้ารหัสของฉันเพียงเล็กน้อยยกเว้นการเรียงลำดับสิ่งต่าง ๆ ในอาร์เรย์ธรรมดา ทำงานเกือบทั้งหมดด้วยเฟรมเวิร์กที่เน้นไคลเอนต์ซึ่งมีฟังก์ชั่นหลักทั้งหมดในตัว ฉันรู้ว่า C, PHP, Java, HTML, PL / SQL และ MySQL ฉันกำลังเรียนรู้ Python

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

เป้าหมายของฉันคือ

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

อะไรคือคณิตศาสตร์ที่เฉพาะเจาะจง, ฟิสิกส์, AI และแนวคิดทั่วไปที่โปรแกรมเมอร์ควรรู้เพื่อพัฒนาเอ็นจิ้นเกม?

คำตอบ:


11

โครงสร้างข้อมูล:มันเป็นคำถามที่ถูกต้องแน่นอน อย่างไรก็ตามในขณะที่โครงสร้างข้อมูลบางอย่างมีประโยชน์สำหรับเกมทุกประเภท (เช่นรายการที่คุณได้กล่าวไว้แล้วรายการต้นไม้ ... ) มีบางอย่างที่มีความเฉพาะเจาะจงมาก ยกตัวอย่างเช่น Octrees มีประโยชน์อย่างมากในการเขียนโปรแกรม 3D แต่ในสภาพแวดล้อม 2D ที่บริสุทธิ์คุณอาจไม่ต้องการสิ่งเหล่านั้น

อัลกอริทึม : ใช้กฎของหัวแม่มือเดียวกัน ตัวอย่างเช่นในสภาพแวดล้อม 2D ล้วน ๆ การตรวจจับการชนนั้นทำงานแตกต่างจากในแบบ 3 มิติมาก

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

Next ist Geometry ซึ่งเชื่อมต่อได้ดีกับ Linear Algebra ใน Engine Dev anyways และอาจไม่จำเป็นต้องพูดถึงเลย

ยิ่งกว่านั้นมันไม่เจ็บที่จะมีความเข้าใจพื้นฐานแคลคูลัส สิ่งนี้มีประโยชน์เมื่อต้องรับมือกับ Physics Engine หรือหัวข้อ Shading ขั้นสูง

หัวข้อที่น่าสนใจอื่น ๆ ควรเป็น: Combinatorics สถิติ

สาขาฟิสิกส์:มันไม่จำเป็นถ้าคุณตั้งใจจะสร้างเกมง่ายๆ ไม่เจ็บ แต่คุณจะได้รับความดีกับฟิสิกส์ระดับมัธยมในกรณีนี้

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

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

คุณต้องการพัฒนาเกมประเภทใด บางทีฉันสามารถอธิบายรายละเอียดเพิ่มเติมเกี่ยวกับคะแนนเหล่านี้ด้วยข้อมูลนี้


ขอบคุณสำหรับคำตอบของคุณอย่างละเอียด เป็นคำตอบสำหรับคำถามของคุณ .. ตอนนี้ฉันไม่มีความคิดใด ๆ ในสมองของฉัน แต่ต้องการพัฒนาเอ็นจิ้นเกมสามมิติ แต่คิดว่าดีกว่าที่จะเริ่มด้วยเกม 2d และทำความรู้จักกับสิ่งแวดล้อม ก่อนหน้านี้ฉันควรจะเล่นเกมเพื่อให้รู้ว่ารูปลักษณ์และเกมเป็นอย่างไร (เพราะฉันไม่เคยเล่นวิดีโอเกม :-)) เพื่อให้ง่ายต่อการเข้าใจคำศัพท์ของหนังสือและสิ่งอื่น ๆ ฉันพบว่าด้านล่างมีประโยชน์มาก
droidsites

ขอโทษพลาดลิงค์ในความคิดเห็นก่อนหน้าของฉัน: gamedev.stackexchange.com/questions/8502/ …
droidsites

ในอดีตฉันขอแนะนำให้คุณเริ่มต้นด้วยเกม 2D ก่อนหากคุณต้องการพัฒนาเกม 3 มิติ อย่างไรก็ตามด้วยการจลาจลของสถาปัตยกรรมเช่น XNA ฉันเชื่อว่ามันสนุกมากที่จะดำดิ่งลงใน 3D โดยตรง คุณได้ดู C # / XNA แล้วหรือยัง? ไม่ควรเป็นปัญหาเนื่องจากพื้นหลังการเขียนโปรแกรมของคุณ
Michael Kissner

ไม่ฉันไม่ได้ตรวจสอบ ใช่ ... ไม่ใช่ปัญหาสำหรับ C # แต่ผมสนใจมากในประเภทหลามของสิ่ง :-)
droidsites

หากคุณสนใจ Python และคุณสนใจที่จะสร้างเกมมากกว่าการสร้างเทคโนโลยีเพื่อสร้างเกมคุณอาจลองใช้ Panda3D หรือ Blender Game Engine
Sean Middleditch

1

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

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

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

การตอบสนองการชนอาจแตกต่างกันไปจาก "เรียบง่าย" ไปจนถึงระดับความซับซ้อนที่ไร้สาระและแม้กระทั่งสิ่งที่เรียบง่ายอาจไม่ง่ายในตอนแรก ฉันขอแนะนำเป็นอย่างยิ่งว่าคุณควรทิ้งสิ่งนั้นไว้ในห้องสมุดที่มีอยู่เช่น Bullet, Havok, PhysX หรืออื่น ๆ (หรือ Box2D หากคุณกำลังเล่นเกม 2D) จนกระทั่งและถ้าคุณไม่คุ้นเคยกับคณิตศาสตร์และอัลกอริทึมที่มีอยู่ของคุณ ความรู้และตัดสินใจว่าคุณต้องการเรียนรู้วิธีการทำงานของเครื่องมือฟิสิกส์ ฉันจะแนะนำให้คุณสร้างเอนจินฟิสิกส์ 2D แบบง่าย ๆ เป็นครั้งแรกของคุณ เอ็นจิ้นฟิสิกส์ 3 มิติเป็นสัตว์ที่มีความซับซ้อนอย่างบ้าคลั่งและเป็นส่วนหนึ่งของการเขียนโปรแกรมเกมที่ซับซ้อนและยากที่สุดซึ่งเป็นเหตุผลว่าทำไมเอ็นจิ้นทางฟิสิกส์เป็นเทคโนโลยีของบุคคลที่สามที่ได้รับใบอนุญาตทั่วไป คุณไม่เห็นเกมมากมายที่ไม่ ' ไม่ใช้ Havok หรือ PhysX ในโลกมืออาชีพแม้จะมีเกมจำนวนเท่าใดที่มีเอ็นจิ้นกราฟิกที่พัฒนาขึ้นเองในบ้านและโค้ดเอนจินหลัก แม้แต่ บริษัท ที่ไม่ได้ทำอะไรนอกจากสร้างเกมเอ็นจิ้นโดยทั่วไปแล้วจะอนุญาตให้ใช้เอนจิ้นฟิสิกส์เช่น Unreal เพียงแค่ใช้ PhysX แทนที่จะรวมถึงเอ็นจิ้นฟิสิกส์ของตัวเอง

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

http://www.amazon.com/Mathematics-Programming-Computer-Graphics-Third/dp/1435458869

ประการที่สองคือหนังสือที่ตรวจพบอัลกอริทึมการตรวจจับการชน (ไม่ใช่การตอบสนองการชน!) ซึ่งจะช่วยในการเข้ารหัสกราฟิกและการเข้ารหัสฟิสิกส์ของคุณ:

http://www.amazon.com/Real-Time-Collision-Detection-Interactive-Technology/dp/1558607323

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