3 points par GN⁺ 2025-05-08 | 1 commentaires | Partager sur WhatsApp
  • Le code source du jeu indé VVVVVV, sorti en 2010, a été publié ; le jeu a été créé par Terry Cavanagh, avec une musique de Magnus Pålsson
  • Le code source de la version desktop se trouve dans le dossier desktop_version du dépôt
  • VVVVVV est toujours vendu commercialement, mais il est possible de compiler librement des builds pour un usage personnel
  • Pour distribuer une version compilée, il faut consulter le fichier LICENSE.md du dépôt
  • Les discussions autour des mises à jour de VVVVVV ont principalement lieu dans le canal vvvvvv-code du Discord VVVVVV non officiel

Code source publié

  • Ce dépôt contient le code source de VVVVVV, le jeu indé de Terry Cavanagh sorti en 2010
  • L’annonce de la publication du code source est disponible dans le billet de blog de Terry : announcement
  • Le code source de la version desktop se trouve dans le dossier desktop_version

Conditions d’utilisation et de distribution

  • VVVVVV peut toujours être acheté commercialement sur thelettervsixtim.es
  • Pour un usage personnel, il est possible de compiler le jeu soi-même
  • Pour distribuer une version compilée du jeu, il faut consulter LICENSE.md

Canal de discussion sur les mises à jour

  • Les discussions sur les mises à jour de VVVVVV se déroulent principalement sur le Discord VVVVVV non officiel
  • Le canal concerné est vvvvvv-code

1 commentaires

 
GN⁺ 2025-05-08
Avis sur Hacker News
  • Vers la fin du lycée, quand je suis allé à London avec ma famille, je voulais devenir développeur de jeux et j’ai envoyé un e-mail à Terry Cavanagh ; à ma grande surprise, il a accepté avec plaisir qu’on déjeune ensemble.
    Il était vraiment adorable et m’a aussi donné pas mal de conseils de vie. Je me souviens qu’il disait que la plupart des idées ne viennent pas d’une grande vision, mais qu’on les obtient en bricolant et en expérimentant avec des mécaniques de jeu. Bref, c’est quelqu’un de formidable, et je suis content qu’il publie en open source VVVVVV, qu’il appelait V.

    • Le passage « la plupart des idées s’obtiennent en bricolant et en expérimentant avec des mécaniques » est important. Trop de gens pensent que les nouvelles idées ne peuvent venir que de concepts abstraits, alors qu’elles peuvent très bien émerger en jouant avec le médium lui-même.
    • J’ai appris que deux phrases étaient vraies : si on ne demande pas, on ne peut même pas essuyer de refus, et « ne rencontre pas tes héros » est un mythe.
      Il faut avoir rencontré quelques personnes vraiment nulles pour reconnaître correctement celles qui valent vraiment le coup.
    • C’est une belle histoire. Je me demande si cette rencontre a influencé son choix de carrière par la suite, s’il est finalement devenu développeur de jeux, ou s’il a au moins essayé. C’est toujours intéressant quand il y a une suite.
    • Je me demande quels étaient exactement les conseils de vie qu’il lui a donnés.
  • Un jeu vraiment amusant. Je ne joue pas énormément, mais je me souviens avoir acheté le Humble Bundle pour l’obtenir.
    C’est l’un des rares jeux que j’ai terminés. Merci Terry pour ce superbe travail et ces bons moments. Au passage, veni vidi vici était vraiment salement difficile et m’a pris un temps fou.
    https://www.youtube.com/watch?v=4CtiY5D6HCs

    • J’ai acheté le bundle et je me suis dit : « en attendant que les jeux plus gros et plus intéressants se téléchargent, je vais essayer ce petit jeu de plateforme 2D léger », et j’ai finalement passé toute la soirée dessus.
    • Cette vidéo ne rend pas vraiment l’expérience de réussir de justesse chaque écran pour finalement atterrir à gauche.
    • Il s’est quand même excusé. Il y avait un écran « I’m sorry » :P
    • Si ma mémoire est bonne, je l’ai réussi après quelques centaines d’essais. Ça m’a en quelque sorte préparé la patience nécessaire pour terminer le donjon de Pitioss dans Final Fantasy XV.
      Mon petit ami de l’époque était celui qui m’avait offert VVVVVV, et il tentait un run sans mort avec tous les trinkets. Je ne comprenais pas comment on pouvait être aussi bon à un jeu. Et j’écoute encore souvent PPPPPP, la bande-son de VVVVVV. J’aime particulièrement les morceaux osu! stream liés.
    • J’avais acheté les premiers Humble Bundle, et VVVVVV prenait la poussière dans ma bibliothèque Steam depuis cette époque. Il va falloir que je l’essaie enfin.
  • Voici des articles liés. Je me demande s’il y en a d’autres.
    Is opening up your source code worth it? Terry Cavanagh thinks it was for VVVVVV - https://news.ycombinator.com/item?id=25727963 - janvier 2021
    Many games are held together by duct tape - https://news.ycombinator.com/item?id=22043156 - janvier 2020
    VVVVVV Source Code Released - https://news.ycombinator.com/item?id=22011465 - janvier 2020
    VVVVVV’s source code is now public, 10 year anniversary jam happening now - https://news.ycombinator.com/item?id=22011358 - janvier 2020
    VVVVVV 60% Off On The Mac App Store This Weekend - https://news.ycombinator.com/item?id=2347676 - mars 2011

  • Dans le commentaire de Graphics::print_level_creator(...), il est indiqué qu’un visage est affiché à la place de « by {author} ».
    Les raisons étaient que « by » peut paraître étrange si ce n’est pas la langue de l’auteur, que dans d’autres langues cela peut devenir plus long et dépasser les limites existantes des niveaux, que « by » et le nom de l’auteur peuvent nécessiter des polices incompatibles entre elles, que cela évite aussi des problèmes grammaticaux comme le genre ou la déclinaison des noms, que l’affichage sous forme de visage a du sens, et que même si cette décision rend quelqu’un triste, le visage souriant lui remontera de toute façon le moral. Difficile de contester.

  • L’article lié dans le billet, https://distractionware.com/blog/2020/01/vvvvvv-is-now-open-..., explique qu’il y a beaucoup de bizarreries dans la version C++ qu’on ne comprend qu’en se rappelant que le jeu avait d’abord été créé en Flash, puis porté à la main avec ses défauts tels quels.
    Par exemple, il avait l’habitude de déclarer des variables temporaires comme i, j et k comme membres de chaque classe, afin de ne pas les déclarer dans les fonctions, parce que pour des raisons ennuyeuses c’était pénible de les déclarer dans les fonctions en Flash. Résultat, cela a créé des bugs difficiles à suivre, et en particulier dans la gestion des collisions d’entités, plusieurs fonctions partageaient la même variable i, ce qui pouvait même provoquer une boucle infinie. Ça a vraiment l’air mauvais, et ça confirme le préjugé selon lequel le code de jeu est un bazar.

    • Au contraire, ça paraît formidable, et ça confirme mon soupçon que les programmeurs de jeux en apprennent davantage que les programmeurs ordinaires.
    • Pour le noter avant de l’oublier : du code peut être désordonné tout en étant amusant. C’est le cas quand des bugs intéressants sont créés et découverts dans une nouvelle idée.
      Du code peut être excellent mais ennuyeux. Comme une appli de calculatrice bien écrite mais à l’implémentation sans relief. Du code peut être à la fois désordonné et ennuyeux. Comme un produit B2B mal conçu, avec des centaines de conditions d’exception et, dans chacune, beaucoup de bugs similaires mais différents. Du code peut être à la fois excellent et intéressant. Des choses comme Doom.
    • Les gens font vraiment ça ? D’un coup, devoir mettre this. devant tous les membres en JavaScript me dérange beaucoup moins.
  • Je voudrais aussi mentionner Super Hexagon, du même créateur. Un jeu ultra simple, mais vraiment amusant et très addictif
    Il me semble avoir lu quelque part que son créateur l’avait fait en une journée environ. Et PPPPPP, la bande originale de VVVVVV, est excellente aussi

    • Tant qu’on parle des jeux du même créateur, Dicey Dungeons est aussi vraiment très fun. Ça ressemble à un roguelike de deck-building, mais avec des dés à la place des cartes
      Il y a environ six personnages uniques, plusieurs défis par personnage, et les règles changent sans cesse, ce qui oblige à repenser le jeu. Il y a aussi beaucoup d’humour, ainsi que du DLC gratuit et du contenu moddé que je n’ai pas encore essayés
    • Je ne savais pas que Super Hexagon était du même développeur. C’est un jeu d’un genre complètement différent de VVVVVV, mais il était vraiment excellent
      C’est toujours intéressant de voir un développeur indé, après un premier succès, changer complètement de genre, et ça a donné de vraies pépites. Par exemple la trajectoire Fallen London -> Sunless Sea -> Cultist Simulator
    • Je ne connais pas de moyen plus sûr d’entrer dans un état de flow que de jouer 10 minutes à Super Hexagon
    • Je plussoie cette recommandation. C’est un jeu dont l’apprentissage est vraiment amusant
      Au début, ça paraît impossible, puis le cerveau s’adapte. C’est comme si on voyait au-delà de la Matrice
    • J’ai passé un nombre vraiment énorme d’heures de ma vie sur ce jeu
      Je l’ai aussi partagé avec plusieurs personnes, histoire de les rendre folles elles aussi. Je crois qu’il m’en reste encore 5 ou 6 exemplaires dans mon inventaire Steam. On ne sait jamais. Pareil pour V, SMB, Braid et beaucoup d’autres jeux. Parfois, il suffit d’une petite inspiration et de graphismes bricolés
  • Il y a eu une période où je venais d’arriver en Californie depuis le Canada et où j’avais désespérément besoin d’un travail ; j’ai trouvé un poste de démarchage à domicile chez Comcast
    Je détestais ce boulot, alors je restais souvent assis dans ma voiture à fuir mes responsabilités en jouant à VVVVVV sur mon téléphone. Grâce à Terry, je pouvais souffler un instant

  • Super jeu. Comme il se doit pour un jeu indé de cette époque, le code est vraiment un bazar, et c’est beau à voir

    • L’expression « vraiment un bazar » est parfaitement juste. Mon passage préféré, c’est la fonction Game::updatestate() de 3 300 lignes et son énorme instruction switch
    • Il a été écrit à l’origine en Flash puis porté en C++, ce qui explique une partie du bazar. Pas tout, mais une partie
    • Ce code est sincèrement inspirant. La leçon, c’est qu’ériger la qualité du code en valeur suprême n’est pas toujours la meilleure approche
    • Il n’y a aucun problème avec ce code. Ça s’appelle du déroulage de boucle, et ça permet de maintenir les performances du jeu
  • Je l’ai packagé pour Zig : il suffit de lancer zig build pour pouvoir jouer au jeu sous Linux, macOS et Windows
    https://github.com/allyourcodebase/VVVVVV

  • Il a avoué avoir déclaré i, j et k dans toutes les classes pour éviter de les déclarer à chaque endroit où il les utilisait dans les fonctions, ce qui a, comme on pouvait s’y attendre, provoqué des bugs sales et difficiles
    C’est étonnant qu’il ait réussi à faire un bon jeu avec du code comme ça

    • Presque tous les jeux contiennent toutes sortes de hacks de code horribles. Cela dit, celui-ci est quand même parmi les pires que j’aie vus