Kapan saya harus menggunakan mesin fisika? [Tutup]


12

Karena saya menemukan Box2D , saya menggunakannya untuk jenis aplikasi seperti permainan apa pun yang saya coba tulis, dari prototipe yang sangat kecil atau program kecil untuk menguji sesuatu, hingga proyek yang sebenarnya.

Berkat itu sangat mudah untuk menangani apa pun dari tabrakan, hingga fisika aktual.

Namun, kadang-kadang, saya ragu: jika saya hanya harus menangani lingkaran atau AABB, dan tidak memerlukan alat fisika canggih (sambungan atau hal-hal seperti itu), saya berpikir bahwa mesin fisika dapat menambahkan semacam besar, overhead yang tidak dibutuhkan.

Untuk mengulang pertanyaan saya: apakah Anda akan menggunakan Box2D (atau mesin fisika lainnya) dalam permainan di mana fisika sangat sederhana (seperti Super Mario, katakanlah)? Dan, jika tidak, mengapa?


2
Lakukan apa yang terasa benar. Apakah Anda pikir game Anda membutuhkan mesin fisika? Apakah Anda pikir Mario akan mendapat manfaat dari Box2D? Mario terbaru tentu memiliki perasaan yang menyenangkan dengan fisika yang bagus, tetapi tidak terasa seperti apa pun yang saya lihat dibangun di Box2D.
Jeff

@ Jeff: Itu tergantung pada apakah pertanyaan "Kapan saya harus menggunakan Box2D?" atau "Kapan saya harus menggunakan mesin fisika?". Mario baru tentu mengandung mesin fisika.

1
@ Jo Wreschnig: Ya, tetapi apakah pernah ada kasus mesin fisika tidak digunakan? Hanya waktu yang bisa saya pikirkan adalah petualangan teks, atau arahkan dan klik. Saya kira itu tergantung pada seberapa umum Anda ingin membuat definisi Anda tentang mesin fisika
Jeff

@ Jeff: Beberapa permainan puzzle (non-fisika) membutuhkan satu, misalnya Tetris, Bejeweled. Dalam permainan aksi, saya bisa berargumen bahwa sebagian besar 2D shmups tidak mendapat manfaat dari mesin fisika, karena mereka umumnya hanya membutuhkan pemeriksaan AABB / circle overlap, tidak ada respons tabrakan, jalur pergerakan yang benar-benar tetap, dan kecepatan konstan. Platformers, bagaimanapun, semua tentang fisika.

Jawaban:


8

Jika memori, ruang disk, upaya pengembangan, atau waktu prosesor yang digunakan untuk Box2D terlalu banyak untuk tujuan Anda, maka jangan menggunakannya. Kalau tidak, tidak ada alasan untuk menghindarinya jika Anda merasa itu berguna.


2
Ini semua benar-benar turun ke. Jika itu membuat hidup Anda lebih mudah dan tidak menghalangi Anda dari platform yang Anda inginkan, itu adalah kemenangan, bahkan jika Anda tidak menggunakan bagian dari itu.

1
Atau, dengan kata lain - "Satu-satunya alasan untuk menciptakan kembali roda adalah belajar tentang menciptakan kembali roda."
Exilyth

4

Sesuatu yang semudah Super Mario tidak, karena tidak benar-benar memiliki banyak fisika. (Mario tidak mempengaruhi fisika benda lain dengan lompatannya)

jika Anda menggunakan fisika dalam arti beberapa item (lebih dari satu) menggunakan fisika untuk mempengaruhi hasil objek lain, maka saya akan menggunakan mesin.


Di sisi lain, Mario memang memiliki momentum, akselerasi, ukuran variabel, dan tabrakan terarah, yang semuanya Anda dapatkan "gratis" dengan mesin fisika, dan bukan sekadar pemeriksaan batas yang tumpang tindih.

Saya setuju - saya pikir sebagian besar waktu mesin fisika akan memberi Anda banyak hal yang akan sedikit membuang waktu untuk menerapkan sendiri.
Christopher Horenstein

3
Benar itu selalu lebih baik untuk tidak menciptakan roda, saya hanya menemukan bahwa jika saya hanya ingin roda, saya tidak akan mengambil cetak biru untuk mobil. Selain itu, Anda akan tahu lebih banyak tentang game Anda secara keseluruhan, dan lebih mudah untuk mengubah / mengubah fisika.
Spooks

1
Itu analogi yang sangat mengerikan. Ini lebih seperti, Anda ingin roda dan gandar dan mungkin kolom kemudi dan motor tetapi mungkin bukan dashboard atau power windows.

3
siapa yang tidak ingin power windows?
Spooks

2

Jawaban saya adalah ya, benar-benar menggunakan mesin fisika seperti Box2D untuk hal-hal sederhana, karena Anda tidak boleh menghabiskan waktu pengembangan yang tidak dibutuhkan dengan mengimplementasikan beberapa fitur yang cepat Anda dapatkan dari mesin fisika. Misalnya, tentukan benda statis dan jatuhkan benda dinamis di atasnya, dan terapkan kekuatan ke badan dinamis Anda untuk input terarah, dan Anda punya platformer dalam beberapa menit. Saya tidak berpikir bahwa mesin menambahkan overhead yang cukup untuk membuat ini tidak sepadan.


3
Namun, bisa dikatakan bahwa mencari tahu bagaimana menerapkan dan menggunakan Box2D akan membutuhkan waktu lebih lama untuk membuat fisika sederhana. (meskipun saya kira ini tergantung pada sejauh mana penggunaan fisika)
Spooks

1
@Spooks: Saya tidak bisa membayangkan sesuatu yang "lebih mudah" dari Box2D yang masih berguna.

Saya setuju sepenuhnya dengan Joe di sini; tidak ada penggantian sederhana untuk kegunaan yang datang bersama dengan menggunakan Box2D. Saya tidak bisa membayangkan mengkodekan sesuatu yang akan memenuhi kebutuhan seseorang lebih cepat daripada belajar cara membuat beberapa perlengkapan dan mendefinisikan gravitasi dengan Box2D.
Christopher Horenstein

1

Jika "fisika" dalam game sederhana, tidak perlu mengimpor mesin fisika.

Saya menggunakan istilah fisika secara longgar karena ada perbedaan antara pemodelan fisika dan simulasi phyis. Suatu hal yang sangat penting untuk dibedakan.

Misalnya, di Mario Bros ketika Anda menjalankan dan menghentikan Anda akan meluncur sedikit. Pikirkan tentang bagaimana Anda menerapkannya.

Anda dapat memodelkannya dengan mendefinisikan semua variabel yang diperlukan: mis. massa, gravitasi, co-efisien dari gesekan, daya dorong, dll. dan kemudian menghitung kecepatan baru Anda, akselerasi, dll.

tetapi apakah itu sepadan? Anda dapat mensimulasikan efek yang sama dengan mengurangi kecepatan pemain saat mereka tidak bergerak ...

Sesuatu seperti:

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

Perbedaannya adalah satu adalah fisika, yang lain tidak. Ada pro dan kontra untuk keduanya. Tetapi sebagai aturan umum untuk gim sederhana, jauh lebih mudah untuk memalsukannya.


1
Fisika semacam itu kotor. Jika Anda akan memalsukannya, mungkin juga membuatnya terlihat bagus. gesekan = 0,9 atau angka di bawah 1. speedX * = gesekan; speedY * = gesekan;
AttackingHobo

2
Tentu saja, pada akhir proyek itu berubah menjadi "jika (menekan tombol gerakan dan tidak bergerak dan di atas es dan tidak di bawah air dan Anda memiliki powerup khusus ini dan Anda tidak mengendarai sepatu boot dan ...)".

@AttackingHobo: Inti dari postingan ini bukan tentang membuat algoritma geser yang bagus .. Ini untuk menggambarkan perbedaan antara simulasi dan model.
aaronfarr

@ Jo: Itu hanya modifikasi pada variabel gesekan Anda .. mungkin Anda dan @AttackingHobo harus mengobrol: P Dengan mesin fisika Anda harus mendefinisikan properti untuk setiap objek dalam permainan. Maksud saya adalah memasukkan mesin fisika untuk gim sederhana seharusnya tidak otomatis. Itu situasional.
aaronfarr

1
@ aaronfarr: Tidak ada perbedaan antara simulasi dan model; untuk tujuan ini mereka adalah sinonim. Yang Anda tunjukkan adalah bahwa bagian yang terisolasi dari model mainan / simulasi kurang dari kode keseluruhan Box2D.

0

Anda harus memutuskan sesuai situasi

Pro menggunakan mesin kustom Anda

  • Perangkat lunak terkendali (tidak ada perubahan karena rilis baru)
  • Cocok untuk game Anda (hanya fitur yang Anda butuhkan untuk game Anda, seperti yang Anda butuhkan)
  • Fleksibilitas (setiap dinamika gila yang Anda inginkan dapat disandikan, fitur apa pun di masa depan tidak akan bergantung pada mesin)
  • Pengalaman Belajar (mungkin suatu hari Anda perlu meningkatkan mesin dan Anda perlu cara membuatnya)
  • Kurang belajar dan pemrograman untuk fitur sederhana (kadang-kadang untuk melakukan sesuatu dengan mesin mungkin perlu memahami strukturnya secara mendalam .. dan mungkin tidak layak)
  • Performa lebih tinggi untuk fitur sederhana (untuk fitur spesifik sederhana, Anda mungkin memperoleh kinerja lebih tinggi daripada dengan mesin tujuan umum)
  • Lebih sedikit memori (objek dan kode mungkin mengambil lebih sedikit ruang dan memori ketika hanya fitur yang diperlukan digunakan)

Kelebihan mesin fisika off-the-shelf:

  • Dapat beradaptasi dengan perangkat keras baru dan OS baru tanpa banyak usaha
  • Kurang belajar dan upaya pemrograman untuk fitur-fitur kompleks
  • Performa lebih tinggi untuk fitur kompleks
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.