Mon jeu programmé en Basic est prêt maintenant !
Mon projet fou de créer un jeu pour le C64 est enfin terminé. C’est une bonne chose. Le code a atteint une taille qui n’est plus praticable.
Pour moi, c’est le jeu le plus attendu de l’année 2023. Pour le reste du monde, plutôt pas. Entre autres parce que le reste du monde n’est pas au courant. Sauf peut-être vous, si vous avez lu l’article ci-dessous ou écouté le podcast digitec numéro 136.
Il s’agit du jeu « Cœur brisé », que j’ai programmé moi-même. Dans le langage de programmation Basic. Pour le Commodore 64. Oui, je sais : le facteur « WTF » du projet est élevé, mais c’est ce qui arrive quand les nerds deviennent nostalgiques. Fin 2022, la première version était prête, mais une deuxième, plus grande, devait suivre. Dans la conclusion de mon rapport, j’ai écrit : « Maintenant que j’ai la base, je peux l’étendre assez facilement : ajouter plus de niveaux, intégrer d’autres sprites et programmer de nouveaux ennemis avec des parcours différents. » C’est exactement ce que j’ai fait au cours des trois derniers mois. Cependant, c’était loin d’être « relativement facile ».
La nouvelle version du jeu s’appelle « Die Heart » et comprend vingt niveaux au lieu de huit seulement. Pour chaque troisième niveau achevé, vous recevez une vie supplémentaire, sept au maximum. Mais surtout, les ennemis sont plus variés.
Dans la première version, il n’y avait qu’un seul type d’ennemi, une tête de méchant qui vous poursuit. Deux d’entre eux au maximum pouvaient apparaître simultanément à l’écran. Il y a maintenant sept types d’ennemis et le jeu peut traiter jusqu’à quatre ennemis dans le même niveau.
Un programme Basic se transforme
La multiplicité des adversaires et des niveaux a eu pour conséquence que j’ai dû modifier la structure du programme. C’est laborieux dans Basic. Surtout pour les programmes très longs avec de nombreuses sous-routines. Les sous-routines sont des parties de programme qui doivent être appelées à plusieurs reprises et à partir de différents endroits. En Basic, elles ne peuvent pas être nommées, mais vous devez connaître le numéro de ligne à partir duquel la routine commence. Ces numéros de ligne changent aussi régulièrement. Cela m’incite à éviter les sous-routines lorsqu’elles ne sont pas absolument nécessaires.
Dans la première version du jeu, les mouvements des poursuivants sont calculés directement dans la routine principale. Dans la deuxième version, le type d’adversaire est d’abord demandé, puis la sous-routine correspondante est appelée pour calculer le mouvement.
Les différents niveaux sont déjà des sous-routines dans la première version. Désormais, les sous-routines de niveau exigent à leur tour des sous-routines. Celles-ci dessinent les murs et autres obstacles des niveaux. L’avantage est qu’elles peuvent être utilisées plusieurs fois et combinées entre elles selon le principe modulaire. Par exemple, j’ai ajouté un mur à un niveau existant. De ce fait, vous ne pouvez plus vous arrêter au bord, ce qui rend les choses un peu plus délicates.
Le programme comprend environ 500 lignes ou 16 Ko, ce qui représente environ le double de la version 1.
J’ai échoué pour un type d’adversaire
Je voulais améliorer les poursuivants en faisant en sorte qu’ils ne traversent plus les murs, mais qu’ils doivent les éviter comme le personnage du jeu. Les obstacles auraient ainsi un impact plus important sur le jeu et apporteraient plus de variété. Malheureusement, j’ai échoué.
Les calculs nécessaires pour y parvenir ne sont pas simples, mais j’ai au moins réussi à comprendre les bases au bout d’un certain temps. Le programme détectait lorsqu’un adversaire arrivait à un obstacle et changeait de direction.
Pour des raisons que je n’ai jamais pu découvrir, cela ne fonctionnait que si le jeu était exécuté directement en Basic. Dès que je l’ai compilé, les obstacles n’étaient plus détectés de manière fiable. Parfois oui, parfois non, sans systématique apparente.
Une compilation est absolument nécessaire, car le jeu tourne beaucoup trop lentement en Basic. L’idée est donc morte.
Musique ? Oubliez ça
J’aurais adoré que le jeu soit accompagné d’un chiptune que j’ai composé. Le C64 s’y prête bien. Mais pour cela, j’aurais dû programmer le jeu dans l’assembleur.
Il est certes possible de créer une musique en Basic, mais c’est compliqué et surtout, elle ne peut pas être exécutée en arrière-plan. J’aurais donc dû intercaler de temps en temps la génération d’un son dans la routine principale. Il aurait été impossible de le faire au bon moment. En outre, cela rendrait le code incompréhensible.
Télécharger et jouer
Si vous avez lu jusqu’ici, vous devez avoir envie d’essayer le jeu. Vous pouvez le télécharger ici. Le plus simple est de glisser-déposer le fichier .d64 dézippé dans le champ Émulateur en ligne. Il existe également des émulateurs hors ligne comme VICE.
Si vous y jouez, j’aimerais avoir votre avis. Un niveau donné est-il trop facile ou trop difficile ? Ou le jeu dans son ensemble ? Est-ce que c’est amusant au moins ? Si oui, combien de temps ?
J’ai pris beaucoup de plaisir à développer ce projet, à l’exception de la détection infructueuse des obstacles. Toutefois, plus la taille du programme augmente, plus cela devient pénible. C’est pourquoi je considère que le jeu est maintenant terminé, même si je pourrais certainement encore améliorer beaucoup de choses.
Mon intéret pour l'informatique et l'écriture m'a mené relativement tôt (2000) au journalisme technique. Comment utiliser la technologie sans se faire soi-même utiliser m'intéresse. Dans mon temps libre, j'aime faire de la musique où je compense mon talent moyen avec une passion immense.