Hero (WIP)

Eh bien, je me remets au boulot sur ce jeu de plateforme réservé aux 128k* (ou plus), inspiré par les graphismes de notre cher @TITAN et son histoire de manigances en Grèce antique. C’est développé avec l’excellent CPCTeleraNext du formidable @Arnaud6128.

J’ai renoncé à essayer d’obtenir un défilement plein écran fluide basé sur le CRTC et la mémoire, de manière aussi propre et simple que je le voulais sur une machine non-Plus, que ce soit en analysant les timings à la main ou en laissant une IA en liberté dessus. Du coup, je suis passé au « Flick Screen » (écran par écran). Comme ça, je pourrai enfin terminer ce foutu projet et le sortir.

Mais cela veut dire que je peux me concentrer sur le déplacement du sprite du joueur pour qu’il soit le plus proche possible de ce qu’on trouve sur console comme SMB, etc. Oui, je repompe carrément la physique et les contrôles de Mario, parce que pourquoi pas :

Quelques captures d’écran, et oui, la démo du menu/intro est en overscan. Il y a actuellement TROIS musiques différentes grâce à notre @Targhan national, et le jeu sera traduit en plusieurs langues (pour l’instant je prévois anglais/espagnol/français/allemand et bien sûr grec pour notre Grand Poohbah du forum).

Prochaines étapes : le déplacement sur les échelles, la gestion de la mort (sur les piquants ou par noyade), et les ennemis.

Le tileset et les graphismes viennent tous d’ici : AmstradMuseum TITAN : Devilry III

J’utilise Tiled pour les niveaux. Et oui, j’utilise une IA (ChatGPT) comme consultant et assistant de code pour écrire des outils, optimiser le code, faire les tâches répétitives, etc. Parce que ça fait 30 ans et quelques que je suis développeur pro et que je suis absolument saoulé de réinventer la roue avec les ordinateurs. Cela dit, j’écris du C par intermittence depuis 1997, donc oui, je sais ce que je fais.

Merci d’adresser toutes vos plaintes dans le grand topic dédié à l’IA. Par contre, tous les graphismes et les musiques sont faits par des humains !

Je me servirai de ce fil pour vous tenir au courant de l’avancée du projet.

* Non, ça ne tournera pas sur 64K, il vous faudra 128K (au moins) et un lecteur de disquette. Oui, c’est fait exprès. À l’époque, j’étais coincé avec un 464 non étendu, et le 6128 reste la machine de mes rêves.

8 « J'aime »

Ça a l’air fantastique ! Le saut du personnage semble un peu… trop puissant… pour le moment peut-être, mais j’adore les graphismes, le décor et les autres écrans !

1 « J'aime »

J’attendais ça avec impatience, et ça a vraiment l’air fantastique.

1 « J'aime »

Est-ce que le déplacement horizontal du sprite se fait au pixel près ou au dixième d’octet près ? C’est dur à dire sans y jouer évidemment, mais en regardant la vidéo, on a l’impression qu’un peu d’inertie horizontale ne ferait pas de mal, ainsi qu’une précision des coordonnées sur 2 octets pour aller avec, si tu visais vraiment le ressenti d’un Mario.

1 « J'aime »

Ouais, c’est du déplacement horizontal au octet près. J’ose même pas imaginer un déplacement au pixel près, même si je sais que c’est faisable dans les faits.

Les valeurs de gravité/chute/accélération du perso sont celles que j’avais mises au début quand je m’inspirais librement des différentes analyses des contrôles de SMB qu’on trouve en ligne, mais forcément, avec un écran fixe (« flick screen ») sur CPC, c’est un peu trop nerveux, comme dit plus haut.

En vrai, j’étais déjà super content d’arriver à faire bouger ce foutu truc à peu près comme un jeu de console. Ce qui n’aide pas pour l’instant, c’est que les niveaux sont générés à la main. Même avec 128k, je n’ai assez de mémoire restante que pour des niveaux de 8 écrans de large (chargés 1 par 1) ! Du coup, avec les réglages de déplacement actuels, on peut s’y sentir un peu à l’étroit.

Je vais peut-être passer à des niveaux conçus avec des blocs beaucoup plus grands. Ou carrément à de la génération procédurale. J’ai vu une vidéo YouTube absolument géniale qui décortiquait comment c’était fait dans un jeu BBC :

Mais le problème avec ce genre de truc, c’est que les niveaux se ressemblent tous. D’un autre côté, je pourrais faire comme pour Reginald : garder chaque écran compressé jusqu’à ce qu’on en ait besoin, et ne stocker que les sprites d’ennemis persistants. Comme ça, seul l’écran actuel (40 x 22 tuiles) est en mémoire. Et c’est super facile à faire avec du Flick Screen, contrairement au vieux système de défilement (« Scrolling ») que j’utilisais avant.

Honnêtement, je suis complètement indécis. Si j’ai posté ici, c’est aussi pour avoir des avis sur toutes ces idées.

Le plan actuel, c’est de sortir un niveau dès qu’il sera jouable, sous une forme directement praticable (c’est-à-dire sans menu, ni intro, etc.), pour avoir des retours sur les contrôles et le gameplay, en espérant pouvoir faire des améliorations au fur et à mesure.

Et bien sûr, tout mon code sera publié sous licence GPL2 sur Github une fois terminé.

2 « J'aime »

Vos (beaux) écrans sont-ils construits à partir de tuiles ?

Il semble en effet y avoir beaucoup de réutilisation de tuiles, et c’est une très bonne chose, car cela signifie que les écrans peuvent être définis par une quantité assez faible de données.

Mieux encore, vous pouvez définir des objets plus grands (des « supertuiles »), comme des colonnes.

La définition de votre écran peut inclure des données indiquant « à la position (x,y), il y a une colonne », ce qui peut se faire en seulement 3 octets. Le code qui assemble votre écran peut alors reconnaître qu’il y a une colonne à dessiner et consulter une table séparée qui contient les informations de tuiles pour cette colonne.

Admettons qu’une colonne se compose d’une tuile supérieure, d’une série de tuiles centrales identiques et d’une tuile inférieure.
La définition de la colonne peut être structurée de plusieurs manières.

Il peut s’agir d’une simple liste de numéros de tuiles, ou d’un numéro de tuile suivi du nombre de fois qu’elle est utilisée. Il vous faudrait ensuite un système pour déterminer si les tuiles sont stockées dans l’ordre vertical, ou de gauche à droite puis de haut en bas, etc.

1 « J'aime »

Elles sont actuellement conçues à la main, tuile par tuile, et c’est une vraie galère à créer !

Je suis le jeu depuis le début et c’est un projet vraiment sympa. C’est le genre typique de jeu qui aurait pu sortir à l’âge d’or du CPC, annoncé à Noël, avec une jaquette fabuleuse, dans le magazine que j’achetais toujours au kiosque — Micromania dans mon cas — et que je me serais acheté à coup sûr.

1 « J'aime »

Beau travail jusqu’à présent. En regardant les graphismes en jeu, je vous suggère de repenser les contours noirs qui font que presque tous les objets paraissent rigides et blocaux, d’autant plus que vous avez opté pour un arrière-plan plus lumineux que le premier plan.

Aussi, quel est le lien entre le gars sur la première capture d’écran et celui sur la dernière ?

1 « J'aime »

Tu veux dire, Zeus qui broute tout ce qui bouge ?

Ça a l’air génial !

Au fait, je déplace ça dans la catégorie Jeux.

2 « J'aime »

Voici notre héros, Helios. Il a été un peu polisson et se voit puni par les Dieux, condamné à jouer les coursiers divins.

Pour ce qui est des graphismes, je ne suis du tout un artiste, donc je m’en remets à mon très honorable ami @TITAN@Titan. Moi, j’essaie juste de faire faire vroum aux pixels.

Crois-moi, tu peux rattacher son histoire au sexe de toutes les manières imaginables. Il lorgnait peut-être sur une pauvre mortelle, alors Zeus l’a condamné à être une tortue ou un truc du genre, mais Héra est intervenue et l’a métamorphosé avant que Zeus ne le retrouve. Résultat : il est désormais méconnaissable, mais elle l’a aussi pris sous son aile, et il vit maintenant entre l’Olympe et le monde des mortels à faire des courses.

Enfin, je dis ça, je dis rien.

1 « J'aime »

Eh bien, au vu de la différence totale d’apparence d’Hélios entre les deux images (la première est bien loin de porter une armure grecque, et l’art grec antique faisait partie de mes études), je soupçonne que ces visuels ont probablement été « empruntés » à d’autres sources puis transférés/recolorisés pour l’Amstrad CPC. En fait, le style de l’écran d’accueil semble même trop familier ; mais je n’arrive pas à me rappeler où j’ai déjà vu une illustration similaire.

Si je ne soupçonne pas l’IA dans ce cas précis, c’est parce qu’aujourd’hui, on peut lui demander de redessiner un même élément sous des angles différents et elle s’en sort assez bien sans trop halluciner.

En ce qui concerne les graphismes, j’ai une attitude plutôt négative envers les images qui sont des copies non créditées, et Titan a apposé sa signature sur pas mal d’illustrations qui ne sont pas de lui. Du coup, je pense que la solution la plus simple serait de faire preuve de courage, de jouer cartes sur table et de passer à autre chose. Ce n’est pas un crime d’emprunter du contenu ou d’utiliser l’IA, tant qu’on est honnête à ce sujet ; c’est une pratique courante sur CPC (même si d’autres s’y refusent ; y compris quelques grands noms très connus, ce qui est à la fois honteux et contraire à l’éthique).

Moi, je ne suis que le programmeur, chef. Je laisse ce genre de débat aux artistes dans votre genre ! :joy:

Quel genre de niveaux aimeriez-vous voir dans Hero ?
  • Des niveaux plus petits conçus à la main
  • Des niveaux plus grands basés sur des blocs de construction
  • Des niveaux procéduraux massifs
0 voters

Je ne trouve pas que « guv’nor » convienne, mais tu peux m’appeler dieu si tu veux.

Oui, mon Grand Poobah

1 « J'aime »

C’est mieux. Continue comme ça.

1 « J'aime »

Un petit jeu facile à prendre en main rapidement, s’il vous plaît. Avec sauvegarde de la progression, si possible.

1 « J'aime »

Oui. L’idée est d’avoir, sur la deuxième face de la FSK, une version qui vous lance directement dans le jeu : pas de menu, pas d’intro, pas d’écran titre, rien. Juste le jeu.

Et j’envisage d’utiliser des codes d’accès pour permettre d’« enregistrer » sa progression, pour ainsi dire.

2 « J'aime »