J’ai testé pour vous : la création d’un jeu pour Firefox OS

Posté par (page perso) . Édité par Davy Defaud, M5oul, BAud, Nils Ratusznik, Nÿco, palm123 et ZeroHeure. Modéré par Nils Ratusznik. Licence CC by-sa
39
6
déc.
2014
Mozilla

Profitant d’un petit moment de répit entre l’envoi de mon manuscrit de thèse et la préparation de la soutenance, j’ai décidé d’assouvir mon besoin de coder. Et, si possible, quelque chose n’ayant rien à voir avec ce que je peux faire au boulot. J’ai donc voulu coder un petit jeu en JavaScript dans le but de le faire tourner sur Firefox OS et ainsi découvrir l’envers du décors du Firefox Marketplace. Attention : cette dépêche étant à l’origine un journal, les propos qui suivent sont très subjectifs.

Je vous propose ici un résumé des grandes étapes pour le développement d’un jeu pour Firefox OS, mais surtout de mes impressions. Je ne vais donc pas parler spécifiquement de mon jeu. En dépit des quelques critiques que je formule ici, j’espère que ce retour d’expérience poussera certains d’entre vous à se lancer, car le développement d’un jeu pour Firefox OS n’a rien de très compliqué.

Sommaire

Développement d’un jeu pour Firefox OS

J’ai décidé de porter Pweek, un jeu que j’avais développé avec un ami il y a deux ans pour Android. Ce jeu avait été développé en Java avec libGDX. Malheureusement, en l’absence de JVM pour Firefox OS, les applications doivent être écrites en HTML + JS. Heureusement, le JavaScript a bien évolué ces dernières années, et il y a des tonnes de frameworks à disposition.

Pweek

Prise en main d’un framework

Je me suis lancé dans la recherche d’un framework pour développer des jeux HTML. J’ai tapé naïvement sur mon moteur de recherche quelques mots clefs et puis je me suis lancé sur Phaser. Je n’ai pas pris le temps de tester les alternatives, vous trouverez une liste chez HTML5 Game Engine.

J’ai commencé par suivre ce tutoriel qui m’a convaincu par sa simplicité de prise en main. Puis, j’ai parcouru la liste des exemples, j’ai joué un peu avec et je me suis dit que j’avais tout le nécessaire pour faire ce que je souhaitais faire. Vous trouverez également un tutoriel sur le site de Mozilla.

Développement du jeu

Pour le développement, un bon petit Vim accompagné d’un navigateur font l’affaire. Les pages doivent être servies par un serveur Web (explications), pour cela j’utilise simplement la commande python3 -m http.server dans le dossier source, ça fait le boulot. Comparé au développement pour Android, c’est quand même plus sympa que de devoir lancer un gros Eclipse ou équivalent…

Pas besoin de compilation, on teste en rafraîchissant la page de son navigateur, c’est plaisant. Et pour tester sur smartphone, pour commencer on peut simplement se rendre sur l’URL du jeu. En plus, les débogueurs de Firefox et Chrome sont pas mal, ils n’ont pas grand chose à envier aux autres débogueurs que j’ai pu utiliser avec d’autres outils.

Je regrette cependant de ne pas avoir pris le temps d’outiller d’avantage mon code avec un Google Closure ou équivalent (je ne connais pas trop les outils à la mode, n’ayant plus fait de JS depuis plus de 3 ans). Car, franchement, se prendre des erreurs à l’exécution qui n’auraient pas dépassé la phase de compilation en Java, c’est pénible. J’ai prévu de faire le tour des outils disponibles, ainsi que des langages qui peuvent compiler vers JavaScript. Si vous avez de l’expérience, un commentaire serait fortement apprécié.

Création du manifest et test sur ordiphone

Une fois le jeu fonctionnel dans un navigateur, il est temps de passer à l’empaquetage pour Firefox OS. Cela passe par la création d’un fichier manifest.webapp qui contiendra le nom, la version, la description, le chemin des icônes, le fichier index, les privilèges, l’orientation, etc. Rien de vraiment difficile, vous trouverez des infos sur les pages de Mozilla. Faites attention aux privilèges, c’est la partie un peu sensible, n’utilisez pas le type privileged si vous pouvez l’éviter.

Pour vérifier que tout est bon, vous pouvez utiliser le WebIDE disponible dans Firefox 34+. Vous pourrez alors envoyer votre projet sur votre téléphone et vérifier que tout va bien. Simple, efficace, j’étais plutôt satisfait. Pour débuter, il vaut mieux lire la documentation de webIDE quand même (notamment pour la partie udev).

Envoi sur le Marketplace

Une fois prêt, il ne reste plus qu’à l’envoyer sur le Marketplace ! Concrètement, il suffit juste de créer une archive ZIP du projet, en incluant à sa racine le manifeste. Je regrette l’absence d’un bouton dans le WebIDE pour obtenir directement l’archive ; j’ai perdu du temps à essayer de comprendre qu’il fallait créer un fichier ZIP et que je ne devais pas faire un sous‐dossier mais tout mettre à la racine. Il y a beaucoup de documentation sur Internet, mais je trouve que l’on s’y perd. Certaines informations sont redondantes, d’autres sont devenues obsolètes, et les informations les plus importantes ne sont pas assez mises en valeur.

Dans l’ensemble, je suis assez satisfait de l’interface Web pour envoyer l’application sur le Marketplace. Cependant, pour la soumission, tout n’est pas parfaitement clair, avec des warnings qui font inutilement peur (ex. : je n’ai pas demandé le son car je n’en ai pas besoin, mais Phaser est capable de l’utiliser et, donc, je me suis pris des messages d’avertissement, finalement sans conséquence). Pour la publication d’un jeu, il faut remplir tout un questionnaire, c’est surprenant mais c’est pas plus mal.

Comparé à Google Play, j’ai trouvé cela un peu plus long et un peu moins pratique, mais dans l’ensemble tout à fait satisfaisant. Ce qui m’a le plus surpris est le fait que l’application doit passer à travers une revue manuelle ! Comptez plusieurs jours pour que votre application puisse effectivement se retrouver sur le Marketplace, même si vous ne l’avez pas encore rendu publique. M’étant trompé sur une ligne de mon manifest, j’ai eu à renvoyer le jeu une seconde fois. Ça m’a pris environ 4 ou 5 jours au total.

Pour les curieux, le jeu Pweek est téléchargeable sur le Marketplace et fonctionne sur Firefox OS et Firefox Desktop. Attention avec l’installation dans le navigateur, s’il y a un affreux manque de réactivité, c’est sans doute dû à une option cachée à (dés)activer dans votre Firefox.

Mes impressions sur le Marketplace

J’aimerais maintenant livrer mes impressions sur le Marketplace. Dans un premier temps, j’aborderai l’expérience utilisateur, puis je parlerai des conséquences pour le développeur d’une application.

Expérience utilisateur

Selon moi, l’interface utilisateur du Marketplace a encore une bonne marge de progression. Je ne m’en étais pas vraiment rendu compte au début, car je cherchais juste des applications de base et, pour cela, c’est relativement correct. À noter aussi que l’interface est relativement agréable à l’œil.

Lorsque vous vous rendez sur le Marketplace, vous avez une première page qui met en valeur certaines applications. Vous avez ensuite le choix entre deux onglets : « Récentes » et « Populaires » (éventuellement en se limitant à certaines catégories).

L’onglet « Récentes » contient la liste des dernières soumissions sur le Marketplace, sans distinction. Ceci deviendra complètement inutilisable le jour où Firefox OS sera utilisé par un plus grand nombre de personnes. Mais, pour l’instant, en raison du faible nombre d’applications proposées, cela permet aux geeks de voir les nouveautés. Pour le moment, c’est donc plutôt intéressant, mais si le nombre d’applications augmente, Mozilla devra trouver une alternative.

L’onglet « Populaires » liste les applications les plus téléchargées. À vrai dire, on ne sait pas vraiment s’il s’agit des applis les plus téléchargées depuis toujours ou en ce « moment », ou s’il s’agit d’un algorithme plus complexe qui se base sur un ensemble de statistiques. Étant donné que dans les quatre premières applications, trois n’ont que 3 étoiles sur 5, ce n’est clairement pas basé sur la qualité des applications.

La première question que je me suis posée est la suivante :

Mais pourquoi ils n’ont pas fait en plus un onglet « Les mieux notées » ?! Au moins, on pourrait découvrir des applications de qualité.

Car, actuellement, il y a une grosse confusion entre applications populaires et applications de qualité. Et l’utilisateur lambda repart avec l’impression que les applications proposées sont de mauvaise qualité.

À défaut d’un nouvel onglet, nous pourrions au moins pouvoir affiner la liste avec une liste de filtres. J’aimerais pouvoir n’afficher que les applications avec au moins 4/5, avec au moins un certain nombre de notes ou de téléchargements.

Car en ne proposant qu’un choix entre « Récentes » et « Populaires », alors les applications populaires sont les plus installées et donc elles restent dans les plus populaires, etc. Il est difficile de monter dans les applications les plus populaires si l’utilisateur ne cherche pas spécifiquement notre application. C’est le cas notamment des jeux : vous cherchez un bon jeu, mais vous ne trouverez que les jeux les plus connus, ce qui n’est pas pareil ! C’est comme si dans un magasin de jouets vous demandiez conseil à un vendeur et que celui‐ci n’avait rien d’autre à vous proposer que le Monopoly et le jeu d’échecs…

Expérience développeur

Les problèmes dont je viens de parler ont un impact important sur le nombre de téléchargements. Afin d’illustrer ceci, voici quelques statistiques sur le nombre de téléchargements de Pweek :

Téléchargements de Pweek

Au lancement, je me suis retrouvé dans la liste des applications récentes. Donc, naturellement, j’ai eu pas mal de téléchargements. Plus de 200 installations par jour les deux premiers jours. Mais ensuite, la position de mon jeu dans la liste des nouveautés n’a cessé de chuter (normal), mais cela a eu un effet catastrophique sur le nombre de téléchargements. En l’espace d’une semaine, je suis tombé à 20-30 installations par jour. Et c’est là que j’ai remarqué un manque fondamental dans le Marketplace : les suggestions !

Lorsque vous consultez la description d’une appli, on ne vous dit pas : « Eh, regarde ces applis elles pourraient t’intéresser ! », « Eh, les gens qui ont consulté ou installé cette appli ont consulté ou installé ça » ou encore « Eh, applications du même auteur ! ». Donc, maintenant que mon appli n’est plus dans les nouveautés et qu’elle n’est bien sûr pas dans les applis les plus populaires, comment les gens vont tomber dessus ?

Contrairement au Google Play, il est difficile de découvrir des applis que l’on ne cherchait pas spécialement. On ne peut pas profiter des recommandations pertinentes m’invitant à essayer telle ou telle application.

Et pour ceux qui aiment les statistiques, je vous invite à consulter celles du Marketplace. Nous retiendrons la présence de 5 000 développeurs, avec en moyenne une appli par dev, plus de 95 % d’applis gratuites, moins de 20 nouvelles applis par jour et plus de 40 000 installations d’applications par jour.

Pour la suite

Selon moi, l’interface utilisateur du Marketplace a encore une bonne marge de progression. Je ne m’en étais pas vraiment rendu compte au début car je cherchais juste des applications de base, et pour cela c’est relativement correct. À noter aussi que l’interface est relativement agréable à l’œil.

Je m’interroge également sur toute la partie monétisation. Les applis payantes ça marche sur Apple car les gens qui déboursent 700 € dans un téléphone sont capables de débourser quelques euros pour une application. Sur Android, il faut bien « marketer » le produit si l’on veut réussir à le vendre. Le plus simple est probablement de mettre de la pub ou des achats in-app.
Sur Firefox OS je suis sceptique. Les utilisateurs d’un téléphone à moins de 100 € ne vont peut‐être pas débourser de l’argent dans une appli, et les utilisateurs de Firefox OS sont plutôt réfractaires à la pub, j’imagine… Donc, en l’état, pour moi, développer sur Firefox OS, c’est surtout pour le plaisir et enrichir la liste des applis disponibles. Mais, s’il n’y a pas d’intérêt à investir dessus, cela pourrait être un problème pour Mozilla sur le long terme.

  • # Motivés, soyons motivés !

    Posté par . Évalué à 3.

    Merci pour ce retour d'expérience. C'est motivant.
    Depuis 3 ans, je fais coder en python les élèves de spécialité ISN (Informatique et Sciences du Numérique) en terminale S.
    L'idée de les faire développer sur smartphone me trotte dans la tête depuis quelques temps. Je pense me lancer l'année prochaine sur HTML5, donc.
    Le plus dur : faire signer un bon de commande de …téléphones ;-)

    Bref, une étape de franchie; je vais me trouver un ZTE rapidement pour commencer les tests.
    Merci!

    • [^] # Re: Motivés, soyons motivés !

      Posté par (page perso) . Évalué à 3.

      À voir en fonction des objectifs. En tout cas, pour tester il suffit d'avoir un navigateur, pas besoin d'un téléphone sauf si c'est pour utiliser les accéléromètres ou le multi-touch. Et pas besoin de Firefox OS, les applis peuvent s'installer sur Android si Firefox est installé.

      Bon après, je préfère de loin le Python que le JS, mais c'est une question de goût :).

    • [^] # Re: Motivés, soyons motivés !

      Posté par . Évalué à 1.

      En effet un retour d'expérience est toujours bon à lire. J'ai testé vite fait ce matin phaser surtout par curiosité, je voulais avoir une idée de la mise en place de l'environnement sur une machine et il faut reconnaître que c'est vraiment simple surtout avec le lancement d'un serveur web sous python.
      - On télécharge,
      - on extrait le contenu de l'archive dans un dossier,
      - on lance le serveur web et c'est tout bon, trop cool

      Reste plus qu'à tester…

  • # Relativiser

    Posté par (page perso) . Évalué à 3.

    plus de 40 000 installations d'app par jour.

    Surtout faire attention aux nombres, il faut relativiser avec la concurrence.
    A l'arrache, c'est dans les 0.1% (essayons d'être gentil) de ce que fait Google Play. A comparer aussi au plus d'un million de terminaux Android activés par jour (oui, juste en plus, par jour).

    Sur Firefox OS je suis sceptique. Les utilisateurs d'un téléphone à moins de 100 euros ne vont peut être pas débourser de l'argent dans une appli et les utilisateurs de Firefox OS sont plutôt réfractaires à la pub, j'imagine…

    C'est clairement un problème que de viser que le bas de gamme : où trouver les gens prêt à payer?

    Donc en l'état, pour moi, développer sur Firefox OS c'est surtout pour le plaisir et enrichir la liste des applis disponibles. Mais cela pourrait être un problème pour Mozilla sur le long terme s'il n'y a pas d'intérêt à investir dessus.

    Clairement, surtout qu'il faut voir qu'il y a plein de développeurs qui se lance en 2014 pour le fun, pour dire de faire quelque chose pour FirefoxOS, mais dans les prochaines années ils en auront peut-être un peu marre de faire ça sans utilisateurs. Un lancement de produit type un OS pour smartphone, il faut que ça décolle vite, sinon ça vivotte juste (faut voir déjà les apps Windows Phone…)

    Petite part de marché qui se réduit chaque jour (1 millions de terminaux Android chaque jour…), des gens qui ne vont pas payer beaucoup ce qui fait vivre le développement d'un OS mobile (bref, acheter des apps), je ne voudrai pas être trop sceptique mais c'est bien mal engagé. Que va-t-il se passer quand les anti-Google vont s'ennuyer de développer des apps non utilisées donc non monétisables alors qu'en face c'est monétisable? La haine de Google et Apple suffira-t-ell sur le long terme?


    Sinon, une question : qu'apporte le fait d'être sur le marketplace de Firefox plutôt que d'être simplement disponible en ligne donc "multi-OS"? Aussi pour relativiser les avantages par rapport à un Android ayant un navigateur web, niveau expérience utilisateur.

    • [^] # Re: Relativiser

      Posté par . Évalué à 2. Dernière modification le 07/12/14 à 16:05.

      Personnellement, je recherche un environnement logiciel similaire à celui qu'on trouve sous Linux.
      Pourtant, les logiciels par défaut sous les distributions linux ont je pense des parts de marché très faibles (qui utilise okular ou nemo sous windows ?). Cela n'empêche pas d'avoir un environnement de bureau complet.
      Par ailleurs, les applications pour firefoxos sont (seront à terme ?) multiplateformes.

    • [^] # Re: Relativiser

      Posté par (page perso) . Évalué à 2.

      Surtout faire attention aux nombres, il faut relativiser avec la concurrence.

      Difficile de les comparer… Le "plus de" n'était pas ici un jugement, j'aurais pu utiliser "environ" à la place.

      Que va-t-il se passer quand les anti-Google vont s'ennuyer de développer des apps non utilisées donc non monétisables alors qu'en face c'est monétisable? La haine de Google et Apple suffira-t-ell sur le long terme?

      Alors attention, tu peux très bien développer en HTML et faire quelque chose de portable sur Android, iOS et Firefox OS. Les outils s'améliorent et très facilement j'ai pu faire tourner mes prototypes de jeu sur Android de manière native (je ne parle pas du hack de mozilla qui permet d'installer des applis Firefox OS sur Android).

      Donc j'ai encore l'espoir que même si Firefox OS a du mal à percer, des jeux seront cependant proposés car ça coûte rien de les mettre à disposition s'ils ont été développés en HTML/JS.

      Sinon, une question : qu'apporte le fait d'être sur le marketplace de Firefox plutôt que d'être simplement disponible en ligne donc "multi-OS"? Aussi pour relativiser les avantages par rapport à un Android ayant un navigateur web, niveau expérience utilisateur.

      Alors l'un n'empêche pas l'autre évidemment, à condition de disposer d'un serveur pour l'héberger. Mais le fait d'être disponible sur le Marketplace cela permet théoriquement aux gens de tomber sur l'appli (voir mes critiques, ce n'est pas forcément gagné). Mais surtout, cela permet de jouer au jeu sans connexion internet ! Et comparé à un navigateur, tu n'as pas la barre d'adresse et tu n'as pas à demander à l'utilisateur de passer en full screen.

      • [^] # Re: Relativiser

        Posté par (page perso) . Évalué à 3.

        Donc j'ai encore l'espoir que même si Firefox OS a du mal à percer, des jeux seront cependant proposés car ça coûte rien de les mettre à disposition s'ils ont été développés en HTML/JS.

        Mais d'un point de vue du client, s'il n'y a aucune exclu à Firefox OS vu que toutes les applis sont par nature portables, autant rester sur iOS/Android/WindowsPhone : ils auront les applis de leur plate-forme en plus de celles de Firefox OS.

        • [^] # Re: Relativiser

          Posté par (page perso) . Évalué à 2.

          Mozilla n'a pas les moyens actuellement de s'imposer et aucun gros développeur ne va proposer un jeu à succès sur Firefox OS sans le proposer sur Android et iOS.

          Donc pour moi, Mozilla doit pousser pour qu'un maximum d'applis soient faites en HTML pour qu'au moins cela ne soit pas un frein supplémentaire. Ils devront alors faire la différence sur l'OS : plus simple / plus rapide / tourne sur smartphone low-cost…

        • [^] # Re: Relativiser

          Posté par (page perso) . Évalué à 2. Dernière modification le 07/12/14 à 19:14.

          D'après ce que je lis de personnes de Mozilla quand ils parlent de FirefoxOS, cela resterait une victoire si les gens se mettent à plus développer en techno web portable.
          Si je pige bien, leur idée est surtout de promouvoir les technologies du web (html, css, js). Je suis pas sûr d'être d'accord sur ce point puisque je crois encore fortement aux technos natives, et notamment aux langages de dév bas niveau pour beaucoup d'usages.

          Par contre le bon côté est de ne pas développer spécifiquement pour une plateforme, notamment en utilisant des librairies natives disponibles seulement pour la dite plateforme, et donc de s'auto-enfermer dès le départ. De ce côté, oui c'est une bonne chose (en gros développer dans une optique "multi plateforme/portable" dès le début). Mais il n'est pas besoin de dév en html/css/js pour cela (surtout qu'il peut aussi y avoir des librairies js spécifiques, ou des règles CSS expérimentales disponibles seulement sur certains moteurs de rendu).

          Enfin voilà, je ne suis pas sûr de comprendre tous les objectifs réels de FirefoxOS, mais je leur souhaite toutefois de réussir car c'est une initiative très intéressante. Je suis pour la diversité, et on a besoin de plus d'acteurs libristes pour faire bouger les choses. Si ce projet n'aboutit pas, peut-être au moins aura-t-il fait réfléchir certains, et alors le prochain projet qui soit vraiment pensé pour les utilisateurs et non les actionnaires (par cet organisme ou un autre, ou même un mec dans son garage) pourra-t-il être un succès grâce aux prédécesseurs. Qui sait?

          Film d'animation libre en CC by-sa/Art Libre, fait avec GIMP et autre logiciels libres: ZeMarmot [ http://film.zemarmot.net ]

          • [^] # Re: Relativiser

            Posté par (page perso) . Évalué à 2.

            D'après ce que je lis de personnes de Mozilla quand ils parlent de FirefoxOS, cela resterait une victoire si les gens se mettent à plus développer en techno web portable.

            On parle bien des mêmes personnes pour qui c'était pas mal important d'avoir un agent mail libre, mais que bon vu que ça rapporte pas grand chose on y met pas grand chose dedans et il végète? Les mêms qui disent que la vie privée ça compte et qu'il faut respecter le Do-Not-Track mais mettent un Google Analytics sur leur site?
            Bref, faire une différence entre le discours officiel et la réalité (je ne dis pas forcément que les gens à qui tu parles n'y croient pas, mais ils peuvent aussi y croire sans vraiment avoir de raison à part "on m'a dit la haut").

            FFOS c'est surtout la fuite en avant car le navigateur Desktop devient minoritaire par rapport au mobile et par rapport à une offre globale des fabriquants d'OS, mais si ils ne trouvent pas comment le faire bankable, j'ai bien peur que ça termine comme Thunderbird ou XUL…

          • [^] # Re: Relativiser

            Posté par (page perso) . Évalué à 4.

            je crois encore fortement aux technos natives, et notamment aux langages de dév bas niveau pour beaucoup d'usages.

            Une des conséquences de FirefoxOS et du développement des applis Web, c'est une API plus grande pour le JavaScript dont implémentation est (souvent) faite en natif. C'est donc le meilleur des mondes (pour certains).

            « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.