Retour d'expérience suite au concours gamebuino

Bonjour Ă  tous,

Je suis lycéen au Lycée Alain à Alençon (en TS Si spé ISN) et suite à la demande de Steph du discord, je vais faire mon retour d’expérience.

Donc hier, il a eu lieu un concours de programmation sur la gamebuino avec des lots à gagner. Ce concours était organisé par la région normandie et était ouvert à tous ceux à qui le lycée avait prêté une gamebuino. Le principal problème de ce concours était le manque d’informations que nous donnait notre professeur d’ISN, on nous as dit “il va y a avoir un concours de programmations sur la gamebuino” mais pas grand-chose de plus et la dernière semaine on a appris que c’était pour le vendredi qui venait alors que les STI2D SIN ont été un peu plus au courant que nous mais c’était pas non plus super clair. En tant qu’élève en spé ISN j’avoue être un peu désavantagé puisqu’on fait très très peu d’arduino (juste un peu en SI mais vraiment pas grand chose), on fait du python mais je n’ai pas mis longtemps à décider dans quel language j’allais utiliser puisqu’il y a moins de tuto et de manière générale le python est moins bien pris en charge que le langage arduino.

J’ai commencé mardi à programmer une animation de l’eau qui sert de background, ça fonctionnait puis j’ai essayé de programmer le personnage principal (un surfer) mais l’eau était mis au dessus du surfer, jicehel m’a bien aidé à optimiser mon programme et régler mon problème de plan. Une fois ceci fait, j’ai programmé l’ennemi 1 qui est une mouette, un pigeon bref on sait pas trop et j’ai repris la façon de faire l’animation de l’eau de jicehel, je l’ai donc adapté. Au niveau temporel, nous sommes jeudi (mercredi j’avais beaucoup trop de travail scolaire : masse de contrôle avant les vacances vive la terminale s) soit un jour avant le programme et je n’avais pas grand chose en soi. Un problème de taille s’est dressé devant moi, les collisions, je me suis dit au début qu’il fallait faire une condition, si x_player = x_oiseau alors fonction “fin du jeu” mais ça ne fonctionne évidemment pas comme ça, j’ai demandé de l’aide sur discord après avoir essayé de rechercher des tutos, regarder dans d’autres programmes ect.
RayTro du discord m’a bien aidé à trouver la solution notamment avec la fonction “gb.collide.rectRect” avec ça je n’ai pas mis de temps à finir ce système de collision.
Je me suis donc penché sur l’écran titre, je fais une condition si “debut = 1” alors le jeu commence, “debut = 1” si le bouton a été pressé, mais j’ai passé plus d’une heure à régler ce problème car ça ne fonctionnait pas et vu de la simplicité de la chose je me voyais pas redemander au discord, je n’ai finalement fait et overflow du discord m’a corrigé en disant que dans une condition il fallait mettre deux signes ==, chose que je savais et que j’ai expérimentée avant mais la fatigue commençait à s’accumuler (ça faisait plus de 5h que je programmais).
Après ce problème résolu, c’était presque une mince à faire que de finir ce jeu. J’ai programmé un deuxième ennemi (un surfer avec un t-shirt différent), fait ces collisions, et ajouter un écran de fin. Il était tard, j’ai essayé de mettre le jeu sur la carte SD mais la gamebuino me faisait une erreur quand je scrollais jusqu’au jeu du solitaire, je n’ai pas insisté plus d’une demi-heure et je suis aller me coucher, heureux d’avoir fait un jeu qui est jouable.

Le lendemain, je fais mes cours de la matinée puis à 14h je vais donc au foyer du lycée. Il y avait un journaliste de tendance ouest et deux journalistes pour une web TV de Canopé, je suis passé aux micros des deux :slight_smile:, j’ai attendu 1h, et pendant ce temps des sti2d présentait à tous les élèves de seconde en quoi consistait la gamebuino. Je passe devant le jury et j’ai été agréablement surpris de l’ambiance détendue des jurés (pourtant il y avait du beau monde), j’ai présenté mon projet avec mon habituel sens de l’humour et mon air décontracté.
Je me suis dit que j’avais aucun regret, c’était une très bonne expérience, j’ai produit exactement l’idée que je me faisais du jeu au départ.

16h, c’est la remise des prix, un peu stressé, fatigué, mais heureux. On nous fait un discours de remerciement , et on nous distribue des petits goodies de la région (un crayon, un jouet antistress, un dédoubleur jack, une petite enceinte bluetooth, une clé usb 8GB et un badge). On nous explique que l’intérêt du badge est virtuel puisque la normandie essaie de mettre en place des choses pour mettre en valeur les élèves avec des compétences, chose que j’approuve complètement, puisque avec parcoursup c’est les notes qui priment et laisser une chance à des élèves moyens sur le papier mais passionné, d’intégrer des bonnes écoles c’est formidable.
Vient enfin la remise des prix, personnellement je m’attendais à être soit 3e, soit pas dans le podium avec ce que j’ai entendu sur les autres participants. Un juré appelle le 3e, je me suis dit, que ce n’était pas grave, que j’avais bien participé et là 2e, j’entends mon nom, je remercie le jury et lâche mon plus beau dab. Ensuite vient le premier, qui selon ce que les autres m’ont dit était clairement au-dessus de nous. On fait notre photo de groupe, puis on retourne en classe. Le lot pour le 3e était une souris vertical, pour le 2e et le 1er, une tablette Samsung et nous remportons tout les 3 une gamebuino.

J’aimerais donc remercier toute la communauté Gamebuino qui m’a permis de gagner ce trophée et d’acquérir de l’expérience, maintenant je peux dire qu’est-ce que j’ai trouvé bien, qu’est-ce que j’ai trouvé moins bien sur la console en elle-même.

Points positifs :

  • Une superbe communautĂ©, j’ai dĂ©jĂ  cherchĂ© de l’aide dans d’autres projets de programmation, jamais j’ai Ă©tĂ© aussi bien aidĂ©, la plupart du temps les gens sont hautains avec les dĂ©butants soit ils rĂ©pondent Ă  cĂ´tĂ©.
  • Une console avec des belles finitions, elle est vraiment très belle et agrĂ©able Ă  jouer
  • Un concept vraiment gĂ©nial, ça m’a donnĂ© envie de faire encore plus de programmations
  • Des jeux excellents crĂ©Ă©s par la communautĂ©

Points négatifs :

  • L’écran est vraiment trop petit, que ce soit en rĂ©solution ou en taille mais ça j’ai surĂŞment pas besoin de le prĂ©ciser, j’imagine que ça a Ă©tĂ© beaucoup critiquĂ© avant moi.
  • Il faut aller plus loin dans le concept de programmation python, c’est pas forcĂ©ment adaptĂ© au fonctionnement de la machine mais plus de tuto pythons, plus d’explications python ect.
  • Le prix de la console, Ă©galement je sais que ça a Ă©tĂ© souvent dit, mais un particulier aura difficilement du mal Ă  se payer une console portable comme celle-ci Ă  100e, oui c’est fait en france, oui c’est vraiment très qualitatif mais ça rebutera beaucoup beaucoup de monde, après vous visez le marchĂ© de l’éducation donc le prix est surĂŞment moins contraignant.
  • Pas assez de tutos, mon ressenti c’est que comme je n’ai pas Ă©tĂ© aidĂ© par mon professeur et qu’il faut se dĂ©brouiller par soi mĂŞme et bien parfois on est perdu dans la savane du code. Une idĂ©e d’amĂ©lioration est au lieu de faire des tutos pour faire un jeu de A Ă  Z comme le pong ect, une idĂ©e serait de dĂ©couper tout ça. Je m’explique, il y a la liste de toutes les fonctions ici : https://gamebuino.com/fr/academy/reference
    on peut aller encore plus loin en faisant une page en français et en expliquant dans quelle situation utilisé telle ou telle fonction (comme un exemple mais avec un contexte plus fort que juste un code),on pourrait aussi faire des tutos “comment déplacer son personnage” “comment gérer ses collisions” “comment ajouter un ennemi” “comment ajouter un score” un peu dans le même style que le tuto pour ajouter une image. Ce serait une bonne chose pour éviter de rester bloquer aux choses les plus basiques et dès le départ, demander à la communauté.

Ce fût une belle expérience et j’essaierai de poster les interviews dès qu’ils seront sortis, pour le moment on a juste un tweet : https://twitter.com/canope_61/status/1208051636427542529

Merci à vous tous et à la région d’avoir organisé quelques choses comme ça, à plus grande échelle ça pourrait être super de faire des gamejam gamebuino

7 Likes

Salut @Wabfall,

Merci d’avoir pris la peine de nous partager ton expérience.
J’ai néanmoins quelques questions :

Comment as-tu entendu parler de la Gamebuino ?
Comment ton lycée en est-il venu à prêter une Gamebuino à certains élèves ?
Quels étaient les critères pour qu’ils accordent leur prêt ?
Quand et comment la Gamebuino est-elle arrivée dans ton lycée ?
Par quel hasard la Région Normandie s’est-elle intéressée à la Gamebuino ?
Y a-t-il un projet pédagogique sérieux derrière ce financement ?
Comment les profs se sont-ils investis autour de la Gamebuino ?
Comment ont-ils pris connaissance de son existence ?
Avez-vous rencontré @Aurelien_Rodot (son créateur) ?
Quel est le langage de programmation abordé par les profs avec la Gamebuino ?

Maintenant, pour répondre à tes points négatifs…

Concernant l’écran

L’écran de la META est certes assez petit… mais il est néanmoins capable d’afficher 160x128 pixels ! Les développeurs de la bibliothèque officielle ont fait le choix de mettre en avant une résolution 4 fois moindre pour des questions d’occupation mémoire… L’API gb.display gère, en effet, un tampon en mémoire (on appelle ça un framebuffer) qui n’autorise, par défaut, qu’une résolution de 80x64 pixels, où chaque pixel peut être encodé avec 16 bits de profondeur de couleurs, donc sur un espace colorimétrique RGB565, c’est-à-dire 5 bits pour le rouge, 6 bits pour le vert et 5 bits pour le bleu. Ce qui fait 5+6+5 = 16 bits. Par conséquent, le framebuffer de gb.display occupe un espace en RAM correspondant à :

80 x 64 x 16 = 81 920 bits = 10 240 octets = 10 ko

Tu te rends bien compte qu’il est impossible d’héberger en RAM un framebuffer de 160x128 pixels avec une profondeur de couleurs de 16 bits. Cela nécessiterait 4 fois plus de mémoire, soit 40 ko. Or la META n’en a que 32 en tout et pour tout !

Il est néanmoins possible d’exploiter une résolution de 160x128 pixels :

  1. soit avec 16 couleurs indexées (par une palette) en utilisant gb.display :
    chaque couleur est alors codée par un index (un rang dans la palette utilisée) qui peut prendre des valeurs entre 0 et 15 (16 couleurs au total). Cet index peut alors être encodé sur 4 bits (nécessaires pour coder des valeurs entre 0 et 15). Autrement dit, le framebuffer pèse alors : 160 x 128 x 4 = 81 920 bits = 10 ko
    On obtient donc le même poids en RAM qu’en divisant la résolution par 4 (80x64) mais avec toute les couleurs offertes par RGB565 (codées sur 16 bits donc).

  2. soit en laissant complètement de côté toutes les fonctions que t’apportent gb.display et en utilisant des fonctions de bas niveau avec l’API gb.tft qui vont te permettre de gérer un framebuffer par toi même (mais c’est un peu plus laborieux). Du coup, en étant astucieux, tu peux construire ton affichage par étapes, avec un framebuffer plus petit, en découpant l’écran en une succession de bandes (par exemple 160x8 pixels = 2,5 ko). Et te débrouiller pour envoyer cette succession de petits tampons suffisamment rapidement vers l’écran pour que ton oeil ait l’impression que tout s’est construit d’une seule traite.
    Si cette technique t’intéresse, je te suggère d’étudier en détail l’article d’Andy sur le sujet :
    High Resolution without gb.display

Pour ce qui est de Python

Un portage du projet d’Adafruit portant le nom de CircuitPython a été implémenté pour la META, mais reste intimement lié à la bibliothèque officielle Gamebuino-Meta, qui occupe du même coup pas mal d’espace en RAM (à cause, entre autres, du framebuffer dont je viens te parler). Faire cohabiter cette bibliothèque officielle, ainsi que toutes les ressources internes nécessaires au bon fonctionnement d’un interpréteur Python dans 32 ko de RAM reste une prouesse technique que l’on doit à @Sorunome ! Mais tu te rends compte du même coup, que l’espace en RAM qu’il te reste pour ton propre programme est fortement amoindri… Il n’est donc pas aisé de coder en Python avec la META. Je me suis moi-même confronté à des difficultés lorsque j’ai écrit mon tuto sur la programmation du jeu Snake. Je voulais, au départ, proposer une implémentation orientée-objets. Mais j’ai dû y renoncer car la couche objet de CircuitPython était trop gourmande. Donc, coder des jeux en Python avec la META, c’est possible… mais ça n’est clairement pas la meilleure plateforme qui existe pour cela, si c’est ton objectif. Tu peux jeter un oeil sur les produits d’Adafruit… qui sont parfaitement taillés pour fonctionner à merveille avec CircuitPython.

Néanmoins, la META reste une super-plateforme de développement avec laquelle tu peux vraiment réaliser des jeux complets et bien léchés, si tu codes en C/C++.

Pour ce qui est des tutos

J’ai découvert la META il y a tout juste 1 an, et j’ai tout de suite été séduit par le projet pédagogique qui était mis en avant pour soutenir son financement. Je n’avais jamais fait de C++ à ce moment là… mais je me suis tout de suite attelé à l’apprentissage de ce langage sur la META en rédigeant moi-même des tutos pour partager mes avancées, mes choix d’implémentation, mes astuces, etc. Mon intention était de venir prêter main forte au Staff pour développer leur Académie. J’étais alors très enthousiaste, comme toi ! Mais devant le peu de retours me parvenant de la Communauté, j’ai vite déchanté… et je me suis lassé. À quoi bon me casser le c** si ça n’intéresse personne (ou presque) !.. Rédiger un tuto prend énormément de temps (bien plus qu’il n’en faut pour coder son projet, que ce soit un jeu complet ou un simple exercice). Le rendre disponible en français ET en anglais en prend encore davantage. J’attendais de Gamebuino qu’ils catalysent la production de contenus pédagogiques en donnant des coups de projecteurs sur les travaux réalisés par les producteurs de contenus bénévoles (comme moi, mais je ne suis pas le seul). J’attendais de Gamebuino qu’ils prennent le temps d’animer leur Communauté en publiant régulièrement des actualités, des tutos, etc. Mais au lieu de ça, le vent a tourné… et je me suis retrouvé comme un c** à espérer quelque-chose qui n’arriverait plus… Je suis profondément déçu par toutes ces promesses non tenues… par ce silence méprisant de la part du Staff, que nous avons maintes fois sollicité… sans réponse.

Toujours est-il que… je suis toujours là, et toujours disposé à apporter mon aide à la Communauté quand elle se manifeste… mais certainement plus à pondre des tutos dont tout le monde se fout. Et c’est bien dommage, parce-qu’en 1 an, j’ai développé mon expérience sur la META en faisant des tas de choses (je suis loin d’avoir publié tout ce que j’ai pu faire). Les choses auraient pu être différentes… je trouve que c’est un beau gâchis.

Le Staff aurait certes dû multiplier ses efforts pour animer correctement sa Communauté et ne pas l’abandonner comme il l’a fait… mais la Communauté avait elle-même un rôle important à jouer en exprimant ses attentes, et en prenant la peine de faire un retour consistant sur les contenus pédagogiques publiés, face aux efforts de certains… qui ne sont, après tout, que de simples bénévoles.

2 Likes

Je suis d’accord avec tes propos.
J’ai beaucoup appris et progressé avec tes tutos et tes conseils sur le forum.
Je développe actuellement un jeu de type SIMCITY que je m’apprête à publier bientôt…
je me pose la question de l’intérêt de publier une version en développement

En tout cas, je te souhaite de bonnes fêtes de fin d’année… :crazy_face::sparkler::tada::christmas_tree:

2 Likes

Merci @LYSANDRE pour ton soutien.

Comme je l’ai exprimé ci-dessus, et comme tu l’as compris, c’est important pour nous, contributeurs, de savoir que nos efforts ont porté leurs fruits. C’est toujours très gratifiant d’apprendre que l’on est parvenu à éclairer le chemin de ceux qui ont des difficultés à y voir clair.

Comme dit l’adage : seul on va plus vite, ensemble on va plus loin !

Concernant ton projet SimCity, c’est une très bonne nouvelle. J’imagine que tu t’es inspiré de la toute première version (celle de 1989, sortie sur Amiga, Commodore 64 et ZX Spectrum) ? Publier une version de développement peut avoir tout son intérêt si tu ressens le besoin de recueillir l’avis et les conseils de la communauté pour peaufiner ton jeu avant sa sortie officielle. Cela permet d’engager la discussion. D’ailleurs ce serait préférable d’ouvrir un post spécifique pour ne pas biaiser le sujet central de celui-ci :wink:

Mais encore faut-il que la Communauté prenne la peine de répondre à ton appel… Je suppose que tu peux compter sur les plus “fidèles”, mais pour le reste…

Encore merci pour ton petit mot, et je te souhaite également de très bonne fêtes.

Merci @Wabfall pou ton retour. Pour la taille de l’écran, franchement, c’est suffisant pour faire des jeux. Ca oblige à réfléchir, c’est sûr mais ça suffit et prendre un cran avec une résolution plus importante augmenterait les prix. Après on peut avoir des lots de bons écrans moins chers mais on est bien après la date de conception de la META, c’est donc normal.
Steph a repris pas mal de points que je partage et je ne m’étendrais donc pas plus sur le sujet, je pense depuis longtemps qu’il y a eu une erreur dans l’usage des fonds suite au financement. Maintenant, c’est fait. Il faut aller de l’avant. Peut être concevoir une console d’apprentissage un peu moins jolie et peut être à finir de monter soit même mais qui coûte moins cher, voir ouvrir le hardware en open source, même si ce sera la porte ouverte aux versions chinoises ou autre, mais technologiquement, il y a eu des avancées depuis, c’est donc maintenant qu’il faut la faire vivre.
On peut faire plein de choses sympa et j’espère que sa version Sim City verra le jour.
En tous cas, c’est une bonne console pour apprendre à programmer. Elle a l’avantage de la couleur et de la quantité de mémoire par rapport à la Arduboy, mais elle a l’inconvénient du prix. Sinon pour programmer tu as la console Pip basée su une Raspberry qui pourrait être intéressante (le kickstarter est fini mais la console est en cours de finalisation je crois avec pas mal de retard, tu peux avoir plus d’infos ici: https://www.minimachines.net/actu/pip-rasberry-pi-56020 par exemple c’est encore plus cher que la META mais l’écran est plus grand etc… en fait c’est un vrai micro ordinateur très portable avec des connexions un objectif etc… mais c’est un autre concept que la META qui a lavantage de rendre le développement plus simple.
J’espère que tu as encore plein d’idées de programmes et on t’aidera à les réaliser si besoin.

1 Like

Je sais qu’on sort du sujet initial, mais je tiens à saluer le travail de Jicéhel, Steph et Sorunome pour les possesseurs de Gamebuino.

Je n’osais pas trop le dire sur le forum non plus parce que je ne voulais pas mettre trop de messages négatifs qui pourraient rebuter des gens qui voudraient se lancer dans l’aventure gamebuino, mais je suis moi aussi extrêmement déçu du manque d’implication de la société-mère. Surtout compte tenu du prix du bazar (la pokitto fait la même chose pour moins cher, même si moins jolie).

A titre perso, je ne m’estime pas floué, je suis dév professionnel, je continuerai de développer pour cette machine bien sympa même sans communauté derrière, mais j’aurais été débutant, sans savoir où aller, j’aurais eu les boules.

Bon, bref, comme dit plus haut, il faut aller de l’avant. Il y a énormément de choses qui peuvent être faites avec la gamebuino, même avec les limitations techniques :wink: A titre personnel, c’est même ça qui m’éclate ! J’ai hâte de voir les prochaines créations ! Et mêmes les créations de débutants, on a tous fait un premier pas !

2 Likes

Merci @Alban pour ton message sympathique.

Tu as bien raison, il faut aller de l’avant ! Et il faut donc qu’on poursuive nos efforts pour accompagner les débutants qui doivent se sentir paumés dans cette jungle du C++ :joy: Je l’ai moi-même été (et le suis encore parfois !), et c’est important de pouvoir compter sur l’aide des “anciens”, ou plutôt des “initiés”.

La META est un outil pédagogique formidable avec des ressources insoupçonnées, même sous fortes contraintes. Et, comme toi, c’est précisément ce qui m’éclate. Et, de surcroît, c’est ce qui m’a attiré pour apprendre le C++. On est tous très contents de notre petite console, qui reste un objet singulier au milieu de la concurrence. Elle a sa touche ! Et j’ai pas du tout envie de l’oublier au fond d’un tiroir moi non plus… Donc, je continuerai aussi de faire plein de choses avec !

1 Like