[WIP] New project - Il est temps d'en parler - Un Shmup pour fx-CG50/Graph 90+E et fx-CG20/Prizm
Posté le 15/01/2023 21:55
Bon, il n'a dû échapper à personne (enfin ceux traînant du côté de la shout "projets") que je suis en cours de tripatouillage dans Azur afin de créer un Particle Engine. En effet Lephé, comme toujours, est très présent pour aider dans le lancement des projets et la résolution des problèmes techniques.
Donc en effet, je me suis donné comme objectif de créer un jeu d'un type très peu représenté sur nos chères machines : un Shmup (ou Shoot Them Up), en gros un bon gros jeux de space shooter où le but est de dégommer tout le monde.
J'en suis aux prémisses car je voulais voir ce que cela pouvait donner sur la CG50, un des problèmes attendus étant la limitation du framerate lorsque l'on doit manipuler de nombreux sprites. Et dans un shmup, des sprites, il y en a à profusion, c'est le moins que l'on puisse dire. Et très clairement, c'est le genre de jeux qui ne supporte pas trop le lag.
Je me suis donc mis en tête de comprendre comment fonctionne (du moins en surface), le moteur de rendu Azur développé par Lephé et que nous avons vu à l'oeuvre dans Afterburner.
Pour le moment nous avons un simple fond étoilé généré aléatoirement et rendu par un Shader ainsi que la possibilité de générer des explosions.
Je vous mets en PJ le g3a pour tester un peu si vous voulez regarder ce que donnent les shaders de Azur :
Au niveau des touches :
F1 à F4 permettent de montrer/cacher les infos
F6 : pour randomiser les particules de fond (étoiles défilantes)
SHIFT pour lancer un petit effet sympa d'explosion (calcul en temps réel avec le Particle Engine)
Ça tourne a quasi 100FPS sans overclock !!! Autant dire que c'est vraiment de la balle.
En Overclock F5, ça tourne à 200FPS, on frôle l'excès de vitesse, c'est une tuerie.
Je n'en dis pas plus pour le moment, c'est juste histoire de teaser un peu. Je pense que le développement se fera sur une période assez longue, n'ayant plus le même "temps libre" qu'au moment du développement de Outrun.
Donc soyez patients.
Désolé, pas de screen capture, c'est pas opérationnel avec Azur
Edit : ça correspond à ma version interne v0.1.5, donc vous voyez l'avancée du truc
Fichier joint
Citer : Posté le 15/01/2023 21:57 | #
Woa ça a l'air trop stylé, je teste ce soir.
libMicrofx : https://www.planet-casio.com/Fr/forums/topic17259-2-libmicrofx-remplacez-fxlib-pour-faire-des-add-ins-tres-legers.html !
Racer3D : https://www.planet-casio.com/Fr/programmes/programme4444-1-racer3d-mb88-jeux-add-ins.html
Citer : Posté le 15/01/2023 22:01 | #
Oh la vache, je viens de tester c'est incroyable ! Ca tourne vraiment bien ! Je sens que ça va être carrément utile pour pas mal de jeux *o*
Citer : Posté le 15/01/2023 22:06 | #
un shoot'em up ? bon bah pas le choix, va falloir faire un danmaku
Citer : Posté le 15/01/2023 22:07 | #
Ah t'as réussi à réparer ta G90 ?
libMicrofx : https://www.planet-casio.com/Fr/forums/topic17259-2-libmicrofx-remplacez-fxlib-pour-faire-des-add-ins-tres-legers.html !
Racer3D : https://www.planet-casio.com/Fr/programmes/programme4444-1-racer3d-mb88-jeux-add-ins.html
Citer : Posté le 15/01/2023 22:15 | #
un shoot'em up ? bon bah pas le choix, va falloir faire un danmaku
Peut-être pas tout le jeu mais je pense que certains passages devraient s’en rapprocher. C’est pour ça que je voulais savoir ce qu'il était envisageable d’avoir au niveau des performances.
Citer : Posté le 15/01/2023 22:16 | #
Première réaction : hey y'a pas de screenshot !
Deuxième réaction : wait c'est moi qui suis supposé le coder
un shoot'em up ? bon bah pas le choix, va falloir faire un danmaku
Ça fait longtemps que j'avais pas entendu ce nom-là tiens xD
Citer : Posté le 15/01/2023 23:10 | #
Du parallax scrolling ! Du parallax scrolling !
libMicrofx : https://www.planet-casio.com/Fr/forums/topic17259-2-libmicrofx-remplacez-fxlib-pour-faire-des-add-ins-tres-legers.html !
Racer3D : https://www.planet-casio.com/Fr/programmes/programme4444-1-racer3d-mb88-jeux-add-ins.html
Citer : Posté le 15/01/2023 23:13 | #
2020-05-28 21:25:44.396688940 +0200
On va dire que c’est de bonne guerre >_>
Citer : Posté le 16/01/2023 00:02 | #
Des waifus ! Des waifus !
Citer : Posté le 16/01/2023 00:21 | #
Les graphismes sont trop jolis !
libMicrofx : https://www.planet-casio.com/Fr/forums/topic17259-2-libmicrofx-remplacez-fxlib-pour-faire-des-add-ins-tres-legers.html !
Racer3D : https://www.planet-casio.com/Fr/programmes/programme4444-1-racer3d-mb88-jeux-add-ins.html
Citer : Posté le 16/01/2023 08:46 | #
2020-05-28 21:25:44.396688940 +0200
On va dire que c’est de bonne guerre >_>
Kézako ?!?
Il y a eu une tentative de Shmup dans le style Touhou ? C'est ça ?
J'ai regardé ce que je trouvais en shmups, mais je n'ai rien trouvé, je ne savais pas qu'il y avait qqchose.
Juste un iKaruga like sur nSpire et Ti84/83.
Des waifus ! Des waifus !
Si tu veux en être pour les graphismes, aucun problème pour intégrer ce que tu veux dans le jeu (bon en ayant un semblant de scénario tout de même.
Mais sinon les waifus, elles risquent de ressembler à Tata Simone
Citer : Posté le 16/01/2023 09:10 | #
Darks a tenté de faire un Touhou, mais c'était en 2020 (ou alors il y a plus touché depuis 2020)
See https://www.planet-casio.com/Fr/forums/topic16516-1-touhou.html
Citer : Posté le 16/01/2023 09:25 | #
Ah merci Lephé, je ne connaissais pas ce projet.
DS, c'est vraiment très joli, j'ai testé vite fait la démo, ça a du potentiel. Vraiment plus le temps de bosser dessus ?
J'étais plus parti sur un style starship à la sauce Gradius/R-Type/iKaruga .... en "top down",
Mais si il y a des volontaires pour un "fork" en "left right" dans le style waifus, ce serait super cool.
Citer : Posté le 16/01/2023 10:41 | #
Pour être honnête, j'ai arrêté de travailler dessus car je n'ai pas trouvé de structure algorithmique qui me convenait pour gérer des dizaines d'objets par frame. Sachant que certains suivent des comportements physiques newtoniens (trajectoires rectilignes vitesse/direction), d'autres des patterns fixes, et d'autres un mix pattern/physique/autoguidage sur le joueur.
J'avais tenté un truc à coup de pointeurs sur fonction, mais j'étais pas convaincu.
Note que si quelqu'un a une idée, je suis chaud pour reprendre un peu le projet, d'autant plus si Azur permet de ce genre de performances :o
Citer : Posté le 16/01/2023 10:55 | #
Un système à l'ECS ? (C'est pas codé dans Azur encore mais ça viendra.)
En gros ce que ça ferait c'est que tu aurais un tableau de projectiles rectilignes, un tableau de projectiles autoguidés, etc. Ça te permettrait ensuite d'update par batch avec des bonnes boucles bien optimisée puisque tu pourrais appliquer la formule rectiligne à tous les projectiles rectilignes d'un bloc (pas en parallèle parce qu'on n'a pas de SIMD, mais presque).
Ultimement le code s'en fout un peu de comment tu fais le dispatch ; les pointeurs sur fonction ça prend pas mal de place donc c'est pas idéal, mais tant que tu arrives à te convaincre que ton code est lisible et que les performances suivent, y'a plein de façons de faire qui sont satisfaisantes.
Citer : Posté le 16/01/2023 12:24 | #
Perso je gère ça par le moteur de particules.
En fait j'ai une classe particule avec une méthode update et une méthode render.
La classe update fait le boulot au niveau de chacune des particules pour calculer sa nouvelle position en fonction d'un certain nombre de paramètres (pattern, point de départ, delta t de la frame, ...).
Je gère au niveau du "jeu" via une collection dans un std::vector qui se charge à chaque frame d'appeler la méthode update/render de chaque élément particule.
La collection est aussi capable de gérer la disparition et la création des particules (par exemple un nouveau tir, ou un tir qui sort de l'écran/qui touche un ennemi).
En fait c'est pas hyper compliqué en soit, surtout avec le C++ et les conteneurs (de la STL, je sais c'est pas bien de dire "de la STL"), le piège est surtout au niveau de la quantité d'entités à brasser, il faut avoir des algos efficaces car ça peut vite devenir lourds en calculs. Et on a un overhead à utiliser ce genre de choses (calculs et mémoire).
Citer : Posté le 16/01/2023 16:10 | #
Hmm, je connaissais pas la théorie derrière les ECS, mais c'est un peu ce sur quoi j'étais parti de base. Connaissant la théorie, je vais peut être trouver un design pattern qui me convient et sera suffisamment performant pour ce que je veux faire
Clairement les trucs à coup de STL je suis pas hyper chaud, même si ça a sûrement ses avantages. Un truc aussi KISS que possible en C sera très bien
Ça peut être un truc sympa à creuser en tout cas.
Citer : Posté le 16/01/2023 16:17 | #
Bein en fait la STL est juste une aide, en fait le système est clairement basé sur les ECS.
La STL c'est juste pour aider à maniper un grand nombre d'objets sans ce prendre le chou dans les allocations/libérations de mémoire et pour ne pas avoir à ce refaire à chaque fois toute la base pour avoir des tableaux ou des listes chaînées de tel ou tel type d'objet.
Citer : Posté le 16/01/2023 16:29 | #
Indépendamment des choix techniques ce serait cool si tu t'y remettais :3
Citer : Posté le 19/01/2023 22:15 | #
Et une petite capture animée en GIF, c'est en slow motion pour bien voir les particules et pour moi pour caler les frames de vie de celles-ci.
ne tenez pas compte des FPS, ça tourne à 75-90fps IRL.