- Guide de survie linguistique sur Total War Saga: Thrones of Britannia
- Introduction à la programmation dynamique
Unity est un moteur de jeu très populaire. Il est utilisé par de nombreux jeux vidéos et supporte de nombreuses plateformes.
Aujourd’hui, il vient tout juste de passer à la version 2018.1. Découvrons ensemble les nouveautés qu’apporte cette nouvelle version !
- Presets
- Package Manager
- Scriptable Render Pipeline
- ShaderGraph
- Burst, Entity Component System et C# Jobs System
- Scripting
- Autres
- Unity Hub
Presets
Commençons par l’un des ajouts les plus attendus de cette nouvelle version : les Presets !
Grâce à cette nouvelle fonctionnalité, vous pourrez sauvegarder un paramétrage par défaut pour chaque type de Component.
Cette fonctionnalité s’avérera particulièrement utile pour vous épargner certaines tâches répétitives. Voici une petite animation pour illustrer la création d’un preset, son utilisation et son affection en tant que preset par défaut.
Package Manager
Autre élément important de cette mise à jour, le Package Manager introduit la possibilité d’ajouter ou retirer certaines fonctionnalités optionnelles de Unity. Ces fonctionnalités étaient, pour la plupart, déjà présentes avant la version 2018.1 mais demeuraient assez peu connues, car elles devaient être ajoutées manuellement sans aucune garantie de leur maintien et de leur compatibilité.
Profitez donc de ce nouvel outil pour découvrir ces quelques pépites !
Attention, par défaut le Package Manager ne liste pas tous les modules existants. Certains devront être ajoutés manuellement, comme celui sur l’Entity Component System que nous verrons plus bas.
Scriptable Render Pipeline
Nous arrivons maintenant en terre inconnue…
Cette fonctionnalité risque d’être assez « abstraite » pour la plupart d’entre vous, mais devrait tout de même vous intéresser. Il s’agit de la possibilité de coder soi-même son propre Pipeline de rendu, autrement dit, la possibilité d’écrire sa propre boucle de rendu !
Attention donc à ce que vous ferez ! Mais rassurez-vous, l’équipe de Unity a bien conscience que cette tâche peut être un peu délicate et a donc mis à disposition deux SRP prêts à l’emploi.
Lightweight Render Pipeline
Ce SRP s’adresse principalement à ceux qui souhaiteraient prendre en considération les performances et la compatibilité avant la qualité du rendu. Autrement dit, il convient tout particulièrement aux jeux 2D, mobile ou VR.
Cliquez ici pour en savoir plus !
High Definition Render Pipeline
À l’inverse, ce SRP mise tout sur la qualité du rendu et s’adresse directement aux jeux PC et console, quitte à sacrifier une part de la compatibilité matérielle.
Cliquez ici pour en savoir plus !
Pour ceux qui voudraient en savoir plus sur ce concept n’hésitez pas à aller jeter un œil ici.
ShaderGraph
Le ShaderGraph est lui aussi un élément très attendu de cette mise à jour. Il s’agit d’un éditeur de shaders nodal qui devrait en séduire plus d’un. Il existait déjà des solutions alternatives comme ShaderForge, mais le côté officiel du ShaderGraph devrait petit à petit le rendre incontournable.
ShaderGraph propose déjà de nombreux nœuds pré-programmés mais libre à chacun de créer et d’ajouter ses propres nœuds.
Notez que ShaderGraph est entièrement compatible avec les SRP présentés précédemment.
ShaderGraph n’est pas inclus directement dans Unity. Comme les autres nouveaux modules, il doit être ajouté à partir du Package Manager présenté plus haut.
Burst, Entity Component System et C# Jobs System
Passons maintenant à un point extrêmement important de cette mise à jour. Il s’agit de l’introduction du compilateur Burst, de l’Entity Component System (ECS) et du C# Jobs System, qui font tous les trois parties de la nouvelle direction qu’Unity souhaite prendre pour les années à venir, à savoir le « Performance by default » (la performance par défaut).
Ce nouveau slogan traduit une volonté de la part de Unity de se faire une place sur un marché qu’il est très difficile d’intégrer, celui des jeux AAA !
Unity a souvent fait l’objet de critiques pour son côté boîte noire, peu performant, dédié aux jeux mobiles, aux développeurs amateurs et au prototypage. Mais si on regarde d’un peu plus près les récentes avancées (IL2CPP, publication du code source, Scriptable Renderer Pipeline, etc.), il semble plus qu’évident que Unity cherche à se défaire de cette image.
Ce nouveau trinôme devrait donc vous permettre de programmer en suivant une nouvelle approche qui devrait permettre de multithreader certaines parties de votre code sans avoir besoin de s’en préoccuper manuellement. Autrement dit, il générera du code multithreadé pour vous !
Il y a évidement des règles qu’il est impératif de respecter pour que cette optimisation fonctionne mais Unity semble s’être engagé sur cette voie en ayant déjà passé une partie de ses modules sur ce système (comme les NavMeshes, par exemple). Il faudra donc s’attendre à retrouver ce trinôme de plus en plus souvent dans les projets à venir. Affaire à suivre !
Voici quelques liens pour ceux qui souhaiteraient en apprendre plus ici et là, ou encore quelques vidéos provenant de la GDC :
- Evolving Unity,
- Job System & Entity Component System,
- C# Sharp to Machine Code,
- A Data Oriented Approach to Using Component Systems,
- ECS for Small Things.
Encore une fois, il sera nécessaire de passer par le Package Manager pour profiter de cet ajout.
Scripting
Coté Scripting, nous ne sommes pas en reste non plus.
Bien qu’il n’y ait pas de réelle nouveauté, on notera tout de même que le .NET 4.X n’est plus tagué comme expérimental et peut désormais être utilisé en production !
On notera aussi la fin du support de l’IDE MonoDevelop. En remplacement Unity préconise de se tourner vers Visual Studio ou à défaut vers VS Code (avec une extension).
Toujours dans la même dynamique, le support du IL2CPP est maintenant disponible pour les plateformes Windows et Mac. (on retrouve encore une fois cette volonté de performance)
Pour ceux qui l’ignoreraient, IL2CPP est une technologie mise au point par Unity permettant de transformer le code C# de vos scripts en un code natif C++ afin d’en optimiser les performances. Le IL2CPP était déjà disponible sur Android et iOS depuis quelque temps et peut donc déjà être considéré comme stable.
J’en profite aussi pour rappeler que UnityScript a été marqué obsolète depuis la version 2017.2 ! À terme, le support du JavaScript et du Boo sera probablement supprimé, le C# sera donc le seul langage supporté par Unity.
Pour les plus téméraires, sachez que la version 2018.3 devrait apporter le support du C# 7 !
Autres
Bien évidemment, cette mise à jour s’accompagne de son lot de corrections, de modifications et d’améliorations que vous pourrez retrouver en détail ici.
En voici un bref résumé :
- nouvelle API BuildReport,
- améliorations du système de particules,
- progressive Lightmapper,
- support de l’IG pour le GPU instancing,
- Post-Processing v2,
- 2D - Simulation physique multithreadé (expérimentale),
- 2D - API d’animation de personnages 2D (expérimentale),
- 2D - SpriteShape (expérimentale),
- kit multiplateformes RA (ARCore/ARKit API),
- importation des ressources et chargement de scène plus rapides,
- nouvelle fenêtre de sélection des couleurs pour un meilleur support du HDR.
N’hésitez pas à aller jeter un œil sur le blog de Unity pour davantage de détails !
Unity Hub
Bien que non liée à la version 2018.1 de Unity, cette mise à jour marque aussi la mise en avant d’un nouveau launcher appelé Unity Hub.
Il a été pensé pour améliorer la gestion des différentes installations de Unity en les centralisant toutes dans un même outil. Il s’avérera particulièrement utile si vous travaillez sur des projets utilisant des versions différentes de Unity.
Et voilà, c’est tout pour cette nouvelle version de Unity !
J’espère que cet article vous aura plu et qu’il vous aura donné envie de télécharger cette nouvelle version de Unity.
Je vous donne rendez-vous dans quelques mois pour la version 2018.2 !
D’ici là, n’hésitez pas à présenter vos projets sur le forum.