28 octobre 2019

Renju returns


Vous souvenez-vous de la console OUYA ?

Moi oui. Bien qu'elle fut un bide commercial, elle était parfaite pour développer ses propres jeux, puis les envoyer facilement sur leur magasin en ligne en quelques clics. Vous ne le savez peut-être pas, mais beaucoup de grands classiques ont débutés sur OUYA : Towerfall, Duck Games, Amazing Frog...

Seulement les serveurs de leur magasin virtuel viennent d'être fermés en fin d'été.


Chapitre I - La mission



Alors que je me dépatouillais sur Discord, j'ai découvert un groupe de passionnés qui se sont mis pour mission de sauver tout ce qui concerne la OUYA pour établir leur propre serveur. Je leur ai raconté que j'avais publié un jeu il y a quelques années sur cette console, Renju of my youth, mais que je n'avais pas pu le mettre à jour par la suite, les privant d'une intelligence artificielle contre qui se battre. Devant leur enthousiasme, j'ai pris sur moi de ressusciter ce projet et de leur offrir une version plus récente de Renju of my youth, le retour.


Renju of my youth on the OUYA store
Oui, j'ai pris mon écran de télévision en photo à l'époque...



Chapitre II - Le Japonais invisible



Il n'y a pas une seule image dans ce jeu. Tout est au format vectoriel pour un gain de place et un affichage automatique à la bonne taille, quelque soit l'écran. Ça concerne aussi les hiragana et katakana japonais. J'avais passé pas mal de temps à optimiser les fichiers TrueType Font pour ne garder que les caractères réellement utilisés.


Vous voyez ici tout l'intérêt du dessin vectoriel comparé au dessin bitmap :

Vector VS raster

Mais en remettant le projet en route, surprise, seuls les caractères latins s'affichent sur Android. Et forcément ça fonctionne très bien sous Flash... La documentation fastidieuse sur l'encodage des caractères Unicode m'a conduit à modifier directement le code source d’HaxeFlixel, la librairie permettant de réaliser des jeux en 2D. Rien de fou cependant, j'ai juste remonté la liste des modifications sur le fichier concernant la typographie jusqu'à trouver celle qui marche. Puisque ça marchait en 2015.

Depuis, des personnes plus qualifiées que moi se sont penchées sur le problème. Et apparemment c'est un véritable souci. Je le leur laisse.



Chapitre III - Le mélange des boutons



Le japonais enfin visible, j'ai sorti la petite console de sa vitrine, retrouvé les câbles qui vont avec et chargé une paire de piles pour sa grosse manette. Je ne me souvenais plus que cette dernière était si bruyante. CLIC CLIC !

Et je ne me souvenais plus vraiment pourquoi je n'avais jamais publié de mise à jour sur OUYA après sa sortie initiale en 2015. J'ai vite retrouvé la mémoire : tous les boutons de la manette sont mélangés. Direction gauche pour valider, gâchette droite pour descendre... Quel est le phoque ?

Dans ces cas-là je m'en remets à la recherche sur internet. Et "haxeflixel OUYA gamepad" ne donne qu'un seul résultat : ma propre question concernant ce problème il y a quatre ans, sans réponse, bien entendu.


Repairing OUYA gamepad using HaxeFlixel

Haxeflixel devrait reconnaître automatiquement la manette pour s'occuper de la distribution des boutons et rester cohérent d'une machine à l'autre. Hors, la manette Xbox 360 fonctionne parfaitement sous Windows, comme celle de la NVIDIA Shield TV dans le salon. Le problème vient donc du fichier qui distribue les valeurs des différents boutons pour cette seule manette OUYA.

Je me suis vite rendu compte que ces chiffres venaient de la librairie JAVA officielle de cette console, mais qui ne correspondaient plus à rien une fois transposées dans Haxeflixel. Alors j'ai passé une longue soirée à tester les boutons un par un pour intervertir les chiffres et déduire les valeurs manquantes.

C'est là que j'ai réalisé que personne n'a utilisé Haxeflixel pour développer un jeu sur OUYA, à part moi... Bravo Etienne, toujours dans les bons plans !



Chapitre IV - Le manifeste



Une fois le jeu prêt, il faut s'attaquer aux réglages minutieux du fichier AndroidManifest.xml pour le fonctionnement de l'application, mais dont la documentation en ligne est aussi obscure à déchiffrer que le manuscrit de Voynich.

Je me suis installé dans le salon, mis en route une série Netflix pas trop compliquée à suivre, Supergirl en VF, et compilé le jeu une bonne trentaine de fois jusqu'à obtenir un fichier apk qui fonctionne correctement sur téléphone Android, sur Android TV et sur la bonne vieille OUYA. Opération fastidieuse.

Il ne me restait plus qu'à distribuer le jeu. Ces dix derniers pourcents qui tendent vers l'infini...



Chapitre V - Distribution finale



La OUYA permettait d'envoyer son jeu sur le marché en quelques minutes. Avec le temps Google Play est devenu l'exact opposé.

Pour rappel, Crunch Days s'est vu retiré du Play Store parce qu'il fallait que j'écrive un document juridique sur l'acceptation de l'affichage publicitaire, merci le RPGD... Et Omeganaut ne peut plus être mis à jour parce qu'il faut produire un apk 64bits pour les téléphones récents. Chose que je n'arrive pas encore à faire avec ZGameEditor.

Renju of my youth est gratuit, n'affiche pas de publicités, et la version actuelle d'Haxeflixel est capable de compiler automatiquement les versions 32 et 64bits dans un seul apk. Ça aurait dû passer...

Après avoir écrit les textes descriptifs, produit les images à afficher sur le magasin, rempli leur QCM géant contenant des questions aussi folles que "Does the game contain any content that can substantially erode the national identity of the Republic of Korea by describing anti-national acts or distorting historical facts?", j'ai pu enfin envoyer mon fichier apk.

"Wow, ça passe. Plus qu'à valider !"

Et bien non. Maintenant Google veut plusieurs fichiers apk. Un par type de machine. Ils appellent ça le "Android App Bundle", pour soi-disant faire gagner quelques kilos octets à l'application. Pour cela il faut installer l'énorme Android Studio et se cogner plusieurs pages de documentation aussi nulles que celles concernant le manifeste.

Seulement tout mon jeu est composé d'images vectorielles, justement pour ne pas avoir à gérer différentes tailles d'images bitmap. Et qu'en est-il de la compatibilité OUYA qui ne passera sûrement pas dans ce nouveau format ?

Alors basta ! J'ai récupéré ce que j'avais écrit et mes images pour tout transvaser sur itch.io, le magasin des jeux indépendants qui n'ont pas le temps de se prendre la tête avec le département légal et autres broutilles.

Vous trouverez Renju of my youth ici :





Épilogue



Tout devient nul et compliqué. Google Play ressemble de plus en plus à l'Apple Store. Et curieusement, il contient maintenant plus de bootlegs coréens que de jeux indépendants rigolos. Ces derniers ont tendance à disparaitre. Heureusement, il existe encore des endroits de liberté comme itch.io et peut-être reverra-t-on une console basée sur Raspberry Pi, versatile et facile d'accès pour tout le monde, développeurs et joueurs.

C'était le rêve de la console OUYA, durant une période assez marante, mais le soleil se couche... Alors je termine cette histoire sur leur logo en sens inverse. Merci d'avoir existé !



Tags

Catégories

Archives