Existem muitos algoritmos para aumentar o pixel art. (Prefiro o hqx , pessoalmente.) Mas existem algoritmos notáveis para reduzi- lo ? Meu jogo foi projetado para rodar em uma resolução de 1280x720
, mas se for jogado em uma resolução mais baixa, ainda quero que pareça bom.
A maioria das discussões sobre pixel art se concentra em 320x200
ou 640x480
aumentam o uso para emuladores de console, mas eu me pergunto como os jogos 2D modernos, como o Monkey Island Remake, poderiam ficar bem em resoluções mais baixas?
É claro que ignorar a opção de ter várias versões de ativos (por exemplo, mipmapping ).
graphics
graphics-programming
pixel
Michael Stum
fonte
fonte
Respostas:
Atualmente, estou criando um jogo que tem que rodar em uma ampla variedade de tamanhos de tela e proporções, e não foi um processo muito fácil. Além disso, se você está criando coisas em pixel art e deseja manter a sensação de pixel art enquanto suporta muitas resoluções, está entrando em um mundo de dor, por isso esteja preparado.
Na minha opinião, há várias coisas que você pode fazer (algumas são exclusivas, mas outras não)
Defina uma resolução mínima e apenas aprimore (tudo) em termos de número inteiro com o vizinho mais próximo. Dessa forma, você pode manter a sensação de pixel art. Não acho que reduzir é uma boa idéia, pois você perderá detalhes e todo o objetivo de usar pixel art cuidadosamente criado será derrotado. Se a sua resolução mínima suportada for muito pequena para seus sprites, altere a resolução mínima suportada ou redesenhe todos os ativos para suportar essa resolução mínima.
Quando encontrar uma resolução ou proporção que não seja suficiente para cobrir a tela inteira, estenda seu jogo (mostre mais peças), mantendo os ativos intactos. Você deve fazer o seu jogo para que ele ainda seja jogável com a resolução mínima / proporção.
Se não for possível estender o jogo, preencha as seções não relacionadas à tela com preto; listras nas partes superior e inferior, esquerda e direita ou uma moldura preta. É isso que o iPad faz ao executar aplicativos do iPhone no modo ampliado. Isso também é amplamente usado em emuladores.
Desista de manter-se fiel à grade de pixels. Mas você precisa parar de usar os recursos de pixel art com cantos afiados. Em seguida, faça o upscale / downscale usando a filtragem bilinear (ou idealmente bicúbica, se sua plataforma suportar). Essa é a melhor opção para maximizar o uso da tela, mantendo a experiência do usuário semelhante em todas as resoluções suportadas.
No meu jogo, acabei fazendo a opção número 4 e estou bastante surpreso com a aparência em dispositivos que variam de 320 pixels na vertical (um antigo Android 2.3) até 1536 pixels na vertical (um iPad de 2012 com tela Retina). Os ativos originais destinam-se a 600 pixels na vertical (originalmente para exibição de 800x600 em um PC com Windows). Embora para jogos subseqüentes, eu acho que uma melhor resolução vertical lógica é de 720 pixels.
O jogo usa uma alta resolução virtual virtual de 600 pixels, dimensionada para a resolução nativa do dispositivo com filtragem bilinear. Isso significa que todas as coordenadas Y no código vão de 0 (parte superior da tela) a 600 (parte inferior da tela).
Para o tamanho horizontal, suponho que a largura máxima seja de 1080 pixels, o que é mais que suficiente para cobrir até as proporções mais amplas de 16: 9. Minhas coordenadas x estão centralizadas, então x = 0 é o centro da tela e as coordenadas x vão de -540 à esquerda a 540 à direita. Garanto que tudo se encaixa entre -400 e 400 para suportar as telas mais estreitas (4: 3)
No entanto, se eu tivesse que manter a sensação de pixel art, certamente usaria as opções 1 e 2. O que significa que eu escalaria apenas em termos de número inteiro para manter a sensação de quarentena da pixel art, e projetaria o jogo de forma que a quantidade de visibilidade visível o tiles não é fixo e pode se adaptar a qualquer resolução de tela / proporção.
Então, para (não) responder sua pergunta. Eu acho que diminuir o tamanho de pixel art é uma péssima idéia, então você não deve fazê-lo. Existem outras maneiras de oferecer suporte a diferentes resoluções de tela que fornecerão melhores resultados do que simplesmente massacrar sua arte cuidadosamente criada.
fonte
Considere realmente gerar as versões reduzidas no tempo de desenvolvimento e incluí-las diretamente no jogo como um recurso. Faça isso com o Photoshop ou com qualquer ferramenta que você encontrar, cria o que você gosta. Depois, faça com que o jogo selecione dinamicamente o conjunto de arte certo, adequado à resolução atual.
Aqui estão algumas razões pelas quais você pode fazer isso ...
Salva o trabalho de processamento
Se você redimensionou programaticamente em tempo de execução, seu software provavelmente criará e armazenará em cache o trabalho artístico de qualquer maneira. Então, por que não incluir apenas as versões reduzidas no pacote de ativos de arte? Suponho que se o download fosse maior do que você gostaria, mas você economizará em alguma carga de CPU, gravação de disco etc.
Maior controle artístico
Se você redimensionar a arte você mesmo, terá maior controle sobre a aparência final. Isso pode não fazer diferença se você estiver diminuindo um pouco, mas quando tiver resoluções muito mais baixas, convém ter um melhor controle artístico sobre a aparência final. Por exemplo, se os olhos de um personagem específico precisavam ser enfatizados, você pode desenhar as versões de resolução mais baixa com os olhos não reduzidos tanto para manter o efeito - algo que a escala programática não pode fazer.
O dimensionamento dinâmico não é perfeito
Você pode tomar decisões artísticas distintas que não funcionam com a escala dinâmica. Por exemplo, suponha que você queira colocar uma borda, contorno ou destaque ao redor de uma imagem. Quando visualizado em resolução mais alta, isso pode parecer bom, mas a versão reduzida pode ficar turva ou perder totalmente o efeito. Mas, se feito à mão, você pode aplicar especificamente o efeito a cada tamanho e garantir que você retenha o impacto.
outros pensamentos
Você também pode fazer uma abordagem híbrida, com um conjunto de recursos específicos de resolução que são usados onde encontrados e um conjunto genérico que é dimensionado dinamicamente se nenhuma versão específica da resolução for encontrada. É um pouco como a plataforma Android funciona. Algumas informações sobre isso em http://developer.android.com/guide/practices/screens_support.html
fonte
Redimensionar para baixo é mais fácil do que redimensionar porque você está escolhendo informações para jogar fora, em vez de ter que inventar informações novas (e possivelmente incorretas) para preencher as lacunas. Com isso em mente, você provavelmente não precisa de nada de especial aqui e a maioria dos algoritmos de reamostragem padrão do campo de processamento de imagens deve funcionar bastante bem para reduzir a imagem: bilinear, Gaussiana, Lanczos, etc.
Lanczos, em particular, pode ser uma escolha interessante, pois melhora a imagem, preservando possivelmente os detalhes que de outra forma seriam perdidos ao combinar vários pixels em um. Obviamente, isso tem o custo de potencialmente introduzir artefatos indesejados.
Algumas comparações visuais aqui: /gis/10931/what-is-lanczos-resampling-useful-for-in-a-spatial-context
fonte