Image en HD

Salutation !
En surfant dans les crĂ©ations de la communautĂ©, je me suis rendu compte que certains jeux affichaient leurs images en HD, c’est Ă  dire que leurs pixels Ă©taient moins gros. Saurez-vous comment crĂ©er de tels sprites, qui pourraient m’ĂȘtre utile pour un futur jeu ?
Merci d’avance :wink: !

Salut !

Pour la HD, le topic de référence est celui de aoneill : https://gamebuino.com/creations/high-resolution-without-gb-display

En substance, tu laisses tomber le pseudo-framebuffer en RAM que fournit le SDK de la Meta, et tu gĂšres toi-mĂȘme des buffers plus petits que tu envoies Ă  l’affichage. En effet, il n’y a pas assez de RAM pour contenir un buffer HD, tu es obligĂ© de travailler par morceaux !

Partant de lĂ , tu organises ton code comme tu veux/peux. Pour mon jeu Project88, j’ai travaillĂ© avec des buffers de 8 lignes. Les sprites Ă©taient encodĂ©s en flash (256ko, Ă  partager avec le programme, on a un peu plus de place), et Ă  chaque ligne, je dĂ©terminais quelles lignes de sprites j’allais copier depuis la flash dans mon buffer en RAM.
Mais si tu as beaucoup de sprites, tu peux faire diffĂ©remment, et crĂ©er un systĂšme de palette pour prendre moins de mĂ©moire. Par exemple, avec 4 bits par pixel, tu peux pas mal compresser (c’est ce que j’ai fait pour les backgrounds de Project88).

Bref, voilĂ  plein de gĂ©nĂ©ralitĂ©s, et je ne sais pas Ă  quel point tu es Ă  l’aise avec ces concepts, donc n’hĂ©site pas Ă  poser des questions plus prĂ©cises si besoin.

Hello,
tu peux regarder ce qui a Ă©tĂ© dit dans cette discussion sur le mĂȘme sujet : Parachute HD (META)
Comme le prĂ©cise @Steph ici : Parachute HD (META), tu peux afficher des images en HD en utilisant l’api de bas niveau gb.tft directement sans passer par gb.display. Mais cela peut-ĂȘtre assez complexe puisque comme l’explique @Alban juste au dessus, tu devras gĂ©rer toi mĂȘme la bufferisation de tes images morceau par morceau.
Mais comme prĂ©cisĂ© par Steph Ă©galement ici Parachute HD (META), si tu passes par un espace de couleur indexĂ© sur une palette de 16 couleurs, tu pourras alors profiter de l’api gb.display en rĂ©solution HD, seulement en rĂ©glant ce paramĂštre
#define DISPLAY_MODE DISPLAY_MODE_INDEX

1 Like

Merci, Alban et Codnpix !
En regardant vos liens, je suis tombĂ© sur le tutoriel de Steph qui a pour but d’expliquer le post d’Aoneill et aussi de crĂ©er un effet d’éclairage : https://m1cr0lab-gamebuino.github.io/gb-shading-effect/fr/.

1 Like

Oui, avec la premiĂšre explication de Step, c’est plsu simple mais je te conseil de te baser sur le petit moteur qu’il m’a fournit pour Parachute HD. La structure qu’il y propose est plus simple, je trouve, Ă  utiliser. (J’ai mĂȘme rĂ©ussi, ce n’est pas peu dire
 :slight_smile: )

Sur mon temps libre, j’ai analysĂ© tout ça. Puis je me suis dit : "C’est bien sympa tout ça, mais c’est long (Je suis extrĂȘmement paresseux :sweat_smile: ). Pourquoi ne pas faire une librairie qui permettrais d’afficher une image HD en une seul commande ? ". Si elle n’existe pas dĂ©jĂ , j’essaierais de dĂ©velopper ce bazar.

1 Like

Pourquoi pas
 certes. NĂ©anmoins, des optimisations substantielles peuvent ĂȘtre implĂ©mentĂ©es et dĂ©pendent d’un choix de paramĂ©trage Ă  la conception (dĂ©coupage astucieux des micro-buffers de rendu, dimensions des tiles ou sprites en pixels, prĂ©sence de pixels transparents ou non, 
 ). Une bibliothĂšque gĂ©nĂ©rique ne sera pas forcĂ©ment adaptĂ©e Ă  ces optimisations
 surtout si tu es paresseux :joy: Mais toutes les contributions sont les bienvenues.

1 Like

oui et je pense qu’en effet une librairie spĂ©cifique peut avoir du sens d’une part pour ne pas embarquer tout ce que l’on utilise pas (mais ça je crois que le compilateur le gĂšre bien) et d’autre part pour faciliter l’accĂšs aux gens qui dĂ©marrent a condition d’y ajouter un bon tuto pour bien leur expliquer comment procĂ©der. D’ailleurs pour nous motiver un peu n’hĂ©sitez pas Ă  vous manifester les nouveaux pour nous contribuer comme The_Weakly_SeaShell, dire ce que vous faites avec la META (juste jouer, crĂ©er vos programme, apprendre le c++ en cours, faire des exemples en Python, piloter des montages Ă©lectronique, caler votre bureau, etc
) (dans un nouveau message dans la catĂ©gorie “Bienvenue” bien sĂ»r pour ne pas polluer celui de The_Weakly_SeaShell).

1 Like

Merci Ă  tous pour votre aide ! Ces derniĂšres semaines, je n’ai pas eu le temps de me consacrer Ă  ce projet. Mais j’ai rĂ©ussi Ă  analyser en dĂ©tail TOUT le code de Parachute HD, et je me suis rendu compte qu’il n’y avait que deux images ( l’arriĂšre-plan et toutes les positions des sprites ). Ensuite, le code “dĂ©coupait” l’image pour n’en afficher qu’une partie. Cette astuce marche bien pour les jeux de type Game & Watch parce que les sprites ne se confondent pas. Or, cette astuce ne fonctionne pas avec les autres types de jeux. Quelqu’un pourrait donc m’éclairer sur la façon de positionner une image en HD plus petite que l’écran ?

Tu as toutes les informations que tu cherche dans le workshop de @Steph dont tu as fourni le lien le 18 janvier 2020 dans cette mĂȘme discussion, voici le post.

Je t’invite à lire le workshop si tu veux te lancer dans la HD !

Oui, là je suis en clientùle mais ce weekend j’essayerais de faire un mini tuto qui explique le squelette de Steph pour en premier afficher un background et en second afficher un sprite qui bouge en faite c’est vraiment trùs proche du systùme du G&W mais tu as 2 couples x,y: un pour la position sur l’image d’origine et un pour là ou tu veux l’afficher.
C’est trĂšs simple et le tuto de Steph l’explique mais j’essayerais d’en faire un ici dans l’acadĂ©mie avec Ă©tape 1: affichage du fond, Ă©tape 2 affichage d’un sprite et dĂ©placement avec droite gauche, haut, bas et Ă©tape 3: la mĂȘme avec animation du sprite.
Juste ça, car le reste est similaire. Ça pourra aider les gens qui cherchent et ça me permettra de me replonger dedans :wink:
PS: j’ai bien dit que j’essayerais de le faire ce weekend, je ne promets rien mais normalement, ça ne devrait pas ĂȘtre trop chargĂ©.