Amazon Lumberyard en pleine transition vers Qt

Amazon s’est lancé, en 2015, dans son propre moteur de jeu, Lumberyard, dérivé de CryEngine. Les objectifs étaient de fournir une meilleure intégration avec le service infonuagique d’Amazon, AWS (Amazon Web services), ainsi que le service de diffusion vidéo en direct pour les jeux vidéo Twitch (un autre produit Amazon). En réalité, Lumberyard est intégré aux équipes d’AWS. Contrairement aux autres moteurs de jeu AAA, Lumberyard est entièrement gratuit, sans condition.

Les moteurs de jeu ont évolué depuis les débuts du jeu vidéo : depuis des codes adaptables pour réaliser un jeu très similaire à des bibliothèques de fonction communes à un certain nombre de jeux, les moteurs actuels sont de véritables environnements de développement intégrés. Ils permettent ainsi de créer un nouveau jeu sans trop d’investissement.

Les prochaines évolutions des moteurs de jeu seront probablement au niveau des éditeurs offerts aux développeurs et graphistes impliqués dans un jeu, pour encore faciliter la création de nouveaux jeux. Unreal Engine a déjà lancé la révolution au niveau des interfaces graphiques, avec l’intégration de la réalité virtuelle pour la conception de niveaux.

Amazon suit cette voie, en réécrivant ses éditeurs avec Qt. La majorité de ces nouveaux éditeurs est conçue avec l’utilisabilité en tête. Par exemple, EMotion FX permet d’animer des personnages à l’aide d’un système à base de nœuds. Il permet la création de machines d’état hiérarchiques, de mélanger plusieurs telles machines, le tout dans une interface qui ne nécessite pas de long apprentissage ou le développement de composants supplémentaires.

Script Canvas est un autre nouvel éditeur. Il se focalise sur la programmation de scripts de manière graphique (comme Scratch). Il exploite aussi une interface à base de nœuds et est prévu pour s’intégrer avec EMotion FX. Grâce à lui, les concepteurs de jeu (sans véritable compétence en programmation) peuvent imaginer se passer d’un langage de script ou de programmation pour toute une série de tâches.

Ces développements (pas encore finalisés) et ceux à venir viendront probablement continuer à faciliter le développement de jeux complets sans besoin de spécialistes, notamment en programmation. Pour sa facilité d’utilisation, les développeurs de Lumberyard se focalisent sur Qt pour toutes ces nouvelles fonctionnalités.

Télécharger Amazon Lumberyard.

Advertisements

Qt et AVX-2

Clear Linux est la distribution Linux éditée par Intel dans l’objectif de fournir, de base, une performance maximale. Pour ce faire, ses développeurs tendent souvent à compiler les applications en exploitant au maximum les jeux d’instructions des processeurs les plus récents — un gain de performance intéressant au prix d’une compatibilité des binaires fournis réduite aux processeurs plus récents. Pour toujours s’adresser à un public large, les applications sont toujours compilées pour des processeurs plus anciens : la détection des instructions disponibles se fait à l’installation de la distribution, les binaires les plus performants en restant compatibles étant toujours téléchargés.

Pour le moment, les développeurs s’intéressent au cas de Qt, afin d’activer les instructions AVX-2. Celles-ci sont disponibles sur tous les processeurs Intel depuis 2014 et AMD depuis 2015. Ces instructions servent à effectuer la même opération sur une grande quantité de données simultanément, ce qui est notamment utile pour les applications 3D (comme Qt 3D). Les opérations sur les chaînes de caractères pourraient aussi, par exemple, en profiter.

La difficulté avec Qt est l’intégration d’un système de compilation particulier, qmake, qui installe ses fichiers sans respecter les conventions de nommage spécifiques à Clear Linux (une extension aux fichiers .so indique le jeu d’extensions). Après discussions sur la liste de diffusion, il semblerait que la solution soit déjà implémentée et prête à être utilisée. Reste alors à voir les gains de performance effectifs avec une modification aussi simple.

L’installateur en ligne de Qt améliore sa performance et son interface

En général, les modifications de l’outil d’installation de Qt ne sont pas très intéressantes. Cette fois-ci, cependant, la version 3.0.5 apporte deux changements intéressants. Le premier concerne le téléchargement des métadonnées : au lieu d’un seul grand fichier, les métadonnées sont chargées en plus petits paquets. De plus, quelques changements dans leur représentation ont permis de réduire la quantité de données à récupérer d’un quart.

De plus, avec le nombre de possibilités d’installation, l’interface devenait assez chargée. C’est pour cela que l’on dispose désormais d’une série de catégories qui correspondent aux versions de Qt : maintenance à long terme, préversion technologique, archive, etc. Ces catégories permettent de limiter la quantité d’éléments affichés, ce qui devrait faciliter le processus. L’interface complète sera cependant disponible dans une version future.

Source : News from installer team.

Qt Design Studio annonce une nouvelle ère dans le développement d’interfaces Qt

Un nouvel outil vient rejoindre la communauté Qt pour le développement d’interfaces graphiques : Qt Design Studio, un environnement de conception et de développement qui souhaite rassembler concepteurs et développeurs pour prototyper rapidement des interfaces complexes (après tout, les mêmes mots étaient utilisés pour présenter Qt Quick !).

Le problème est que les développeurs ont du mal à comprendre les concepteurs — vus comme des artistes, des gens sans logique incapables de comprendre quoi que ce soit à la technique (surtout sur du matériel peu performant, par exemple dans l’embarqué). De l’autre côté, les concepteurs souhaitent atteindre leur vision de l’application, mais n’ont pas toujours les outils pour voir à quoi elle ressemble en pratique, sur le matériel qui sera fourni aux utilisateurs (ou après des semaines d’attente, que des développeurs se chargent d’écrire le code correspondant).

Qt Design Studio est prévu comme un outil utilisable tant par des développeurs que des concepteurs d’interface (comme Adobe XD, par exemple, pour des sites Web et des applications mobiles) : il dispose d’une vue pour le code QML, mais aussi d’un éditeur graphique performant. Grosso modo, cet outil est une version largement améliorée de l’éditeur graphique actuel pour Qt Quick disponible dans Qt Creator ; le sortir de cet environnement de développement rend Qt Design Studio moins effrayant pour ceux qui ne savent pas programmer (et permettra aussi de découpler les cycles des versions).

Un des grands avantages est l’extension d’exportation depuis Photoshop (faisant suite aux travaux précédents), qui permet d’exporter un prototype d’interface en un projet Qt Design Studio et en QML. Notamment, les calques de Photoshop peuvent être transformés en des composants réutilisables en quelques clics.

L’interface de l’éditeur présente notamment une ligne du temps pour éditer des animations, sans jamais utiliser de code (tout comme dans Qt 3D Studio). Ces animations peuvent aussi fonctionner à l’aide d’images clés. Les formes disponibles dans Qt Quick Shapes sont aussi incluses, pour faciliter la conception d’interfaces, ainsi que les effets visuels de Qt Quick Graphical Effects.

Finalement, les interfaces développées dans Qt Design Studio peuvent directement être exécutées ou déployées sur des périphériques externes : sur une machine de bureau, sur un téléphone portable (Android pour le moment) ou même sur un périphérique embarqué. Ainsi, les changements peuvent être testés en quelques minutes en situation réelle.

Pour le moment, l’éditeur n’est pas encore finalisé, il n’en est qu’à ses débuts comme préversion technologique. Il devrait être raffiné d’ici à la 1.0, prévue pour la fin de l’année. Après enregistrement, il est possible de tester cette première version pendant dix jours (extensibles sur demande). L’objectif est d’offrir dans un premier temps Qt Design Studio aux clients commerciaux de Qt, puis aussi à ceux qui préfèrent l’édition libre (sans pour autant promettre que le code de l’éditeur sera libéré).

Source : Qt Design Studio – The New Age of UI Development.

Sortie de Qt 3D Studio 2.0

L’éditeur d’interfaces graphiques tridimensionnelles Qt 3D Studio arrive maintenant en version 2.0, après un cycle de développement relativement court. Cette version s’est focalisée sur un nouveau moteur de rendu entièrement basé sur Qt 3D (au lieu d’un moteur spécifique, hérité de NVIDIA), mais en a profité pour améliorer l’utilisabilité de l’environnement.

Tout d’abord, l’éditeur a vu quelques changements d’ordre cosmétique, afin d’améliorer la facilité d’utilisation de l’outil. Par exemple, le fond d’écran est maintenant un dégradé, ce qui permet de représenter facilement l’orientation de la vue. Les caméras et lumières sont aussi mieux affichées, toujours afin d’améliorer la visibilité de leurs effets. Les outils de manipulation 3D ont été revus pour en augmenter la précision, ceux de sélection d’items sont plus intuitifs.

Les mécanismes de communication avec la logique de l’application, introduits avec la version 1.1, ont été revus pour couvrir de manière exhaustive les besoins ; ils sortent aussi de leur état de préversion technologique. Leur utilisation n’a pas beaucoup changé : le projet Qt 3D Studio définit les types de données que l’interface utilise, des items peuvent être ajoutés avec l’option Data Input (menu File). Ces entrées peuvent alors être liées à des propriétés ou à la ligne du temps afin de contrôler le comportement des animations.

Qt 3D Studio 2.0 arrive avec un nouveau moteur de rendu. Puisque entièrement écrit avec Qt 3D, il respecte désormais toutes les règles de codage avec Qt. Ce changement devrait fortement changer les pratiques de développement, notamment en facilitant les évolutions. Cette transition a déjà favorisé l’évolution de Qt 3D, maintenant bien plus efficace pour le rendu de ce genre de scène. Pour limiter le risque de régression, l’ancien moteur de rendu est toujours livré.

Voir aussi : la documentation, les exemples.

Source : Qt 3D Studio 2.0 released.

Qt 5.11 et Wayland

L’un des grands apports pour le futur de Qt avec la version 5.11 est l’extension de plateforme pour Wayland, qui est sans nul doute l’avenir de l’affichage pour Linux, de plus en plus de distributions reléguant le serveur X en seconde zone. Cette extension était déjà disponible, mais a fait de grands bonds en avant avec Qt 5.11.

Les touches de composition sont maintenant gérées, c’est-à-dire que l’utilisateur peut utiliser une séquence de plusieurs touches pour entrer un seul caractère, par exemple ` puis A pour À, ¨ puis A pour Ä.

Wayland est maintenant intégré dans tous les installateurs à partir de Qt 5.11 (et peut-être de Qt Creator 4.7). Cela ne signifie pas que l’extension fonctionne parfaitement bien, elle pose notamment une série de problèmes avec gnome-shell pour le moment (ce qui justifie son retrait temporaire de Qt Creator 4.7).

Plus généralement dans Qt, il est possible, au démarrage de l’application, de demander plusieurs extensions de plateforme : si  l’une d’entre elles n’est pas disponible, alors les autres pourront être utilisées. Sinon, en définissant la variable d’environnement QT_QPA_PLATFORM à wayland quand l’extension Wayland n’était pas disponible, l’utilisateur avait droit à un message d’erreur peu compréhensible — maintenant, on peut définir cette valeur à wayland;xcb, pour retomber sur XCB quand Wayland n’est pas disponible — :

This application failed to start because it could not find or load the Qt platform plugin "wayland" in "".

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.

Reinstalling the application may fix this problem.

Les écrans à haute densité de pixels sont bien mieux gérés en combinaison avec d’autres écrans : quand l’utilisateur déplace une fenêtre d’un écran à l’autre, son contenu s’adapte automatiquement à l’échelle de l’écran sur lequel la fenêtre est affichée.

Du côté du développement aussi, Qt Wayland a fait de grands progrès. Notamment, l’extension est intégrée dans les tests et l’intégration continue : les défauts seront détectés bien plus tôt que précédemment.

Source : What’s new with the Wayland platform plugin in Qt 5.11?.

Interfaces à distance avec Qt : WebGL et WebAssembly, au choix

Bon nombre d’utilisateurs de Qt aimeraient rendre leur interface utilisable depuis une autre machine, par exemple à travers Internet comme une application Web. Cependant, par conception, ce n’est pas une chose que Qt peut faire facilement : les communications ne se passent pas par un protocole comme HTTP ou sockets Web entre le cœur de l’application et son interface, mais plutôt à l’aide de signaux et de slots.

Néanmoins, on peut arriver à utiliser WebGL pour transmettre les commandes d’affichage à un navigateur, donc à afficher son application à l’intérieur d’un navigateur sans devoir trop coder en HTML ou JavaScript — et sans devoir rien installer sur le poste client. Si l’application est correctement découplée entre un cœur et un affichage (idéalement développé avec Qt Quick), la transformation sera relativement aisée. En effet, Qt dispose d’une extension de plateforme qui fonctionne sous la forme d’un serveur WebGL : la communication se passe par sockets Web, l’application Qt envoyant des commandes WebGL à afficher.

Pour les applications à base de widgets, cette technique ne fonctionne pas, il vaut mieux alors se tourner vers l’implémentation des protocoles VNC (une implémentation est disponible depuis Qt 5.8). La performance sera nettement moins bonne, puisque la communication se fait à l’aide d’images plutôt que de commandes d’affichage.

Ces deux approches fonctionnent très bien pour peu de clients : pour un grand nombre, par contre, vu qu’un même serveur doit se charger d’afficher l’application (directement ou “juste” générer les commandes d’affichage), ces mécanismes ne fonctionnent plus (par exemple, dans le cas de SaaS). Une autre manière de fonctionner exploite plutôt WebAssembly : dans ce cas, l’application tourne directement dans le navigateur côté client. Au lieu de la compiler pour qu’elle fonctionne sur un serveur, elle est transformée en fichiers WASM (du code binaire WebAssembly). La communication se fait alors à l’aide de canaux séparés, dans des requêtes HTTP ou sockets Web — exactement comme si l’application était exécutée nativement, hors de tout navigateur.

La technique exploite Emscripten pour compiler Qt au complet en WebAssembly, avec cependant quelques limitations. En effet, une application WebAssembly dans un navigateur ne peut pas faire n’importe quoi, pour des raisons de sécurité. Par exemple, il n’est pas possible d’utiliser des fils d’exécution. Les applications ainsi générées sont relativement rapides, bien que pas toujours très légères. Qt Quick est également de la partie.

Source : Remote UIs with WebGL and WebAssembly, Qt for WebAssembly.