Bagaimana cara menurunkan skala pixel art?


14

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 320x200atau meningkat 640x480untuk 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 ).


Pemetaan pemetaan tidak memerlukan banyak versi aset; itu dapat dilakukan pada waktu pemuatan konten secara otomatis oleh OpenGL atau DirectX. Apakah itu memuaskan tujuan Anda?
Seth Battin

@SethBattin saya tidak yakin. Saya sedang berpikir untuk menjalankan game yang dibuat untuk 1280x720 di misalnya 1024x576. Apa yang digunakan OpenGL dan DirectX untuk mengubah skala jika saya memberikan gambar dengan ukuran 128x96 dan seharusnya ditampilkan dalam 102x76? (yang bahkan merupakan masalah pembulatan karena seharusnya 102.4x76.8 piksel)
Michael Stum

Memetakan gambar mengaburkan banyak gambar. Anda tidak ingin itu untuk pixelart.
Kromster mengatakan mendukung Monica

5
Hanya FYI: Monkey Island Remake tidak perlu downscaling. Gim ini dijalankan dengan EGA dan memiliki ukuran efektif 320x200 piksel. Tidak perlu membuat versi downscaled ini untuk perangkat seluler, karena sudah lebih kecil dari resolusi yang dimiliki perangkat ini saat ini.
bummzack

2
Bagaimana tampilan pixel art Anda? Anda meminta kami untuk menjawab dalam kebutaan.
aaaaaaaaaaaa

Jawaban:


14

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)

  1. 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.

  2. 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.

  3. 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.

  4. 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.


Saya dalam situasi yang sama dan itu membuat saya gila. Game kami adalah pixelart yang dibuat untuk layar setinggi 600px. Tetapi jika saya kelas atas ke layar 720p (PC), itu akan terlihat sangat mengerikan, sedikit buram. Saya tidak tahu harus berbuat apa di sini. Saya juga berpikir dalam membuat peta yang lebih besar untuk layar 720p dan menjaga pixelart seperti apa adanya, tetapi kemudian saya memiliki masalah yang sama untuk layar 1080p. Saya pikir kita harus melakukan pixelart 360p (atau lebih kecil), jadi kita akan memiliki skala x2 dan x3 yang sempurna untuk layar 720 dan 1080p. Sekarang sudah terlambat untuk itu. Ada ide atau saran lebih lanjut?
Damian

8

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


0

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


3
-1, karena mengurangi pixel-art (yang biasanya pixel-per-pixel buatan tangan, misalnya ) tidak akan pernah terlihat bagus dengan algoritma ini. Dengan pendekatan tetangga terdekat Anda akan kehilangan segmen garis penting. Dengan interpolasi Anda akan mendapatkan gambar buram. Saya khawatir tidak ada jawaban yang memuaskan untuk pertanyaan OP kecuali melakukannya secara manual.
bummzack
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.