Mana pendekatan terbaik untuk membuat karakter 2D agar dapat menggunakan banyak peralatan yang berbeda saat beraksi?

14

Saya ingin membuat game 2D tetapi saya ingin memiliki karakter untuk memakai banyak peralatan yang berbeda pada kombinasi yang berbeda, seperti RPG atau sesuatu.

Jadi misalkan pengguna mengganti pundak dan celananya, ini harus diperlihatkan kepada pemain dan semua peralatan yang berbeda ini harus mengikuti aksi karakter yang berbeda (memukul, dipukul, sihir ejaan, dll.).

Saya melihat beberapa masalah yang ingin saya ketahui pendekatan / algoritma / arsitektur terbaik untuk dipecahkan.

1 - Sprite atau Animasi

Haruskah saya membuat sprite yang berbeda untuk setiap peralatan di setiap animasi tindakan?

Apakah lebih baik memiliki sprite peralatan dan menghidupkannya langsung pada kode seperti memutar dan menerjemahkan (menggunakan sesuatu seperti tween di Flash)?

Apakah ada opsi lain yang lebih baik? (Saya benar-benar tidak suka ide-ide di atas)

2 - Posisi

Katakanlah selama salah satu gerakan karakter dia mulai melihat langsung di depan pandangan pemain tetapi mengakhiri gerakannya menunjukkan sisi kanannya ke pemain (seperti jika dia mengayunkan pedangnya dari satu sisi ke sisi lain).

Jika kita mempertimbangkan satu bagian dari pengguna, seperti kepalanya misalnya, itu dimulai di depan dan kemudian belok kiri.

Ini berarti setidaknya 3 posisi berbeda untuk setiap peralatan kepala (helm, topi, apa pun).

Ini tentu mempengaruhi jawaban pertanyaan # 1. Bagaimana cara terbaik untuk mencapainya?

3 - Lapisan

Mari kita perhatikan gerakan karakter di mana ia berputar 360 derajat dengan tangan terbuka. Pada awal animasi, tangan kanannya dekat dengan pandangan pengguna dan kemudian, di tengah gerakan, ini mungkin di belakang tubuh karakter pada animasi.

Apa pun pilihan pada pertanyaan # 1, Anda tentu perlu menggunakan semacam model lapisan untuk membuat sprite atau animasi ini untuk mulai lebih dekat dengan tampilan pemain dan kemudian berubah menjadi jauh dari tampilan pemain.

Apakah ada cara yang baik untuk melakukan itu?

Saya tahu pertanyaannya cukup panjang dan sulit dimengerti. Beritahu saya jika Anda pikir lebih baik memiliki beberapa gambar untuk mencoba menjelaskan yang mana dan saya akan mencoba melakukannya.

homemdelata
sumber
Pada level apa Anda ingin seni Anda berada? Suka seni pixel retro? Atau sprite HD itu, jika Anda memiliki seni yang ada yang benar-benar akan membantu saya menyesuaikan respons saya.
Jesse Dorsey
Hai Noctrine. Sebenarnya saya menganggapnya sebagai pertanyaan "seni independen". Saya akan mencoba menggambar beberapa penjelasan akhir pekan ini untuk membuatnya lebih mudah dimengerti. Terima kasih
homemdelata

Jawaban:

8

Saya pikir ini kedengarannya seperti Anda mencari sistem animasi kerangka 2D? Sayangnya, saya tidak tahu sistem apa pun yang tersedia, karena sebagian besar telah digantikan oleh tren game 3D-gfx-tapi-2D.

pembuat kode
sumber
+1 Ini jauh lebih mudah untuk dilakukan jika Anda hanya membuat karakter 3D.
knight666
tetapi untuk "3D-gfx-but-2D-game" Saya harus mempertimbangkan salah satu solusi yang saya sebutkan kalau tidak saya akan perlu memiliki sprite untuk setiap kombinasi item, misalnya, potongan dada yang sama dengan 10 kawat gigi yang berbeda potongan akan menghasilkan 10 animasi :(
homemdelata
Tidak juga, Anda hanya memiliki titik lampiran pada kerangka dan dapat memasukkan apa pun yang Anda butuhkan.
coderanger
2
Saya telah membuat perpustakaan animasi kerangka 2d (open source) sederhana untuk XNA, termasuk editor yang layak. Lihat youtube.com/user/srekel#p/a/u/0/46LIoFNdG_4 dan youtube.com/user/srekel#p/a/u/1/8sYkeu5k7XE
Srekel
Ini hampir merupakan jawaban yang benar. Sebenarnya Anda membuat saya mengetahui bahwa yang saya cari adalah sistem Kerangka 3D untuk animasi 2D. Saya perlu menemukan algoritma untuk itu (jika ada)
homemdelata
8

Seperti yang dikatakan Zorba, sebagian besar game retro tidak melakukan ini secara khusus karena Anda akan membutuhkan (dengan sprite) untuk memiliki animasi multi-bingkai untuk setiap peralatan.

Beberapa alternatif "malas":

  • Palet-swap gigi alih-alih membuat sprite yang sama sekali berbeda.
  • Gambarlah karakter sedemikian rupa sehingga satu-satunya bagian tubuh mereka yang bernyawa adalah bagian-bagian yang tidak melekat pada gigi. Seperti, jika karakternya hanya bisa memakai satu baju zirah saja, jadikan itu Helm, dan kemudian Anda bebas untuk menghidupkan seluruh tubuh sambil menjaga kepala tetap diam.
  • Gunakan satu sprite untuk karakter di layar game utama, tetapi perlihatkan peralatan dalam subscreen dengan potret statis. Maka Anda tidak perlu khawatir tentang animasi.
Ian Schreiber
sumber
2

Dalam game lama seperti seri Ultima, mereka memang akan menggambar satu peralatan dalam setiap pose karakter yang mungkin. Penyumbatan akan ditangani dengan tidak menggambar persneling (jika sarung tangan kiri berada di belakang sprite pemain Anda tidak perlu khawatir tentang hal itu) atau dengan hanya menggambar persneling dalam urutan back-to-front.

Jelas ini sangat padat karya, dan sebagai hasilnya ada relatif sedikit potongan-potongan gigi unik, dengan banyak versi palet-swapped dan modifikasi palet dari gigi itu.

Dalam gim modern, saya sangat merekomendasikan membuat karakter 3d. Jika Anda ingin seni yang tampak 2d atau platform Anda tidak memiliki tenaga kuda untuk 3d yang sebenarnya, Anda masih cenderung lebih baik memodelkan semuanya dalam 3d, merender, dan kemudian men-tweak hasil akhir dengan tangan.

Atau, jika Anda memutuskan tidak perlu mengubah, tidak memiliki tenaga kuda untuk 3d penuh, tetapi tidak ingin mengirim pustaka sprite besar, Anda dapat mengemas model 3d dan membuatnya menjadi tekstur secara realtime saat Anda tahu model akan segera muncul dalam game.

ZorbaTHut
sumber
Hal yang sama yang saya sebutkan pada jawaban yang lain cukup besar di sini: Saya harus mempertimbangkan salah satu solusi yang saya sebutkan, kalau tidak saya akan perlu memiliki sprite untuk setiap kombinasi item, misalnya, potongan dada yang sama dengan 10 potongan kawat gigi yang berbeda akan menghasilkan 10 animasi :(
homemdelata
2
Anda akan menggabungkan "end sprite" saat runtime. Anda tidak memiliki sprite untuk "pemain", Anda akan memiliki daftar sprite yang diberikan untuk setiap bingkai animasi. Jadi, jika pemain menghadap ke kanan, Anda akan membuat "sarung tangan kiri", "gelang kiri", "karakter pemain", "sepatu bot", "celana", "pelindung tubuh", "helm", "gelang kanan" , "sarung tangan kanan" secara berurutan. Kemudian Anda menghidupkan setiap bagian roda gigi secara independen, mengambang di udara.
ZorbaTHut
1

Periksa buku James Da Silva di mana dia menjelaskan bagaimana dia melakukannya The Dishwasher: Dead Samurai. Ini akan menunjukkan kepada Anda bagaimana KISS bisa menyelesaikan ini. Saran menggunakan animasi kerangka 3d atau 2d valid, dan agak di ranah yang sama.

Kaj
sumber
Bisakah Anda menambahkan tautannya?
homemdelata
0

Ini adalah pertanyaan yang bagus tetapi saya pikir Anda telah menjawabnya sendiri - Anda memerlukan sistem tulang 2D yang mendukung perubahan lapisan tulang, sehingga anggota tubuh yang berbeda dapat pergi ke belakang dan di depan satu sama lain saat karakter diputar. Anda juga perlu menggambar sprite Anda dari sudut 4 atau 8 (atau berapa banyak yang Anda butuhkan). Bergantung pada keterampilan apa yang ada di tim Anda, mungkin lebih mudah untuk membuat aset ini dalam 3D dan mengeluarkannya dari sudut yang Anda butuhkan.

Menggunakan mesin 3D juga merupakan solusi yang baik, meskipun ini akan membawa tantangan tersendiri.

Iain
sumber
Ya, hampir seperti itu. Baru saja mendapat jawaban lain yang benar tetapi yang ini juga valid. Seperti yang saya komentari di sisi lain, saya memerlukan sistem kerangka 3D untuk animasi 2D :)
homemdelata