2 points par GN⁺ 2024-01-28 | 1 commentaires | Partager sur WhatsApp
  • Pong Wars est une démo web qui visualise comme dans Pong l’affrontement entre le jour et la nuit, le bien et le mal
  • L’écran affiche des valeurs day/night comme day 288 | night 288, ce qui permet de voir immédiatement l’état actuel
  • L’implémentation repose sur JavaScript et un peu de HTML/CSS, le tout contenu dans un seul fichier index.html
  • Le code est présenté comme réutilisable, et les utilisateurs peuvent créer leur propre version
  • La page mentionne une réalisation de Koen van Gilst et contient un lien vers le code source GitHub

L’affrontement entre le jour et la nuit façon Pong

  • Pong Wars est une page web qui montre visuellement l’affrontement entre « day » et « night »
  • L’état actuel est affiché au format day 288 | night 288

Implémentation dans un fichier unique et réutilisation

  • L’implémentation utilise JavaScript ainsi que HTML/CSS, et tient dans un seul fichier index.html
  • Le code peut être réutilisé, et les utilisateurs peuvent créer leur propre version
  • La page mentionne une réalisation de Koen van Gilst et contient un lien vers le code source GitHub

1 commentaires

 
GN⁺ 2024-01-28
Commentaires Hacker News
  • Le code indique ce tweet comme source de l’idée : https://twitter.com/nicolasdnl/status/1749715070928433161 [nitter : https://nitter.net/nicolasdnl/status/1749715070928433161]
    La citation dit en substance : « combat sans fin #genuary23 #genuary #genuary2024. Ce n’est pas une idée originale ; je l’ai déjà vue, mais je n’arrive pas à retrouver où »
    Ici, on dit que le combat est sans fin, et je me demande s’il existe un moyen de le prouver mathématiquement

    • En remontant plus loin, une partie de l’idée pourrait venir de moi : https://hachyderm.io/deck/@bazzargh/111829275276749971
      À l’origine, j’avais vu https://twitter.com/CasualEffects/status/1390290306206216196, et l’auteur disait que cela venait d’un original en pico8. Ces versions antérieures avaient aussi des raquettes de Pong, mais quand j’ai fait mon demake en BASIC, je ne pouvais pas mettre le code dans un tweet pour que bbcmicrobot l’exécute, donc j’ai retiré les raquettes
      Ma version était un peu lente et bancale, puis quelqu’un — je crois que c’était @rheolism — a publié une version beaucoup plus rapide et fluide en utilisant des caractères personnalisés au lieu de dessiner des points, et j’ai ensuite vu un demake recréé en Processing. Ce genre de choses finit par prendre sa propre vie
      J’ai supprimé mon compte Twitter il y a longtemps, mais j’ai retrouvé ça dans les archives
    • Chaque balle occupe au minimum une zone de 1x1, donc la balle adverse ne peut pas occuper 100 % de l’espace
    • Plus la zone est petite, plus cette balle rebondit souvent par unité de temps par rapport à l’autre, et plus elle a d’occasions d’agrandir son territoire
      Donc une situation où une balle se retrouve extrêmement enfermée a peu de chances de durer très longtemps
    • On peut voir ce qui se passe quand la balle de gauche ne possède qu’une seule tuile et celle de droite tout le reste :
      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))
    • Il semble qu’il puisse exister un équilibre assez stable
      Car plus le territoire possédé diminue, plus la vitesse de fusion augmente
  • Je suis très fasciné par ce genre de choses, mais je ne sais même pas s’il existe un terme de genre pour les classer et les analyser, donc je suis obligé de dire « ce genre de choses »
    C’est inspiré d’algorithmes de jeu, mais ce n’est pas un jeu ; et le « Game of Life » de Conway porte lui aussi un nom assez trompeur. Ça bouge, mais ce n’est pas scripté comme une animation classique
    Dans le monde réel, des gens comme David C. Roy appellent leurs œuvres des sculptures cinétiques
    Vidéo algorithmique ? Simulateur de jeu ? Automate autonome ?

    • J’ai déjà vu le terme jeu sans joueur (zero-player game) employé pour ce genre de choses
      Il existe aussi un court article Wikipédia : https://en.wikipedia.org/wiki/Zero-player_game
    • J’aime bien le terme jouet, dans le même esprit qu’un « executive toy »
    • Ne pourrait-on pas y voir un système chaotique ? Au sens d’un système entièrement déterministe, mais très sensible aux conditions initiales
      Modification : en regardant un peu le code, il y a une part d’aléatoire dans la dynamique des rebonds. Il est donc difficile de dire « entièrement déterministe », sauf à considérer la graine du générateur pseudo-aléatoire comme une partie des conditions initiales
    • « Simulation » couvrirait probablement l’essentiel
    • Dans mon vocabulaire mental, j’appelle ça une simulation
      Il y a du temps, des règles, etc., et l’élément important est que le résultat ne peut pas être connu à l’avance
      C’est ce dernier aspect qui rend l’écriture et l’exécution de ce genre de programmes intéressantes
  • Mon fils de 12 ans vient de le refaire avec Scratch :
    https://scratch.mit.edu/projects/957461584/

  • Vraiment génial
    Actuellement, plus la zone possédée par une balle diminue, plus elle provoque de collisions à la même vitesse ; ce serait intéressant de rendre la vitesse proportionnelle au nombre de cases possédées, ou à sa racine carrée

    • Comme dans le jeu de cartes « War », j’ai l’impression que cela s’autorégule de cette manière
      Je pense qu’aucun camp ne finira par gagner
  • Une vraie beauté à plusieurs niveaux
    Esthétiquement, on peut simplement s’asseoir et regarder ; philosophiquement, c’est intéressant comme métaphore numérique d’une lutte permanente
    Enfin, et c’est le plus intéressant, cela mélange deux vieilles idées très simples pour créer quelque chose de nouveau. Réussir cela est extrêmement rare
    Bravo, vraiment beaucoup

    • On dirait aussi que cela modélise en quelque sorte le yin et le yang, à la fois dans ce que le jeu simule et dans ce qu’il montre visuellement
  • Avec 3 couleurs, ce serait intéressant
    Si les deux autres en coincent une dans un coin, l’espace réduit lui permettrait de reprendre rapidement des blocs et de revenir très vite d’une situation proche de la défaite

  • Il y a aussi le post Mastodon de l’auteur original : https://hachyderm.io/@vnglst/111828811496422610

  • Je l’ai implémenté en C++ et Qt Scene Graph pour apprendre
    Je partage au cas où ça intéresserait quelqu’un : https://invent.kde.org/carlschwan/warpong/-/blob/master/src/...

  • Exemple similaire : https://contranoid.com/

  • Il existe aussi une autre variante de Pong, mais elle est réservée au desktop : https://www.obfusco.com/pn0gjs/index.html