Triceraprog
La programmation depuis le Crétacé

Articles avec le tag « Jeu Vidéo ».

  • Cross Chase, un défi multiplateforme ()

    Des jeux vidéo récents sur des vieilles machines, il en sort régulièrement. Ainsi que des portages de jeux d'une de ces machines vers une autre de la même époque, qui n'avait pas eu sa version. Ou bien encore des versions améliorées.

    CROSS-CHASE est un jeu développé par Fabrizio Caruso dont l'idée est un peu différente. Le défi est de développer un jeu vidéo sur l'ensemble des machines 8 bits. Le défi n'est pas terminé mais déjà bien avancé : Jupiter ACE, Apple II, Aquarius, Oric Atmos, C64, CPC, VIC20, VG5000µ,...

    L'enjeu est donc de trouver un gameplay assez simple qui pourra être supporté par toutes ses machines, et programmer de manière à minimiser l'effort de portage sur chacun de ces hardwares.

    Le joueur contrôle un personnage qui doit fuir des cercles en s'en débarassant par collision sur des X. C'est fun et rapide, jouable, dans l'esprit de l'époque. Il y a même plusieurs niveaux sur les version complètes.

    CROSS-CHASE

    En effet, il y a des limites à la portabilité entre ces machines du fait principalement de leurs capacités mémoire. Le jeu est donc séparé en une version complète nécessitant plus de mémoire qu'une version minimale, consommant elle un maximum de 16 ko.

    J'ai pu essayer sur du vrai matériel les version VG5000µ et Commodore 64. La version Commodore 64 dispose de caractères redéfinis, ce qui ajoute une touche sympathique. Elle n'est cependant jouable qu'au joystick, ce que j'ai trouvé assez dommage, car cela manque de la précision que l'on peut avoir au clavier. La version VG5000µ ne se joue elle qu'au clavier, mais la disposition des touches de cette machine ne rend pas le contrôle du jeu optimal.

    N'empêche, je me suis bien amusé.


    Et la technique ?

    Ce site parlant programmation, voyons quels sont les outils utilisés par CROSS-CHASE.

    Tout d'abord, la grande partie du jeu est programmée en C, compilé avec CC64 pour les ordinateurs utilisant un CPU 6502 et Z88DK pour les ordinateurs utilisant un CPU Z80 (je ne fais là que paraphraser le contenu du README). Le choix du C permet un code objet compact, proche de la machine tout en restant portable. Le code ne sera pas optimal pour chaque machine, mais pour un portage sur autant de plateformes différentes, le choix est judicieux. On se rapproche ici des méthodes modernes de jeux développés sur plusieurs plateformes.

    Dans le code VG5000µ, l'appel de l'affichage de caractère est néanmoins en assembleur, ainsi que le code pour faire disparaître le curseur. Le reste profite du support des compilateurs et de leurs bibliothèques.

    Le reste de la stratégie de portage consiste à un mélange de fichiers spécifiques compilés uniquement pour les bonnes cibles et l'utilisation de #define/#ifdef. Le choix entre jeu minimal et complet est aussi fait par utilisation de #define/#ifdef.

    Niveau compilation, depuis quelques jours un Makefile est apparu et à remplacé la multitudes des fichiers batch de compilation spécialisés par plateforme (qui ont été déplacées au chaud dans un répertoire batches). C'est bien plus pratique à lire.

    Cerise sur le gâteau : les sources sont disponibles, ce qui donne un bon exercice de lecture.

    Je vous conseille d'aller voir ce projet et de jouer au jeu sur la machine de votre choix. Il devrait bien y avoir une version pour votre machine préférée !

    CROSS-CHASE


  • Visite au Pixel Museum ()

    « Pixel Museum » est un musée consacré aux jeux vidéo ouvert depuis le 25 février 2017, à Shiltigheim, au nord de Strasbourg. C'est donc un musée quasi neuf que je suis allé visiter.

    La façade du musée

    Le thème

    La bannière à l'entrée du musée annonce la couleur : il s'agit d'un musée dédié aux jeux vidéo. Le cheminement à travers les salles est chronologique si l'on suit les panneaux commençant par « Start ». Cependant, l'agencement des salles et la présence d'un groupe (un groupe, ça bouche toujours un musée) fera que c'est dans un semi désordre que j'ai parcouru les salles. Mais peu importe.

    Dans la première salle, un « Tennis for two » (malheureusement indiqué comme étant en réparation). On commence bien par les débuts. Pas de grosses pièces comme un Pong arcade au d'évocation de jeu vidéo sur Minis, comme au Computer Spiel Museum de Berlin. Ici, on parle jeu vidéo dans le contexte familial.

    C'est donc logiquement que la seconde pièce présente une foison de console de l'époque Pong, Odyssée et autres. De très belles pièces, très diverses, montrant aussi que l'objet ludique électronique est tout juste en train de naître et n'est pas encore très dissocié d'autres jeux électroniques ou... de l'électroménager.

    Simon et Merlin

    La présence plus loin d'un « Simon » ou d'un « Merlin » est une manière d'ancrer l'époque sur un thème débordant un peu du jeu vidéo au sens strict, et c'est une signature du musée qui nous suit tout au long de la visite.

    Les époques

    Ce que l'on peut dire, c'est que le musée est à jour et couvre une période allant des tous débuts du jeu vidéo jusqu'à... aujourd'hui. La présence d'une Nintendo Switch l'atteste.

    Switch

    La Switch accompagnée de son coffret Zelda collector est aussi une signature du musée : les pièces sont souvent présentées dans une version collector, ou tout simplement rare. Et toujours en très bon état esthétique.

    Quête des anneaux

    Les ordinateurs

    Le musée dédie le plus gros de sa surface aux consoles de jeux. Une vitrine seulement est dédiée aux ordinateurs familiaux et celle-ci n'est pas la mieux mise en valeur, les machines sont un peu les unes sur les autres et un CBM 2001 Series est même coincé sur le côté (certes, par rapport aux autres pièces, il s'agit là d'un titan qui étouffe un peu dans la vitrine).

    Allez, on pardonne, il y a un VG5000µ.

    VG5000µ

    En fait, cette section, d'après sa disposition et son contenu, semble plus se ranger dans les « à côté » de l'exposition, tout comme le « Simon ». En effet, le VG5000µ, le Alice ou le Portfolio ne sont pas vraiment des machines réputées pour leur catalogue de jeux vidéo.

    L'Amiga à côté, coincé à côté d'un VIC-20 (pas de Commodore 64 ?) ou les deux Amstrad CPC ne sont pas vraiment mis en valeur.

    VG5000µ

    Quelques machines japonaises, comme le Sord M5 ou le Family Computer ont droit a un plus bel espace dans la salle la plus spacieuse.

    Ce n'est pas le point fort de Pixel Museum aujourd'hui, donc. Le musée est principalement focalisé sur l'objet exclusivement dédié au jeu.

    L'interactivité

    Dans un musée de jeux vidéo, on s'attend à pouvoir jouer. Et c'est le cas au Pixel Museum. Quelques bornes de console sont en libre accès

    Vectrex et jeux d'Arcades

    Une salle tout en longueur présente aussi quelques bornes d'arcade et un flipper, malheureusement lui aussi en panne lors de mon passage. Les titres présentés en Arcade ne sont pas forcément les plus emblématiques, reste tout de même l'expérience de jeu sur borne.

    Côté vieilles consoles, une Vectrex et un Videopac permettent de goûter au jeu à l'ancienne. Côté plus récent, Dreamcast, Gamecube, Gameboy ou encore Wii. Je ne me souviens plus de toutes, ce n'était pas ce qui m'intéressait le plus.

    Rien de fonctionnel du côté de la génération Pong, la table-vidéo au centre de la pièce n'était pas en fonctionnement. Il y avait cependant une évocation du jeu, ce qui nous amène aux re-créations présentes dans le musée.

    Les re-créations

    Au long du parcours, le musée nous propose des re-créations ou évocations, sur matériel récent, de jeux. Le premier est un Pong qui évolue graphiquement au fur et à mesure que les joueurs marquent des points. D'un Pong tout vide, on passe à la couleur, au tennis, à la possibilité de bouger sur l'axe horizontal en plus du vertical, pour être accompagné, dans les derniers points, par une débauche de couleurs.

    L'idée est bonne. La réalisation pas autant. La manipulation se fait avec stick arcade, ce qui a l'avantage d'être solide mais l'inconvénient de ne pas être fidèle et de présenter trop de boutons pour un Pong. Le mouvement des raquettes et de la balle est extrêmement saccadé, alors que la particularité d'un Pong est d'être très fluide, de par sa nature. Et la plâtrée de couleurs à la fin n'est pas vraiment du meilleur goût.

    Bref, pas convaincu.

    Autre création peu convaincante que celle qui prend une bonne partie du hall d'entrée et met face à face deux joueurs pour un jeu de combat à base de formes géométriques. Là encore, la réalisation gâche l'expérience et j'ai pu observer les joueurs passer, tenter de comprendre, et s'en aller en faisant la moue. La plupart n'ayant pas réussi à lancer une partie.

    J'y ai joué, j'ai réussi avec peine à lancer une partie et je n'ai pas vraiment compris ce qu'essayait d'évoquer ou de provoquer ce jeu. Pour moi, c'est une erreur.

    Enfin, la réussite est dans la petite pièce consacrée aux jeux électroniques portatifs et à sa Game & Watch géante. Le rendu et le feeling est fidèle, juste en grand. La réalisation physique est propre. C'est une re-création réussie et amusante.

    Game & Watch géante

    Les locaux

    Le musée, qui est facile à trouver, est situé dans de beaux locaux. Il ne faut cependant pas se fier à l'extérieur, les pièces sont situées principalement au sous-sol. Cependant, l'agencement est bon, la décoration plutôt réussie et de belles fresques nous accompagnent dans les escaliers.

    La plus vaste des pièces est malheureusement située en bout de cave, sans autre sortie que l'entrée, ce qui pour des raisons de sécurité compréhensibles la limite en visiteurs simultanés à 19 personnes. En tant normal, j'imagine que cela est bien suffisant, mais il est possible que vous ayez à attendre votre tour pour y entrer. Et comme c'est la pièce la plus longue à visiter...

    Au rez-de-chaussée, mis à part la pièce de la Game & Watch et celle des Pong, on trouve une salle qui met en compétition PS4 et X1, mais pas sur les mêmes jeux, et une salle avec quatre PCs gamers, avec tout le matériel adéquat.

    Le hall central, malgré la position centrale de la création que je n'ai pas aimée, est consacrée aux expositions temporels. Lors de ma visite, The Legend of Zelda et Mario Kart étaient à l'honneur, avec de belles pièces retraçant l'histoire de ces séries.

    Des toilettes et un mini-magasin complète le tout.

    Curiosité, dans la salle des PC, cette machine Kienzle sur lequel j'imagine assez bien qu'aucun jeu n'a jamais tourné, mais je peux me tromper. Je ne comprends pas bien la présence dans la machine dans ce musée, mais cela faisait plaisir à voir tout de même.

    Kienzle 2000

    Les autres activités

    Le site indique, en plus d'expositions thématiques, la présence d'ateliers de création de jeux, la possibilité de privatiser pour un événement, un (ou des ?) espace(s) de travail.

    Ce ne sont pas des activités auxquelles j'ai participé, mais qui montrent le dynamisme de l'équipe du musée et la volonté de faire de Pixel Museum un espace vivant.

    Conclusion

    Je ressors très content de cette visite. Ce musée est tout jeune mais commence fort. La collection est intéressante, variée, globalement bien mise en valeur. Les vitrines sont réfléchies, lisibles.

    N'hésitez pas à consacrer au moins un heure pour cette visite, qui pourra vite s'allonger si vous avez envie de jouer un peu, ou de discuter un peu vos souvenirs devant les vitrines si vous êtes dans un groupe.


  • Human Resource Machine, le jeu assembleur ()

    Human Resource Machine est un jeu de Tomorrow Corporation de type résolution de défi. Ces défis se présentent tous sous la même formes : une série de chiffres et/ou lettres à transformer en une autre série de chiffres et/ou lettres, en fonction de directives.

    Et pour cela, le joueur a à sa disposition une série de commandes. Au début, très peu, leur nombre s'étoffe au fur et à mesure des 42 niveaux de la ligne principale. Ces commandes sont exécutées par l'avatar du joueur, qui va courir d'un bout à l'autre d'une pièce pour prendre des données, les transformer, les ajoutes, les comparer, les stocker...

    C'est ici que cela m'intéresse dans le cadre de Triceraprog. Le personnage que contrôle le joueur simule le fonctionnement d'un ordinateur (en parti). Le joueur au fur et à mesure de la résolution des puzzle apprend « tout simplement » un langage d'assemblage.

    Un langage d'assemblage, ou langage assembleur, est un langage très proche des opérations effectuées par un processeur d'ordinateur. Résoudre des problèmes avec ce seul langage est assez fastidieux et c'est sur ce ressort que joue Human Resource Machine.

    Le joueur a la possibilité de copier/coller les programmes du jeu, et ce qui est intéressant est que ce qui est sauvé dans le presse-papier ressemble à un vrai langage d'assemblage pour une machine inventée pour l'occasion. Voici un exemple de résolution d'un des premiers niveaux du jeu, copié dans un éditeur de texte :

    -- HUMAN RESOURCE MACHINE PROGRAM --
    
    a:
        INBOX   
        COPYTO   0
    b:
    c:
        INBOX   
        JUMPZ    e
        SUB      0
        JUMPN    d
        JUMP     c
    d:
        ADD      0
        COPYTO   0
        JUMP     b
    e:
        COPYFROM 0
        OUTBOX  
        JUMP     a
    

    En termes plus clairs (attention soyez attentif !) :

    1. le programme indique qu'il faut prendre une donnée dans celle qui se présentent en entrée (INBOX)
    2. la copier dans une case mémoire nommée 0 (COPYTO 0)
    3. puis prendre une autre donnée
    4. aller à la ligne indiquer e: si cette donnée est égale à zéro (JUMPZ).
    5. Dans le cas contraire, retrancher le contenu de la case 0 à la donnée courante (SUB 0)
    6. Si le résultat est négatif, allez en d:
    7. Sinon revenir en c:

    8. Dans le cas où le résultat était négatif et que l'on est maintenant en d:, cela signifie que la nouvelle donnée était plus petite que celle dans la case 0.

    9. La nouvelle donnée est rétablie (ADD 0... on ajoute ce qu'on avait retranché) et est mise dans la case 0.
    10. On revient en b: pour lire une nouvelle donnée

    11. Dans le cas où la donnée était égale à 0, on arrive en e:

    12. La donnée présente dans la case 0 est copiée dans la sortie (COPYFROM 0 puis OUTBOX)
    13. On reprend tout le depuis le début.


    Plus clair ? Mouais... Et en français ? Voici : en entrée se trouvent des suites de nombres qui sont séparées par des 0 (zéro). Pour chaque série, le plus petit des nombres est recopié en sortie. Ce qui est exactement l'énoncé du défi.

    Apprentissage ?

    Je ne suis pas entièrement persuadé que le jeu soit didactique au point d'enseigner la programmation en assembleur. Cependant, il présente une manière de décrire des problèmes et fait ressentir ce qu'est la programmation de ce type.

    Pour un programmeur déjà habitué à l'exercice, le jeu n'est pas très long. Je l'ai terminé en moins de 3 heures, à l'exception du dernier des puzzles optionnels, qui aurait été vraiment long à mettre au point, je n'en avais pas vraiment envie.

    Je me demande cependant, pour quelqu'un qui n'est pas programmeur, si le jeu est intéressant et à quel point il est complexe.

    Au final, un jeu sympathique avec une petite histoire amusante en fil rouge. Si vous voulez jouer à programmer en assembleur, ce jeu est fait pour vous.

    Aperçu du jeu Human Resource Machine