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, Mastodon) . É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 janvier 2022 Ă  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 janvier 2022 Ă  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 !

            Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board

    • [^] # 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Ă©.

  • # 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.

      Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board

      • [^] # 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 300px2.

        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.

        Merci de prendre le commentaire ci-dessus avec: un peu de recul, le premier degré, et si possible le second !

        • [^] # Re: Vectoriel

          PostĂ© par (site web personnel) . ÉvaluĂ© Ă  2. DerniĂšre modification le 17 janvier 2022 Ă  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 :(

          Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board

          • [^] # 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.

            Merci de prendre le commentaire ci-dessus avec: un peu de recul, le premier degré, et si possible le second !

            • [^] # 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 !

              Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board

              • [^] # 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.

                Merci de prendre le commentaire ci-dessus avec: un peu de recul, le premier degré, et si possible le second !

      • [^] # 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.

        • [^] # Re: Vectoriel

          PostĂ© par (site web personnel) . ÉvaluĂ© Ă  3. DerniĂšre modification le 18 janvier 2022 Ă  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 ?

          Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board

          • [^] # 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).

            • [^] # Re: Vectoriel

              PostĂ© par (site web personnel) . ÉvaluĂ© Ă  4. DerniĂšre modification le 19 janvier 2022 Ă  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.

              Ce post est offensant ? Prévenez moi sur https://linuxfr.org/board

    • [^] # 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.

        • [^] # 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.

            • [^] # 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.