Suatu program harus mengambil input, memprosesnya dan memberikan output. Jadi apa sebenarnya yang diambil mesin fisika sebagai input dan berikan sebagai output?
Suatu program harus mengambil input, memprosesnya dan memberikan output. Jadi apa sebenarnya yang diambil mesin fisika sebagai input dan berikan sebagai output?
Jawaban:
Sebuah mesin fisika bertanggung jawab untuk mensimulasikan gerakan dan reaksi benda-benda seolah-olah mereka berada di bawah batasan fisika dunia nyata (atau mirip dengan dunia nyata). Saya perhatikan, ini biasanya bukan program mandiri, melainkan komponen dari program yang lebih besar dan lebih menarik (seperti game).
Input untuk simulasi fisika umumnya kumpulan benda ("benda") dengan sifat (seperti apakah benda itu kaku atau lunak, massa, bentuk, dan sebagainya) serta kumpulan gaya yang bekerja pada benda itu.
Berdasarkan input itu, mesin mensimulasikan posisi dan orientasi tubuh yang diperbarui dan menerapkan ("output") mereka. Secara umum, ketika objek bertabrakan atau tumpang tindih, yang termasuk dalam output dari langkah simulasi dalam bentuk panggilan balik yang kode klien dapat menghubungkan ke dalam untuk menangani logika gameplay spesifik yang relevan dengan tabrakan.
Input itu kecepatan, massa, dan waktu, output adalah kecepatan baru. Kadang-kadang momentum rotasi / sudut juga merupakan input dan output.
Mesin Fisika pada dasarnya mencoba mensimulasikan efek gravitasi dan tabrakan. Untuk mesin fisika yang lebih baik, itu berarti mereka mencakup deformasi objek permanen dan sementara, termasuk membelah objek menjadi beberapa objek, dan momentum sudut objek. Idealnya mereka juga mensimulasikan stres, misalnya berapa banyak truk yang dapat menyeberangi jembatan itu sampai runtuh, tetapi itu cukup langka. Variabel simulasi lebih lanjut seperti hambatan udara juga akan dihitung sebagai mesin fisika, tetapi sejauh yang saya tahu ini belum membuatnya menjadi game apa pun.
Sebagian besar mesin fisika dikhususkan untuk tingkat tertentu dan akan mensimulasikan fisika ke titik yang diperlukan untuk permainan. Mesin fisika untuk permainan mobil seringkali sangat berbeda dari mesin fisika untuk penembak 3D. Dan mesin fisika dari permainan golf mungkin memiliki perhitungan yang berlebihan dari interaksi bola golf dan daun rumput individu, sementara benar-benar kehilangan penanganan tabrakan kecepatan tinggi dan deformasi mobil (kalau-kalau terkena bola golf) .
Biasanya mesin fisika digunakan untuk membuat objek dalam permainan berperilaku secara realistis relatif terhadap lingkungan mereka tanpa harus merancang animasi spesifik untuk setiap skenario yang mungkin.
Khususnya mesin fisika akan mengambil model dengan seperangkat properti (massa, sendi dll) dan membuatnya dalam game sesuai dengan serangkaian parameter.
Contoh awal dari hal ini adalah mesin raggdoll (misalnya di Unreal) yang memodelkan cara tubuh yang pincang akan jatuh ke bawah, dll.
Dalam teknologi saat ini, mesin fisika akan sering diintegrasikan secara erat dalam paket keseluruhan permainan bersama dengan AI, UI dalam game, generasi cutscene dll.
Anda tentu bisa berpendapat bahwa mesin fisika kembali ke awal desain game misalnya pong dapat dianggap sebagai mesin fisika mentah. Namun poin utamanya adalah bahwa mesin fisika mampu menghasilkan titik-titik animasi dengan cepat berdasarkan pada serangkaian parameter daripada hanya menggunakan urutan animasi yang telah ditentukan dari penangkapan gerak atau animasi manual.
Seperti yang disebutkan dalam jawaban lain, di beberapa kelas atau permainan seperti mengemudi atau simulasi penerbangan, mesin fisika mungkin sangat penting untuk permainan dan dengan demikian akan menjadi input utama yang mendorong animasi di layar. Meskipun biasanya istilah ini digunakan untuk alat tujuan umum yang dapat diterapkan pada berbagai situasi tanpa memerlukan pengetahuan yang sangat spesifik atau analisis konteks yang bersangkutan di pihak pengembang, daripada simulator yang sangat spesifik yang dibangun dari tanah. untuk aplikasi tertentu.
Mesin fisika bertanggung jawab untuk mensimulasikan gerak benda di "dunia" (apa pun artinya dalam konteks mesin). Sebagian besar mesin fisika saat ini menggunakan mekanika Newton untuk melakukan ini, karena mereka relatif sederhana untuk disimulasikan dan "cukup akurat" untuk sebagian besar tujuan kecuali Anda sedang melakukan sim ruang.
Secara teori, mesin fisika "murni" akan mengambil tiga input:
Memperhatikan inersia dan kekuatan, engine menggerakkan benda-benda di sekitarnya. Output dari mesin fisika hanyalah keadaan baru "dunia" , yang kemudian dapat dibaca dan dimodifikasi oleh game.
Dalam praktiknya, mesin fisika belum tentu begitu "murni" . Benda-benda perlu dibuat dan dihancurkan, dan kadang-kadang benda itu perlu dipindahkan dengan cara yang tidak diizinkan oleh hukum mesin fisika. Ini kadang-kadang dapat dilakukan di luar mesin, tetapi kadang-kadang dilakukan di dalam, dan untuk itu, mesin membutuhkan lebih banyak input. Tetapi ketiga input yang disebutkan di atas mencakup dasar-dasarnya.
Sebagai contoh, katakanlah Anda perlu memindahkan karakter dalam game menggunakan joystick. Jika Anda tidak menggunakan mesin fisika, ini cukup mudah: ketika Anda melihat bahwa pengguna menggerakkan joystick, Anda memindahkan objek sesuai. Dengan mesin fisika, Anda tidak memindahkan objek secara langsung: Anda menerapkan gaya padanya, sesuai dengan arah yang Anda inginkan, dan membiarkan pegangan mesin benar-benar memindahkannya .
Apa bedanya? Bahkan jika tidak ada yang lain di dunia, objek tersebut tidak mungkin bergerak dengan cara yang sama, karena mesin fisika akan menangani hal-hal seperti akselerasi yang realistis. Tetapi ada juga kemungkinan bahwa kekuatan lain mungkin bertindak pada objek pada saat yang sama, seperti mungkin inersia, dan mesin akan memperhitungkan semuanya . Misalnya, jika Anda menerapkan gaya utara pada objek, tetapi sesuatu yang lain menerapkan gaya barat (atau objek sudah bergerak ke barat dan tidak ada yang memperlambatnya), maka mesin akan memindahkan objek ke barat laut.
Itulah yang membuat mesin fisika Anda: Ia melacak objek, posisi dan kecepatannya, dan gaya yang bekerja pada mereka. Berkat hukum mekanika, ia bahkan dapat membuat beberapa kekuatan sendiri, untuk secara otomatis menangani hal-hal seperti tabrakan, gesekan, dan gravitasi, semua tanpa Anda, pengembang game, harus melakukan sesuatu yang ekstra.
Mesin Fisika pada dasarnya adalah simulator tubuh fisika.
Hal ini memungkinkan Anda membuat tubuh (atau beberapa yang) menentukan sifat-sifat fisika seperti massa, ukuran, kepadatan, dll ...
Ini juga memungkinkan Anda untuk menentukan sifat-sifat dunia fisika tempat simulasi terjadi (misalnya gravitasi).
Akhirnya memungkinkan Anda untuk menerapkan kekuatan atau membuat sendi di antara tubuh.
Setelah Anda mendefinisikan semua hal ini Anda dapat mulai simulasi dan Fisika Engine akan memberitahu Anda di mana setiap tubuh akan ditempatkan di depan timestep (yang biasanya sesuai dengan frame berikutnya dalam permainan Anda). Dan yang berikutnya, dan seterusnya ...
Anda melihat Sprite bergerak di layar karena setiap frame Game Engine meminta Mesin Fisika
Di mana tubuh ini sekarang?
dan Game Engine memperbarui representasi grafis sesuai.
Saya biasanya suka melihat Mesin Fisika seperti alat untuk menerapkan hukum fisika dalam cara deklaratif .
Infact alih-alih menulis kode untuk menggambarkan komputasi mana yang harus dilakukan untuk menentukan di mana tubuh akan berada di timestep berikutnya, saya hanya menggambarkan dunia fisika yang menetapkan atribut tubuh (dan dunia fisika itu sendiri) dan saya membiarkan mesin fisika menjawab pertanyaan itu untuk saya.