...  13 janvier 2023

Omeganaut sur Retroid Pocket 3+

Pour Noël, je me suis offert un Retroid Pocket 3+. Une console abordable et tournant sur Android. Je pensais jouer à Omeganaut dessus, mais c'était complètement buggé : polygones qui clignotent, croix directionnelle qui ne fonctionne pas... Au lieu de me plaindre, j'avais enfin sous la main un appareil affichant les bugs que je recherchais depuis si longtemps.

C'est la ré-ouverture de la chasse aux bugs !

Omeganaut on Retroid Pocket 3+

One BIG bug
Oh qu'il est vilain...



Collisions en vrac

Avec l'aide de Kjell sur le forum ZGameEditor, j'ai recompilé la librairie ZgeBullet qui contenait une erreur depuis toujours. Pour rappel, c'est cette librairie qui s'occupe des collisions, et de la physique en général. Depuis, les collisions sont parfaites, et je vais enfin pouvoir activer la physique pour faire tomber les objets et fracasser les vaisseaux au sol et dans les bâtiments.


Clipping sévère sur Android

Les modèles 3D clignotaient sur certains téléphones récents, alors que ça s'affichait parfaitement bien sur mon bon vieux Google Pixel 3a (2019). Quand j'ai basculé tout l'affichage sur l'utilisation de shaders, les tutoriels recommandaient de régler la précision des chiffres à virgule sur "medium" pour ne pas trop secouer les petits processeurs. La semaine dernière, ChatGPT m'a dit de régler la précision sur "high", tout simplement. OK Computer.


Crash instantané sur Linux

Le jeu plantait sur Linux chez tout le monde, sauf chez moi. Après plusieurs tests avec les joueurs qui ont bien voulu m'aider, j'ai enfin découvert d'où venait le problème : j'avais installé des pilotes XInput alternatifs pour utiliser une manette XBox sur mon ordinateur Linux, puis j'ai continué de modifier le jeu en faisant appel aux fonctions de la librairie XInput. Du coup, l'absence de ces pilotes sur une distribution normale faisait crasher le jeu. J'ai donc abandonné le support des manettes XBox sur Linux et elles sont dorénavant considérées comme des manettes normales, ce qui ne change pas grand-chose.


One BIG punch
BAM!! Dans ta gueule.



D-Pad absent sur Android

La croix directionnelle des manettes est enfin prise en compte sur Android. Il manquait un bout de code dans la partie Java qui fait la jonction entre ZGameEditor et Android. Parce que sur les manettes "récentes", le D-Pad n'est ni un AXIS comme le joystick, ni un BUTTON, mais bien un HAT !


Boites de collisions fantômes

Sous certaines conditions, les ennemis détruits laissaient leur boite de collision invisible en plein milieu de la route. Ça entrainait pas mal de collisions non souhaitées, notamment dans les tunnels ou dans les entrebâillements de sas.


Ciel variable

Le background, qui contient les étoiles, les nébuleuses et le dégradé de ciel, s'affichait à une taille différente selon le ratio de l'écran. Les étoiles étaient plus grosses sur l'écran de l'ordinateur portable au format 3:2. On voyait le noir du clear screen sur les côtés du GSM au format 21:9, et le dégradé du ciel ne tombait pas au bon endroit sur l'écran 16:9 du Retroid Pocket 3+...
Dorénavant, le background s'affiche parfaitement, Quel que soit le device, le ratio ou la résolution. Mais dans le futur, je compte bien remplacer ce rectangle de ciel fixe, ou skyplane, par une sphère qui tournera avec les déplacements du joueur, ou skysphere. Ça va être beau.


Do your part
HaHaHaHaHaHa *

* En vrai, n'écrasez pas les insectes, c'est déjà assez compliqué pour eux.



Et voilà, tout fonctionne parfaitement et c'est un véritable plaisir de jouer à mon propre jeu sur une console portable. Les bases sont solides, il est enfin temps de le remplir avec du contenu : des astronefs, des formations rocheuses, des bases sidérales... Développer un jeu est un véritable tour de force saupoudré de magie. Alors si vous avez une console Android, ou que vous aimez mes jeux, soyez chou, supportez leur développement en achetant Omeganaut :