Scaling platformer seni pixel saya dari 720p ke 1080p

12

Saya sedang mengembangkan platformer 2D seni pixel untuk PC dan smartphone, tetapi saya terjebak pada masalah teknis.

Saya memilih untuk memiliki resolusi ubin 32x32, dan resolusi sprite karakter 64x64. Level dibagi menjadi beberapa bagian yang saya sebut "layar", dan di setiap layar saya punya 40x22.5 ubin, diperkirakan 40x23, jadi resolusi minimumnya adalah 1280x720.

Dalam permainan, saya punya mekanik lompat ganda, jadi saya harus memiliki rentang tampilan vertikal yang baik di setiap "layar".

Inilah masalahnya: 1280x720 bukan resolusi yang sangat tinggi. Pada monitor HD, jendelanya tidak akan besar, dan jika saya meningkatkan resolusi 2x, akan menjadi 2560x1440 dan jendelanya akan jauh lebih besar daripada monitor HD yang sebenarnya. Jika saya mencoba ukuran di antara 1280x720 dan 2560x1440 grafik mulai gagap, atau cacat.

Bagaimana saya bisa mengatasi masalah ini? Apakah ada solusi yang tidak mengharuskan saya menggambar ulang semua ubin dan sprite dalam format 16x16?

Xargon Wan
sumber
Apakah mengurangi resolusi tetapi memiliki kamera menggerakkan layar pilihan desain yang dapat diterima? yaitu resolusi sekarang 640 x 360 namun layar Anda masih 1280x720 tetapi Anda perlu bergerak di sekitar ruangan, agak seperti Metroid atau Axiom Verge?
lozzajp
Anda berada di tempat yang salah, bahkan jika itu adalah game 2d, Anda perlu mendefinisikan kamera. Jadi kamera menentukan resolusi tampilan, fov dan sudut, dan Anda menyajikan data hanya ke kamera. Dengan begitu permainan Anda bebas dari
kesalahan
Hanya berusaha memastikan apa masalahnya sebenarnya. Apakah Anda mengatakan bahwa karena tampilan peta 1280X720 Anda lebih kecil daripada layar monitor 1920X1080 maka Anda ingin meningkatkan tampilan peta menjadi 'layar penuh' sebanyak mungkin? Saya bingung karena menggambar ubin 16X16 tidak akan menyelesaikan masalah (seperti yang saya mengerti).
RobM
@ DMGregory, jika Anda dapat memberikan saya beberapa contoh dengan artefak dalam penskalaan saat menggunakan skala fraksional, itu akan luar biasa karena saya tidak bisa membayangkan satu skenario di mana ketika saya skala gambar di kedua arah jumlah yang sama tidak ada masalah jika jumlahnya angka keseluruhan atau fraksional, yang muncul artefak. dengan artefak yang saya maksud hal-hal, yang seharusnya tidak ada di sana, yang berbeda dari blur, terjadi pada skala tinggi tanpa cukup piksel.
Yosh Synergi

Jawaban:

16

Bagi siapa pun yang bertanya-tanya mengapa ini merupakan masalah untuk pixel art, berikut adalah contoh cepat menggunakan adegan dari Super Mario World:

Contoh adegan seni pixel diskalakan, menampilkan artefak

Jika kita hanya skala game pixel art dari 720 ke 1080 saat runtime (cara kamera game khas mungkin), kita mendapatkan artefak karena rasio non-integer piksel layar per sumber texel. Lihatlah ketidakkonsistenan dalam angka-angka dari contoh skala di sebelah kanan, dan bagaimana rusaknya daun dan telinga Mario.

Ini dapat dimainkan, tetapi hilang kerenyahan art pixel yang menawan. Dan dalam gerak artefak ini dapat merangkak melintasi sprite , membuatnya tampak mengilap.

Menggunakan mode pemfilteran yang memadukan piksel yang berdekatan akan menghindari riak, tetapi olesi dan blur pixel art sebagai gantinya, jadi itu juga tidak terlalu diinginkan.


Sayangnya rasio 1,5x antara 720p dan 1080p adalah skenario terburuk yang bisa kita temui.

Seperti yang Anda perhatikan, penskalaan 1x terlalu kecil dan 2x terlalu besar, dengan selisih sama besar di kedua sisi, dan tidak ada rasio penskalaan bernomor seluruh di antara kita untuk memilih.

Pilihan Anda menjadi:

  • Tolerasikan skala 1x , menampilkan permainan Anda di jendela 1/3 lebih kecil dari layar, menambahkan batas dekoratif jika Anda perlu mengisi ruang.

    • Anda mungkin dapat memperpanjang pemangkasan, menampilkan lebih banyak adegan Anda sekaligus pada layar beresolusi tinggi. Ini mengurangi padding / letterboxing yang diperlukan, tetapi Anda harus mengevaluasi apakah itu berdampak pada bagaimana permainan dimainkan

      (mis. apakah itu memberi pemain pada beberapa perangkat keuntungan yang tidak adil atau membiarkan mereka menemukan rahasia yang seharusnya tidak mudah dilihat?)

  • Tingkatkan 2x dan potong adegan Anda , sehingga pemain melihat lebih sedikit adegan secara bersamaan (sekitar 3/4 sejauh yang bisa mereka lihat sebelumnya).

    Ini juga dapat mempengaruhi cara permainan, misalnya. dengan menyulitkan pemain untuk melihat tempat yang harus dilompati dua kali.

    • Anda mungkin dapat mengkompensasi hal ini dengan logika kamera, memiliki pan tampilan untuk mengikuti atau mengantisipasi pemain, sehingga konten penting masih terlihat dalam satu layar di crop yang lebih kecil, tetapi tidak ada kamera universal terbaik untuk digunakan.

      Jika Anda memutuskan untuk memilih rute ini, coba bagikan beberapa detail gameplay Anda dan kamera saat ini, dan contoh adegan. Dengan itu, kami mungkin dapat membantu menyetel perilaku kamera untuk mengkompensasi (atau game Anda mungkin hanya membutuhkan lebih banyak visibilitas)

  • Buat aset alternatif dengan resolusi berbeda . (Ya, ini banyak pekerjaan, tetapi memberi Anda banyak opsi untuk mengontrol tampilan & nuansa permainan)

    Ini tidak berarti Anda harus membuang aset Anda yang sudah ada yang terlihat hebat di 720p. Artikel ini menjelaskan pertukaran secara kontekstual antara set aset yang berbeda untuk mendukung rentang resolusi target yang lebih luas (dalam Unity, tetapi prinsipnya dapat diterapkan dalam game non-Unity juga).

    • Seperti yang Anda perhatikan, menggambar ulang semua aset Anda dengan ukuran setengah ( 16x16 ubin, 32x32 karakter ) akan memungkinkan Anda menangani 720p pada skala 2x, dan 1080p pada skala 3x, dengan jumlah ubin yang sama seperti yang Anda miliki sekarang. Anda mungkin menemukan resolusi ubin kecil lebih ketat secara visual.

    • Anda juga bisa menggambar set aset "format besar" alternatif yang 150% lebih besar ( 48x48 ubin, 96x96 karakter ), yang akan menangani 1080p pada skala 1x. (Anda akan menggunakan aset Anda yang ada untuk 720p atau 1440 dll). Resolusi yang lebih besar akan membantu Anda mempertahankan kesetiaan seni Anda saat ini, sehingga Anda tidak harus mengorbankan gaya & detail yang Anda miliki sekarang.

      Contoh aset yang ditarik kembali dalam skala 150%

    • Opsi ketiga adalah menggambar set aset yang hanya sedikit lebih kecil ( ubin 24x24, karakter 48x48 ), yang dapat menangani 1080p pada skala 2x, dan sekali lagi mungkin berarti lebih sedikit pengorbanan detail daripada mengurangi separuh semua ukuran aset Anda.

      Ketiga opsi ini akan memungkinkan Anda menjaga framing dan gameplay Anda persis sama di 720 & 1080, tetapi dengan biaya sekitar dua kali lipat pekerjaan aset.

Jadi, sayangnya tidak ada kemenangan mudah di sini, hanya pertukaran yang berbeda.

DMGregory
sumber
2
Anda menyebutkan menjaga skala asli dan menggunakan batas dekoratif. Tergantung pada konteksnya, ini mungkin tempat yang sempurna untuk meletakkan elemen GUI, seperti skor dan kehidupan. Jika batas-batas ini cukup besar agar sesuai dengan informasi seperti itu, batasnya bisa terlihat kurang seperti 'pengisi', dan lebih 'penuh konten' dan relevan dengan permainan.
Gnemlock
3

Menguraikan secara khusus pada opsi @ DMGregory untuk membuat aset alternatif pada resolusi yang berbeda:

Solusi terbaik yang saya tahu mungkin yang paling tidak berguna bagi Anda saat ini: kembangkan aset seni Anda dalam format vektor & rasterisasi sesuai kebutuhan nanti. Ini bukan peluru ajaib; sebagian besar waktu Anda akan menemukan Anda perlu membuat beberapa modifikasi kerajinan tangan kecil setelah rasterisasi.

Opsi terbaik berikutnya yang saya tahu adalah mencoba berbagai algoritma penskalaan gambar, khususnya, algoritma penskalaan pixel art . Seperti sebelumnya, ini bukan pancea; memilih algoritma penskalaan spesifik sangat spesifik konteks. Ini memiliki banyak hubungannya dengan 'rasa' permainan Anda seperti dengan seni itu sendiri & bahkan dengan algoritma + seni yang cocok, Anda mungkin perlu men-tweak beberapa sprite dengan tangan.

Dalam kedua kasus, idenya adalah menggunakan alat untuk melakukan sebagian besar pekerjaan untuk Anda dan memfokuskan upaya manusia pada detail yang tersisa. Seperti yang dikatakan @DMGregory, "tidak ada kemenangan mudah di sini, hanya pertukaran yang berbeda."


Edit tentang penskalaan pecahan: Kebanyakan algoritma penskalaan seni piksel hanya bertambah dengan bilangan bulat. Pendek dari menggulir algoritma penskalaan kustom Anda sendiri, Anda mungkin perlu menggabungkan upscaling & downscaling untuk mendapatkan perubahan 1,5x yang Anda cari. Sebagai referensi, inilah hasil dari penggabungan algoritma scale3x ke kelas atas & algoritma fant ke skala bawah sebesar 50%:

Asli:

masukkan deskripsi gambar di sini

Diskalakan:

masukkan deskripsi gambar di sini

Pikalek
sumber
Sayangnya sebagian besar algoritma penskalaan pixel art yang saya temukan masih cenderung hanya menangani peningkatan jumlah seluruh (biasanya 2x, 3x, 4x) sehingga mereka tidak banyak membantu dengan 720-> 1080 case. (Mungkin orang bisa menggunakan upscaler 3x pixel kemudian downsample setengah ...? Tidak yakin apakah itu akan terlihat lebih baik atau lebih buruk daripada kelas atas langsung)
DMGregory
Poin yang valid. Diedit sedikit untuk mengatasinya. Saya juga menemukan shader ini yang sepertinya mendukung penskalaan pecahan .
Pikalek
+1 ke solusi vektor. Anda harus membuat aset Anda sangat besar dan kelas bawah.
Mark Aven