Come si affronta l'indipendenza della risoluzione nei contenuti grafici basati su raster?


32

Quei giochi che non sono abbastanza fortunati da funzionare su specifiche di una piattaforma bloccata, come i palmari, devono funzionare in vari formati di risoluzione e proporzioni.

In un gioco 3D potresti avere un HUD o una GUI di menu basata sulla grafica raster e in un gioco 2D potresti avere un sacco di quad che sono navi per gli sprite.

Quindi la mia domanda è: come approcci la progettazione e il funzionamento dei contenuti attraverso varie risoluzioni e proporzioni? Supponiamo che tu abbia un carattere sprite di 300x400 pixel sprite e circondato da un livello fatto di tessere. Su diverse risoluzioni / proporzioni vedresti un FOV completamente diverso. Oppure, se hai un menu HUD o una GUI, vorresti mantenere alcune cose nelle stesse posizioni e delle stesse dimensioni rispetto allo schermo. Tuttavia, la fonte grafica è bitmap raster, non vettoriale.

Ovviamente, il problema è stato affrontato numerose volte. Sono interessato a conoscere vari approcci che hanno funzionato finora per te. Mantenete un'unità 'pixel' agnostica di dimensione arbitraria che trasformate magicamente in dimensioni necessarie tramite una formula basata su risoluzione e proporzioni o altri approcci?

modificare:

Quindi, la conclusione è di enumerare le proporzioni. Minima combinazione di aspetti: la risoluzione è quella in cui si progettano cose importanti. Un'area sicura se vuoi. Stessi rapporti, ma risoluzioni più elevate sono semplici problemi di ridimensionamento. Il contenuto artistico è progettato per la massima risoluzione. Le proporzioni più grandi mostrano semplicemente più livello / FOV con informazioni presentate che non sono critiche come quella in un'area sicura. Qualcosa di simile a questa immagine che ho realizzato . testo alternativo


1
Non vedo come sei passato dalle risposte in questa domanda alla conclusione che hai fatto dopo la tua " modifica: ". IMO, queste risposte sono inadeguate e non avresti dovuto accettarne nessuna. Ad esempio: la tua risposta accettata parla solo di una parte della domanda (ridimensionamento dello sprite), non dell'intera questione. Quello che hai detto dopo il " modifica: " è più utile delle risposte qui, IMO. Ma non lo "capisco" abbastanza bene da implementarlo. Sfortunatamente, se chiedo l'elaborazione di una nuova domanda, questa verrà contrassegnata come duplicata.
Daniel Kaplan,

Risposte:


7

Se le tue risoluzioni sono simili tra loro, puoi semplicemente usare la stessa arte su tutti loro con forse un po 'di downscaling in fase di esecuzione per gli schermi più piccoli. Se differiscono per più di un fattore 2x, dovrai creare risorse separate (o almeno avere un artista) per le diverse risoluzioni.

Con il 2D, la risoluzione influisce notevolmente sulla progettazione delle immagini. Uno sprite che appare riccamente dettagliato e realistico ad alta risoluzione sarà fangoso e indecifrabile ridimensionato. Allo stesso modo, uno sprite che sia pulito e nitido guardando a bassa risoluzione sembrerà economico e troppo semplice ad alta risoluzione.


Le proporzioni però mi preoccupano. Ad esempio, non è un grande salto da 1080p a 720p poiché l'aspetto è lo stesso, quindi eseguiamo il ridimensionamento semplice. Cosa succede quando dici 1080p contro 1680x1050. Mostrerò più FOV di livello, più ampio su un aspetto più ampio, una sorta di margine? Ad esempio, progettare per un aspetto più ampio con un'area sicura in cui tutto il contenuto importante va, in modo da non essere ritagliato dallo schermo su aspetti più ristretti.
Keyframe

Aggiornerò la domanda con la presentazione visiva di questa soluzione. Sembra che non ci sia altro modo.
Keyframe

4

Un modo è quello di creare le risorse di immagini in un formato vettoriale (SVG, Illustrator, ecc.) E convertirle in immagini raster come richiesto dalle diverse versioni del gioco.


Certo, ma ho dimenticato di dire che non è un'opzione. Il problema principale è che la creazione di contenuti raster e vettoriali è totalmente diversa (il raster è di gran lunga migliore per gli artisti). Un'opzione sarebbe quella di creare più asset raster, ma credo fermamente che ci debba essere una soluzione migliore. Ad esempio, la creazione di risorse per il rapporto di risoluzione / aspetto più grande supportato e il ridimensionamento al volo in versioni di runtime a bassa risoluzione al volo o qualcosa del genere. Il posizionamento rimane comunque il problema.
Keyframe

Sì, questa è anche un'opzione, se puoi sopportare la perdita di qualità e problemi di prestazioni.
Matias Valdenegro,

8
Non sono sicuro che "il raster sia meglio per gli artisti". Il mio artista grafico usa Illustrator proprio per questi motivi. Quando è arrivato il momento di aggiornare alla risoluzione 2X dell'iPhone 4, è stato semplice per lei esportare di nuovo tutto. Il raster può essere migliore per gli artisti di Photoshop che non vogliono riqualificarsi come artisti vettoriali, ma a lungo andare probabilmente stanno meglio diventando esperti di grafica vettoriale. Le piattaforme fisiche stanno cambiando troppo rapidamente per pensare in pixel.
Chris Garrett,

4

Quando si mantiene lo schermo intero su risoluzioni diverse, se si desidera la perfezione dei pixel (ad esempio "Come l'ha prodotta l'artista"), il problema è che non esiste un modo completamente automatizzato per ridimensionare gli sprite in alto o in basso (o per ruotarli) che non ' t richiede l'approvazione umana. Alla fine è perché il posizionamento dei pixel è una cosa soggettiva. L'algoritmo di rendering esegue alcuni ridimensionamenti o rotazioni e per fare ciò deve utilizzare alcune tecniche di approssimazione, ad es. filtro bilineare. Se si vuole ancora bordi duri sui pixel in modo da avere che "la perfezione pixel" (cioè non utilizzando AA o BF), allora si sta andando ad accettare che il ridimensionamento da un certo grado non-potere-su-2 è in corso di produce alcuni artefatti indesiderati.

Un approccio interessante a un problema simile si trova in RotSprite , un'applicazione / algoritmo progettato per eseguire rotazioni "automatiche" degli sprite. Con ciò intendo che produce un numero di risultati finali probabilmente desiderabili dopo un'elaborazione intensiva, da cui l'operatore umano può scegliere. Gli sprite scelti a mano finiscono per entrare nel gioco, il che significa che si tratta di una fase di creazione del contenuto e non di runtime.

Una possibile risposta alla tua domanda "pixel agnostici di dimensione magica arbitraria": OpenGL (che potresti voler usare se stai attraversando una piattaforma) funziona in un modo completamente diverso da un renderer raster software. Considera la larghezza e l'altezza del display nell'intervallo a virgola mobile 0,0-> 1,0 e mappa i pixel di conseguenza sulla GPU. Naturalmente questo può comportare artefatti, a meno che es. BF è attivato per le trame (che è ciò che i tuoi sprite sono in OpenGL).


Questo è completamente sbagliato. Puoi utilizzare la composizione e gli elementi ripetibili (pensa ai riquadri) invece di ridimensionarli per mantenerli perfetti in qualsiasi formato. Naturalmente se gli elementi sono piccoli a una risoluzione più elevata, diventeranno sempre più piccoli. quindi avresti bisogno di ridimensionamento 2X o risorse di risoluzione diverse.
adrix89,
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.