2 pontos por GN⁺ 2024-01-28 | 1 comentários | Compartilhar no WhatsApp
  • Pong Wars é uma demonstração web que visualiza como um Pong o confronto entre dia e noite, bem e mal
  • A tela exibe valores de day/night, como day 288 | night 288, permitindo ver o estado atual imediatamente
  • A implementação é composta por JavaScript e um pouco de HTML/CSS, reunidos em um único index.html
  • O código é reutilizável, e a página indica que os usuários podem criar suas próprias versões
  • A página traz o crédito de criação para Koen van Gilst e um link para o código-fonte no GitHub

O confronto entre dia e noite representado em Pong

  • Pong Wars é uma página web que mostra visualmente o confronto entre “day” e “night”
  • O estado atual é exibido no formato day 288 | night 288

Implementação em arquivo único e reutilização

  • A implementação usa JavaScript e HTML/CSS, e está contida em um único arquivo index.html
  • O código pode ser reutilizado, e os usuários podem criar suas próprias versões
  • A página traz o crédito de criação para Koen van Gilst e um link para o código-fonte no GitHub

1 comentários

 
GN⁺ 2024-01-28
Comentários do Hacker News
  • O código aponta este tweet como fonte da ideia: https://twitter.com/nicolasdnl/status/1749715070928433161 [nitter: https://nitter.net/nicolasdnl/status/1749715070928433161]
    A citação diz: “Luta sem fim #genuary23 #genuary #genuary2024. A ideia não é originalmente minha; já vi isso antes, mas não consigo encontrar onde”
    Aqui se diz que a luta é sem fim, e fico curioso se há alguma forma de provar isso matematicamente

    • Indo mais para trás, parte da ideia pode ter sido minha: https://hachyderm.io/deck/@bazzargh/111829275276749971
      Originalmente eu tinha visto https://twitter.com/CasualEffects/status/1390290306206216196, e o autor disse que vinha de um original em pico8. Essas versões anteriores também tinham raquetes de Pong, mas, quando fiz meu demake em BASIC, não consegui colocar o código no tweet para o bbcmicrobot executar, então removi as raquetes
      Minha versão era meio lenta e grosseira, mas alguém que acho que era @rheolism postou uma versão muito mais rápida e suave usando caracteres personalizados em vez de desenhar pontos, e depois também vi um demake recriado em Processing. Essas coisas acabam ganhando vida própria
      Apaguei minha conta do Twitter há muito tempo, mas encontrei no arquivo
    • Cada bola ocupa pelo menos uma área 1x1, então a bola adversária não pode ocupar 100%
    • Quanto menor a área, mais essa bola quica por unidade de tempo do que a outra, e mais oportunidades tem de ampliar sua área
      Por isso, uma situação em que uma bola fica extremamente encurralada dificilmente dura muito tempo
    • Dá para ver o que acontece quando a bola da esquerda tem apenas um tile e a da direita possui todo o resto:
      x1 = y1 = y3 = squareSize, x2 = canvas.width - squareSize
      squares = Array.from({ length: numSquaresX }, (, i) =>
      Array.from({ length: numSquaresY }, (
      , j) =>
      i === 0 && j === 0 ? TEAM1 : TEAM2))
    • Acho que deve haver um equilíbrio bastante estável
      Porque, quanto menor fica a área possuída, maior fica a taxa de incorporação
  • Sou muito fascinado por esse tipo de coisa, mas nem sei se existe um termo de gênero para classificar e analisar, então só consigo chamar de “esse tipo de coisa”
    É inspirado em algoritmos de jogos, mas não é um jogo, e o “Game of Life” de Conway também tem um nome meio equivocado. Ele se move, mas não é roteirizado como uma animação comum
    No mundo real, pessoas como David C. Roy chamam seus trabalhos de esculturas cinéticas
    Vídeos algorítmicos? Simuladores de jogos? Autômatos autônomos?

    • Já vi o termo jogo de zero jogadores (zero-player game) ser usado para isso
      Há também um artigo curto na Wikipedia: https://en.wikipedia.org/wiki/Zero-player_game
    • Gosto do termo brinquedo, numa perspectiva parecida com “executive toy”
    • Não daria para ver isso como um sistema caótico? No sentido de um sistema totalmente determinístico, mas extremamente sensível às condições iniciais
      Edit: dando uma olhada rápida no código, há um pouco de aleatoriedade na dinâmica das colisões. Então é difícil dizer que é “totalmente determinístico”, a menos que a semente do gerador pseudoaleatório seja considerada parte das condições iniciais
    • Acho que “simulação” cobre a maior parte
    • Na minha cabeça, chamo de simulação
      Há tempo, regras etc., e o elemento importante é que não dá para saber o resultado de antemão
      Esse último elemento é o que torna interessante escrever e executar esse tipo de programa
  • Meu filho de 12 anos acabou de fazer isto no Scratch:
    https://scratch.mit.edu/projects/957461584/

  • Muito legal
    Atualmente, quanto menor a área possuída pela bola, mais colisões acontecem na mesma velocidade; seria interessante fazer a velocidade ser proporcional ao número de casas possuídas ou à sua raiz quadrada

    • Parece que isso se autorregula desse jeito, como o jogo de cartas “War”
      Acho que nenhum dos lados vai vencer no fim
  • Beleza de verdade em vários níveis
    Esteticamente, é simplesmente agradável sentar e assistir; filosoficamente, é interessante como metáfora digital de uma luta contínua
    Por fim, e mais interessante, ele mistura duas ideias antigas muito simples para criar algo novo. Fazer isso bem é extremamente raro
    Meus elogios, muitos mesmo

    • Tanto no que o jogo simula quanto na forma como ele mostra visualmente, parece de certa forma modelar yin-yang
  • Com 3 cores, acho que ficaria interessante
    Se as outras duas encurralarem uma delas num canto, o espaço estreito permitiria roubar blocos rapidamente e se recuperar logo à beira da derrota

  • Também há o post do Mastodon do autor original: https://hachyderm.io/@vnglst/111828811496422610

  • Implementei em C++ e Qt Scene Graph para fins de aprendizado
    Compartilho caso alguém tenha interesse: https://invent.kde.org/carlschwan/warpong/-/blob/master/src/...

  • Exemplo parecido: https://contranoid.com/

  • Há também outra variação de Pong. Mas é apenas para desktop: https://www.obfusco.com/pn0gjs/index.html