Bagaimana cara meningkatkan pixel art tanpa blur di GM Studio?


9

Saya membuat game di Game Maker Studio yang menggunakan pixel art. Ketika saya meluncurkan game, semua tekstur yang ditingkatkan benar-benar buram. (Itu tidak terjadi pada yang kecil.)

Misalnya, gambar ini

bagus :)

merender dalam game seperti ini:

kabur :(

Apakah ada cara untuk mengubah ukuran piksel kecil menjadi piksel besar, bukan piksel kabur ?


jangan gunakan kompresi lossy untuk tekstur alih-alih gunakan bmp, gif atau png, semuanya mendukung penyimpanan lossless
ratchet freak

Ketika Anda memiliki pixel art, Anda biasanya ingin menghindari pengubahan ukuran, karena pixel art selalu menderita karenanya. Ketika mengubah ukuran tidak dapat dihindari, itu harus menggunakan interpolasi tetangga terdekat untuk menjaga tampilan yang renyah. Saat Anda ingin mengubah ukuran, gunakan vektor-grafis alih-alih raster-grafik. Sayangnya saya tidak dapat membantu Anda dengan itu karena saya tidak terbiasa dengan GMStudio.
Philipp

contoh ditambahkan.
mpower

Saya tidak tahu kemungkinan pembuat game tetapi Anda ingin menonaktifkan semua penyaringan skala dan mengaktifkan penskalaan tetangga terdekat.
Appleshell

1
Jika saya ingat dengan benar, Spelunky asli (buatan Game Maker) memiliki DLL yang memungkinkan penskalaan linier. Sumber tersedia di tautan itu; lihat.
Anko

Jawaban:


13

Menemukan solusi dari beberapa sumber. Buka Pengaturan Game Global, lalu buka platform spoiler (misalnya "Windows" atau "Android"), pilih spoiler berjudul "Grafik" dan matikan "Interpolasi warna di antara piksel". Selamat bersenang-senang :)


Secara teknis ini berfungsi, meskipun pixel art dapat berubah karena peningkatan dengan faktor non-integer (mis. 2.5x)
liggiorgio

Maksudmu mereka tidak repot-repot menjadikannya pengaturan default?!? Saya baru saja memeriksa dan defaultnya adalah sebaliknya di pembuat game 8.0. Ini hanya gila .... Jawaban yang bagus btw.
user64742

5

Tidak ada yang mau berurusan dengan harus secara manual meningkatkan setiap sprite; tidak hanya itu ruang kerja yang ceroboh tetapi menghasilkan sangat profesional. Saya menemukan solusi ketika mematikan interpolasi di pengaturan game global tidak berhasil.

texture_set_interpolation(false);

:) Saya harap ini membantu Anda dalam upaya masa depan Anda.


Ini adalah solusi terbaik jika menargetkan beberapa platform, Anda tidak perlu mengklik "Interpolasi warna antar piksel" untuk setiap platform tunggal! Persis apa yang saya cari.
Logan Pickup

1

Apa yang saya lakukan secara umum untuk ini adalah menggunakan photoshop atau GIMP (scale / Nearest Neighbor)

Tetapi untuk melakukannya di GM: S sprite editor itslef, saya menggunakan perintah Stretch bukannya skala dan mengaturnya ke kualitas MISKIN. Itu akan membuat perasaan Blocky tetap seperti ituScreenie dari gim yang sedang bekerja di atm, sprite diperbesar dalam GM: S sendiri

Di atas adalah gim yang bekerja di ATM, saya baru saja melakukannya!


Meskipun ini bekerja untuk meningkatkan skala pada resolusi tertentu yang tidak cocok untuk mereka semua, GM juga memiliki kebiasaan mengompresi tekstur secara default. Ini juga akan skala berbeda pada resolusi yang berbeda saat menggunakan fungsionalitas peregangan, ini akan menyebabkan blur yang kita coba hindari. Namun, +1 untuk penyebutan (Skala / Tetangga Terdekat).
Tom 'Blue' Piddock

1

Matikan fungsi skala di tab latar belakang di peta. Jika tampaknya di luar skala, pastikan tekstur Anda untuk latar belakang sama dengan ukuran ruangan / peta tempat Anda berada.

Atau gunakan posting ini di sini untuk membuat skrip latar belakang yang akan meningkatkan latar belakang dengan (mudah-mudahan) hasil yang jernih.

Ini menggunakan permukaan jadi jika Anda memerlukan bantuan ekstra - posting ini menyediakan banyak informasi.


EDIT:

Kembali pada jawaban saya, saya menyadari ini bukan awal dan membutuhkan konten tutorial. Ini dia:

LANGKAH 1 : Pilih skala yang Anda inginkan. Gunakan tampilan untuk setiap kamar dan minta port W dan port H diskalakan dengan tepat. Jadi, misalnya, jika Anda menggunakan skala 2 ... akan terlihat seperti ini, di editor ruang GM.

Penting bahwa ini konsisten untuk semua kamar. Jika Anda memiliki banyak kamar, mungkin ini lebih mudah dilakukan melalui kode *. Saya lebih suka melakukannya dengan cara itu, karena nilai-nilainya tidak konstan dan saya dapat mendukung beberapa skala yang berbeda.

LANGKAH 2 : Buat 3 skrip, screen_init, screen_begin, dan screen_end. Inilah yang terjadi di masing-masing skrip ...

Kutipan dari: screen_init

// screen base(view_wview and view_hview)
screen_x = 0;
screen_y = 0;
screen_w = 320;
screen_h = 240;
screen_scale = 2;

// create a surface for the whole screen to be drawn on
screen = surface_create(screen_w,screen_h);

// this will destroy the screen object if surfaces are not supported on the graphics card, reverting to the viewport method
if screen = -1{instance_destroy();}

Kutipan dari: screen_begin

// this draws the surface on the screen
surface_reset_target();
draw_clear(0);
draw_set_blend_mode_ext(bm_one, bm_zero);
draw_surface_stretched(screen,screen_x,screen_y,screen_w*screen_scale,screen_h*screen_scale);
draw_set_blend_mode(bm_normal);
screen_refresh();

Kutipan dari: screen_end

// this sets surface 'screen' as the drawing target for everything in the game, so all drawing will be done on this surface and not on the game screen
surface_set_target(screen);

LANGKAH 3 : Sekarang kita punya skrip, tapi kemana mereka pergi? Buat objek. Suka, obj_screen, objScreen, o_screen, atau apa pun, dan lakukan hal berikut:

  • A) letakkan skrip screen_inits di acara Buat.
  • B) letakkan skrip screen_begin dalam acara Begin Step.
  • C) letakkan skrip screen_end dalam acara End Step.

Dan tempatkan objek itu di ruang pertama dan terpenting dari gim Anda, tandai terus-menerus, dan pastikan tidak ada duplikatnya.

Anda selesai, dan sekarang memiliki skala bagus, renyah = D


Saya ingin skala tanpa buram karena saya suka pixel art. Jadi ini tidak menjawab pertanyaan saya. Apakah ini mungkin?
mpower

Tidak mungkin, Game Maker studio melakukan penskalaan dengan algoritma penskalaan yang buruk yang sering membuat penskalaan yang tidak diinginkan menjadi kabur. Gunakan tutorial yang baru saja saya edit dalam jawaban saya untuk mencoba latar belakang yang tajam dengan penskalaan.
Tom 'Blue' Piddock

Apakah Anda mempertimbangkan pra-penskalaan tekstur latar belakang Anda dalam program grafik?
Philipp

Ada dua cara yang baik. Pertama menggabungkan beberapa skrip di sini. Kedua adalah pra-penskalaan gambar sebelum menggunakannya.
mpower

Luar biasa, senang itu membantu.
Tom 'Blue' Piddock

-2

Gunakan texture_set_interpolation(false)untuk membuatnya menarik mereka apa adanya.


Ini mungkin benar, tetapi bisakah Anda masuk ke detail lebih lanjut? Kami biasanya mencari sedikit lebih detail, dalam jawaban kami.
Gnemlock
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.