Come posso ingrandire la pixel art senza sfocatura in GM Studio?


9

Sto creando un gioco in Game Maker Studio che utilizza pixel art. Quando lancio il gioco, tutte le trame ingrandite sono davvero sfocate. (Non succede ai più piccoli.)

Ad esempio, questa immagine

simpatico :)

rende nel gioco in questo modo:

sfocato :(

Esiste un modo per ridimensionare i pixel piccoli in pixel grandi anziché pixel sfocati ?


non usare una compressione con perdita di dati per le trame invece usa bmp, gif o png, supportano tutti lo storage senza perdita di dati
maniaco del cricchetto

Quando hai la pixel art, di solito vuoi evitare qualsiasi ridimensionamento, perché la pixel art ne soffre sempre. Quando il ridimensionamento non può essere evitato, dovrebbe usare l'interpolazione del vicino più vicino per preservare l'aspetto croccante. Quando vuoi ridimensionare, usa la grafica vettoriale invece della grafica raster. Purtroppo non posso aiutarti in quanto non conosco GMStudio.
Philipp,

esempi aggiunti.
mpower,

Non conosco le possibilità dei produttori di giochi, ma vorresti disabilitare tutti i filtri di scala e abilitare il ridimensionamento del vicino più vicino.
Appleshell,

1
Se ricordo bene, l'originale Spelunky (realizzato in Game Maker) aveva una DLL che abilitava il ridimensionamento lineare. La fonte è disponibile a quel link; dare un'occhiata.
Anko,

Risposte:


13

Ho trovato una soluzione da alcune risorse. Vai su Impostazioni di gioco globali, quindi vai su qualsiasi spoiler della piattaforma (ad esempio "Windows" o "Android"), lì scegli lo spoiler intitolato "Grafica" e disattiva "Interpola i colori tra i pixel". Divertiti :)


Funziona tecnicamente, sebbene la pixel art possa risultare alterata a causa del ridimensionamento con un fattore non intero (ad es
2,5x

Vuoi dire che non si sono preoccupati di rendere l'impostazione predefinita?!? Ho appena verificato e che l'impostazione predefinita è viceversa in Game Maker 8.0. Questo è semplicemente pazzesco ... Ottima risposta tra l'altro.
user64742

5

Nessuno vuole affrontare la necessità di ridimensionare manualmente ogni sprite; non è solo uno spazio di lavoro sciatto ma rende molto poco professionale. Ho trovato una soluzione quando la disattivazione dell'interpolazione nelle impostazioni di gioco globali non ha funzionato.

texture_set_interpolation(false);

:) Spero che questo ti aiuti nelle tue attività future.


Questa è la soluzione migliore se ti rivolgi a più piattaforme, non devi fare clic su "Interpola i colori tra i pixel" per ogni singola piattaforma! Esattamente quello che stavo cercando.
Logan Pickup,

1

Quello che faccio generalmente per questo è usando Photoshop o GIMP (scala / vicino più vicino)

Ma per farlo nell'editor sprite GM: S, uso il comando Stretch invece di ridimensionarlo e impostarlo su POVERA qualità. Ciò manterrà la sensazione BlockyScreenie da un gioco che sto lavorando su atm, lo sprite è ingrandito in GM: S stesso

Sopra c'è un gioco che sto lavorando su ATM, ho fatto proprio questo!


Sebbene questo funzioni per l'upscaling su determinate risoluzioni, non lo farà per tutti, GM ha anche l'abitudine di comprimere le trame per impostazione predefinita. Ciò ridimensionerebbe anche diversamente su risoluzioni diverse quando si utilizza la funzionalità di allungamento, ciò provocherà la sfocatura che stiamo cercando di evitare. Tuttavia, +1 per la menzione (Scala / Prossimo più vicino).
Tom 'Blue' Piddock

1

Disattiva la funzione di ridimensionamento nella scheda sfondi della mappa. Se sembra fuori scala, assicurati che la trama per lo sfondo abbia le stesse dimensioni della stanza / mappa in cui ti trovi.

In alternativa, utilizza questo post qui per creare uno script in background che aumenterà lo sfondo con risultati (si spera) nitidi.

Questo utilizza le superfici, quindi se hai bisogno di ulteriore aiuto su questo - questo post fornisce molte informazioni.


MODIFICARE:

Tornando alle mie risposte mi sono reso conto che questo non è da zero e ha bisogno del contenuto del tutorial. Ecco qui:

PASSAGGIO 1 : scegli la scala che desideri. Utilizzare una vista per ogni stanza e disporre la porta W e la porta H ridimensionate in modo appropriato. Quindi, ad esempio, se stavi usando una scala di 2 ... sarebbe simile a questo, nell'editor della stanza di GM.

È importante che ciò sia coerente per tutte le stanze. Se hai molte stanze, potrebbe essere più semplice farlo tramite il codice *. Preferisco farlo in questo modo, perché i valori non sono costanti e posso supportare più scale diverse.

PASSAGGIO 2 : creare 3 script, screen_init, screen_begin e screen_end. Ecco cosa succede in ciascuno degli script ...

Citazione da: 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();}

Citazione da: 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();

Citazione da: 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);

PASSO 3 : ora abbiamo degli script, ma dove vanno? Crea un oggetto. Ad esempio, obj_screen, objScreen, o_screen o qualsiasi altra cosa, e procedi come segue:

  • A) posizionare lo screen_initscript nell'evento Create.
  • B) posizionare lo script screen_begin nell'evento Begin Step.
  • C) posizionare lo script screen_end nell'evento End Step.

E posiziona l'oggetto nella prima e prima stanza del gioco, contrassegnalo come persistente e assicurati che non vi siano duplicati.

Hai finito e ora hai un ridimensionamento gradevole e nitido = D


Voglio ridimensionarlo senza offuscare poiché amo i pixel arts, quindi questo non risponde alla mia domanda. È possibile?
mpower,

Probabilmente, Game Maker studio esegue il ridimensionamento con un algoritmo di ridimensionamento errato che spesso rende sfocato il ridimensionamento indesiderato. Usa il tutorial che ho appena modificato nella mia risposta per provare uno sfondo nitido con ridimensionamento.
Tom 'Blue' Piddock,

Hai preso in considerazione il pre-ridimensionamento della trama di sfondo in un programma grafico?
Philipp,

Due modi sono buoni: prima di tutto combinando alcuni degli script qui. Il secondo è pre-ridimensionare le immagini prima di usarle.
mpower,

Eccellente, felice che abbia aiutato.
Tom 'Blue' Piddock,

-2

Usa texture_set_interpolation(false)per farli disegnare così come sono.


Questo potrebbe essere corretto, ma potresti approfondire ulteriormente? Normalmente cerchiamo un po 'più di dettaglio, nelle nostre risposte.
Gnemlock,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.