2 puntos por GN⁺ 2024-01-28 | 1 comentarios | Compartir por WhatsApp
  • Pong Wars es una demo web que visualiza, al estilo de Pong, la confrontación entre el día y la noche, el bien y el mal
  • En la pantalla se muestran valores de day/night como day 288 | night 288, para ver el estado actual de inmediato
  • La implementación está hecha con JavaScript y algo de HTML/CSS, y todo está contenido en un solo index.html
  • Se indica que el código es reutilizable y que los usuarios pueden crear su propia versión
  • La página incluye el crédito de creación a Koen van Gilst y un enlace al código fuente en GitHub

La confrontación entre día y noche expresada con Pong

  • Pong Wars es una página web que muestra visualmente el enfrentamiento entre “day” y “night”
  • El estado actual se muestra en el formato day 288 | night 288

Implementación en un solo archivo y reutilización

  • La implementación usa JavaScript y HTML/CSS, y está incluida en un solo archivo index.html
  • El código se puede reutilizar y los usuarios pueden crear su propia versión
  • La página incluye el crédito de creación a Koen van Gilst y un enlace al código fuente en GitHub

1 comentarios

 
GN⁺ 2024-01-28
Comentarios de Hacker News
  • El código enlaza a este tuit como fuente de la idea: https://twitter.com/nicolasdnl/status/1749715070928433161 [nitter: https://nitter.net/nicolasdnl/status/1749715070928433161]
    La cita dice: “batalla interminable #genuary23 #genuary #genuary2024. No es una idea original, la había visto antes pero no logro encontrar dónde”
    Aquí dice que la batalla es interminable, y me pregunto si habrá alguna forma de demostrarlo matemáticamente

    • Si nos remontamos más atrás, parte de la idea podría incluso ser mía: https://hachyderm.io/deck/@bazzargh/111829275276749971
      Originalmente vi https://twitter.com/CasualEffects/status/1390290306206216196 y el autor decía que venía del original en pico8. Las versiones anteriores también tenían las paletas de Pong, pero cuando hice el demake en BASIC quité las paletas porque no podía meter el código en un tuit para que lo ejecutara bbcmicrobot
      Mi versión era algo lenta y tosca, pero alguien que creo que era @rheolism publicó una versión mucho más rápida y fluida usando caracteres personalizados en vez de puntos, y después también vi otro demake hecho de nuevo en Processing. Estas cosas terminan cobrando vida propia
      Borré mi cuenta de Twitter hace mucho tiempo, pero lo encontré en un archivo
    • Cada pelota ocupa al menos un área de 1x1, así que la pelota rival no puede ocupar el 100%
    • Mientras más pequeña sea el área, más rebota esa pelota por unidad de tiempo que la rival, y también tiene más oportunidades de expandir su área
      Así que una situación donde una pelota quede extremadamente confinada difícilmente puede durar mucho tiempo
    • Se puede ver qué pasa cuando la pelota izquierda solo tiene un mosaico y la derecha tiene todo lo demás:
      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))
    • Parece que podría haber un equilibrio bastante estable
      porque mientras menos área posee una pelota, más rápido aumenta su ritmo de fusión
  • Me fascinan mucho este tipo de cosas, pero ni siquiera sé si existe un término de género para clasificarlas y analizarlas, así que solo puedo llamarlas “este tipo de cosas”
    Están inspiradas en algoritmos de juegos, pero no son juegos, y el “Game of Life” de Conway en realidad también está mal nombrado. Se mueven, pero tampoco están guionadas como una animación convencional
    En el mundo real, gente como David C. Roy llama a su obra escultura cinética
    ¿Videos algorítmicos? ¿Simuladores de juegos? ¿Autómatas autónomos?

    • He visto que para cosas así se usa el término juego de cero jugadores (zero-player game)
      Incluso tiene un artículo corto en Wikipedia: https://en.wikipedia.org/wiki/Zero-player_game
    • Me gusta el término juguete desde una perspectiva parecida a la de “executive toy”
    • ¿No podría verse como un sistema caótico? En el sentido de que es un sistema completamente determinista pero muy sensible a las condiciones iniciales
      Edit: viendo un poco el código, parece que hay algo de aleatoriedad en la dinámica de los rebotes. Así que no es tan correcto llamarlo “completamente determinista”, a menos que cuentes la semilla del generador seudorrandómico como parte de las condiciones iniciales
    • Simulación probablemente lo abarcaría en términos generales
    • En mi cabeza lo llamo simulación
      Hay tiempo y reglas, y el elemento importante es que no puedes saber de antemano cuál será el resultado
      Ese último elemento es lo que hace interesante escribir y ejecutar programas así
  • Mi hijo de 12 años acaba de hacer uno en Scratch:
    https://scratch.mit.edu/projects/957461584/

  • Está realmente genial
    Ahora mismo, mientras más pequeña se hace el área que posee una pelota, más colisiones ocurren a la misma velocidad, así que sería interesante hacer que la velocidad sea proporcional al número de casillas que posee o a su raíz cuadrada

    • Parece autorregularse de ese modo, como el juego de cartas “War”
      Yo diría que ninguno de los dos terminará ganando
  • Es realmente hermoso en varios niveles
    En lo estético, da gusto simplemente sentarse a mirarlo, y en lo filosófico resulta interesante como una metáfora digital de la lucha continua
    Por último, y quizá lo más interesante, mezcla dos ideas viejas y muy simples para crear algo nuevo. Hacer eso bien es extremadamente raro
    Mis respetos, de verdad muchos

    • También parece modelar en cierto grado el yin y yang, tanto en lo que el juego simula como en lo que muestra visualmente
  • Con 3 colores podría ponerse interesante
    Si dos arrinconan a uno, el espacio reducido podría permitirle recuperar bloques rápidamente y revivir pronto justo antes de perder

  • También está la publicación del autor original en Mastodon: https://hachyderm.io/@vnglst/111828811496422610

  • Como ejercicio de aprendizaje, hice una implementación en C++ y Qt Scene Graph
    La comparto por si a alguien le interesa: https://invent.kde.org/carlschwan/warpong/-/blob/master/src/...

  • Un ejemplo parecido: https://contranoid.com/

  • También hay otra variante de Pong, aunque es solo para escritorio: https://www.obfusco.com/pn0gjs/index.html