Dari apa yang saya pahami sistem truss interaktif tipikal akan membutuhkan perhitungan besar karena setiap komponen mempengaruhi keseluruhan sistem. Saya pikir Anda bisa secara sewenang-wenang berhenti pada sejumlah iterasi dengan biaya akurasi dalam simulasi, tetapi saya tidak tahu apakah itu pendekatan yang digunakan game-game ini (game building bridge adalah contoh dari sistem truss). Di sisi lain, gim seperti Dig atau Die memiliki sistem struktural yang cukup rumit yang juga memperhitungkan torsi (saya percaya) dan kompresi dan sangat cepat dan bekerja pada sistem yang sangat luas. Saya kira perhitungan dasarnya bisa serupa, tetapi jika tidak, saya tertarik pada kedua pendekatan tersebut.
Apakah kalian tahu bagaimana ini dibuat? Apakah mereka memiliki batasan sewenang-wenang atau apakah mereka menggunakan algoritma yang berbeda sama sekali? Juga, saya kira apa pun yang kalian buat dapat diterapkan pada sistem 3D tetapi jika tidak atau jika itu tidak jelas tolong setidaknya berikan petunjuk tentang bagaimana Anda dapat menggunakannya untuk 3D karena saya tertarik pada ini untuk 2D dan 3D permainan.
Saya tahu saya tidak seharusnya berterima kasih di sini, tetapi saya merasa tidak adil untuk tidak setidaknya berterima kasih atas waktu Anda sebelumnya, saya harap paragraf ini tidak dihapus.
EDIT: Jika saya membuat tebakan saya akan mengatakan Dig atau Die menyimpan vektor untuk setiap blok dan kemudian menjalankan algoritma iteratif hingga titik bahwa akurasi ekstra dalam simulasi tidak berarti untuk batas sistem (misalnya, sistem akan terlalu besar untuk tidak runtuh), sehingga dibatasi oleh sejumlah iterasi semi-arbitrer (karena didasarkan pada aplikasi). Tapi saya bisa saja salah.
Jawaban:
Saya adalah dev of Dig or Die, jadi saya bisa memberikan sedikit detail tentang fisika permainan
Memang poin yang paling penting adalah pertunjukan, seperti dalam permainan Anda dapat membangun ribuan blok fisik, dan jauh lebih penting saya memiliki hal-hal lain yang lebih rumit untuk disimulasikan (hujan / air) sehingga saya dapat menghemat waktu CPU yang sangat sedikit untuk fisika bangunan .
Jadi saya benar-benar melakukan semacam ... Saya tidak tahu, algoritma kustom pribadi tidak terlalu akurat, tetapi berfungsi cukup baik untuk permainan. Saya memiliki 1 vektor untuk setiap persimpangan blok (sehingga setiap blok dihubungkan hingga 4 vektor, satu di setiap sisi). Setiap blok memiliki "bobot", dan "mendorong" vektor di sekitarnya (sama) sehingga total vektor besarnya sama dengan tingginya. Ketika sebuah blok berlabuh ke tanah, semua kekuatan / berat yang didorong ke dalamnya tidak pernah "didorong kembali", jadi tentu saja dengan iterasi yang cukup seluruh sistem menemukan keseimbangan. Bobot / gaya akan mengurutkan "mengalir" ke titik penahan, dan mengelola perubahan dengan sangat baik pada struktur. Anda dapat melihat hasilnya di sini (dengan item "Kacamata Eiffel" yang tidak biasa):
Tentang torsi, saya mensimulasikannya dengan mengalikan kekuatan yang ditransmisikan secara horizontal. Itu tidak sempurna tetapi cukup untuk merasakan perbedaan besar antara membangun secara horizontal dan vertikal
Tapi jujur saya tidak terlalu menyukai sistem saya, untuk beberapa kasus itu tidak terlalu akurat; terutama karena saya tidak mengelola kompresi dan ekstensi. Mungkin ada cara untuk melakukan simulasi yang lebih akurat daripada saya tanpa lebih banyak CPU, tetapi keterampilan saya (dan waktu) tentang itu sangat terbatas sehingga saya melakukan apa yang saya bisa :-)
(PS: tebakanmu sangat bagus :-))
sumber
Secara pribadi saya telah sukses dengan Relaksasi Berulang . Saya pikir itu mengikuti hukum fisika dengan cukup baik ketika berhadapan dengan benda yang terbuat dari agregat blok. Saya percaya seri BridgeBuilder didasarkan pada metode seperti itu, meskipun saya tidak punya sumber untuk mengkonfirmasi ini.
Iterative Relaxation banyak digunakan untuk rangka , tetapi saya telah berhasil mensimulasikan benda padat besar (beton) dengan itu: itu cukup sederhana rangka, yang sambungannya membawa beban bukannya berputar bebas.
Yang menarik, adalah bahwa relaksasi adalah teknik untuk menyelesaikan gulungan statis, sehingga akurat. Dalam hal itu, ia digunakan untuk menghitung perpindahan secara iteratif yang membawa struktur ke keseimbangan.
Tetapi nilai tambah untuk sebuah game (di mana kami tertarik pada lingkungan yang dinamis, karena struktur statis, at-equilibrium membosankan) adalah kami mendapatkan kesempatan untuk benar - benar memindahkan sendi struktur antara setiap iterasi, berdasarkan kendala yang dihitung sejauh ini . Anda mendapatkan dua manfaat utama:
Biasanya , analisis statis membuat hipotesis deformasi kecil , di mana struktur tidak bergerak jauh dari keadaan awalnya. Dalam batas-batas ini, analisis statis benar karena sambungan tidak benar - benar tergeser . Tetapi karena struktur berubah bentuk karena bobot yang hancur, Anda akan mendapatkan hasil yang akurat sampai akhir dengan simulasi non-linear, sedangkan Anda hanya akan mendapatkan keadaan tidak valid dari pemecah linear
Relaksasi berulang cukup mudah dilakukan, Stabilitas Numerik . Saya telah menggunakan RK4 skema tsuccessfully untuk mencapai stabilitas dengan struktur conrete besar. Kekurangannya adalah biasanya memiliki kekakuan yang cukup kecil untuk alasan kinerja, jadi mungkin terasa cukup seperti jeli lunak.
sumber