Presentación en HN: Pong Wars
(pong-wars.koenvangilst.nl)- 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
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
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
Así que una situación donde una pelota quede extremadamente confinada difícilmente puede durar mucho tiempo
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))
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?
Incluso tiene un artículo corto en Wikipedia: https://en.wikipedia.org/wiki/Zero-player_game
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
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
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
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 le puse un slider de velocidad para la gente con poca paciencia
https://explorers.toxicode.fr/?remoteWorkspace=pong-war
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