GM Studio'da bulanıklık olmadan piksel resmini nasıl ölçeklendirebilirim?


9

Game Maker Studio'da piksel resmi kullanan bir oyun oluşturuyorum. Oyunu başlattığımda, tüm ölçeklendirilmiş dokular gerçekten bulanık. (Küçük olanlara olmaz.)

Örneğin, bu resim

Güzel :)

oyunda şu şekilde işler:

bulanık :(

Küçük pikselleri bulanık pikseller yerine büyük piksellere dönüştürmek için yine de var mı ?


dokular için kayıplı bir sıkıştırma kullanmayın, bunun yerine bmp, gif veya png kullanın, hepsi kayıpsız depolamayı destekler
cırcır ucube

Piksel resminiz olduğunda, genellikle yeniden boyutlandırma yapmaktan kaçınmak istersiniz, çünkü piksel sanatı her zaman bundan muzdariptir. Yeniden boyutlandırmadan kaçınılamıyorsa, gevrek görünümü korumak için en yakın komşu enterpolasyonunu kullanmalıdır. Yeniden boyutlandırmak istediğinizde raster grafikler yerine vektör grafikleri kullanın. Ne yazık ki size bu konuda yardımcı olamıyorum çünkü GMStudio'ya aşina değilim.
Philipp

örnekler eklendi.
mpower

Oyun yapımcılarının olasılıklarını bilmiyorum ama tüm ölçek filtrelemeyi devre dışı bırakmak ve en yakın komşu ölçeklendirmeyi etkinleştirmek istersiniz.
Appleshell

1
Doğru hatırlıyorsam , orijinal Spelunky (Game Maker'da yapılan) doğrusal ölçeklendirmeyi etkinleştiren bir DLL'e sahipti. Kaynak bu linkte mevcuttur; bir göz atın.
Anko

Yanıtlar:


13

Bazı kaynaklardan bir çözüm buldu. Global Oyun Ayarları'na gidin, ardından herhangi bir platform spoylerine (örneğin "Windows" veya "Android") gidin, "Grafikler" başlıklı spoyleri seçin ve "Pikseller arasında renkleri enterpolasyonla" kapalı konuma getirin. İyi eğlenceler :)


Bu teknik olarak işe
yarar

Yani bu varsayılan ayarı yapmak için uğraşmadılar mı?!? Ben sadece kontrol ve oyun yapımcısı 8.0 diğer yolu varsayılan olduğunu. Bu sadece fındık .... Büyük cevap btw.
user64742

5

Hiç kimse her hareketli grafiği manuel olarak ölçeklendirmekle uğraşmak istemez; sadece özensiz bir çalışma alanı değil, aynı zamanda profesyonelce de değil. Global oyun ayarlarında enterpolasyonu kapatırken bir çözüm bulamadım.

texture_set_interpolation(false);

:) Umarım bu, gelecekteki çabalarınızda size yardımcı olur.


Bu, birden çok platformu hedefliyorsanız en iyi çözümdür, her bir platform için "Pikseller arasında renkleri enterpolasyonla" tıklamanız gerekmez! Tam aradığım şey.
Logan Pickup

1

Bunun için genelde yaptığım şey photoshop veya GIMP (ölçek / En Yakın Komşu) kullanıyor

Ancak GM: S sprite editörü itslef içinde yapmak için, ölçek yerine Stretch komutunu kullanıyorum ve POOR kalitesine ayarlıyorum. Bu, Blocky tarzında bir his bırakacakAtm üzerinde çalışan bir oyundan Screenie, sprite GM: S'nin kendisinde büyütüldü

Yukarıda ATM üzerinde çalışan bir oyun im, ben sadece yaptım!


Bu, hepsi için olmayacak belirli çözünürlüklerde yükseltme yapmak için çalışmasına rağmen, GM ayrıca dokuları varsayılan olarak sıkıştırma alışkanlığına sahiptir. Bu, esneme işlevini kullanırken farklı çözünürlüklerde farklı ölçeklenir, bu da kaçınmaya çalıştığımız bulanıklığa neden olur. Ancak (Ölçek / En Yakın Komşu) bahsi için +1.
Tom 'Blue' Piddock

1

Haritadaki arka planlar sekmesindeki ölçek işlevini kapatın. Ölçek dışı görünüyorsa, arka zemin dokusunun bulunduğunuz oda / harita ile aynı boyutta olduğundan emin olun.

Alternatif kullanmak buraya bu yazıyı bir arka plan komut dosyası oluşturmak için irade lüks ki (umarım) gevrek sonuçlarla geri zemin.

Bu, yüzeyleri kullanır, bu nedenle daha fazla yardıma ihtiyacınız varsa - bu yazı çok fazla bilgi sağlar.


DÜZENLE:

Yanıtlarıma geri dönersek bunun sıfırdan farklı olmadığını ve öğretici içeriğe ihtiyaç duyduğunu fark ettim. İşte burada:

ADIM 1 : İstediğiniz ölçeği seçin. Her oda için bir görünüm kullanın ve W ve H bağlantı noktalarının uygun şekilde ölçeklendirilmesini sağlayın. Örneğin, 2 ölçeği kullanıyorsanız ... GM'nin oda editöründe böyle görünecektir.

Bunun tüm odalar için tutarlı olması önemlidir. Çok fazla odanız varsa, bunu kod * ile yapmak daha kolay olabilir. Bunu bu şekilde yapmayı tercih ederim, çünkü o zaman değerler sabit değildir ve birden fazla farklı ölçeği destekleyebilirim.

ADIM 2 : 3 komut dosyası oluşturun: screen_init, screen_begin ve screen_end. İşte senaryoların her birinde neler var ...

Alıntı: 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();}

Alıntı: ekran_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();

Alıntı: ekran_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);

ADIM 3 : Şimdi senaryomuz var, ama nereye gidiyorlar? Bir nesne oluşturun. Obj_screen, objScreen, o_screen veya her neyse, ve aşağıdakileri yapın:

  • A) screen_initscript öğesini Create olayına yerleştirin.
  • B) screen_begin komut dosyasını Begin Step etkinliğine yerleştirin.
  • C) screen_end betiğini End Step etkinliğine yerleştirin.

Ve bu nesneyi oyununuzun ilk ve en önemli odasına yerleştirin, kalıcı olarak işaretleyin ve kopyalarının olmadığından emin olun.

İşlemi tamamladınız ve şimdi güzel, net ölçeklendirme var = D


Piksel sanatlarını sevdiğim için bulanıklaştırmak istemiyorum. Bu sorumu cevaplamıyor.
mpower

Game Maker stüdyosu, genellikle istenmeyen ölçeklendirmeyi bulanıklaştıran kötü bir ölçeklendirme algoritmasıyla ölçeklendirme yapar. Ölçeklemeyle net bir arka plan denemek için cevabımda yeni düzenlediğim öğreticiyi kullanın.
Tom 'Blue' Piddock

Bir grafik programında arka plan dokunuzu önceden ölçeklendirmeyi düşündünüz mü?
Philipp

İki yol iyidir. İlk önce bazı komut dosyalarını burada birleştirin. İkinci, görüntüleri kullanmadan önce önceden ölçeklendirmektir.
mpower

Mükemmel, sevindim yardımcı oldu.
Tom 'Blue' Piddock

-2

texture_set_interpolation(false)Onları olduğu gibi çizmek için kullanın .


Bu doğru olabilir, ancak daha fazla ayrıntıya girebilir misiniz? Yanıtlarımızda normalde biraz daha ayrıntılı bir görünüm ararız.
Gnemlock
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.