Journal opensara : les doigts dans l'icĂ´ne

18
15
jan.
2022

Bonjour Nal,

Je t'écris pour te faire part d'une histoire qui me donne envie de faire un gros doigt aux développeurs d'un certain brouteur. N'étant pas mapolinus, je vais plutôt expliquer le problème que j'ai rencontré.

Je travaille sur l'accessibilité de mon dernier jeu opensara: les jeunes générations n'étant vraiment pas doué avec l'informatique, mais plus à l'aise avec le digital, ils veulent tout faire avec leurs doigts boudinés et sales sur les écrans minuscules des smartphones tournant avec des OS privateurs. Bref moi de mon temps, c'était mieux avant, on avait une souris et un clavier. Le monde était pur, on avait l'avenir devant nous avec des voitures volantes et des répliquants…

Mais je dis verge: je travaille donc sur l'adaptation aux écrans tactiles de ce jeu en implémentant une manette virtuelle:

virtual pad

Et puis je me suis dit que j'allais ajouter un petit manifest.json pour faire d'opensara une PWA (Progressive Web App) capable A2HS (Add to Home Screen) pour que le joueur puisse ajouter une icĂ´ne pour lancer le jeu avec un brouteur en plein Ă©cran sur son Ă©cran d'accueil.

En plein écran, grâce à la propriété "display" : "fullscreen".

Et là ça coince: le jeu ne se lance pas en plein écran.

3h de debug plus tard, j'ai compris: Firefox pour Android n'applique le mode fullscreen que si l'application déclare une icône en 512x512.

Pourquoi? Sans doute un bout de code fait avec le cul, je vais Ă©viter d'y mettre les doigts.

Ah Nal, quel est le dernier bug rigolo que tu as recontré?

  • # Landscape

    Posté par  (site Web personnel) . Évalué à 4.

    J'avais "joué" avec le manifest pour faire une webapp pour soulapartment.net, site d'échanges de lettres anomynes (genre bouteille à la mer) que j'avais développé avec une amie taïwanaise pour le fun, et j'avais bien galéré.

    En fait, quand tu penses que ça marche sur les quelques smartphones et tablettes que tu as, ça merdouille sur d'autres, sans savoir pourquoi, et uniquement parce que c'est du "orientation: landscape". Pas de problème pour du portrait.
    Actuellement j'utlise "display: standalone", je ne me souviens plus pourquoi, mais ça merdait en fullscreen, et ça merde encore car j'ai récemment vu des smartphones sur lequels la webapp s'affiche en portrait au lieu de paysage, sans savoir pourquoi.

    Des exemples de webapp en mode portrait, il y en a plein, mais en mode paysage… ça fait longtemps que je n'ai pas regardé, mais à l'époque je n'avais rien trouvé qui marche à tous les coups.

  • # "c'Ă©tait mieux avant"

    Posté par  (site Web personnel) . Évalué à 10.

    Bref moi de mon temps, c'était mieux avant, on avait une souris et un clavier. Le monde était pur, on avait l'avenir devant nous avec des voitures volantes et des répliquants…

    Il y avait même des avions de ligne supersoniques et des navettes spatiales, dans ce présent révolu… Et on envoyait des voitures sur la Lune, avec des passagers que l'on ramenait vivants sur Terre. Dingue, non ?

    Ca me fait penser à ces BD rétro-futuristes où l'on projette de la science-fiction dans le passé.

  • # Commentaire supprimĂ©

    Posté par  . Évalué à 10.

    Ce commentaire a été supprimé par l’équipe de modération.

    • [^] # Re: Ne pas comprendre != codĂ© avec le cul

      Posté par  (site Web personnel) . Évalué à 6.

      ça peut aussi être un bug que personne n'a vu avant car contourner par les IDE classiques qui font l'icone automatiquement, etc.

      Dans tout les cas, ça fait parti du jeu, les devs testent dans certains cas, le code est publié et utilisé, et on s’aperçoit qu'un truc manque, qu'une supposition n'est pas connu de tout le monde.

      Je pense vraiment qu'on a tendance Ă  oublier qu'il y a des humains qui font le logiciel et qu'ils font parfois des erreurs.

      • [^] # Re: Ne pas comprendre != codĂ© avec le cul

        Posté par  (site Web personnel) . Évalué à 5. Dernière modification le 15/01/22 à 12:52.

        Je ne crois pas que l'OP oublie l'humain derrière (ou le derrière de l'humain, j'en perds mon latin).

        • [^] # Re: Ne pas comprendre != codĂ© avec le cul

          Posté par  . Évalué à 5. Dernière modification le 15/01/22 à 17:55.

          Je ne crois pas que l'OP oublie l'humain derrière

          Quand on dit qu'on oublie qu'il y a des humains de l'autre côté ce n'est pas à prendre au sens "il pense que c'est autogénéré" ou autre, mais au sens qu'on omet d'envisager réellement comme un humain cette personne.

          Il y a énormément de retour comme ça :

          • de gens très violent avec des personnes dont ils n'ont qu'un contact publication/rĂ©ception (celui qui a publiĂ© [ce code|cette vidĂ©o|cette musique] est un ***)
          • qui deviennent d'un coup bien plus humains lorsque (mĂŞme en restant en ligne) cette personne qui a publiĂ© vient rĂ©pond directement. D'un coup les gens se perçoivent que c'est une personne qu'il y a en face, que ce qu'ils disent ne sont pas des paroles en l'air, etc

          Et c'est encore plus flagrant quand tu compare avec des comportement AFK.

          Il doit y avoir un biais lĂ  dessous.

          https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

          • [^] # Re: Ne pas comprendre != codĂ© avec le cul

            Posté par  (site Web personnel) . Évalué à 3.

            D'un coup les gens se perçoivent que c'est une personne qu'il y a en face, que ce qu'ils disent ne sont pas des paroles en l'air, etc

            Et du coup quand c'est une personne réelle en face de toi avec qui tu travailles depuis des années, que tu apprécies en tant que collègue, voire ami, tu peux vraiment lui dire avec sincérité et humanité:

            Tu as vraiment codé ça avec le cul LOL !

            Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

    • [^] # Re: Ne pas comprendre != codĂ© avec le cul

      Posté par  . Évalué à 2.

      On a un vainqueur, les 2 os mobiles requiert des tailles d’icônes spécifiques.

      Apple exigeait l'icône en 36 000 formats, pour pouvoir s'adapter aux différentes tailles d'écran de ses smartphones et tablettes.

      yen a pas tant que ca. Icône Home Screen iPhone, pour chaque scale factor (2x and 3x maintenant, 1x aussi ya un bail), icône pour Home Screen iPad (si ca s’applique, optionnel), icône pour Spotlight (optionnel), icône pour les settings (optionnel aussi). Et celle pour le store, mais ça c’est pas vraiment une icône.

      Toutes sont assez petites, la plus grande fait 167x167 (83.5 Home Screen iPad Pro retina, aka le laptop sans clavier).

      Android a l’air d’exiger du 512x512px, pas vraiment sur de pourquoi ils ont besoin de qq chose d’aussi gros, mais une recherche (très) rapide me sort ça.

      Donc, bref, comme toujours, c’est facile de pointer du doigt et de dire que c’est coder avec le cul quand on sait pas de quoi on parle.
      Par contre, oui, ça pourrait gueuler dans les logs. Cela dit, vu la teneur du commentaire d’OP, c’est très possible que ça l’ai fait, et qu’il l’ait raté ou ignoré.

      Linuxfr, le portail francais du logiciel libre et du neo nazisme.

  • # Vectoriel

    Posté par  . Évalué à 7.

    Je suis surpris que les icônes ne soient pas vectorielles, étant donné la variété de densité des affichages (de 75 à 300ppp, pour faire vite).

    • [^] # Re: Vectoriel

      Posté par  (site Web personnel) . Évalué à 7.

      Et surtout pour la consommation mémoire: 1mo par icône, c'est légèrement LOURD.

      Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

      • [^] # Re: Vectoriel

        Posté par  . Évalué à 4.

        Je suis curieux de connaitre la différence de poids entre un rendu et l'icone en 512px.

        A la grosse louche, sur mon téléphone les icones font ~8mm en 570dpi. 180 pixels seraient suffisants. J'utilise les réglages par défaut, mais pour quelqu'un avec des déficiences visuelles je peux imaginer qu'on double la taille des icones. On arrive au dela des 256px.

        Il semblerait aussi qu'en terme de poids, svg ne soit pas si bon que ça: sur des images relativement complexes, le png peut être plus petit même pour une icone de 300px².

        Puis, en terme d'utilisation CPU ? Il semblerait que le rendu de svg soit plus gourmand encore.

        Bref, tout porte Ă  croire qu'ils n'ont pas fait un si mauvais choix.

        • [^] # Re: Vectoriel

          Posté par  (site Web personnel) . Évalué à 2. Dernière modification le 17/01/22 à 14:15.

          Le choix est idiot: l'icône que je suis obligé de mettre en 512x512 (sinon pas de plein écran), c'est une version mise à l'échelle de la 32x32. Pour un jeu en pixel art, ça n'a aucun sens de faire une version HD ou une version SVG.

          Ça consomme de la RAM pour rien :(

          Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

          • [^] # Re: Vectoriel

            Posté par  . Évalué à 4.

            Je répondais concernant le choix du vectoriel.

            On est d'accord qu'imposer une limitation pour le plein Ă©cran c'est bof si c'est volontaire.

            Par contre, si tu fournis un 32x32, il faudra sans doute que le qu'android upscale ton image… là encore il y a matière à débats et la version à l'échelle devra de toute façon tenir dans la ram.

            • [^] # Re: Vectoriel

              Posté par  (site Web personnel) . Évalué à 5.

              la version à l'échelle devra de toute façon tenir dans la ram

              C'est dommage qu'il n'existe pas de matériel dédié à l'affichage des images avec mise à l'échelle !

              Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

              • [^] # Re: Vectoriel

                Posté par  . Évalué à 1.

                C'est dommage qu'il n'existe pas de matériel dédié à l'affichage des images avec mise à l'échelle !

                Bien sur que si ! Les smartphones sont en général équipés d'un SoC qui contient un GPU.

      • [^] # Re: Vectoriel

        Posté par  . Évalué à 6.

        Comment ça, un Mo?

        Ton png, il va pas faire 1Mo (enfin, a supposer que tu mets pas une couleur différente par pixel, mais vu ta tendance à faire du pixel art, je serais choqué si ça sort au dessus de 5Ko).

        Et une fois décompressé et rasterisé, il fera la taille qu’il fera sur le frame buffer, à savoir dimension x 24 bits, que la source soit svg ou png.

        Linuxfr, le portail francais du logiciel libre et du neo nazisme.

        • [^] # Re: Vectoriel

          Posté par  (site Web personnel) . Évalué à 3. Dernière modification le 18/01/22 à 09:43.

          Il faudrait jeter un Ĺ“il au code d'un launcher pour Android, mais je parie que l'icĂ´ne se retrouve dans une texture en VRAM ou RAM :-)

          Après la texture peut être compressée, mais pas en PNG. Peut être en https://en.wikipedia.org/wiki/Ericsson_Texture_Compression sur Android par défaut ?

          Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

          • [^] # Re: Vectoriel

            Posté par  . Évalué à 2.

            Ben ouais, on se doute bien de ca. Encore que, c’est pas gagné sur iOS, ça ressemble vachement à du UIKit de base, avec son lot de CoreAnimation.

            Mais je vois pas d’où vient ton Mo tiré du chapeau, ni pourquoi png serait plus problématique que le svg une fois décodé et transformé en texture (ou quel que soit le format utilisé pour le rendu).

            Linuxfr, le portail francais du logiciel libre et du neo nazisme.

            • [^] # Re: Vectoriel

              Posté par  (site Web personnel) . Évalué à 4. Dernière modification le 19/01/22 à 08:47.

              Mais je vois pas d’où vient ton Mo tiré du chapeau

              512x512x32bits :-)

              Je suis vieux<, je parle encore en ancien multiples d'octets.

              Aujourd'hui les djeuns et les fabricants de disque dur diraient plutôt un mébioctet.

              Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

    • [^] # Re: Vectoriel

      Posté par  . Évalué à 8.

      Parce que en théorie tu ne fournis pas le même niveau de détails à chaque résolution. Ton 512x512 va être plein de fioritures là où un 16x16 va être très épuré. Et ça en SVG c'est pas possible (j'ai pas connaissance d'attributs qui permettraient de dire "masque ça si la taille de rendu finale est inférieure à tant" et quand bien même faudrait qu'ils soient pris en compte)
      Si tu rends un SVG conçu pour du 512 en 16 y a toutes les chances que tu finisses avec de la bouillie
      Après on est d'accord c'est la théorie, en pratique hors application avec de bons graphistes tu fais un SVG conçu pour du 128 et tu t'en sers pour toutes les scales

      • [^] # Re: Vectoriel

        Posté par  . Évalué à 4.

        Ça n'empêche pas d'accepter un vectoriel avec des versions raster pour les cas où tu as voulu quelque chose de propre.

        Ça permet aussi de gérer des cas pas prévus au moment où l'appli est créée comme les montres, lunettes ou brosses à dents connectées.

        https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

      • [^] # Re: Vectoriel

        Posté par  . Évalué à 5.

        Y’a pas que ça.
        Le png a un profile d’exécution CPU très predictible, et plus ou moins constant quel que ce soit l’image source.
        Niveau taille, ça va varier un peu en fonction de l’image source (beaucoup d’à plat vs beaucoup de petits détails), mais dans l’ensemble, à la taille d’une icône, ça devrait pas aller très loin.

        Le svg va très bien se comporter sur beaucoup de logos, mais ça va être un désastre si l’image source est un peu compliquée. Genre le logo de Wells Fargo, celui de Disney+, et genre 99% des jeux que j’ai sur mon iPad présentement. Que ça soit en taille de l’image compressée, parsing xml ou rendu. Si t’as des dégradés, faut les extrapoler en soft, si C’est des effets de reflections/ombre ça va être un désastre complet en svg.
        Et clairement, ce sont des situations qui arrivent fréquemment avec des applis divers et variées.

        On parle d’un truc système qui doit afficher plusieurs douzaines d’icônes par écran constamment, avoir un profile d’exécution predictible et plus ou moins garanti d’être sous une certaine valeur est important.

        Linuxfr, le portail francais du logiciel libre et du neo nazisme.

        • [^] # Re: Vectoriel

          Posté par  . Évalué à 3.

          Pour le point spécifique du profile d'éxecution, on pourrait avoir un rendu png d'un svg fournit lors de l'installation.

          « 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

          • [^] # Re: Vectoriel

            Posté par  . Évalué à 4.

            A ce compte là, autant prendre un png en premier lieu. J’ai du mal à voir l’intérêt.

            Cette discussion sonne vraiment “svg est mieux parce que c’est mieux”. On a des contraintes qui mettent png en tête.
            Le seul problème avec le png, c’est de devoir en exporter à différentes résolutions, ce qui:

            • est trivial Ă  faire si tu te fout des problèmes de scaling, et ne va rajouter que 30 secondes Ă  une tâche importante qui va prendre du temps (une icĂ´ne, c’est important, et ça se fait pas en 1 minute)
            • te permet de corriger les problèmes de scaling si c’est un problème dans ton cas prĂ©cis

            J’ai vraiment du mal à voir ce que svg apporte à part des problèmes.

            Linuxfr, le portail francais du logiciel libre et du neo nazisme.

            • [^] # Re: Vectoriel

              Posté par  . Évalué à 2.

              J'ajouterais qu'on part d'un commentaire : il faut fournir x formats d'icones pour finir par proposer un format supplémentaire.

  • # Google Play icon design specifications?

    Posté par  . Évalué à 6.

    Est ce que cela ne viendrait pas de ça?

    https://developer.android.com/distribute/google-play/resources/icon-design-specifications

    When creating your artwork, ensure it conforms to the following:

    • Final size: 512px x 512px
    • Format: 32-bit PNG
    • Color space: sRGB
    • Max file size: 1024KB
    • …

Suivre le flux des commentaires

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