GCompris change de moteur

Posté par  (site web personnel) . Édité par tuiu pol. Modéré par patrick_g. Licence CC By‑SA.
Étiquettes :
66
9
fév.
2014
Éducation

GCompris est un logiciel éducatif pour les enfants de 2 à 10 ans. Il est basé sur la technologie Gtk+, on le trouve sur les plate-forme PC, GNU/Linux, Windows et MacOSX.

Comme vous l'imaginez, de nombreux utilisateurs nous demandent une version tablette de GCompris et j'ai essayé d'évaluer les différentes possibilités techniques nous permettant d'y arriver. Malheureusement, Gtk+ la technologie de base sur laquelle nous sommes basés n'offre pas de moyen simple de faire une version tablette.

Les principales exigences pour moi sont d'être capable d'avoir un code de base unique qui nous permettrait de cibler à la fois les PC de bureau et les tablettes.

Après avoir examiné différentes options, je me suis positionné sur Qt Quick. C'est une technologie moderne basée sur un langage descriptif innovant appelé QML qui permet de décrire l'interface utilisateur et Javascript pour coder la logique du jeu. Il est également possible de développer la partie non graphique de l'application en C++ avec Qt.

Qt Quick est basé sur un graphe de scène OpenGL qui permet de créer des shaders et des particules pour faire des effets graphiques et obtenir des animations fluides.

Afin de valider ce choix, j'ai fait un prototype et cela m'a convaincu que c'était une approche pertinente pour GCompris. Même s'il s'agit d'une nouvelle technologie, la courbe d'apprentissage est acceptable, avec très peu de code vous pouvez créer une activité. Dans mon test, il faut environ la moitié de lignes de code pour faire la même activité en Qt Quick que ce que nous faisions en Python, tout en améliorant la qualité graphique.

La mauvaise nouvelle c'est que ce n'est pas compatible avec la version actuelle de GCompris et cela nécessite une réécriture complète. Tout ce que nous pouvons garder est la logique de jeu, les réglages, les textes, les traductions, les graphismes et les sons.

Je viens de publier la version GCompris-qt sur GitHub et j'ai mis à jour la page de développement afin de donner quelques points de départ pour compiler cette version vous-même.

Pour ceux qui ne veulent pas compiler, vous pouvez regarder la petite vidéo.

Un autre point important, n'étant pas basée sur Gtk+ cette nouvelle version ne peut pas être hébergée par Gnome comme nous avions l'habitude de le faire. Aussi, nous ne pouvons pas participer au Google Summer of Code sous l'égide de Gnome. J'ai donc inscrit GCompris pour la session à venir du GSoC.

Si vous êtes intéressés à aider GCompris, je vous encourage à apprendre Qt Quick et participer au portage de certaines activités. C'est une bonne occasion d'apprendre une nouvelle technologie tout en faisant quelque chose d'utile. Je dois encore affiner et documenter le processus pour créer une nouvelle activité, mais ce n'est pas très complexe.

GCompris Gtk+ existe depuis 14 ans. Il est vrai que la migration va prendre du temps, probablement plusieurs années, mais c'est quelque chose que nous devons faire si nous voulons rester pertinent dans les années à venir.

Aller plus loin

  • # QtQuick et python

    Posté par  . Évalué à 3.

    Apparemment, on peut utiliser QtQuick en python :
    http://ceg.developpez.com/tutoriels/pyqt/qt-quick-python/01-interfaces-simples/

    As-tu étudié cette option ? (Afin de récupérer une partie du code)

    • [^] # Re: QtQuick et python

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

      Je savais pas et je ne suis pas convaincu. Dans les fichiers Qml le langage de scripting est Javascipt. Python si je comprend bien permet de remplacer la partie C++ d'une application Qt Quick par du Python. Mais dans le cas de GCompris cette partie sera vraiment très petite, chaque activité n'est pas suffisamment complexe pour nécessiter d'y adjoindre du C++ ou les cas seront rare.

      Si on ajoute la problématique de distribution, ou il va falloir ajouter un interpréteur Python sur chaque plate forme cible, desktop et tablette, ça vaut vraiment pas le coup.

      Pour la réutilisation du code, dans GCompris on a beaucoup de mix avec Gtk+ et il s'avère difficile de l'extraire. J'ai jugé préférable de faire une implémentation propre avec Qt Quick et bénéficier de tous ses apports.

      • [^] # Re: QtQuick et python

        Posté par  . Évalué à 3.

        Je ne suis pas expert sur la question, mais est-ce que tu as regardé PyOtherSide?

        Je dis ça parce que je suppose que tu es très familier de Python, peut-être plus que JavaScript, et parce que POS semble bénéficier d'un certain enthousiasme (J'ai lu qu'on en parle pour Android, Sailfish, etc.).

        • [^] # Re: QtQuick et python

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

          Je ne connaissais pas non. C'est sûrement intéressant mais passer de python pour GCompris au couple Qt+QML est déjà un gros morceau à avaler. Je préfère rester dans les chemins balisées des gens qui ont développés cette technologie. Lorsqu'on maîtrisera bien, on pourra se permettre de regarder des approches alternatives.

          Pour ma part, nous avons besoin d'un langage de scripting car c'est bien adapté au public de développeurs et à ce que nous devons coder. Que ce soit du Python ou du Javascript n'est pas vraiment important.

          Ceci dit, il y a des projets comme QMLWeb qui permette d’exécuter une application QML dans un navigateur et en ce cas il vaut mieux rester en Javascript.

  • # Broadwayd ?

    Posté par  . Évalué à 1.

    Broadwayd semble cassé sur Fedora Rawhide, mais ça ne devrait pas marcher normalement ?

    • [^] # Re: Broadwayd ?

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

      Je ne sais pas, GCompris est en Gtk+ 2.0 et je n'ai jamais essayé. Mais je doute de l’intérêt dans le cas de GCompris on veut vraiment une application native qui s'intègre parfaitement sur les tablettes.

      Aussi je me vois mal lancer un GCompris sur mon serveur pour chaque utilisateur !

      • [^] # Re: Broadwayd ?

        Posté par  . Évalué à 1.

        Ça pourrait probablement se faire en local, mais ça nécessite GTK3, donc au moins un peu de travail. GTK2 n’était vraiment pas pensé pour ce genre de choses, c’est même la raison de sa mise à jour.

  • # Nouvelle "technologie"

    Posté par  . Évalué à -5.

    je trouve toujours étrange le fait de parler de "technologie" pour un logiciel. Les termes "bibliothèque" ou
    "GUI toolkit" sont plus appropriés et moins marketing.

    • [^] # Re: Nouvelle "technologie"

      Posté par  (site web personnel) . Évalué à 8.

      Désolé, il me semble que c'est le terme consacré.

      • [^] # Re: Nouvelle "technologie"

        Posté par  . Évalué à -4.

        La technologie se brevète …
        C'est avec ce genre d'amalgame logiciel = technologie que les partisants du tout-brevet gagnent du terrain.

        • [^] # Re: Nouvelle "technologie"

          Posté par  . Évalué à 3.

          J'avais jamais pensé à ça… Faut vraiment faire gaffe à ce que l'on dit.

          Écrit en Bépo selon l’orthographe de 1990

        • [^] # Re: Nouvelle "technologie"

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

          La technologie se brevète …

          Je ne suis pas d'accord, une technologie, ça s'invente, se crée, se développe, par des gens ingénieux, inventifs, …
          La breveter n'est qu'un acte éphémère pour rentabiliser l'investissement initial, mais ce n'est pas obligatoire. les plus grandes technologie de l'humanité (le feu, la roue, le nucléaire ?) n'ont jamais été breveté et tant mieux.

          kentoc'h mervel eget bezan saotred

          • [^] # Re: Nouvelle "technologie"

            Posté par  (site web personnel) . Évalué à 9.

            Heureusement qu'on ne peut pas breveter le nucléaire et surtout la fusion nucléaire ! Dans le cas contraire il faudrait faire payer ceux qui profitent du soleil ! Que ce soit pour faire pousser des carottes ou se bronzer, on utilise une gigantesque fusion nucléaire. N'en déplaise aux écologistes !

  • # Encore un logiciel qui passe de GTK à Qt

    Posté par  . Évalué à 2.

    Avant faire une version pour GNU/Linux d’un logiciel consistait à faire une interface graphique avec GTK. Maintenant, on utilise Qt pour faire un logiciel multiplateforme, c’est plus simple, plus performant, etc.

    Maintenant, je me demande si la future écrasante domination de Qt qui semble doucement se profiler ne risque pas d’être dommageable à la diversité que l’on se plait tant à défendre dans le monde du libre.

    Écrit en Bépo selon l’orthographe de 1990

    • [^] # Re: Encore un logiciel qui passe de GTK à Qt

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

      Ouep, bof, la diversité qui a fait exploser le brillant avenir du bureau GNU/Linux en plein vol. On va pas réécrire l'histoire mais si tous les efforts c'étaient focalisés sur un seul toolkit graphique et un Desktop dominant, on aurait peut être réussi à avoir plus d'utilisateurs et de développeurs.

      Je préfère qu'on ait un bon toolkit graphique que 10 moyens. Tu peux remplacer 'toolkit graphique' par 'kernel' ou autre.

      • [^] # Re: Encore un logiciel qui passe de GTK à Qt

        Posté par  . Évalué à 9.

        Ouep, bof, la diversité qui a fait exploser le brillant avenir du bureau GNU/Linux en plein vol. On va pas réécrire l'histoire mais si tous les efforts c'étaient focalisés sur un seul toolkit graphique et un Desktop dominant, on aurait peut être réussi à avoir plus d'utilisateurs et de développeurs.

        Note que je n’ai donné ni avis positif, ni avis négatif. J’ai juste posé une question… Mais je ne suis pas convaincu par ta remarque. Pour moi le principal problème, c’est le nombre de distributions. Et on gagnerait à en éliminer certains (qui ne servent à rien), mais certainement pas à supprimer toute diversité.

        Mais je préfère avoir un climat ou chacun fait ce qu’il veut, un milieu propice à l’innovation, plutôt qu’un environnement trop restrictif (quitte à recoller les morceaux après).

        Je préfère qu'on ait un bon toolkit graphique que 10 moyens. Tu peux remplacer 'toolkit graphique' par 'kernel' ou autre.

        Je me dis, heureusement qu’il est possible d’avoir plusieurs environnements de bureau, sinon les développeurs de GNOME seraient en train d’essayer de supprimer toutes les fonctionnalités de KDE… Oups, j’en ai trop dit.

        Écrit en Bépo selon l’orthographe de 1990

        • [^] # Re: Encore un logiciel qui passe de GTK à Qt

          Posté par  (site web personnel) . Évalué à 2.

          Oui tout est question d'équilibre.

        • [^] # Re: Encore un logiciel qui passe de GTK à Qt

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

          le principal problème, c’est le nombre de distributions.

          nombre lui même lié au nombre de bureaux…

          "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

          • [^] # Re: Encore un logiciel qui passe de GTK à Qt

            Posté par  . Évalué à 2.

            nombre lui même lié au nombre de bureaux…

            C'est très très très loin d'être la seule raison. Regarde Debian, Slackware, Gentoo, Arch Linux. Elles proposent toutes les mêmes environnement de bureaux et gestionnaires de fenêtres.

            Écrit en Bépo selon l’orthographe de 1990

            • [^] # Re: Encore un logiciel qui passe de GTK à Qt

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

              Tu cites des distributions majeures, lancées sur des bases et des objectifs vraiment différents. On s'attend plutôt à une liste des inombrables dérivées! :-)

              "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

              • [^] # Re: Encore un logiciel qui passe de GTK à Qt

                Posté par  . Évalué à 3.

                Il existe d'innombrables dérivées d'Ubuntu qui utilisent le même environnement de bureau, preuve qu'il n'y a pas besoin d'avoir plusieurs environnement de bureaux pour avoir une tétrachiée de distributions.

                Écrit en Bépo selon l’orthographe de 1990

        • [^] # Re: Encore un logiciel qui passe de GTK à Qt

          Posté par  (site web personnel) . Évalué à 8.

          sinon les développeurs de GNOME seraient en train d’essayer de supprimer toutes les fonctionnalités de KDE

          Je ne pense pas, les développeurs de Gnome sont bien trop occupés à supprimer toutes les fonctionnalités de Gnome.
          (Je pleure des larmes de sang depuis que j'ai fait un "apt-get dist-upgrade" sur ma Debian testing et que je suis passé à Gnome 3.8)

          kentoc'h mervel eget bezan saotred

    • [^] # Re: Encore un logiciel qui passe de GTK à Qt

      Posté par  . Évalué à 10.

      Pour l'occasion j'ai taggé quelques contenus, dont cette dépêche, avec adieu_gtk

    • [^] # Re: Encore un logiciel qui passe de GTK à Qt

      Posté par  . Évalué à 10.

      GTK est à la ramasse sur tellement de points (portage windows, doc, tablette…) que l'abandonner est la meilleure chose à faire.

      Qt est libre, moderne, performant, il n'y a aucun problème à l'utiliser à la place d'une techno vieillissante.

      Et puis avoir un seul toolkit a aussi des avantages, par exemple, un jour, on pourra copier-coller une image entre 2 applications, ou du texte mis en forme sans se poser la question de quel toolkit est l'application.

      Alors bien sur, il reste Gnome mais bon.

      • [^] # Re: Encore un logiciel qui passe de GTK à Qt

        Posté par  . Évalué à 2.

        Et puis avoir un seul toolkit a aussi des avantages, par exemple, un jour, on pourra copier-coller une image entre 2 applications, ou du texte mis en forme sans se poser la question de quel toolkit est l'application.

        Ça c’est ce qu’on dit, jusqu’au jour où quelqu’un viendra créer une nouvelle bibliothèque d’interface graphique…

        Écrit en Bépo selon l’orthographe de 1990

      • [^] # Re: Encore un logiciel qui passe de GTK à Qt

        Posté par  . Évalué à -5.

        Faut pas exagérer non plus, Gtk ça marche bien sous Windows.

        • [^] # Re: Encore un logiciel qui passe de GTK à Qt

          Posté par  . Évalué à 1.

          Je sais pas pour GTK3 mais en tout cas comme il semblerait que la motivation premiere soit le port sur tablette, il me semble (bien que tout l'UI de gnome3 soit uniquement pense avec la tablette en tete) que GTK3 ne fonctionne toujours pas sur Android ou sur Ipad.

          • [^] # Re: Encore un logiciel qui passe de GTK à Qt

            Posté par  . Évalué à 2.

            Il me semblait que l'UI de GNOME avait pensée en priorité pour les ordinateurs portables à écran tactile.

            Écrit en Bépo selon l’orthographe de 1990

            • [^] # Re: Encore un logiciel qui passe de GTK à Qt

              Posté par  . Évalué à 2.

              Tu as une référence ?

              Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

              • [^] # Re: Encore un logiciel qui passe de GTK à Qt

                Posté par  (site web personnel) . Évalué à 2.

                Je me souviens que c'était énoncé dans une interview, avec Jon McCann je crois. C'était pour démentir l'idée comme quoi Gnome 3 était fait pour tablette (il me semble qu'il disait que ce sera l'objectif de Gnome 4).

                Mais je n'arrive plus à mettre la main dessus. Il faudrait peut-être chercher dans les bookmarks de patrick_g.

                Commentaire sous licence LPRAB - http://sam.zoy.org/lprab/

    • [^] # Re: Encore un logiciel qui passe de GTK à Qt

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

      Encore un projet qui a compris :-)

      git is great because linus did it, mercurial is better because he didn't

  • # Un grand merci !

    Posté par  . Évalué à 10.

    Je tenais à remercier chaleureusement toutes les personnes derrière GCompris.

    J'ai offert un PC à des cousines et j'ai installé dessus GCompris par hasard. Je ne vais pas les voir souvent mais quand j'y suis retourné quelques semaines plus tard, elles étaient scotchées dessus…

    Sachant que le français n'est pas leur langue maternelle, j'ai bien vu du progrès : elles comprenaient les exercices tout en apprenant le vocabulaire (très riche) ainsi que la bonne prononciation des mots.

    On ne vous le dira jamais assez : chapeau !

    • [^] # Re: Un grand merci !

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

      Tu parles de l'activité d'apprentissage du vocabulaire, celle qui ressemble à ça?

    • [^] # Re: Un grand merci !

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

      Je me joins à Near pour dire Bravo ! Ma fille est fan et j'ai hâte de le mettre sur ma tablette.
      J'avais créé ce site (création de chasse au trésor) : http://www.oukile.fr/debuter, penses-tu qu'il serait possible techniquement de le recréer dans GCompris ?
      Sinon, sur Android, le jeu sera disponible par le playstore ? As-tu un modèle économique comme pour la version windows de GCompris ?

      • [^] # Re: Un grand merci !

        Posté par  . Évalué à 4.

        Pareil, un grand merci.
        Ce logiciel sert beaucoup à ma compagne qui est professeur des écoles et il est vraiment très bien fait. C'est un réel plaisir que de pouvoir l'utiliser et le partager.
        Mes connaissances en programmation restent maigres mais celles-ci s'améliorent et j'espère pouvoir aider dans un avenir proche.
        Je compte également créer un livret vantant les mérites du logiciel libre pour l'éducation, livret que je distribuerai dans les écoles avoisinantes tout d'abord, et Gcompris y aura une place de choix.

        Encore bravo et merci.

      • [^] # Re: Un grand merci !

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

        J'ai regardé rapidement et j'ai du mal à saisir le concept de ton jeu. C'est assez éloigné des activités traditionnelles de GCompris en tout cas.

        Oui je prévois de le distribuer via les stores respectifs sous en modèle payant dans le même esprit que ce que je fait actuellement avec les versions Windows et MacOSX. Mais bon on en est pas encore là, pour l'instant il y a une montagne de code à gravir…

  • # Apparence

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

    Sympa la vidéo, ça reste dans le style du GCompris que je connais, mais c'est vrai que ça paraît plus fluide. Bravo d'avoir le courage de "recréer" le logiciel, plutôt que de l'abandonner!

  • # Reste le problème ...

    Posté par  . Évalué à 6.

    … du nom. QCompris (avec Gtk c'était mieux) ;-)

    Bon courage pour la nouvelle aventure.

    • [^] # Re: Reste le problème ...

      Posté par  . Évalué à 8.

      Aucune raison de changer le nom. C'est un jeu de mot et je le trouve très bien!

      Gwenview et Marble ne sonnent pas "Q-truc" ni "K-machin" non plus.
      (Je sais que tu plaisantais, mais je voulais souligner que même chez KDE, ils s'en foutent…)

    • [^] # Re: Reste le problème ...

      Posté par  (site web personnel) . Évalué à 9.

      Bonne question mais il n'y a pas de raison de changer de nom. Le G de GCompris était pour Gnu, pas Gtk+.

      De manière plus profonde, ce logiciel est connu et reconnu dans le monde entier sous ce nom, il serait stupide perdre tout cette reconnaissance pour une histoire de toolkit graphique dont nos utilisateurs ne connaissent rien.

      • [^] # Re: Reste le problème ...

        Posté par  . Évalué à 3.

        En même temps, le G de GTK, c'est aussi pour GNU (sachant que le G est transitif).

        « 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: Reste le problème ...

          Posté par  . Évalué à 4.

          Historiquement parlant le G de GTK c'etait pour Gimp mais comme le G de Gimp c'est pour Gnu on doit pouvoir dire que par transitivite c'est pour Gnu.

          • [^] # Re: Reste le problème ...

            Posté par  . Évalué à 4.

            Mais GNU est GNU's Not Unix, donc le G de GNU est pour GNU, donc le G de GNU est pour GNU, donc …

            Stack overflow error at line: 0
            
    • [^] # Re: Reste le problème ...

      Posté par  . Évalué à 8.

      Pourquoi pas GQompris ? Hmmm?

  • # Demo sous Android/iOS ?

    Posté par  (site web personnel) . Évalué à 3. Dernière modification le 10 février 2014 à 03:32.

    • As-tu testé ta démo sous Android et iOS ? ça fonctionne correctement ?
    • Quelles sont les raisons pour ne pas passer à HTML/JavaScript/WebGL ?
    • Le débat sur les Femen avec Laurent Ruquier en volume très faible dans la vidéo est passionnant :)
    • [^] # Re: Demo sous Android/iOS ?

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

      As-tu testé ta démo sous Android et iOS ? ça fonctionne correctement ?

      J'ai testé uniquement sur Android, je ne me suis pas encore équipé en tablette Apple et Qt Quick étant plus mature sur Android c'est probablement plus simple de commencer par là

      Oui, ça marche très bien, je suis même impressionné par la qualité de l'environnement de développement. C'est un plaisir de travailler en QML, Javascript et C++ avec QtCreator. L'aide en ligne est remarquable dans QtCreator et sur le site de Qt. J'ai rencontré des problèmes avec la balise Audio de QML, j'ai ouvert des bugs à ce sujet.

      J'aurais peut être du commencer par là, pour ceux qui veulent tester sur Android (arm).

      Quelles sont les raisons pour ne pas passer à HTML/JavaScript/WebGL ?

      Clairement, c'était mon choix numéro 2. Afin de pouvoir décider en pleine lumière, j'ai codé 2 activités de GCompris en HTML5 (http://gcompris.net/activity/lang/ http://gcompris.net/activity/color/color/color_svg.html). J'ai ainsi pu comparer les processus de développement, la qualité du code produit et le résultat final.

      Pour moi QtQuick sort gagnant sur tous les points :

      • Comme je l'ai dit QtCreator et son aide en ligne est parfait. Il est aussi plus simple de faire une interface dynamique qui s'adapte à la taille de l'écran en Qml. Le découpage description de l'interface en Qml et logique du jeu en Javascript s'avère très efficace. Dans mon cas la partie C++ s'avère réduite au minimal et n'est pas utile pour coder une activité.

      • GCompris est une porte d'entrée pour des étudiants qui veulent débuter sur un projet de logiciel libre. Il est important que l'écriture de code soit simple. En ce sens, Javascript en HTML5 implique une programmation asynchrone, très performante mais pas forcément idéale pour débuter en programmation.

      • Au final la réalisation est basée sur un graphe de scène OpenGL avec des animations fluides et des particules ce qui ajoute un coté abouti à l'application sans que ce soit complexe à programmer. Pour animer mes poissons par exemple, il suffit juste de leurs donner des coordonnées et dire en combien de temps ils doivent les rejoindre.

      • Pour la maintenance, j'ai plus confiance à m'appuyer sur une plate forme unique dont je peux contrôler la diffusion avec mon application plutôt que de devoir en permanence courir après les évolutions de chaque navigateur. Par exemple, mon application color_svg.html ne marche plus sur Firefox mais marche sur Chromium depuis une Ubuntu LTS.

      Le débat sur les Femen avec Laurent Ruquier en volume très faible dans la vidéo est passionnant :)

      Mince, je me disais pourquoi j'avais pas les blop blop de mes poissons dans la vidéos !

      • [^] # Re: Demo sous Android/iOS ?

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

        J'ai testé uniquement sur Android, je ne me suis pas encore équipé en tablette Apple et Qt Quick étant plus mature sur Android c'est probablement plus simple de commencer par là

        Sois pas pressé, publier sous tablette à la pomme est une horreur et tu devras payer 100$ par an ne serait-ce que pour pouvoir mettre l'appli sur ton iPad de test, la procédure pour que l'application soit sur le pigeonStore est chiantissime. Faut que ton appli soit payante et que tu comptes rentabiliser ton compte développeur Apple (et ton MacBook, et ta tablette, et ta corde et ton tabouret) pour viser cette tablette-là. Ah oui, la machine virtuelle OS X c'est une sainte horreur.

        Si ça se trouve, développer pour tablette Windows 8 sera plus facile !

        Commentaire sous licence LPRAB - http://sam.zoy.org/lprab/

      • [^] # Re: Demo sous Android/iOS ?

        Posté par  (site web personnel) . Évalué à 1.

        Comme je l'ai dit QtCreator et son aide en ligne est parfait.

        C'est vrai: le Web manque de bon outils de développement.

        Par contre question débogage de la couche de présentation, le Web est quand même formidable: imagine si tu pouvais inspecter tous les éléments graphiques de GCompris directement dans l'inspecteur DOM de ton navigateur!

        Il est aussi plus simple de faire une interface dynamique qui s'adapte à la taille de l'écran en Qml.

        C'est quand même un thème classique du développement Web («responsive design») et le comportement par défaut d'une page Web bien faite! Dans Firefox, il y a un outil conçu spécifiquement pour aider à ça.

        Le découpage description de l'interface en Qml et logique du jeu en Javascript s'avère très efficace.

        Et très similaire au cas d'une page Web!

        GCompris est une porte d'entrée pour des étudiants qui veulent débuter sur un projet de logiciel libre. Il est important que l'écriture de code soit simple. En ce sens, Javascript en HTML5 implique une programmation asynchrone, très performante mais pas forcément idéale pour débuter en programmation.

        C'est intéressant et vrai. D'un autre côté, JavaScript et le Web est probablement ce qu'un grand nombre d'étudiants apprend en premier de nos jours.

        Au final la réalisation est basée sur un graphe de scène OpenGL avec des animations fluides et des particules ce qui ajoute un coté abouti à l'application sans que ce soit complexe à programmer. Pour animer mes poissons par exemple, il suffit juste de leurs donner des coordonnées et dire en combien de temps ils doivent les rejoindre.

        Tu as exactement la même chose dans le Web avec les CSS Animations.

        Pour la maintenance, j'ai plus confiance à m'appuyer sur une plate forme unique dont je peux contrôler la diffusion avec mon application plutôt que de devoir en permanence courir après les évolutions de chaque navigateur. Par exemple, mon application color_svg.html ne marche plus sur Firefox mais marche sur Chromium depuis une Ubuntu LTS.

        C'est inquiétant. Normalement, dans le Web on prétend offrir une compatibilité quasi éternelle, en tout cas bien plus longue que les cycles d'environ 5 ans entre versions majeures de Qt. Il semble donc que tu as soit trouvé un bug dans Firefox (qui serait alors très utile à rapporter) soit ton application se reposait sur une fonctionnalité non-standard ou un bug (et alors ton navigateur aurait dû t'en avertir).

        • [^] # Re: Demo sous Android/iOS ?

          Posté par  (site web personnel) . Évalué à 2.

          imagine si tu pouvais inspecter tous les éléments graphiques de GCompris directement dans l'inspecteur DOM de ton navigateur!

          Tu peux faire ça avec QML et QtCreator

          http://doc-snapshot.qt-project.org/qtcreator-2.8/creator-qml-debugging-example.html

          C'est inquiétant. Normalement, dans le Web on prétend offrir une compatibilité quasi éternelle, en tout cas bien plus longue que les cycles d'environ 5 ans entre versions majeures de Qt.

          Il y a la théorie et la pratique. En théorie les applications web fonctionnent sous tout les navigateurs. En pratique il faut tester chaque navigateur, y compris quand une nouvelle version d'un navigateur sort.

          Si tu avais écrit une application avec Qt 4.0 il y a 8 ans, elle est toujours sensée fonctionner aujourd'hui (avec Qt 4.8 qui est toujours maintenu). Et Qt 5 est pratiquement source compatible.
          Biensur on ne peux pas comparer avec les applications web de l'époque car les navigateur ne permettais pas grand chose à l'époque.

  • # Très bon choix

    Posté par  . Évalué à 10.

    Je pense aussi que Qt/Quick est un bon choix.

    Pour le drag and drop que tu utilises beaucoup dans GCompris, j'avais passé un peu de temps avant d'obtenir quelque chose de totalement fonctionnelle.
    Je te met le code au cas où :

    import QtQuick 2.0
    
    Item {
        width: 800
        height: 800
        id: root
        property int cible: 0
    
        DropArea {
            id: daCible1
            anchors.left: root.left
            anchors.bottom: root.bottom
            width: root.width/2; height: root.height/2
    
            onDropped: {
                cible = 1
                console.log("Dans cible 1")
            }
    
            Rectangle {
                id: reCible1
                anchors.fill: parent
                color: "lightgreen"
            }
            states: [
                State {
                    when: daCible1.containsDrag
                    PropertyChanges {
                        target: reCible1
                        color: "green"
                    }
                }
            ]
        }
    
        DropArea {
            id: daCible2
            width: root.width/2; height: root.height/2
            anchors.right: root.right
            anchors.bottom: root.bottom
    
            onDropped: {
                cible = 2
                console.log("Dans cible 2")
            }
    
            Rectangle {
                id: reCible2
                anchors.fill: parent
                color: "lightblue"
            }
            states: [
                State {
                    when: daCible2.containsDrag
                    PropertyChanges {
                        target: reCible2
                        color: "blue"
                    }
                }
            ]
        }
        Rectangle {
            id: reStart
            anchors.left: root.left
            anchors.right: root.right
            anchors.top: root.top
            height: root.height/2
            color: "azure"
    
        }
        Rectangle {
    
            MouseArea {
                id: maTuile
                drag.target: parent
                onReleased: parent.Drag.drop()
                anchors.fill: parent
            }
    
            Text {
                id: teTuile
                text: "Baleine"
                width: parent.width; height: parent.height
                horizontalAlignment:  Text.AlignHCenter
                verticalAlignment:  Text.AlignVCenter
                font.pointSize: 24
            }
    
            id: reTuile
            color: "paleturquoise"
            width: root.width/3; height: root.height/16
            anchors.verticalCenter: undefined
            anchors.horizontalCenter: undefined
            x: (root.width - width) / 2
            y: (reStart.height - height) / 2
    
            Drag.active: maTuile.drag.active
            Drag.hotSpot.x: width/2
            Drag.hotSpot.y: height/2
    
            states: [
                State {
                    when: maTuile.drag.active
                    PropertyChanges {
                        target: reTuile
                        opacity: 0.5
                    }
                    AnchorChanges {
                        target: reTuile
                        anchors.verticalCenter: undefined
                        anchors.horizontalCenter: undefined
                    }
                },
                State {
                    when: !maTuile.drag.active & cible == 0
                    AnchorChanges {
                        target: reTuile
                        anchors.verticalCenter: reStart.verticalCenter
                        anchors.horizontalCenter: reStart.horizontalCenter
                    }
                },
                State {
                    when: !maTuile.drag.active & cible == 1
                    AnchorChanges {
                        target: reTuile
                        anchors.verticalCenter: daCible1.verticalCenter
                        anchors.horizontalCenter: daCible1.horizontalCenter
                    }
                },
                State {
                    when: !maTuile.drag.active & cible == 2
                    AnchorChanges {
                        target: reTuile
                        anchors.horizontalCenter: daCible2.horizontalCenter
                        anchors.verticalCenter: daCible2.verticalCenter
                    }
                }
            ]
            transitions: Transition {
                AnchorAnimation { duration: 500; easing.type: Easing.OutElastic }
            }
        }
    
    }
    
  • # mais non c'est pas possible

    Posté par  . Évalué à 2.

    pas un lundi ce genre de nouvelle c'est du vendredi tout crache ca. Pff quel honte de ne pas respecter les traditions.
    :)

  • # Pourquoi pas seulement le Web?

    Posté par  (site web personnel) . Évalué à 1.

    Est-ce que GCompris a besoin de fonctionnalités présentes uniquement dans les plateformes d'applications de bureau/mobiles et non dans les standards du Web?

    Si non, tu pourrais avoir uniquement une version Web consultable partout, et si tu pourrais alors l'empaqueter sous forme d'appli mobile (la moitié des applis sur Android ne sont que des pages Web locales ainsi empaquetées).

    Je comprends que QML est un bon moteur de présentation, mais HTML et CSS ne sont pas mauvais non plus!

Suivre le flux des commentaires

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