Saya selalu ingin membuat Game RPG 2D kuno seperti Star Ocean, Final Fantasy, Sword of Mana dan bahkan seri “Tales of”, dan saya rasa banyak orang melakukannya. Tetapi bahkan sebelum menulis satu baris kode pun saya melakukan banyak riset, menggambar, dan uji coba.
Saya telah menemukan hampir semua jawaban untuk pertanyaan saya tetapi ada masalah yang belum dapat saya pecahkan: Bagaimana Anda membuat deteksi tabrakan yang realistis namun sederhana , seperti di game yang saya sebutkan sebelumnya?
Saya sudah tahu beberapa cara menghitung deteksi tabrakan, lihat contoh berikut:
Tidak ada yang memenuhi kebutuhan saya.
- Tabrakan berbasis genteng terlalu sederhana dan lebih cocok untuk Zelda daripada Star Ocean. Plus, gambar setiap ubin perlu mengisi semua ruang agar terlihat realistis.
- Pixel-perfect memiliki terlalu banyak kendala. Jika ubin Anda memiliki beberapa piksel di sana-sini, pemain kemungkinan besar akan terjebak di tengah-tengah dari mana (yaitu: dalam beberapa permainan Anda terjebak pada akar pohon lebar 2 piksel).
- Dan topeng biner menggunakan terlalu banyak memori dan pengaturan imo.
Saya sudah membaca banyak dokumentasi tetapi saya tidak pernah menemukan sesuatu yang terlihat baik bagi saya. Dan semua ujicoba saya tidak terlihat dekat dengan apa yang saya mainkan. Jadi, jika Anda memiliki tautan atau tutorial yang bagus tentang cara kerja RPG 2D berevolusi, beri tahu saya.
sumber
Jawaban:
N Tutorial dapat membantu di sini. Memang, mereka untuk platformer bergaya arcade, tetapi mereka juga akan bekerja dengan baik untuk tampilan RPG top-down; Hanya saja, jangan menerapkan gravitasi. Premis ini menguji tabrakan dalam kumpulan bentuk dasar - lingkaran, kotak pembatas sumbu-garis, garis, titik, dan sebagainya.
Anda kemudian entah bagaimana menghias dunia Anda dengan ini (mungkin melalui editor tingkat kustom), atau secara otomatis menghasilkan mereka (cocok dengan kotak atau lingkaran terdekat) - atau keduanya (default ke kotak / lingkaran yang dihasilkan secara otomatis, dan memungkinkan desainer untuk mengubah) .
Di tempat saya bekerja, kami telah melakukan beberapa platformer dan beberapa permainan eksplorasi top-down. Kami sudah melakukannya sejak masa GBA. Kami paling sering menggunakan AABB untuk karakter dan objek, yang dapat disetel dalam editor sprite - dan kami menjadi gila di sini, memungkinkan satu ton kotak per sprite, beberapa dengan tujuan yang berbeda. Kami mungkin memiliki:
Level-levelnya sebagian besar adalah string segmen garis; kami memiliki sedikit metadata per segmen untuk menggambarkan permukaan yang rusak atau licin, dll.
Jadi sebagian besar deteksi dan respons tabrakan menjadi AABB-vs-AABB atau AABB-vs-segmen. Kadang-kadang kita melemparkan lingkaran-vs-sesuatu untuk proyektil, walaupun sering kali AABB akan melakukannya di sini juga.
Anda tidak perlu banyak bentuk dasar untuk membuat hal-hal terlihat baik dan berperilaku baik - beberapa akan melakukannya, asalkan Anda dapat mengubah dan beralih pada mereka.
Juga, jangan merasa buruk tentang pencampuran sistem bersama; tabrakan berbasis ubin mungkin sangat baik di beberapa daerah (mewakili mayoritas dunia Anda) tetapi mengerikan untuk interaksi objek-objek. Tidak apa-apa; gunakan sistem yang berbeda untuk objek-vs-objek! Menulis untuk interaksi antara kedua sistem mungkin lebih mudah daripada yang Anda pikirkan.
sumber