ฉันควรใช้เครื่องมือฟิสิกส์เมื่อใด [ปิด]


12

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

ต้องขอบคุณมันมากที่จะจัดการทุกอย่างจากการชนไปจนถึงฟิสิกส์ที่แท้จริง

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

เพื่อประเมินคำถามของฉัน: คุณจะใช้ Box2D (หรือเอนจิ้นฟิสิกส์อื่น ๆ ) ในเกมที่ฟิสิกส์ง่ายจริงๆ (เช่น Super Mario, สมมติว่า)? และถ้าไม่ทำไม?


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

@Jeff: ขึ้นอยู่กับว่าคำถาม "ฉันควรใช้ Box2D เมื่อไร" หรือ "ฉันควรใช้เครื่องมือฟิสิกส์เมื่อใด" มาริโอใหม่ประกอบด้วยเครื่องยนต์ฟิสิกส์แน่นอน

1
@Joe Wreschnig: ใช่ แต่เคยมีกรณีที่ไม่มีการใช้กลไกทางฟิสิกส์หรือไม่? เวลาเท่านั้นที่ฉันสามารถคิดว่าจะเป็นการผจญภัยข้อความหรือชี้และคลิก ฉันเดาว่ามันขึ้นอยู่กับว่าคุณต้องการสร้างนิยามของ
Jeff

@ เจฟฟ์: เกมปริศนาบางอย่าง (ไม่ใช่วิชาฟิสิกส์) จำเป็นต้องใช้อย่างใดอย่างหนึ่งเช่น Tetris, Bejeweled ในเกมแอ็คชั่นฉันสามารถโต้แย้งได้ว่า shmups 2D ส่วนใหญ่ไม่ได้รับประโยชน์จากกลไกทางฟิสิกส์เนื่องจากโดยทั่วไปแล้วพวกเขาเพียงแค่ต้องการการตรวจสอบการทับซ้อนของ AABB / วงกลมไม่มีการตอบสนองการชนการเคลื่อนที่อย่างแน่นอนและความเร็วคงที่ อย่างไรก็ตามผู้สร้างแพลตฟอร์มล้วน แต่เกี่ยวกับฟิสิกส์

คำตอบ:


8

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


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

1
หรือกล่าวอีกนัยหนึ่ง - "เหตุผลเดียวที่ทำให้การปรับแต่งวงล้อคือการเรียนรู้เกี่ยวกับการปรับแต่งวงล้อ"
Exilyth

4

บางอย่างง่ายเหมือน Super Mario no เพราะมันไม่มีฟิสิกส์มากนัก (มาริโอไม่ส่งผลกระทบต่อฟิสิกส์ของวัตถุอื่นด้วยการกระโดดของเขา)

หากคุณกำลังใช้ฟิสิกส์ในแง่ของหลาย ๆ รายการ (มากกว่าหนึ่งรายการ) โดยใช้ฟิสิกส์เพื่อส่งผลต่อผลลัพธ์ของวัตถุอื่น ๆ ฉันจะใช้เครื่องมือ


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

ฉันเห็นด้วย - ฉันคิดว่าเวลาส่วนใหญ่ที่เครื่องยนต์ฟิสิกส์จะให้สิ่งต่าง ๆ มากมายกับคุณซึ่งจะเสียเวลาเล็กน้อยในการปรับใช้ตัวคุณเอง
Christopher Horenstein

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

1
นั่นเป็นการเปรียบเทียบที่น่ากลัวจริงๆ คุณต้องการล้อและเพลาและอาจเป็นคอพวงมาลัยและมอเตอร์ แต่อาจไม่ใช่แดชบอร์ดหรือกระจกไฟฟ้า

3
ใครไม่ต้องการกระจกไฟฟ้า
Spooks

2

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


3
แม้ว่าหนึ่งอาจกล่าวได้ว่าการหาวิธีการใช้และใช้ Box2D จะใช้เวลานานขึ้นในการสร้างฟิสิกส์ที่เรียบง่าย (แม้ว่าฉันเดาว่าสิ่งนี้ขึ้นอยู่กับขอบเขตของการใช้ฟิสิกส์)
Spooks

1
@Spooks: ฉันนึกภาพไม่ออกว่า "ง่าย" กว่า Box2D ที่ยังมีประโยชน์อยู่

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

1

หาก "ฟิสิกส์" ในเกมนั้นง่ายไม่จำเป็นต้องนำเข้าเครื่องมือฟิสิกส์

ฉันใช้คำว่าฟิสิกส์อย่างหลวม ๆ เนื่องจากมีความแตกต่างระหว่างการสร้างแบบจำลองทางฟิสิกส์และการจำลอง phyiscs สิ่งที่สำคัญมากในการสร้างความแตกต่าง

ตัวอย่างเช่นใน Mario Bros. เมื่อคุณเรียกใช้และหยุดคุณจะเลื่อนบิต คิดเกี่ยวกับวิธีที่คุณอาจนำไปใช้

คุณสามารถสร้างแบบจำลองโดยการกำหนดตัวแปรที่จำเป็นทั้งหมด: เช่น มวล, แรงโน้มถ่วง, ค่าสัมประสิทธิ์แรงเสียดทาน, แรงขับ ฯลฯ จากนั้นคำนวณความเร็วใหม่การเร่งความเร็ว ฯลฯ

แต่มันคุ้มหรือไม่ คุณสามารถจำลองเอฟเฟกต์เดียวกันโดยลดความเร็วของผู้เล่นขณะที่พวกเขาไม่เคลื่อนที่ ...

สิ่งที่ต้องการ:

if( pressing movement key ) { 
 speed = 5; 
} else { 
 if(speed) speed--; // slide!
} 

ความแตกต่างคือหนึ่งคือฟิสิกส์อื่น ๆ ไม่ได้ มีทั้งข้อดีและข้อเสีย แต่ตามกฎทั่วไปสำหรับเกมง่ายๆมันง่ายกว่าการปลอม


1
ฟิสิกส์แบบนั้นค่อนข้างดี หากคุณกำลังจะปลอมมันเช่นกันอาจทำให้ดูดี แรงเสียดทาน = .9 หรือจำนวนต่ำกว่า 1. speedX * = แรงเสียดทาน; speedY * = แรงเสียดทาน;
AttackHobo

2
แน่นอนในตอนท้ายของโครงการมันจะกลายเป็น "if (กดปุ่มการเคลื่อนไหวและไม่เคลื่อนที่และบนน้ำแข็งและไม่ใช่ใต้น้ำและคุณมีพลังพิเศษนี้และคุณไม่ได้ขี่ในการบูตและ ... )"

@AttackingHobo: จุดโพสต์ไม่ได้เกี่ยวกับการสร้างอัลกอริทึมการเลื่อนที่ดี .. มันคือการแสดงให้เห็นถึงความแตกต่างระหว่างการจำลองและแบบจำลอง
aaronfarr

@Joe: สิ่งเหล่านี้เป็นเพียงการปรับเปลี่ยนตัวแปรแรงเสียดทานของคุณ .. บางทีคุณและ @AttackingHobo ควรแชท: P ด้วยเครื่องมือฟิสิกส์คุณต้องกำหนดคุณสมบัติสำหรับทุกวัตถุในเกม ประเด็นของฉันคือการเสียบเอนจิ้นฟิสิกส์เข้ากับเกมง่ายๆไม่ควรเป็นไปโดยอัตโนมัติ สถานการณ์ของมัน
aaronfarr

1
@aaronfarr: ไม่มีความแตกต่างระหว่างการจำลองและแบบจำลอง; เพื่อวัตถุประสงค์เหล่านี้พวกเขามีความหมายเหมือนกัน สิ่งที่คุณแสดงให้เห็นคือส่วนที่แยกได้ของโมเดลของเล่น / การจำลองนั้นมีรหัสน้อยกว่า Box2D ทั้งหมด

0

คุณต้องตัดสินใจตามสถานการณ์

ผู้เชี่ยวชาญใช้เครื่องมือกำหนดเองของคุณ

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

ข้อดีของเครื่องมือฟิสิกส์นอกชั้นวาง:

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