2 คะแนน โดย GN⁺ 2025-07-27 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • การสร้าง ยานพาหนะในเกม ให้ความสำคัญกับ ประสบการณ์การเล่น มากกว่าการใช้เอนจินฟิสิกส์จริงแบบครบถ้วน
  • เกมแข่งรถและเกมจำลองแต่ละเกมมีความแตกต่างกันในด้าน วิธีควบคุมรถและความดื่มด่ำ
  • การจำลองยานพาหนะประกอบด้วย 3 องค์ประกอบหลักคือ เครื่องยนต์/กระปุกเกียร์, ยาง, แชสซี
  • การทำโมเดลยาง และแนวคิดเรื่อง slip คือหัวใจสำคัญในการสร้างความรู้สึกการขับขี่ที่สมจริง
  • ผู้พัฒนาต้องกำหนดระดับของ การทำให้เรียบง่ายและการนามธรรมให้เหมาะกับคอนเซปต์ของเกม ด้วยตนเอง

ทำไมยานพาหนะถึงพิเศษในเกม

ยานพาหนะในเกมถูกใช้เป็น องค์ประกอบเชิงประสบการณ์ที่สำคัญ ในหลากหลายแนวเกม
ทั้งการควบคุมแบบเหนือจริงและการจำลองการขับขี่แบบสมจริง ต่างก็สื่อสาร “ความรู้สึกของการขับ” ได้
ตัวอย่างเช่น Mario Kart และ Assetto Corsa มุ่งไปที่ประสบการณ์ซึ่งแตกต่างกันโดยพื้นฐาน แต่ แก่นของการเขียนโปรแกรมยานพาหนะ นั้นเหมือนกัน
แทนที่จะพยายามจำลองกฎฟิสิกส์ของโลกจริงอย่างแม่นยำ จุดสำคัญคือจะถ่ายทอด สัมผัสของการขับขี่ที่ผู้เล่นคาดหวัง อย่างไร
เป้าหมายของผู้พัฒนาไม่ใช่ “การจำลองที่แม่นยำ” แต่คือ การออกแบบประสบการณ์ที่ตั้งใจให้เกิดขึ้น

ความพยายามช่วงแรกและบทเรียน: AV Racer

ในช่วงแรกของการพัฒนา AV Racer มีการทำให้รถเคลื่อนที่ด้วย โมเดลกลศาสตร์นิวตันแบบง่าย แต่ไม่สามารถให้ความรู้สึกเหมือนรถจริงได้
มีการลองปรับฮาร์ดโค้ดและจูนพารามิเตอร์ซ้ำแล้วซ้ำเล่าสำหรับการหมุน การดริฟต์ ความเร็วเชิงมุม และอื่น ๆ
แม้จะสร้างความรู้สึก “ไถล” เชิงประสบการณ์ได้ แต่ก็ยังไม่ตอบโจทย์ในสถานการณ์สุดขั้วหรือความคาดหวังของผู้ขับจริง
หากขาดความเข้าใจเรื่อง ฟิสิกส์ของรถจริงและประสบการณ์ของผู้ขับ ก็จะชนกับข้อจำกัดพื้นฐานในที่สุด
ท้ายที่สุด หากต้องการทำให้ถูกต้อง ก็จำเป็นต้องศึกษาหลักการของ พลวัตยานยนต์ ในโลกจริง

โครงสร้างของการจำลองยานพาหนะสำหรับเกม

ยานพาหนะในเกมสามารถแบ่งเชิงแนวคิดออกเป็น 3 ส่วนคือ เครื่องยนต์ (รวมกระปุกเกียร์), ล้อ/ยาง, แชสซี

เครื่องยนต์ (รวมกระปุกเกียร์)

  • รับอินพุต เช่น คันเร่ง การเปลี่ยนเกียร์
  • คำนวณ แรงบิดและ RPM แล้วแปลงตามอัตราทดเกียร์
  • มีการป้อนกลับกับล้อ (กล่าวคือ มีการซิงก์สองทางระหว่างเครื่องยนต์กับล้อ)

ยาง (รวมล้อ)

  • รับอินพุตหลากหลาย เช่น แรงบิดจากเครื่องยนต์ เบรก พวงมาลัย น้ำหนัก และแรงเสียดทานผิวถนน
  • แรงทั้งหมดเกิดขึ้นที่ จุดสัมผัสระหว่างยางกับพื้นถนน
  • ใช้การทำโมเดลยาง (เช่น Pacejka Magic Formula) เพื่อสร้างแรงอย่างสมจริง

แชสซี

  • ทำหน้าที่เป็น rigid body ของเอนจินฟิสิกส์
  • ตอบสนองต่ออิทธิพลภายนอก เช่น แรงจากยาง แรงต้านอากาศ แรงโน้มถ่วง และการชน
  • กำหนดการเคลื่อนที่ของรถทั้งคันและส่งผลต่อการเปลี่ยนแปลงของโหลดบนยาง
องค์ประกอบ อินพุตหลัก เอาต์พุตหลัก
เครื่องยนต์/กระปุกเกียร์ คันเร่ง อินพุตเกียร์ ความเร็วล้อ แรงบิดหมุน, RPM
ยาง แรงบิดเครื่องยนต์ เบรก พวงมาลัย โหลด แรงเสียดทาน แรงที่กระทำต่อแชสซี, การซิงก์เครื่องยนต์-ล้อ
แชสซี แรงจากยาง ผลลัพธ์แอโรไดนามิก โหลดล้อ, การเคลื่อนที่โดยรวม

การจำลองรายละเอียดฟิสิกส์ทั้งหมดให้แม่นยำ 100% เหมือนรถจริงนั้น ไม่สมจริงในเชิงปฏิบัติ
หากไม่ใช่ห้องวิจัยของบริษัทรถยนต์ เกมและซิมูเลชันส่วนใหญ่จะใช้โมเดลแบบกล่องดำ สูตรต่าง ๆ และวิธีที่ทำให้ง่ายขึ้น
ดังนั้นสิ่งสำคัญคือผู้ออกแบบต้องตัดสินใจว่า จะละอะไรและจะเน้นอะไร

การออกแบบเครื่องยนต์และระบบส่งกำลัง

เครื่องยนต์ (หัวใจของการคำนวณแรงบิด)

  • ในความเป็นจริงมีความซับซ้อนมาก แต่ในเชิงโค้ดสามารถสร้างเป็นโมเดลกล่องดำอย่างง่ายแบบ อินพุต (RPM, คันเร่ง) → เอาต์พุตแรงบิด ได้
  • เส้นโค้งแรงบิด/กำลังสามารถกำหนดพารามิเตอร์เป็นตัวเลขหรือกราฟ เพื่อจำลองเครื่องยนต์ที่มีลักษณะแตกต่างกันได้
  • ตัวอย่าง: ออกแบบเส้นโค้งด้วย Desmos โดยตรง เพื่อปรับ “บุคลิกของเครื่องยนต์”

กระปุกเกียร์

  • สามารถทำได้อย่างง่ายด้วย ตารางอัตราทดเกียร์
  • การเปลี่ยนเกียร์กำหนด ลักษณะการเร่ง ความเร็วสูงสุด ฯลฯ ของรถ
  • แม้จะเรียบง่าย แต่ส่งผลอย่างมากต่อประสบการณ์การเล่น
เกียร์ อัตราทด
R -2.92
N 0
1 2.50
2 1.61
3 1.10
4 0.81
5 0.68

การซิงก์ RPM ระหว่างเครื่องยนต์กับล้อ

  • RPM ของเครื่องยนต์ และ ความเร็วเชิงมุมของล้อขับเคลื่อน เชื่อมโยงถึงกัน
  • คำนวณเชิงตัวเลขด้วยสมการเชิงอนุพันธ์จากความต่างของตัวแปรสถานะทั้งสอง
  • ทำให้ค่าทั้งสองค่อย ๆ ตรงกันในแต่ละเฟรมในลักษณะ “ไล่ตามค่าเป้าหมาย”

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

โมเดลยาง

บทบาทของยาง

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

แรงตามยาว (การเร่ง/เบรก) และอัตรา slip (Slip Ratio)

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

สมการคำนวณแรงที่สะท้อน Slip Ratio (เช่น Pacejka Magic Formula)

  • ใช้สูตรคำนวณที่รับ Slip Ratio เป็นอินพุตเพื่อให้ได้เส้นโค้งซับซ้อน (เช่น sine/arctangent ที่กำหนดพารามิเตอร์)
  • จำเป็นต้องคำนวณแยกสำหรับยางแต่ละเส้น

แรงด้านข้าง (เข้าโค้ง) และมุม slip (Slip Angle)

  • ระหว่างเข้าโค้ง หน้าสัมผัสของยางจะเปลี่ยนรูปจนเกิด Slip Angle
    • Slip Angle = ความต่างของมุมระหว่างทิศทางการเคลื่อนที่จริงของยางกับทิศที่ล้อชี้อยู่
  • เมื่อ Slip Angle เพิ่มขึ้น จะสร้างแรงยึดเกาะมากขึ้นเรื่อย ๆ แต่หากเกินขีดจำกัดก็จะเริ่มลื่นไถล
  • ความสัมพันธ์ระหว่าง Slip Angle กับแรงยึดเกาะก็มีลักษณะเป็นเส้นโค้งเฉพาะตัวเช่นกัน
  • มีพารามิเตอร์หลายอย่างที่ส่งผล เช่น โหลด แรงเสียดทาน และการเปลี่ยนแปลงแบบไดนามิก

ปรากฏการณ์อย่าง understeer/oversteer

  • Understeer: เมื่อมุม slip ของล้อหน้ามากกว่าล้อหลัง รถจะเลี้ยวได้น้อยกว่าที่ตั้งใจ
  • Oversteer: เมื่อล้อหลังมีมุม slip มากกว่า ส่วนท้ายรถจะไถลออกด้านนอก
  • หากมีโมเดลยางที่ถูกต้อง ลักษณะการควบคุมเหล่านี้จะเกิดขึ้นเองตามธรรมชาติ

ข้อจำกัดร่วมกันของแรงตามยาว/แรงด้านข้าง (Friction Circle)

  • เมื่อยางใช้แรงทั้งในทิศทางเร่ง/เบรกและเข้าโค้ง พร้อมกัน ค่าสูงสุดของแต่ละทิศทางจะส่งผลกระทบต่อกัน
  • วงกลมแรงเสียดทาน (circle/ellipse) : ผลรวมของเวกเตอร์แรงทั้งสองต้องไม่เกินขีดจำกัด
    • (F_{x}^2 + F_{y}^2 \le (\mu F_{z})^2)
  • ตัวอย่าง: เมื่อเบรกแรงและหักพวงมาลัยแรงพร้อมกัน จะสูญเสียการควบคุมได้ง่าย
  • ยางจริงมีลักษณะเป็นเส้นโค้ง/ไม่เชิงเส้น จึงต้องปรับพารามิเตอร์ให้สอดคล้องกับข้อมูลจริง

การคำนวณแรงในโค้ด

  • คำนวณแรงตามยาว/แรงด้านข้างของยางแต่ละเส้นแยกกัน
  • รวมเวกเตอร์ทั้งสองแล้ว normalize (scaling) ให้อยู่ภายในวงกลมแรงเสียดทานสมมุติ
  • หากปรับพารามิเตอร์แบบไดนามิก ก็สามารถทดลองความเปลี่ยนแปลงด้านการควบคุมขั้นสูงได้อย่างง่ายดาย

การรวมเข้ากับฟิสิกส์เอนจินของรถทั้งคัน

  • รวม แรงจากยาง + เอาต์พุตของระบบกันสะเทือน + อิทธิพลภายนอก (แรงโน้มถ่วง แรงต้าน ฯลฯ) เข้าสู่ แชสซี
  • อัปเดตความเร่ง/ความเร็วทุกเฟรมตามกฎการเคลื่อนที่ของนิวตัน

องค์ประกอบเพิ่มเติมที่ขยายได้

  • เรขาคณิตของระบบกันสะเทือน: แคมเบอร์, แคสเตอร์ ฯลฯ
  • พลวัตยางขั้นสูง: อุณหภูมิ การสึกหรอ การขยายตัว การเปลี่ยนโหลด ฯลฯ
  • แอโรไดนามิกส์: แรงกดลง แรงต้าน สปอยเลอร์ปรับอัตโนมัติ
  • ระบบส่งกำลัง/ดิฟเฟอเรนเชียล, ABS, ESP, ข้อจำกัดการเลี้ยว เป็นต้น
  • หากจำเป็นสามารถอ้างอิงหนังสือหลายเล่มได้ เช่น Race Car Vehicle Dynamics(Milliken), Mechanics of Pneumatic Tires(S.K. Clark)

บทสรุป

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

2 ความคิดเห็น

 
dogtree 2025-07-27

ฉันดันอ่านผิดเป็น 'เขียนโปรแกรมรถในรถ' แล้วก็คิดว่า เอ๊ะ แบบนี้มันอันตรายไปหน่อยหรือเปล่านะ

 
GN⁺ 2025-07-27
ความคิดเห็นจาก Hacker News
  • สิ่งที่น่าสนใจคือ แม้ในโลกจริงเครื่องยนต์จะมีชิ้นส่วนที่เคลื่อนไหวได้มากที่สุด แต่ในโค้ดกลับเป็นส่วนที่ง่ายที่สุดส่วนหนึ่งของการจำลองรถทั้งระบบ เพราะหน้าที่หลักของเครื่องยนต์คือเครื่องคำนวณแรงบิด มันให้ความรู้สึกเหมือนกล่องดำที่รับอินพุตหลายอย่างแล้วส่งเอาต์พุตออกมาอย่างเดียวคือแรงบิดการหมุน ขอแนะนำวิดีโอชุด engine simulator ของ AngeTheGreat อย่างมาก มันถูกปรับแต่งมาดีพอที่จะทำงานแบบเรียลไทม์ได้ และน่าทึ่งจริง ๆ ที่มันยังสร้างเสียงเครื่องยนต์ที่สมจริงได้ด้วย ดู วิดีโอ engine simulator ของ AngeTheGreat

    • เกม Automation มีการทำระบบสร้าง/จำลองเครื่องยนต์ไว้ลึกมาก การทดลองเครื่องยนต์แบบต่าง ๆ สนุกจริง ๆ และส่วนการจำลองเสียงก็ยืมแนวคิดบางส่วนจากที่พูดถึงในวิดีโอของ AngeTheGreat ด้วย

    • ทำให้นึกถึงตัวอย่างคลาสสิกของการแอนิเมตลูกบาศก์ใน Houdini มีความสนุกแบบเดียวกับการได้เห็นสิ่งไม่คาดคิดเกิดขึ้นในการจำลองเครื่องยนต์สันดาปภายในแบบเรียลไทม์ ดู ตัวอย่างการแอนิเมตลูกบาศก์ใน Houdini

    • เหตุผลที่ผมเริ่มเขียนโปรแกรมก็เพราะพ่อกำลังเขียนเครื่องจำลองเครื่องยนต์ด้วย BASIC พ่อเป็นวิศวกรเครื่องกลและอยากเปรียบเทียบเส้นโค้งแรงบิดของเครื่องยนต์หลายแบบ ตอนที่เขาวาด wireframe ของลูกสูบ ชุดข้อเหวี่ยง และเพลาข้อเหวี่ยงที่เคลื่อนไหวด้วยเฟรมที่สั้นกว่าหนึ่งวินาทีโดยใช้คำสั่ง CIRCLE กับ LINE มันทำให้ผมช็อกมากว่าคอมพิวเตอร์สามารถวาดและทำให้บางอย่างเคลื่อนไหวได้ การได้รู้ว่าคนนี้ทำเรื่องคล้ายกันเพื่อสร้างเสียงรถแข่งที่ดีกว่ายิ่งน่าประทับใจจริง ๆ

    • มอเตอร์ EV ไม่ได้เรียบง่ายกว่ามากหรอกหรือ? เครื่องยนต์นั้นแพงและซับซ้อนเพราะใช้การระเบิดเล็ก ๆ เพื่อสร้างแรงบิด เลยสงสัยว่ารถส่วนใหญ่ในเกมจริง ๆ แล้วเคลื่อนที่เหมือน EV มากกว่าหรือเปล่า เว้นแต่ว่าจะจำลอง ICE (เครื่องยนต์สันดาปภายใน) ให้แม่นยำกว่านี้

  • ผมเคยรับผิดชอบงานจำลองรถทั้งหมดใน Army of Two และบทความนี้เป็นคู่มือเริ่มต้นที่ดีมาก การใช้โมเดลยางของ Pacejka กับทรานส์มิสชันดิฟเฟอเรนเชียลช่วยได้มาก นอกเหนือจากนั้น สิ่งที่น่าแปลกคือฟิสิกส์ของ anti-roll bar และระบบกันสะเทือนสำคัญมากต่อการทำให้การขับ “สนุก” ถ้าขาดสิ่งนี้ การขับจะลื่น ๆ และไม่ชวนอิน ซึ่งในวิดีโอเดโมก็มีความรู้สึกนั้นอยู่เหมือนกัน ถ้าไม่ทำ anti-roll bar และระบบกันสะเทือน รถจะคว่ำง่าย ทำให้คุณมัวแต่ไปไล่ปรับการลื่นไถลของยางหรือค่าความเสียดทานของพื้นผิว ทั้งที่จริงแล้วประสบการณ์การขับกลับแย่ลง

    • ขอบคุณมากสำหรับข้อมูลนี้! ไม่รู้มาก่อนเลยว่า anti-roll bar สำคัญขนาดนั้นในโมเดลพื้นฐาน ผมตั้งใจจะไปศึกษาเพิ่ม และถ้าทำได้ดีจะอัปเดตในบทความด้วย

    • ช่วงนี้ระบบกันสะเทือนรถผมมีปัญหา เลยได้สัมผัส “การขับที่ไม่สนุก” ด้วยตัวเอง ยิ่งรู้สึกร่วมกับคำพูดนี้มากขึ้น

  • เนื้อหานี้คล้ายกับสิ่งที่ผมไปค้นพบเองตอนทำเกม Flightle มาก ผมทำเกมจำลองการบินแบบ side-scrolling สำหรับมือถือ แต่การเคลื่อนไหวของเครื่องบินมันดูประหลาดมาก จนผมหงุดหงิดแล้วคิดว่า “มันจะยากอะไรนักหนา?” เลยเริ่มทำเอง พอศึกษาหลักการบินก็พบว่าระดับของ abstraction ที่เหมาะสมสำคัญมาก ถ้าไม่สมจริงพอก็ไม่สนุก แต่ถ้าสมจริงเกินไปก็บาลานซ์เกมยาก ดู ลิงก์ Flightle

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

    • เล่นเกมแล้วสนุกมาก สำหรับผู้ใช้เดสก์ท็อป ขอเสนอว่าอาจให้ควบคุมสไลเดอร์ด้วยล้อเลื่อนเมาส์ได้

  • เมื่อก่อนผมเคยทำเกมจำลองรถและการดริฟต์บน iOS มันใช้ SpriteKit แต่จริง ๆ แล้วทำได้ง่ายในเอนจินเกม 2D ไหนก็ได้ ไอเดียพื้นฐานคือเอาล้อหน้าสองล้อเชื่อมกับตัวถังสี่เหลี่ยมด้วย pin joint แล้วออกแรงกับล้อ มุมของแรงคำนวณแบบนี้: x = force * cos(bodyRotation + wheelRotation) y = force * sin(bodyRotation + wheelRotation) จากนั้นก็เพิ่มอนุภาคสกิดเข้าไปด้วย ส่วนการดริฟต์ผมทำโดยปรับค่า damping ของล้อและตัวถัง ดู แอป Drift Mania Infinite Car Racer

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

    • เกมเจ๋งมาก ตลาดแอปแข่งขันกันหนักขนาดนี้ แต่ได้รีวิวตั้ง 22 รายการถือว่าน่าทึ่งเลย อยากรู้ว่าคุณโปรโมตยังไง

    • “เกมนี้มอบกราฟิกอันน่าทึ่ง...” มุกถ่อมตัวแบบนั้นน่าเอ็นดูมาก กำลังดาวน์โหลดเลย

  • บทความนี้น่าสนใจจริง ๆ แค่ส่วนโมเดลยางก็คงอ่านซ้ำหลายรอบแล้ว ถ้าไม่ต้องการทั้งการจำลองหรือความสมจริง ขอแค่ความสนุก เกมอาร์เคดยุค 1980 อย่าง Super Sprint ก็ยังไม่มีใครโค่นได้ ดู ข้อมูลเกม Super Sprint

  • ขอคัดลอก/วางบางส่วนจากบันทึกเลกเชอร์ที่เกี่ยวข้องซึ่งผมเก็บไว้: Hamish Young, ฟิสิกส์รถและไดนามิกยางใน ‘Just Cause 4’ Vehicle Physics and Tire Dynamics in 'Just Cause 4' Jan Erik Steel & Patrick Donnelly, ฟิสิกส์รถ Supercharged ใน ‘Skylanders’ Supercharged! Vehicle Physics in 'Skylanders' Edward Pereira, เลกเชอร์เกี่ยวกับวิทยาศาสตร์ของการขับออฟโรด The Science of Off-Roading Jared Cone, ฟิสิกส์ของ ‘Rocket League’ It IS Rocket Science! The Physics of 'Rocket League' Detailed

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

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

    • ผมคิดว่าประเด็นนี้ไม่ใช่เรื่อง ‘realism’ แต่เป็นเรื่อง ‘verisimilitude’ มากกว่า สิ่งสำคัญคือการสร้างประสบการณ์ที่ผู้เล่น “เชื่อได้” ปืนในเกมต่างจากของจริง แต่ให้ความสำคัญกับแฟนตาซีว่ามันทรงพลังและน่ากลัว การกระโดดก็เช่นกัน แม้จะไม่ได้มีฐานจากความจริงนัก แต่ถูกออกแบบให้เหมาะกับเป้าหมายของเกมมากที่สุด ในทางกลับกัน สิ่งอย่างรถยนต์ที่สามารถทำให้เป็นระบบและอิงข้อเท็จจริงทางฟิสิกส์ได้ ก็มักมุ่งไปสู่การนำเสนอที่สมจริงจนเทียบกับซิมูเลชันในอุตสาหกรรมได้ แต่การเคลื่อนไหวของมนุษย์ ระบบเศรษฐกิจ หรือจังหวะการต่อสู้ กลับยากกว่าจะทำให้สมจริงในระดับนั้น จึงมักถูกนำเสนอแบบการ์ตูนมากกว่า นักออกแบบเกมต้องประนีประนอมให้เหมาะกับความคาดหวังของผู้เล่นและเป้าหมายรวมของเกม การไล่ตามความสมจริงเชิงรายละเอียดมากเกินไปจนทำให้โครงสร้างโดยรวมพัง เป็นกับดักที่พบบ่อย

    • ตัวอย่าง FPS เป็นสิ่งที่ผมนึกขึ้นมาสด ๆ ตอนอยู่บนเวที แต่พอคิดดูดี ๆ ก็พบว่าไม่ใช่ตัวอย่างที่ดีนัก ขอบคุณที่ทักท้วง

  • เหมือนจะขาดเรื่องเนิน ทางลาด และระบบกันสะเทือนไป Unreal Engine มีทั้งเดโมรถแบบง่ายมาก และเดโมที่มีโมเดลระบบกันสะเทือนจริงด้วย

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

    • อย่างที่ Wassim พูดไว้ในช่วงถาม-ตอบ ระบบกันสะเทือนเป็นสิ่งที่เอนจินฟิสิกส์จัดการให้เอง และผลของมันก็สะท้อนอยู่ในโหลดของยาง จึงส่งผลต่อแรงจากยางอย่างเป็นธรรมชาติด้วย

  • มีเลกเชอร์ GDC ที่ดีเกี่ยวกับฟิสิกส์รถใน Rocket League ดูได้ที่ เลกเชอร์ฟิสิกส์ Rocket League อนึ่ง ผมเป็นเพื่อนร่วมทีมที่ดูแลงานส่วนอื่น ไม่ได้ทำตัวเกมไคลเอนต์ของ Rocket League โดยตรง

  • อ่านบทความนี้แล้วทำให้นึกถึงเลกเชอร์ดี ๆ เรื่องฟิสิกส์การแข่งรถ Andre Marziali - Physics of Racing