Ada banyak algoritma untuk meningkatkan pixel art. (Saya lebih suka hqx , secara pribadi.) Tetapi apakah ada algoritma terkenal untuk menurunkannya ? Gim saya dirancang untuk berjalan pada resolusi 1280x720
, tetapi jika dimainkan pada resolusi yang lebih rendah saya masih ingin itu terlihat bagus.
Sebagian besar diskusi seni pixel berpusat 320x200
atau meningkat 640x480
untuk digunakan dalam emulator konsol, tapi saya ingin tahu bagaimana game 2D modern seperti Monkey Island Remake dapat terlihat bagus pada resolusi yang lebih rendah?
Tentu saja mengabaikan opsi memiliki beberapa versi aset (yaitu pemetaan ).
graphics
graphics-programming
pixel
Michael Stum
sumber
sumber
Jawaban:
Saat ini saya membuat game yang harus dijalankan pada berbagai ukuran tampilan dan rasio aspek, dan itu bukan proses yang sangat mudah. Selain itu, jika Anda membuat hal-hal dalam seni pixel, dan Anda ingin menjaga perasaan seni pixel sambil mendukung banyak resolusi, Anda berjalan ke dunia kesakitan, jadi bersiaplah.
Menurut pendapat saya, ada beberapa hal yang dapat Anda lakukan (ada yang eksklusif, tetapi yang lain tidak)
Tetapkan resolusi minimum, dan hanya kelas atas (semuanya) dalam istilah bilangan bulat dengan tetangga terdekat. Dengan begitu Anda bisa menjaga perasaan seni pixel. Saya tidak berpikir downscaling adalah ide yang baik, karena Anda akan kehilangan detail, dan seluruh tujuan menggunakan seni pixel yang dibuat dengan hati-hati akan dikalahkan. Jika resolusi minimum yang didukung Anda terlalu kecil untuk sprite Anda, ubah resolusi minimum yang didukung, atau gambar ulang semua aset untuk mendukung resolusi minimum ini.
Saat Anda menemukan resolusi, atau rasio aspek yang tidak cukup untuk menutupi seluruh layar, perpanjang game Anda (tampilkan lebih banyak ubin), sambil menjaga aset tetap utuh. Anda harus membuat game Anda sehingga masih dapat dimainkan dengan rasio resolusi / aspek minimum.
Jika memperpanjang game tidak dimungkinkan, isilah bagian non-game di layar dengan warna hitam; baik garis-garis di bagian atas dan bawah, kiri dan kanan, atau bingkai hitam. Inilah yang dilakukan iPad ketika menjalankan aplikasi iPhone dalam mode yang diperbesar. Ini juga banyak digunakan dalam emulator.
Menyerahlah untuk tetap setia pada pixel grid. Tapi Anda kemudian harus berhenti menggunakan aset pixel arty dengan sudut tajam. Kemudian filter kelas atas / bawah menggunakan filter bilinear (atau bicubic secara optimal, jika platform Anda mendukungnya). Ini adalah pilihan terbaik untuk memaksimalkan penggunaan layar, sambil menjaga pengalaman pengguna serupa di semua resolusi yang didukung.
Untuk permainan saya, saya akhirnya melakukan opsi nomor 4, dan saya cukup terkejut melihat betapa bagus tampilannya pada perangkat mulai dari 320 piksel pada vertikal (Android 2.3 lama) hingga 1536 piksel pada vertikal (iPad 2012 dengan tampilan retina). Aset asli dimaksudkan untuk 600 piksel pada vertikal (aslinya untuk tampilan 800x600 pada PC Windows). Meskipun untuk game selanjutnya, saya pikir resolusi vertikal logis yang lebih baik adalah 720 piksel.
Gim ini menggunakan resolusi virtual tinggi 600-pixel virtual, diskalakan ke resolusi asli perangkat dengan penyaringan bilinear. Ini berarti bahwa semua koordinat Y dalam kode berubah dari 0 (di atas layar) ke 600 (di bawah layar).
Untuk ukuran horizontal, saya kira lebar maksimum adalah 1080 piksel, yang lebih dari cukup untuk menutupi rasio aspek terluas 16: 9. Koordinat x saya berada di tengah, jadi x = 0 adalah tengah layar, dan koordinat x pergi dari -540 di sebelah kiri ke 540 di sebelah kanan. Saya memastikan semuanya cocok antara -400 dan 400 untuk mendukung tampilan tersempit (4: 3)
Namun, jika saya harus menjaga perasaan seni pixel, saya pasti akan menggunakan opsi 1 dan 2. Artinya saya hanya skala dalam hal bilangan bulat untuk menjaga perasaan gumpal seni pixel, dan merancang game sehingga jumlah yang terlihat ubin tidak diperbaiki dan dapat beradaptasi dengan resolusi layar / aspek rasio.
Jadi, untuk (tidak) menjawab pertanyaan Anda. Saya pikir downscaling pixel art adalah ide yang sangat buruk, jadi sebaiknya Anda tidak melakukannya. Ada beberapa cara lain untuk mendukung resolusi layar yang berbeda yang akan memberikan hasil yang lebih baik daripada hanya memotong seni yang Anda buat dengan cermat.
sumber
Pertimbangkan untuk benar-benar membuat versi yang diperkecil pada waktu pengembangan, dan memasukkannya langsung ke dalam game sebagai sumber daya. Lakukan ini dengan Photoshop atau alat apa pun yang Anda temukan menciptakan apa yang Anda sukai. Kemudian mintalah game secara dinamis memilih set seni yang tepat yang sesuai dengan resolusi saat ini.
Berikut adalah beberapa alasan Anda dapat melakukan ini ...
Menghemat Pekerjaan Pemrosesan
Jika Anda melakukan skala ulang pemrograman pada saat runtime, perangkat lunak Anda mungkin akan tetap membuat dan menyimpan karya seni. Jadi mengapa tidak menyertakan versi yang diperkecil dalam bundel aset seni? Saya kira jika itu membuat pengunduhan lebih besar daripada yang Anda inginkan, tetapi Anda akan menghemat beberapa beban CPU, penulisan disk, dll.
Kontrol Artistik yang Lebih Besar
Jika Anda mengubah skala seni sendiri, Anda akan memiliki kontrol yang lebih besar atas penampilan akhir. Itu mungkin tidak membuat perbedaan jika Anda mengurangi jumlah kecil, tetapi ketika Anda mendapatkan resolusi yang jauh lebih rendah, Anda mungkin ingin memiliki kontrol artistik yang lebih baik atas penampilan akhir. Misalnya jika mata karakter tertentu perlu ditekankan, Anda mungkin benar-benar menggambar versi resolusi yang lebih rendah dengan mata yang tidak diperkecil sebanyak mungkin untuk mempertahankan efek - sesuatu yang tidak dapat dilakukan oleh penskalaan terprogram.
Penskalaan Dinamis Tidak Sempurna
Anda dapat membuat keputusan artistik yang berbeda yang tidak berfungsi dengan penskalaan dinamis. Misalnya, Anda ingin meletakkan batas, garis besar, atau sorot di sekitar gambar. Jika dilihat pada resolusi yang lebih tinggi, ini mungkin terlihat baik-baik saja, tetapi versi yang diperkecil mungkin akan berlumpur atau sepenuhnya kehilangan efeknya. Tetapi jika dilakukan dengan tangan, Anda dapat secara khusus menerapkan efek pada setiap ukuran sendiri dan menjamin Anda mempertahankan dampaknya.
Pikiran Lainnya
Anda juga bisa melakukan pendekatan hibrid, dengan seperangkat sumber daya khusus resolusi yang digunakan di mana ditemukan, dan satu set generik yang secara dinamis diskalakan jika tidak ada versi khusus resolusi ditemukan. Ini agak seperti cara kerja platform Android. Beberapa info tentang ini di http://developer.android.com/guide/practices/screens_support.html
sumber
Mengubah ukuran turun lebih mudah daripada mengubah ukuran atas karena Anda memilih informasi untuk dibuang daripada harus menemukan informasi baru (dan mungkin salah) untuk mengisi kekosongan. Dengan pemikiran itu, Anda mungkin tidak perlu sesuatu yang istimewa di sini dan sebagian besar algoritma resampling standar dari ranah pemrosesan gambar harus bekerja cukup baik untuk memperkecil gambar: bilinear, Gaussian, Lanczos, dll.
Lanczos khususnya mungkin merupakan pilihan yang menarik karena mempertajam gambar, mungkin mempertahankan detail yang jika tidak akan hilang saat menggabungkan beberapa piksel menjadi satu. Jelas ini datang dengan biaya berpotensi memperkenalkan artefak yang tidak diinginkan.
Beberapa perbandingan visual di sini: /gis/10931/what-is-lanczos-resampling-useful-for-in-a-spatial-context
sumber