Bagaimana saya harus menangani pembuatan sprite untuk karakter 2D yang dapat dikustomisasi?


8

Saya ingin membuat animasi avatar (sprite) untuk MMORPG berbasis browser. Pemain dapat menyesuaikan karakter, dan konten sering berubah (senjata baru, baju besi, dan sebagainya). Bagaimana saya bisa mengelola secara struktural pembuatan dan pemutakhiran semua lembar sprite?

Jumlah kombinasi yang berbeda cukup besar sehingga hanya menghasilkan semua permutasi tidak akan berfungsi.

Ini bisa berbasis server atau klien, tetapi jika bekerja sepenuhnya pada klien, harap simpan hanya HTML5 / CSS / Canvas / WebGL.


3
menyusun pemain dari berbagai sprite + pewarnaan warna
LearnCocos2D

Artikel terkait untuk menghasilkan sprite semacam ini
MichaelHouse

Jawaban:


14

Untuk melakukan ini secara efektif tanpa 'menghasilkan semua opsi yang memungkinkan,' Anda akan ingin menggunakan pendekatan layering ... setidaknya secara teori, bahkan jika dalam praktiknya Anda pada akhirnya meruntuhkan tekstur layer menjadi satu sprite tunggal untuk pengurangan draw-call , yang saya pikir Anda harus dan akan detail nanti.

Pendekatan layering melibatkan memiliki set sprite untuk semua karakter Anda tanpa senjata atau peralatan, dan set sprite individu untuk setiap senjata atau gear disejajarkan sedemikian rupa sehingga mereka dapat diberikan melampaui sprite karakter dasar untuk membentuk karakter akhir yang dikomposisikan.

Untuk sprite sederhana dengan sedikit sudut pandang (seperti sprite pertempuran game Final Fantasy tradisional), ini relatif mudah. Untuk sprite yang lebih kompleks (seperti karakter Diablo II, yang memiliki banyak sisi dan perspektif isometrik), sprite senjata dan baju besi akan lebih sulit dibangun karena Anda harus meninggalkan "celah" di sprite ketika akan muncul di belakang karakter. Cara sederhana untuk mengatasi masalah itu adalah dengan mengizinkan sprite peralatan dibagi lagi menjadi lapisan "latar depan" dan "latar belakang". Proses Anda untuk membuat sprite kemudian secara logis:

  1. Berikan lapisan latar belakang gigi (biasanya hanya senjata).
  2. Berikan sprite karakter dasar.
  3. Jadikan layer foreground gear (biasanya terutama armor).

Metode ini bukan pembuktian tolol (terutama saat Anda menambah jumlah potongan gigi yang dapat dipertukarkan secara independen yang dapat dilengkapi dan juga memengaruhi karakter yang dirender), tetapi metode ini akan berfungsi untuk sebagian besar peralatan begitu artis Anda memahami dari teknik penulisan.

Alat penyuntingan sprite dengan lapisan yang dapat diaktifkan akan sangat penting karena sulit untuk menghidupkan pedang atau staf yang diayunkan melalui udara kosong tanpa lapisan referensi dari karakter yang mengayunkannya. Jika sprite Anda benar-benar dibuat dalam alat 3D, akan jauh lebih mudah untuk menyiapkan saluran pipa ini.

Anda bisa menggunakan teknik ini dalam bentuk vanila seperti yang dijelaskan di atas. Namun, Anda harus sadar bahwa itu berarti meningkatkan jumlah panggilan undian per karakter di layar secara signifikan , yang bisa menjadi masalah serius dalam MMO di mana dulu setidaknya harus memperhitungkan kemungkinan bahwa banyak karakter akan tampil di layar pada sebuah waktu.

Membuat gabungan layer render menjadi satu lembar sprite adalah alat yang berguna untuk mengatasi masalah ini. Anda harus memiliki beberapa kode yang akan melakukan langkah-langkah render di atas untuk tekstur yang dapat Anda simpan ke disk atau cache di memori. Dengan begitu Anda dapat membayar biaya render yang meningkat satu kali, setiap kali pemain mengganti gigi mereka, tetapi setelah render awal itu Anda beralih menggunakan lembar tekstur komposit yang dipanggang untuk semua frame berikutnya.

Untuk efisiensi runtime maksimum, pastikan semua sprite sheet untuk karakter dan persneling sejajar sehingga Anda bisa membuat seluruh sheet dan bukan frame individual. Anda dapat menggunakan berbagai bentuk pengemasan bin off-line untuk memaksimalkan tata letak sprite pada lembar, serta kompresi tekstur, untuk menghemat ruang off-line.

Dimungkinkan juga untuk memanfaatkan teknik ini selama pembuatan konten game Anda: karakter dengan gigi tetap, seperti NPC, dapat dipra-persiapan untuk menghemat waktu proses (terutama untuk karakter yang mungkin sering muncul).

Anda juga akan ingin memastikan permainan Anda sebagai cara untuk melaporkan kepada pemain apa pun jenis karakter dasar dan peralatan lengkap dari pemain lain di dekatnya, sehingga Anda dapat melakukan pre-emptively melakukan penggabungan pada mesin klien ketika kapan para pemain terdekat itu akhirnya datang ke tampilan pemain lokal.

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.