O artigo que se segue foi escrito pelo nosso leitor, conhecido nos comentários como Tio Hildo, e explica a sua metodologia para o cálculo de resoluções nativas.
Considerações Iniciais
Há mais ou menos um ano eu comecei a pesquisar uma maneira de conseguir medir as resoluções de imagens de maneira automática, ou seja, sem utilizar o método de escadas manual ( famosa contagem de pixels). Ao longo desse processo de pesquisa, acabei desenvolvendo também uma ferramenta para análise de performance de frames ou contagem de FPS.
Agora com esse artigo pretendo compartilhar um pouco das minhas descobertas. Nesse sentido, gostaria de deixar um alerta que todo esse trabalho está ainda no campo da pesquisa e que posso ter cometido equívocos nas minhas conclusões.
Contudo, errar também faz parte de uma pesquisa, nem sempre só se acerta. Não houve intenção em trazer informações erradas.
DCT (Discrete Cosine Transform) e suas propriedades
Transformada discreta de cosseno (ou DCT da sigla em inglês para Discrete Cosine Transform) é a extensão da transformada de cosseno ou transformada contínua de cosseno para um domínio discreto. É muito utilizada em processamento digital de imagens e compressão de dados. Essa transformada é bem parecida com a famosa transformada de Fourier. Basicamente a imagem é transformada do domínio espacial para o domínio da frequência, uma forma de ver a imagem como uma onda. A DCT é muito utilizada em compactação de imagens.
Existe uma propriedade conhecida da DCT ( desconheço uma prova formal disso) que revela onde uma imagem sofreu algum tipo de escalonamento. Como uma imagem vale mais que mil palavras, observem a imagem abaixo que é uma representação visual das ondas geradas pela DCT.
Percebam que existe uma linha preta no eixo horizontal e vertical, essa linha releva a resolução original onde a imagem foi escalonada. Assim, se a linha preta está na posição 1440 do total de 2160 linhas, então a resolução original para esse eixo era de 1440 pixels.Isto posto, podemos utilizar essa propriedade para analisar cada um dos frames de uma captura de jogos de vídeo game e conseguir a resolução em que a engine do jogo realizou a renderização.
Lembrando que para identificar visualmente essa linha é relativamente simples, principalmente se for um vídeo, mas para o computador identificar essa linha não é tarefa fácil.
No vídeo deste artigo é colocado a imagem da DCT em escala reduzida e identificado o número da linha para melhor orientação.
Hipótese 1 – Resolução de Saída
Depois de várias análises e testes, eu comecei a suspeitar que os consoles fazem um tipo de escalonamento básico ( provavelmente bilinear ou Vizinho Mais Próximo) quando a resolução de saída do jogo é menor que a resolução de saída do console ( o que vai efetivamente para a porta HDMI). Por exemplo, se um jogo faz a sua resolução de saída para 2560 x 1440 e um PS5 está configurado com a resolução de 4K, então ele irá fazer um escalonamento ( upscale) nesta imagem para 4K.
Eu não consegui confirmar tecnicamente se essa informação é verdadeira, mas eu consegui fazer testes que corroboram com essa hipótese.
Exemplos:
Jogo Robocop do PS5
A DCT nos diz que a resolução de saída é 1440p no modo qualidade, conforme imagem abaixo capturada em uma saída 4k.
Ora, o PS5 também aceita resolução 1440p de saída, então podemos configurar essa opção e realizar outra captura. Fazendo essa configuração, o algoritmo de DCT não nos mostra um escalonamento, pois não existiu necessidade, já que o jogo e o PS5 estão na mesma resolução de saída. Figura abaixo.
Castlevania Lord of Shadows 2 – PS3
É conhecido que a resolução nativa desse jogo é de 1024 x 720 pixels.
Configurando a resolução de saída do PS3 para 1280 x 720 e realizando uma captura juntamente com uma análise de DCT, temos o resultado de 1024 x 720 como esperado, mas apenas uma linha preta na vertical pois a resolução de saída do console esperada para essa configuração é de 1280 x 720.
Contudo, se alterarmos a resolução de saída do PS3 para 1080p, temos a resolução nativa de 1024×720 e de saída do jogo para 1024×720 e mais o escalonamento realizado pelo PS3 para 1920×1080. Observando o resultado da análise da DCT, temos uma linha branca vertical que marca a resolução nativa e logo após uma linha preta que mostra a resolução de saída. Temos também uma linha horizontal para indicar que a imagem passou de 720 para 1080. ( Uma outra linha negra aparece depois da de 1280, mas isso é apenas um espelhamento, é bem típico da DCT começar a realizar espelhamentos depois das linhas de resolução).
Vejam a foto abaixo e também o vídeo deste artigo.
Para fazer a análise da DCT e recuperar a linha da resolução de saída, eu desenvolvi um algoritmo que identifica as linhas pretas e o mesmo está bem evoluído. Ele acerta na maior parte das vezes. Não é tarefa simples fazer ele acertar sempre. Por isso é sempre bom fazer uma análise visual da imagem da DCT e confirmação dos dados.
Observação: Se essa hipótese estiver certa, a contagem de pixels manual deverá ser feita, de preferência, o mais perto possível da resolução de saída do jogo, pois o console irá fazer um upscale que pode prejudicar a precisão do algoritmo de escadas.
Hipótese 2 – Resolução Nativa
A resolução nativa é mais complexa, pois o jogo pode fazer vários escalonamentos até finalizar com a resolução de saída. Esse sem dúvida é o mais difícil de se conseguir medir, pois a resolução de saída pode ser escalonada e afetará a aferição da resolução nativa.
Alguns exemplos que podemos ter em jogos. Existem vários.
Game Engine -> resolução interna 4k -> resolução de saída 4k -> console 4K
Game Engine -> resolução interna 1440p -> algoritmo de upscaling espacial ou temporal -> resolução de saída 4k -> console 4k
Game Engine -> resolução interna 1080p -> algoritmo de upscaling espacial ou temporal -> resolução de saída 1620p -> console 4k
Game Engine -> resolução interna 1080p -> algoritmo de upscaling espacial ou temporal -> resolução de saída 4k -> console 4k
Game Engine -> resolução interna 1024×720 -> resolução de saída 1280×720 -> console 1080
…. e várias outras combinações, inclusive com resoluções dinâmicas tanto na interna quanto na de saída.
Agora vejamos uma hipótese para detectar a resolução nativa.
Essa hipótese é a que mais precisa de pesquisa, pois os resultados variam muito.
Percebam que existe uma região que parece um ponto ou estrela branca ( podem existir várias, inclusive simétricas).
Peço que deem um desconto para o algoritmo que segue a estrela não está 100% refinado, alguns frames ele não consegue acertar a posição exata, mas fazendo uma avaliação do todo, os resultados são bem razoáveis.
No vídeo desse artigo, temos outras análises de jogos abaixo:
Returnal – Resolução De saída 1620p e nativa de 1080p.
Tekken 8 Demo – Resolução de saída dinâmica entre 1080 e 1440.
Cyberpunk 2077 – Resolução De saída 1800p e nativa dinâmica entre 1080 e 1440.
Castlevania – LOS 2 – resolução nativa de 1024 x 720 e saída de 1280 x 720.
Considerações finais
Muitas outras informações e detalhes ainda foram encontrados, mas vamos parar por aqui para não deixar o artigo muito extenso.
De uma forma mais técnica e complicada, mas de fácil compreensão geral eis o que o Tio Hildo está a tentar fazer:
Quando há um re-escalamento de uma imagem, há uma alteração do domínio de frequência quando se combina o sinal com um filtro de baixa passagem.
A Transformada Discreta de Cosseno faz com que as zonas de passagem (ou zero-crossings) se manifestem exatamente na linha e coluna a partir da qual a fonte foi ampliada.
Basicamente as linhas a preto que ali aparecem indicam essas Zero-Crossings, que representam a resolução nativa da imagem.
Claro que isto dito não mostra o trabalho que ali está, pois implementar e fazer é que são elas, e nesse aspecto temos de dar elogios ao Tio Hildo pelo que ele tem feito para detetar e automatizar os valores encontrados.
OFF: O Beyond re-abriu!
Exatamente. Acho que não poderia ter explicado melhor.
Fiquei interessado em conhecer mais sobre esse DCT, gostaria de entender melhor como os dados da imagem são transformados naquela imagem para análise, já que na minha cabeça, se usarem algum tipo de mudança na frequência dos pixels (cor dos pixels, por exemplo) uma imagem com transição rápida poderia dar um resultado falso para contagem. Mas entendi que é algo feito para imagens comprimidas, só queria entender melhor como se obtém essa imagem, e o que realmente o DCT mostra. Vou procurar ler mais a respeito desse DCT.
Nesse vídeo abaixo você pode ver como a DCT é usada para fazer arquivos JPEG.
https://www.youtube.com/watch?v=Q2aEzeMDHMA
Eu não imaginava que no modo performance o Returnal descia para resolução abaixo do 1080p 60 FPS.
Tá muito ruim isso daí. Este jogo não é pesado como vocês imaginam.
O jogo tem real time global ilumination por raytracing. E é feito por uma equipa Indie (que lançou ali o seu primeiro AAA), e que na altura nem sequer pertencia à Sony.
A resolução nativa é 1080p com upscaling pra 1620. Mas a questão dos valores da resolução é mais acadêmica, o mais importante é a qualidade dos pixels, e nessa caso do Returnal, eu acho bem razoável. Tem jogo aí com FSR2 que com muitos artefatos que deixam a imagem horrível.
Hildo, sei que é besteira e irrelevante minha observação, mas na resolução nativa de Returnal, muitas vezes marcava 1925x 1083, o que seriam 5 pixels a mais na contagem horizontal e 3 a mais na vertical, presumindo que os programadores tenham limitado a resolução nativa a 1920×1080 para fazer o escalonamento, o que seria o mais lógico a ser esperado; Não seria esse excedente resultado alguma linha contada em duplicidade no seu algorítimo, ou mesmo, ele poderia estar fazendo ou incluindo alguma linha na contagem como uma linha média e as das bordas do seu polígono de contagem? Tipo um polígono contando as margens externas dele ao invés do apenas o conteúdo interno dele, ou mesmo contando por algum motivo uma linha média que corta esse polígono ao meio de modo adicional? Falo só a título de averiguação, pra você mesmo pensar se não são linhas incluídas referentes a bordas externas do polígono de contagem que vc deve ter criado e estão contando a mais. Mas lógico, sua contagem pode estar 100% correta, eu só achei meio estranho ficar tanto tempo suma resolução tão próxima de uma padrão da indústria e não ficar nela.
Outro ponto, no primeiro vídeo de Cyberpunk do artigo, existem muitos picos de resolução pra mais e pra menos, já no segundo as mudanças são mais lineares, isso deve-se, nesse último vídeo, a uma versão mais recente do seus sistema de análise, onde você criou uma maneira de desprezar esses picos, ou realmente é mero acaso do momento da captura e esses picos realmente existem vez por outra nos jogos?
Sobre essa resolução de 1925×1083 , considere 1920×1080. Esse pequeno desvio é porque o algoritmos as vezes acerta a resolução com pequena margem de erro. Então considere a resolução mais padrão perto de 16:9.
No segundo vídeo os dados estão tratados com remoção de outliers e normalização de dados. Eu posso melhorar o algoritmo o quanto eu quiser mas nunca vou conseguir fazer ele acertar 100%, alguns dados vão ficar incorretos, então dessa forma tem que ter um tratamento de dados. E para conferir o resultado final eu verifico visualmente o que a imagem da DCT está mostrando.
Blz Hildo, compreendido.
Obrigado Mario. É só eu ou vocês também não estão vendo as fotos do artigo? Aqui não carregou nenhuma foto.
Verdade… Mas ainda agora davam….
Você subiu as imagens para o seu servidor ou usou algum externo?
Já deve estar a dar!
OFF – Nada que pessoas normais não haviam suspeitado, não é mesmo?
https://www.gamevicio.com/noticias/2024/01/jason-schreier-comenta-sobre-nota-alta-no-metacritic-de-starfield/
Basta dizer que dos 15 sites que deram nota acima de 95, 5 deles tem Xbox no nome!
Mas é bom ver-se que jornalistas de renome estão a fazer ressaltar a realidade das coisas.
Starfield foi entregue apenas aos websites que se sabia iriam dar boa nota! Foi uma manipulação total e absoluta das reviews!
Com todo o devido respeito por todas as pessoas e suas opiniões, nenhuma pessoa no seu perfeito juízo daria a este jogo uma nota alta, a não ser que seja algum fanático ou fatores que influenciem isso. Gostar de um jogo é uma coisa, mas dar uma nota é muito mais do que isso, é analisar muitos aspetos que determinam a qualidade do jogo. Eu joguei cerca de 10 horas este jogo, este é um jogo que pode ser muita coisa mas bom não é de certeza. O dono do PC que me deixou experimentar o jogo disse me que foi uma das maiores desilusões dos últimos anos.
Essas coisas são complicadas, porque as avaliações deveriam levar em conta referências do que já existe como parâmetro de avaliação, mas também, não tem como ser completamente objetiva, isenta do gosto do avaliador. Então, quem avalia pode gostar do gênero e ter um histórico de amor com aquela produtora (e eu diria que é normal isso), mas não tem como ser totalmente isento ao avaliar um jogo, por ter em conta a satisfação ou não que o jogo traz pra si. Posso dar o exemplo de Zelda TotK, é uma continuação que pra muita gente parece só requentar muita coisa, mas que traz novas mecânicas que entrega um jogo quase que totalmente diferente na maneira de jogar, comparativamente a Horizon Forbidden West ele é indiscutivelmente inferior em termos gráficos e mesmo em física de muitas coisas de jogo, por questões óbvias, que também passaram por decisão da Nintendo. Zelda, pra mim, é jogo é nota 10. Graficamente não é essas coisas, mas me entregou muito mais diversão e entretenimento do que eu esperava, falo de qualidade, não de quantidade, mas indiscutivelmente Horizon Forbidden West é mais lindo e incrível tecnicamente, e pra mim, esse já não é um jogo nota 10.
Então, essas coisas de avaliação são complicadas, mas concordo que muita gente aliviou na mão para Starfield, que não parece ter grandes feito técnicos, nem inovar muito no gameplay perante o que a Bethesda já fez. Mas sempre haverá aqueles que têm um carinho especial pela jogos da Bethesda e resolverão ignore tudo o que tem sido feito na indústria nos últimos tempos sobre o pretexto de até justificar-se que é algo “tão ruim que é bom”, o que fará sentido pra alguns.
Juca… Eu cresci com as reviews e percebo bem como elas deveriam funcionar.
Uma análise a um produto tem de ter em conta, como bem dizes, inúmeras coisas.
Imagina que o teu universo de avaliação é um Manic Miner e um God of war. Darias 10 ao God e um 1 ao Manic Miner?
Não, nada disso.
Se é certo que uma análise tem de ter em conta o que se faz no momento, e nesse aspeto um Manic Miner seria um jogo desadequado para os dias de hoje, também se tem de ter em conta a máquina em que corre.
Um Manic Miner no ZX Spectrum ou num PC seriam coisas bem diferentes.
Mas será que se fosse agora lançado para o PC, um Manic Miner seria um jogo de 1?
Isso poderia depender do hardware requerido. Se pedisse uma 4090 seria certamente! Mas e num caso normal onde ele correria em qualquer máquina, seria um um?
Não… Em nenhum caso um Manic Miner seria um um. Porque o jogo, ainda hoje tem características que o tornam um bom jogo. Poderia, quando muito ser um 6. Mas nunca um um!
A avaliação não se pode prender a conceitos. Tem de avaliar o objetivo! A diversão, o grafismo, a história, a banda sonora, a forma como prende o jogador.
Se calhar em muito disso o Manic Miner iria falhar! O grafismo é velhote, a história basicamente inexistente, e a banda sonora… Apenas ok.
Mas a diversão… Essa valeria por tudo o resto, e ainda hoje vale!
A grande dificuldade de uma avaliação é essa. Os fatores são objetivos, mas há que saber como e quando os colocar em segundo plano face a valores maiores.
A diversão e jogabilidade tem de ser o fator primordial, e sobrepor-se a tudo o resto. O resto são apenas os sprinkles no cimo do bolo.
Mas sendo assim, Starfield não poderia, na opinião de alguns, ser um 9?
Não, não poderia.
Porque Starfield falhava nos parâmetros básicos, nomeadamente o estar coberto de bugs. E isso, apesar de não ser impeditivo de uma boa nota, teria de lhe retirar o 9! Nenhum jogo pode ser um 9 com bugs a dar com um pau!
Daí para a frente, aceito tudo! Se houve quem gostasse, porque não dar um 8. Mas um 9 ou um 10… Nunca!
Um dos motivos é que este jogo não se pode comparar a um Manic Miner… Tem de ser comparado a outros jogos bem mais evoluídos. E aí ele peca tremendamente! Se um Starfield vale um 9.5, quanto valeria um Mass Effect? 15?
Este tipo de comparação tem de existir. Claro que não vou comparar um Manic Miner a um Turbo Esprit. São jogos incomparáveis em todos os aspectos, com o último, apesar de ser igualmente do Spectrum, a ser um colosso de um jogos em todos os aspetos, especialmente o técnico.
Mas são estilos diferentes, e com públicos diferentes. Não concorrem diretamente!
Já um Jet Set Willy… Esse sim, poderia comparar diretamente com o Manic Miner pois são em tudo semelhantes.
É aqui que o Starfield peca! Ele é mais aberto que o Mass Effect, e tem coisas que o Mass Effect não tem! Mas tem muito em comum, e em todos esses pontos, fica bem atrás.
Tecnicamente é um jogo mal conseguido e mal Implementado.
Agora as avaliações, mesmo sendo objetivas, acabam deturpadas sempre pelo facto de se gostar ou não do jogo. E isso eu aceito!
Que alguns dêem o 8, outros 7, ok… São gostos!
Já o 9… Isso não é gosto. É fanatismo! É ignorar a realidade do jogo!
Eu concordo, Mário, mas faço uma ressalva, há jogos que mesmo com bugs são nota 10 por todo o resto que entrega, principalmente quando inova. O que me vem à cabeça quando falo isso é The Witcher 3. Lembro que achei o jogo tão impressionante do ponto de vista de cuidado com a lore e de inserir o jogados naquele mundo até nas mais tolas sidequests que, pra mim, ele inovou significativamente o meu modo de ver action RPGs, e digo mais, o combate de início era medíocre e passei muitas horas com o cavalo sem rabo, mas aquele mundo era tão envolvente que eu entendi o que quiseram dizer quem deu 10 àquele jogo, apesar de suas partes medíocres.
De qualquer forma, é como você diz, se dermos 10 ao medíocre/mediano o que sobrará para as verdadeiras obras primas?!
Eu não posso falar sobre Starfield, pois não o joguei, mas por tudo o que vi (videos, reviews…), me pareceu uma skin espacial dos outros jogos dela, aparentementes com bugs que costumam existir nos games da Bethesda. Então, a mim não tem grande apelo, e algumas coisas me pareceram cópia de No Man Sky, mas posso estar enganado, e como não joguei, não quero afirmar tais coisas, mas pelo que vi, foi o que me pareceu.
Não Juca… Isso, a meu ver, está errado. Um jogo com bugs nunca pode ser 10. Poderás reavaliar o jogo quando estiver sem bugs, mas ignorar as bugs não pode acontecer.
Se tu comeres uma sopa maravilhosa sem sal, a sopa não deixa de não prestar, por muito potencial que tu lhe vejas.
Ignorar os problemas é um dos males atuais.
Agora, se a bug for um cavalo sem rabo, isso não é a mesma coisa que tu ou os inimigos caírem através do chão, ou a tua nave levantar e te deixar no planeta. Quando me refiro a bugs, refiro-me a bugs sérias, como Starfield tinha, e que tu não conseguias deixar de experimentar quando foi lançado.
O Loading do jogo é o exemplo máximo de como esse jogo está no passado, desatualizado.
O comportamento da empresa respondendo que “ir para a lua é chato” e respondendo as criticas no Steam sempre tentando justificar as falhas e nunca dizendo “é mesmo, iremos melhorar” é o exemplo que como profissionais, o pessoal da Bethesda também está parado no tempo.
Acho curioso isso, agora eu sei pq a Sony nunca comentou sobre a aquisição da Bethesda, será que porque eles sabiam a realidade da empresa?
Fico imaginando que a Sony comprar a Bethesda seria até “queimar o filme” com seus estúdios internos
Imagine o desânimo dos caras que fizeram Spider2 sem loading, trabalhando duro, sabendo que a bethesda recebeu a mesma grana que ele para entregar starfield cheio de loading?
Mário, só fiz um pouco de confusão porque ao ler o artigo, que usa linguagem em 1a pessoa, pensei que se tratava de você, mas ao fim, vi que era o Hildo falando.
Hildo, seu aplicativo está incrível e bastante completo, e os dados parecem bem confiáveis, pois vão de encontro com analistas de renome. Parabéns!
PS: a 2a. imagem do DCT do Robocop com saída a 1440p ficou com uma legenda como de fosse a de Castlevania LotS 2, quando na verdade o texto de Castlevania se refere ao jogo seguinte sendo exemplificado.
Tem razão. Está errado a legenda.