1 pontos por GN⁺ 2024-11-09 | 1 comentários | Compartilhar no WhatsApp
  • Fórum TIGSource

    • O TIGSource abriu um servidor oficial no Discord.
    • O fórum tem vários tópicos e discussões, com muitos membros participando.
  • Return of the Obra Dinn

    • Está em andamento uma discussão sobre o estilo gráfico do jogo e os problemas de dithering.
    • Há tentativas de resolver o problema de cintilação renderizando em alta resolução e depois reduzindo a escala.
    • Também se discute uma forma de dar estabilidade ao movimento fixando o padrão de dithering.
  • Processo de dithering

    • Obra Dinn passa por um processo de renderização em escala de cinza de 8 bits e depois conversão para 1 bit.
    • Dois padrões de dithering são usados para oferecer vários efeitos visuais.
    • Em imagens em movimento, o padrão de dithering pode causar problemas.
  • Estabilização do dithering

    • Foi estudado um método de aumentar a estabilidade fixando o padrão de dithering à geometria.
    • Houve esforço para encontrar o melhor resultado testando vários métodos de mapeamento.
  • Conclusão

    • Resolver o problema de dithering levou muito tempo, mas no fim o problema foi solucionado mantendo o estilo visual do jogo.
    • O jogo final deve oferecer dois modos de exibição.

1 comentários

 
GN⁺ 2024-11-09
Comentários no Hacker News
  • Mesmo tendo feito programação gráfica por mais de 10 anos, não percebi isso ao jogar. Considerando a linguagem visual geral do jogo, acho que foram 100 horas muito bem gastas.
    Nesse nível, daria até para ter enviado para a SIGGRAPH com o tema de consistência temporal em renderização não fotorrealista.

    • A estabilidade do dithering ao olhar ao redor da cena era definitivamente perceptível, mas eu não fazia ideia de que tinha dado tanto trabalho. Depois de ler este texto, acho que vou admirar isso muito mais daqui para frente.
  • Para quem não sabe, Return of the Obra Dinn e Papers, Please são ambos jogos de Lucas Pope e são considerados clássicos incontestáveis, vencedores de vários prêmios.
    Mesmo que você normalmente não curta jogos, vale muito a pena conferir. Nenhum dos dois é um jogo típico.

    • Papers, Please é uma obra-prima. Com Obra Dinn, acho que devo ter feito algo errado: depois de aparecer pouca história demais para cruzar com outras pistas, o jogo parou de me dar novas pistas.
    • Papers, Please é um dos meus jogos favoritos de todos os tempos. Cheguei a fazer flashcards para memorizar as informações essenciais e treinei repetidamente para melhorar minha habilidade de inspeção.
      Não há muitos jogos que me fizeram ir tão longe. Não joguei Obra Dinn porque o estilo artístico não me atraiu, mas, se você gosta de jogos de investigação, Curse of the Golden Idol também vale a pena conferir. Em termos de criatividade, ele fica perto desses jogos e é bem divertido.
    • O site dele tem muitos projetos legais feitos em game jams. São ideias realmente divertidas e criativas, e algumas delas viraram jogos completos.
    • Jogo FPS desde Wolfenstein 3D, mas Return of the Obra Dinn foi o único jogo que me causou enjoo.
      Mesmo assim, zerei.
  • Dithering de 1 bit forte é um tema realmente fascinante. Mesmo em 2D há várias abordagens, cada uma com seus pontos fortes, fracos e trade-offs.
    É curioso como algo que era central na experiência de computação dos anos 80 acaba sendo bastante complicado no hardware moderno. No meu projeto[0], descobri que é quase impossível fazer um mapeamento 1:1 entre pixels offscreen e o canvas fornecido pelo navegador.
    [0] https://sheep.horse/2023/1/improved_web_component_for_pixel-...

    • Ainda acho engraçado que uma placa nVidia relativamente recente leve vários segundos para trocar de resolução, enquanto um Atari de 35 anos conseguia trocar de resolução várias vezes dentro de uma única atualização de tela.
      Um joguinho simples que fiz antigamente usava exibição colorida em baixa resolução em 3/4 da tela e, na parte de baixo, usava 4 cores com o dobro da resolução horizontal para caber mais texto. Então ele alternava a resolução 120 vezes por segundo sem deixar a CPU muito mais lenta.
  • Nenhuma das abordagens propostas parece funcionar muito bem, e esse problema parece bem mais complexo do que aparenta.
    O que talvez tenha chance de funcionar seria usar um padrão de dithering “fractal” para que zoom in/out seja suave e invariante à escala; processar em espaço de texel para que tanto o movimento da câmera quanto o dos objetos funcionem corretamente; e aplicar algum tipo de passe de difusão de erro com compute shader em espaço de tela, depois de filtragem bilinear ou de renderização supersampled do padrão de dithering.
    Ainda assim, não tenho certeza se funcionaria bem na prática. Se isso não for suficiente, outra alternativa possível seria processar de forma simples em espaço de tela, depois remapear o resultado para o espaço de texel preservando a resolução e, no quadro seguinte, usar as informações em espaço de texel para gerar uma solução compatível em espaço de tela antes de mapeá-la de volta para o espaço de texel, acumulando progressivamente em tempo de execução um padrão fractal por texel. Isso pode ser o ideal, mas parece muito caro em memória, computação e complexidade.

    • Até a semana passada, consegui fazer a abordagem fractal funcionar razoavelmente bem.
      https://x.com/dgant/status/1851840125065453894
      https://x.com/dgant/status/1851835968342446576?t=kCUSWCtJEc_...
      O funcionamento é assim: uso dithering em espaço de mundo, aplico dithering 2D em superfícies com mapeamento triplanar, escolho a escala das coordenadas conforme a profundidade para que o padrão de dithering fique no intervalo [1px, 2px), e pinto superfícies suficientemente distantes com coordenadas esféricas. Há alguma repintura nos limiares de profundidade, mas na prática isso não incomoda muito.
  • Pesquisando um pouco mais para quem tiver interesse, encontrei devlogs antigos que ele publicou sobre esse tema [1] [2].
    Em especial, me chamou atenção a parte sobre um algoritmo de upscaling chamado Scale2X, que é bem legal [3].
    [1] https://forums.tigsource.com/index.php?topic=40832.260
    [2] https://forums.tigsource.com/index.php?topic=40832.msg121719...
    [3] https://www.scale2x.it

  • Adoro o fato de essa pessoa compartilhar tudo no fórum.
    Lembro de ter visto o trabalho inicial de Papers, Please, e há algo muito legal em compartilhar o processo e se expor a feedback.

    • Acho que é preciso ter algum público enquanto se trabalha. Caso contrário, parece que você está gritando para o vazio.
    • Tigsource é um tesouro de informações e documentos de design. Muitos jogos famosos, como Spelunky e Dead Cells, também nasceram lá.
  • Discussão da época: https://news.ycombinator.com/item?id=15766249

  • É um dos melhores textos sobre dithering que já vi. Trabalhei no dithering em preto e branco de Return to Dark Castle.
    Eu queria usar dithering Atkinson, mas, por causa da forma como os valores de pixels vizinhos se espalham uns para os outros, era difícil implementar em shader, e na época eu também estava muito estressado e cansado. Acho que não tive a ideia de fixar o padrão ao deslocamento da cena, então deve haver cintilação nos níveis com rolagem, como as catacumbas ou o pacote de helicóptero. Talvez eu tenha feito isso, mas não lembro. De qualquer forma, excelente.

  • Recentemente peguei no GOG e tentei jogar em um 5K Studio Display, mas não consegui fazer os belos pixels não ficarem borrados. Uma pena mesmo.
    Entrei em todos os menus de configuração.

    • Você precisa encontrar uma forma de exibir o jogo em uma resolução que seja um múltiplo inteiro da resolução do jogo, com letterboxing na tela.
  • Só por diversão, a trilha sonora do jogo está aqui:
    https://www.youtube.com/watch?v=8qvdAWLcPyU