unity 2018.2

Unity 2018.1 a marqué le début d'un nouveau cycle avec deux innovations majeures à la base. Ensemble, le Scriptable Render Pipeline (SRP) et le Shader Graph donnent plus de puissance aux artistes et aux développeurs, tandis que le C# Job System, le Burst Compiler et l'ECS permettent de profiter des processeurs multi-cœurs sans le mal de tête de la programmation. Unity 2018.2 s'appuie sur ces innovations et ajoute plusieurs nouvelles fonctionnalités. Cet article fournit un aperçu des mises à jour les plus importantes de la version 2018.2.

L'un des objectifs de Unity 2018.2 a été de s'appuyer sur les SRPs (Scriptable Render Pipelines) afin d'activer le rendu de niveau supérieur. Un autre domaine d'intérêt a été de développer une gamme de fonctionnalités et d'améliorations qui vous aideront à réussir dans le mobile. Jetons un bref coup d'œil à ce que nous avons fait dans ces deux domaines avant d'entrer dans plus de détails sur l'ensemble du communiqué.

Unity 2018.2 optimise les performances du Lightweight Render Pipeline (LWRP) et améliore le HDRP (High Definition Render Pipeline) pour vous aider à atteindre une qualité visuelle haut de gamme, notamment de nombreuses améliorations apportées au Shader Graph, qui prend désormais en charge les deux pipelines (veuillez noter le LWRP et le HDRP sont actuellement en preview).

Nous avons également ajouté le support du débogage de code managé sur iOS et Android, Windows, macOS, UWP et PS4 pour IL2CPP, et nous avons commencé à ajouter quelques optimisations mobiles au Lightweight Render Pipeline (LWRP). Pour les projets Android, le support 64 bits (ARM64) obtient sa version finale, et nous vous laissons maintenant ajouter du code Java à votre dossier de plugins Unity sans avoir besoin de créer des bibliothèques à l'avance.

Enfin, plusieurs nouvelles fonctionnalités 2D sont disponibles sous forme de packs d'aperçu, notamment l'importateur Vector Graphics et le Pixel Perfect. L'outil d'importation de graphiques vectoriels vous permet de travailler plus facilement avec les graphiques SVG et Pixel Perfect vous permet d'obtenir un look rétro parfait à travers différentes résolutions sur un large éventail d'appareils.

Graphique

Améliorations du Scriptable Render Pipeline (SRP)

Dans la version 2018.1, nous avons introduit le Scriptable Render Pipeline (en preview), qui place le contrôle de nouveaux pipelines de rendu puissants entre les mains des artistes et des développeurs. Cette version inclut les mises à jour SRP suivantes.

SRP batcher

Le SRP batcher est une nouvelle boucle interne du moteur Unity qui accélère le rendu du CPU sans affecter les performances du GPU. Il remplace l'ancien code de rendu SRP.

Les jeux qui utilisent le Physically Based Rendering (PBR) ont souvent de nombreux objets et meshes différents qui partagent le même shader et les mêmes mots-clés pour tous les différents matériaux par objet. Le SRP batcher donne aux jeux qui utilisent le PBR une augmentation majeure de la vitesse du CPU. Le SRP batcher fonctionne avec le High Definition Render Pipeline (HDRP) et le Lightweight Render Pipeline (LWRP), avec PC DirectX-11, Metal et PlayStation 4 actuellement pris en charge.

Variantes de shader scriptables avec stripping

Le temps de build et la taille des données augmentent avec la complexité de votre projet en raison du nombre accru de variantes de shader. Avec le striping de variantes de shaders scriptable, introduit dans la version 2018.2, vous pouvez gérer le nombre de variantes de shader générées et donc réduire considérablement le temps de build et la taille des données.

Cette fonctionnalité vous permet de supprimer toutes les variantes de shader avec des chemins de code non valides et/ou des fonctionnalités inutilisées et de créer des configurations shader-build telles que "debug" et "release" sans affecter le temps d'itération ou la complexité de maintenance.

options des variantes de shader dans la fenêtre des GraphicsSettings
Options des variantes de shader dans la fenêtre des GraphicsSettings.

Lightweight Render Pipeline (Preview)

Le Lightweight Render Pipeline (LWRP) offre des performances élevées, ce qui est particulièrement utile pour le matériel bas de gamme, les applications gourmandes en performances comme le XR et les plates-formes telles que les mobiles.

LWRP améliore encore les performances et l'optimisation avec Optimized Tile utilization. LWRP ajustera le nombre de chargement et de stockage des tiles afin d'optimiser la mémoire des GPU mobiles. Il permet également d'ombrager la lumière par lots, ce qui réduit les overdraw et les draw calls.

Le protocole LWRP de base est actuellement pris en charge sur toutes les plates-formes VR. Toutefois, il ne prendra pas en charge l'anti-aliasing multisample (MSAA) avant la version 2018.3. Veuillez noter que le LWRP n'est actuellement pas supporté pour les AR portables, comme ARCore ou ARKit, ou les appareils HoloLens ou Magic Leap.

le LWRP offre des performances élevées pour les applications HW bas de gamme et les applications gourmandes en performances comme le XR.
Le LWRP offre des performances élevées pour les applications HW bas de gamme et les applications gourmandes en performances comme le XR.

High Definition Render Pipeline (Preview)

D'abord publié en tant que Preview dans la version 2018.1, le HDRP (High Definition Render Pipeline) privilégie les visuels haute définition ciblant principalement les plates-formes haut de gamme, telles que les PC et les consoles.

Dans la version 2018.2, nous sommes allés plus loin pour vous aider à atteindre une qualité visuelle haut de gamme. Cependant, il est important de noter que les SRP sont toujours Previews, et par conséquent pas encore recommandé ou pris en charge pour la production. Les améliorations comprennent la volumétrie, la glossy planar reflection, la Geometric specular AA et la Proxy Screen Space Reflection & Refraction, les Mesh decals et le Shadow Mask.

  • Volumétrie : Le brouillard volumétrique est éclairé par tous les types de lumière, à l'exception de la lumière de surface. Il est également possible de contrôler la densité du brouillard localement avec le volume de densité.
  • Glossy planar reflection : La Planar reflection prend désormais en charge la glossy reflection, ce qui signifie qu'elle prend en compte la finesse du matériau.
  • Geometric specular AA : Un mesh avec un nombre dense de triangles peut provoquer un crénelage spéculaire. Afin de résoudre ce problème, il existe maintenant une option pour réduire et limiter la quantité d'aliasing.
  • Proxy Screen Space Reflection & Refraction : Cette fonction vous permet d'utiliser le volume du proxy (volume approximant la limite de la scène) pour effectuer la réflexion et la réfraction de l'espace écran. Bien qu'il ne soit pas aussi précis que l'utilisation du depth buffer, le coût d'exécution est inférieur.
  • Mesh decals : Cela vous permet d'utiliser le mesh pour les decals en plus des projector decals.
  • Shadow mask : Auparavant, cette fonctionnalité de HDRP utilisait le mode Distance Shadowmask (fondu d'ombre dynamique pour masquer le masque à la distance d'ombre maximale). Avec la version 2018.2, il est désormais possible de sélectionner par lumière si l'ombre dynamique ne rend qu'un objet non mappé (correspondant au mode masque caché du pipeline intégré). Contrairement au pipeline intégré, HDRP permet d'activer simultanément les deux modes shadow-mask et vous disposez d'un contrôle par lumière pour le mode de Shadow mask intégré.

De plus, nous avons ajouté un support de Shader Graph limité afin que vous puissiez créer visuellement des shaders, et nous travaillons pour améliorer la stabilité et les performances globales. Un support limité signifie que seul un sous-ensemble de fonctionnalités HDRP est disponible dans le Shader Graph. Il n'y a actuellement aucune fonctionnalité matérielle avancée (SSS, couche transparente), et la tessellation n'est actuellement pas disponible non plus.

Enfin, nous avons ajouté une fonction d'effacement des shaders, ce qui permet d'éviter de compiler des shaders qui ne sont pas nécessaires lors d'un build. Cela entraîne un temps de build beaucoup plus rapide. Veuillez noter que le HDRP n'est actuellement pris en charge sur aucune plate-forme AR ou VR. Le support de ces plateformes est prévu pour 2019.

Fontainebleau Démonstration de photogrammétrie
Fontainebleau Démonstration de photogrammétrie .

Progressive Lightmapper

Il y a plusieurs améliorations pour le Progressive Lightmapper, qui est sorti en Preview dans la version 2018.1.

Baked light falloff configurable

Le falloff configurable dans le Progressive Lightmapper vous permet de faire correspondre des courbes d'atténuation physiquement plausibles lors du baking de vos lumières. Auparavant, l'intensité observée des spots et des points lumineux était fortement influencée par la valeur de portée de la lumière. Ce n'est pas physiquement plausible car la distance de chute (ou atténuation) d'une lumière dans la réalité est déterminée par son intensité.

portée lumineuse
Portée lumineuse.

Cette fonctionnalité permet au Progressive Lightmapper de découpler la portée et l'intensité en ayant une atténuation qui est liée à la distance monde-espace. Alors que l'ancienne falloff est toujours supportée, nous prenons maintenant en charge l'atténuation linéaire, la distance au carré et le carré au carré avec une atténuation à zéro aux limites de la portée.. L'atténuation carrée inverse est activée par défaut dans HDRP afin de correspondre à l'éclairage en temps réel et permet aux unités physiques d'avoir une intensité lumineuse.

Albédo et émissifs instantanés pour l'éclairage pré-calculé

Nous avions l'habitude d'allouer l'émission et l'albédo dans un espace de lightmap unique pour tous nos lightmaps. Cependant, comme les instances partagent généralement les caractéristiques d'albédo / émission, nous prenons maintenant en charge la génération de ces maps par instance unique. Cela réduit la quantité de mémoire utilisée par le Progressive Lightmapper, ce qui vous permet de réaliser des scènes encore plus grandes.

Avertissements d'éclairage de scène additive

Pour des raisons de performance, il est souvent préférable de diviser les scènes plus grandes en "sous-scènes" plus petites qui peuvent être chargées ou déchargées pendant l'exécution en fonction de la visibilité. C'est ce qu'on appelle le "chargement additif" ou une configuration "multi-scène".

scènes chargées de manière additive avec un éclairage global
Scènes chargées de manière additive avec un éclairage global.

Le workflow pris en charge par Unity lors de la génération d'un éclairage GI pour des configurations multi-scènes permet à l'utilisateur de charger toutes les sous-scènes requises et de les générer ensuite pour cette hiérarchie complète de scènes. Le résultat est un LightingData.asset qui stocke les lightmaps, l'IG en temps réel pré-calculé et les données de sonde. Ceci est associé à la première scène qui est chargée, ce qui peut être déduit pour signifier la scène "maître".

Les scènes qui sont ensuite chargées / déchargées pendant l'exécution dérivent leurs données d'éclairage de l'objet LightingData.asset associé à la scène principale. Dans ce scénario, les paramètres d'éclairage des sous-scènes ne sont pas pertinents. Cependant, les scènes peuvent également être baked individuellement ou chargées dans un ordre différent selon l'intention. Cela peut entraîner des scènes présentant des paramètres d'éclairage incompatibles et des données d'éclairage incompatibles. Par exemple, les skybox peuvent différer, les résolutions de lightmap peuvent varier ou les modes d'éclairage mixtes peuvent être différents.

Auparavant, Unity n'a pas averti l'utilisateur de ce problème et cela a entraîné une certaine confusion lorsque les résultats n'étaient pas conformes aux attentes. Unity génère maintenant un avertissement pour informer l'utilisateur qu'il y a une incompatibilité. Ensuite, des informations explicites sur les incompatibilités sont fournies pour faciliter le débogage et la validation.

Autres améliorations

Nous avons également exposé l'option "per light" à la fonction de shadowcasters (scripting API uniquement), ce qui permet de l'utiliser par le HDRP.

Shader Graph (Preview)

Dans la version 2018.1, nous avons introduit le Shader Graph en tant que Preview package, afin de vous permettre de créer des shaders visuellement. Au lieu d'écrire du code, vous pouvez créer et connecter des nœuds dans un réseau graphique. Chaque nœud du graphique donne une rétroaction instantanée sur les changements, et sa facilité d'utilisation signifie que même les nouveaux utilisateurs peuvent être impliqués dans la création de shader. Pour cette version, nous avons apporté plusieurs améliorations, notamment :

Prise en charge du High Definition Render Pipeline (HDRP)

Le Shader Graph prend désormais en charge le HDRP avec les nœuds PBR et Unlit Master. Les shaders construits avec le Shader Graph fonctionnent à la fois avec le LWRP et le HDRP.

prise en charge du HDRP dans le Shader Graph
Prise en charge du HDRP dans le Shader Graph.

Position des vertex

Vous pouvez maintenant modifier la position des vertex via l'emplacement Position sur les nœuds PBR et Unlit Master. Par défaut, l'entrée de ce nœud est la position de l'espace objet. Les entrées personnalisées à cet emplacement doivent spécifier la position locale absolue d'un vertex donné. Certains noeuds (tels que les formes procédurales) ne sont pas viables dans le vertex shader. De tels nœuds sont incompatibles avec ce slot.

position des vertex dans le Shader Graph
Position des vertex dans le Shader Graph.

Paramètres du nœud maître

Les paramètres des nœuds maîtres sont maintenant disponibles dans une petite fenêtre que vous pouvez activer ou désactiver pour modifier les différents paramètres de rendu de votre shader.

paramètres du nœud maître
Paramètres du nœud maître.

Noms de référence des propriétés et état d'exposition

Vous pouvez maintenant modifier le nom de référence d'une propriété, ce qui facilite grandement la référence des propriétés de votre shader à partir du script. Pour ce faire, sélectionnez la propriété et tapez un nouveau nom à côté de Reference. Si vous souhaitez réinitialiser le nom par défaut, cliquez avec le bouton droit de la souris sur Reference et sélectionnez Réinitialiser la référence (Reset reference). Dans la fenêtre Property, vous pouvez également cocher la case Exposed.

noms de référence des propriétés
Noms de référence des propriétés.

Chemins modifiables pour les graphes

Vous pouvez maintenant modifier le chemin des Shader Graphs et des sous-graphes. Lorsque vous modifiez le chemin d'un Shader Graph, cela modifie l'emplacement de la liste de sélection des shaders. Lorsque vous modifiez le chemin du sous-graphe, il aura un emplacement différent dans le menu de création de noeud.

modification du chemin d'un graphe
Modification du chemin d'un graphe.
sélection du chemin d'un graphe
Sélection du chemin d'un graphe.

Nœud Is Front Face

Avec ce nœud, vous pouvez modifier la sortie du graphique en fonction du signe de la face d'un fragment donné. Si le fragment actuel fait partie d'une face avant, le noeud renvoie True. Pour une face arrière, le nœud renvoie False. Remarque : Cette fonctionnalité nécessite que vous ayez activé les deux côtés du nœud maître.

nœud Is Front Face
Nœud Is Front Face.

Noeuds de dégradé

Cela ajoute une fonctionnalité de gradient via deux nouveaux nœuds. Le noeud Sample Gradient échantillonne un dégradé avec un paramètre Time donné. Vous pouvez définir ce dégradé dans la vue Gradient slot control. Le noeud Gradient Asset définit un dégradé pouvant être échantillonné par plusieurs nœuds Sample Gradient à l'aide de différents paramètres Time.

création d'un shader de dégradé
Création d'un shader de dégradé.

Texture3D et Texture2D Array

Cette modification étend le support d'Unity pour les types de texture via deux nouveaux types de propriétés et quatre nouveaux nœuds. Ils vous permettent de définir et d'échantillonner les éléments de type Texture 3D et Texture 2D Array dans le Shader Graph.

Texture3D et Texture2D Array
Texture3D et Texture2D Array.

Nœud Texture 2D LOD

Cela ajoute un nouveau nœud pour la fonctionnalité LOD Texture 2D Sample. Sample Texture 2D LOD utilise les mêmes emplacements d'entrée et de sortie que Sample Texture 2D, mais inclut également une entrée pour les ajustements de niveau de détail via un emplacement Vector1.

Afficher le code généré

Vous pouvez maintenant voir le code généré pour un nœud spécifique. Pour ce faire, cliquez avec le bouton droit sur le nœud et sélectionnez Afficher le code généré (Show Generated Code). L'extrait de code s'ouvrira dans l'éditeur de code que vous avez lié à Unity.

générer du code à partir d'un nœud
Générer du code à partir d'un nœud.

Vulkan

Prise en charge de Vulkan pour l'éditeur sous Windows et Linux (expérimental)

Cette version inclut un support expérimental pour l'exécution de l'éditeur sur Vulkan pour Windows et Linux. Vulkan est une API graphique et computationnelle de nouvelle génération qui fournit un accès multiplate-forme à haut rendement aux GPU modernes utilisés dans une grande variété d'appareils, des PC et des consoles aux téléphones mobiles et aux plateformes embarquées.

Texture Mipmap

Texture Mipmap Streaming

Dans cette version, nous avons ajouté la prise en charge des mipmaps de texture de streaming en mémoire à la demande (c'est-à-dire uniquement lorsqu'ils sont nécessaires).

Quel est le bénéfice ?

Vous pouvez activer cette fonctionnalité pour réduire les besoins en mémoire de texture d'une application Unity.

Comment ça marche

Lorsque ce système est activé, Unity chargera uniquement les mipmaps de texture de résolution supérieure lorsque les meshes sont proches d'une caméra active. Les données de mipmap à haute résolution sont conservées en mémoire tandis que la mémoire de texture globale est dans un budget défini par l'utilisateur. Si le chargement d'un nouveau miplevel de texture entraîne un dépassement du budget de la mémoire de texture, les mipmaps de résolution supérieure, sur les meshes les plus éloignés de la caméra, seront libérés de la mémoire.

Accélère le temps de chargement initial

Le temps de chargement de la scène initiale peut également s'accélérer en raison de la réduction des données de texture qui sont chargées en premier (c'est-à-dire en chargeant uniquement les niveaux de mipmap de résolution inférieure). Les améliorations initiales de la vitesse de chargement dépendent de la plateforme.

Plus de contrôle

Le système Texture Mipmap Streaming vous donne un contrôle total sur les niveaux de mipmap réellement chargés dans la mémoire. Normalement, Unity charge tous les niveaux de mipmap stockés sur le disque, mais avec ce système, vous pouvez contrôler directement les niveaux de mipmap chargés. Ce système échange également une petite quantité de temps CPU pour des économies de mémoire GPU potentiellement importantes.

Simple à activer et à gérer

La fonctionnalité est simple à activer via Quality Settings, où vous pouvez définir, par texture, si chaque texture doit être diffusée par le système. Vous pouvez interroger les métriques pour identifier l'utilisation de la mémoire de texture, tout en étant en mesure de voir les économies de mémoire.

Divers paramètres peuvent également être ajustés pour contrôler le système afin qu'il équilibre les économies de mémoire et le coût du processeur, et pour vous permettre de hiérarchiser certaines textures par rapport aux autres (par exemple, les textures de caractères sur les textures d'environnement).

activation et gestion du système mipmap
Activation et gestion du système mipmap.

C# Animation Jobs

AnimationPlayables permet désormais aux utilisateurs d'écrire leurs propres playables C# pour interagir directement avec les données d'animation. Les utilisateurs peuvent également écrire du code C# multithread pour contrôler les données AnimationStream utilisées par PlayableGraph, ce qui permet également d'intégrer des solveurs IK, des animations procédurales ou même des tables de mixage personnalisées dans le système d'animation actuel.

Améliorations du système de particules

Support pour eight UVs

Cela vous permet d'utiliser plus de données personnalisées que jamais auparavant.

MinMaxCurve et MinMaxGradient

Il est maintenant possible d'utiliser ces types dans vos scripts personnalisés, en dehors de Particle Systems pour correspondre au style utilisé par l'interface utilisateur du Particle System.

Espace chromatique linéaire

Particle Systems convertit maintenant les couleurs en espace linéaire, le cas échéant, avant de les télécharger sur le GPU.

Émettre des Sprites

Nous avons ajouté deux nouveaux modes au module Shape, afin d'émettre à partir d'un sprite ou d'un composant SpriteRenderer et d'adapter parfaitement l'émission de particules aux visuels de l'image-objet.

BakeMesh

Il existe deux nouvelles API pour baked la géométrie d'un système de particules dans un mesh: BakeMesh bake la géométrie de la particule et BakeTrailsMesh transforme le module Trails en un mesh.

Show Only Selected (aka Solo Mode)

Une fonctionnalité très demandée, qui a été rendue plus facilement détectable et accessible à côté de tous les autres contrôles de prévisualisation sur la superposition de vue de scène, avec les commandes Lecture / Redémarrer / Arrêter, etc.

Prise en charge de la texture ETC

Les shaders qui utilisent des textures alpha séparées peuvent désormais être utilisés avec des particules lorsque vous utilisez des sprites dans le module Texture Sheet Animation.

2D

Pixel Perfect Camera (Preview package)

Essayez le package Pixel Perfect Preview pour rester fidèle à votre vision du pixel art. Le composant Pixel Perfect Camera vous permet d'obtenir des pixels parfaits et nets, quelle que soit la taille de l'écran, en effectuant automatiquement tous les calculs pour vous.

Infectonator 3: Apocalypse par Toge Productions
Infectonator 3: Apocalypse par Toge Productions.

Vos sprites vont même bénéficier de la fonctionnalité lorsqu'ils sont en mouvement ou en rotation, en gardant toujours une pixellisation nette, sans avoir à ajouter d'interpolation pour lisser les bords comme illustré ci-dessous.

Pixel Perfect pour les Sprites
Pixel Perfect pour les Sprites.

2D Sprite Renderer “Trier par Point de pivot”

Traditionnellement, la distance entre le centre d'un Sprite Renderer et l'axe est utilisée pour déterminer quel sprite serait rendu en dernier et apparaîtrait donc à l'avant de l'image.

Avec cette version, vous pouvez utiliser le point de pivot au lieu du centre du sprite comme point de référence dans les différentes méthodes de tri, telles que la disposition par distance en haut de l'écran. Par exemple, dans les jeux RPG top-down, vous avez besoin du bas du sprite pour déterminer l'ordre de rendu du sprite.

la nouvelle configuration de point de pivot vous permet de définir des critères qui conviennent mieux à votre jeu.
La nouvelle configuration de point de pivot vous permet de définir des critères qui conviennent mieux à votre jeu.

2D Hexagonal Tilemaps

Vous pouvez maintenant construire des Tilemaps hexagonaux. Cela inclut la prise en charge des tiles hexagonales à plat et point haut, qui sont particulièrement utiles pour faire des jeux de stratégie ou des jeux de plateau numériques.

créer un Tilemap hexagonal
Créer un Tilemap hexagonal.
Tilemaps hexagonaux dans l'éditeur
Tilemaps hexagonaux dans l'éditeur.
Art courtesy de David Baumgart
Art courtesy de David Baumgart.

Importateur SVG (Preview package)

Cette fonctionnalité vous permet d'importer des SVG (Scalable Vector Graphics) directement dans vos projets. L'importateur SVG vous permet de créer des ressources de sprites avec une très petite taille de fichier qui conservera leur qualité à n'importe quelle résolution.

L'importateur SVG prend en charge les fonctionnalités les plus courantes de la spécification SVG 1.1, telles que les dégradés, les remplissages, les chemins de détourage, les lignes pointillées et les coins arrondis. Les sprites graphiques vectoriels importés de cette manière sont pris en charge par les outils Unity 2D.

Une fois qu'un fichier SVG est importé, les données vectorielles sont mises en mosaïque et un sprite est généré. Ce sprite peut ensuite être utilisé par le système 2D. La source pour l'importateur SVG peut être trouvée dans le dossier de l'éditeur du package.

Les API graphiques vectorielles peuvent être utilisées pour créer et manipuler des constructions vectorielles directement dans le code. La source des API Vector Graphics peut être trouvée dans l'espace de noms Vector Graphics sous le dossier Runtime.

Nouvelles API 2D

Vous pouvez utiliser l'API Vector Graphics pour créer ou manipuler des données vectorielles directement dans le code. La nouvelle API Atlas 2D vous permet d'écrire des outils personnalisés pour créer ou mettre à jour des atlas. Par exemple, vous pouvez créer des textures de caractères personnalisées en utilisant l'image de profil du joueur, ou vous pouvez optimiser l'atlas en fonction de la configuration du joueur.

Éditeur - Général

Prise en charge de l'utilisation des fichiers source .java et .cpp en tant que plugins dans un projet Unity

Vous avez maintenant la possibilité d'ajouter des fichiers source .java (ainsi que .cpp et .a) aux dossiers de plugin de projet Unity. Ces fichiers seront reconnus comme plugins Unity et compilés dans l'APK sans que l'utilisateur ait besoin de créer des bibliothèques séparément dans Android Studio. Le code du plugin reste une partie du projet Unity, éliminant le besoin de créer un projet Android Studio distinct.

Remplacement des assets standard

Nous avons supprimé la version 5.0 des assets standard du programme d'installation dans la version 2018.2 et travaillons sur des packages de remplacement pour chaque partie de l'ancien pack de prototypage. Le premier package (Standard Assets: Characters) sera disponible en tant que Preview juste après la version 2018.2. Il contiendra un contrôleur à la première personne et à la troisième personne intégré à Cinemachine, ainsi qu'un environnement de prototypage construit avec Probuilder. Pour plus de détails, regardez un article sur le sujet dans les semaines à venir. Pour ceux d'entre vous qui ont besoin du package 5.0 hérité, celui-ci restera dans l'Asset store.

Unity Hub

Unity Hub (v1.0), qui sera bientôt disponible, est un nouvel outil conçu pour rationaliser les processus d'intégration et de configuration pour tous les utilisateurs. Il fournit un emplacement centralisé où vous pouvez gérer vos projets Unity, et il simplifie la façon dont vous trouvez, téléchargez et gérez vos licences de l'éditeur Unity et les composants complémentaires.

Depuis notre lancement initial, nous avons travaillé dur pour corriger les bugs et affiner l'expérience. Au cours des six dernières semaines, nous avons déjà publié plus de quatre versions qui ont été automatiquement téléchargées et mises à jour sur les machines de nos utilisateurs.

Voici quelques éléments qui seront livrés avec Unity Hub (v1.0) :

  • Modèles de projet (Project templates)
  • Emplacement d'installation personnalisé
  • Ajout de packages de l'Asset Store à de nouveaux projets
  • Cible modifiée pour la construction du projet
  • Editeur: Ajout de composants post-installation

Cinématiques

Propriétés physiques de la caméra

Cette version inclut de nouvelles fonctionnalités qui permettent aux artistes et cinématographes de se sentir plus confiants et plus en contrôle lorsqu'ils travaillent dans Unity, notamment :

  • Une nouvelle bascule Physical Camera vous permet de révéler les paramètres que les artistes et les cinématographes trouveront instantanément familiers, comme les propriétés de longueur focale standard, de taille de capteur et de décalage de lentille.
  • L'importateur de modèle préserve désormais les propriétés des caméras physiques exportées depuis Autodesk® Maya® et d'autres DCC compatibles.
  • Les caméras de Unity s'adaptent maintenant parfaitement aux caméras des autres DCC sans avoir besoin de composants supplémentaires ou de calculs manuels des FOV.
  • Le composant Camera fournit désormais une liste déroulante des tailles de capteur pour les caméras du monde réel les plus courantes.

propriétés physiques de la caméra
Propriétés physiques de la caméra.

Recorder 1.0

Unity Recorder 1.0, qui sera publié prochainement, est livré avec de nombreuses mises à jour qui permettent aux utilisateurs de gérer et d'enregistrer des clips d'animation, des vidéos et des séquences d'images depuis l'éditeur :

  • Nouvelle interface utilisateur : Une vision claire et un moyen facile de gérer vos enregistrements.
  • Préréglages : Enregistrez vos paramètres pour ne pas avoir à recommencer à zéro.
  • API : Utilisez des scripts pour déclencher des enregistrements via l'API.
  • Enregistrements multiples : Commencez plusieurs enregistrements à la fois et enregistrez-les dans une liste si vous devez utiliser les mêmes paramètres dans le futur.
  • Enregistrez des clips vidéo avec audio dans plusieurs formats.
  • Enregistrez des séquences d'images dans plusieurs formats.
  • Enregistrer et exporter des animations : Exportez des clips d'animation (via FBX) vers vos applications DCC préférées.

L'Unity Recorder v1.0 sera disponible dans l'Asset Store.

aperçu du Recorder dans Unity
Aperçu du Recorder dans Unity.

Moteur principal

Suppression de l'ancienne fonctionnalité de réseau basée sur RakNet

RakNet, notre ancienne fonctionnalité de réseau, a été abandonnée dans la version 5.1 et a été retirée de Unity 2018.2. Cela signifie que tout projet utilisant RakNet ne fonctionnera pas avec cette version.

Addressable Asset System

L'Addressable Asset System facilite la gestion de toutes les choses qui composent votre jeu, comme les prefabs, les textures, les matériaux, les clips audio, les animations, etc. Au fur et à mesure que les projets se développent, le nombre d'assets augmente également. Les utilisateurs doivent les référencer intelligemment, sinon tout ce qui se trouve dans votre jeu, de la mémoire locale à la distribution du contenu, deviendra difficile à gérer.

Votre stratégie de distribution de contenu, en particulier, sera plus difficile à gérer car les références d'assets sont généralement résolues au moment du build, et les utilisateurs sont souvent confrontés à de lourdes refactorisations afin d'apporter des modifications.

Le nouveau Addressable Asset System permet à votre équipe de s'adapter facilement à l'évolution de votre jeu. Il sépare les trois principales préoccupations de la gestion des assets d'exécution: le référencement, l'empaquetage et la distribution. Cela simplifie le référencement du contenu, que ce soit sur la machine locale ou distribué en ligne via CDN, car le contenu est automatiquement chargé et déchargé pour une meilleure gestion de la mémoire. Nous fournissons également des outils de profilage pour optimiser l'utilisation de la mémoire. En fin de compte, cela se traduit par un temps d'itération plus rapide pour vous.

Il est disponible en tant que module complémentaire via le gestionnaire de packages et est maintenant en Preview.

Prise en charge des moniteurs à haute résolution

Si vous disposez d'un moniteur 4K, vous pouvez désormais bénéficier d'une prise en charge de la mise à l'échelle PPP élevée sur Linux et Windows dans l'éditeur et prendre en charge les facteurs d'échelle d'affichage par moniteur sous Windows.

Dépréciation de la prise en charge du backend .NET Scripting utilisé par la Universal Windows Platform

Depuis Unity 2018.1, nous avons pris en charge deux backend de scripts sur la Universal Windows Platform (UWP): .NET et IL2CPP. Avec cette version, nous déconseillons la prise en charge du backend de script .NET. Les objectifs de cette dépréciation sont doubles.

Plus facile de porter des jeux vers UWP

Le premier objectif de cette dépréciation est de vous faciliter le portage des jeux vers UWP. Par le passé, la plupart des problèmes de développeur associés au portage de jeux vers UWP étaient dus aux différences de surface d'API et aux différences entre les versions .NET Native et Mono et IL2CPP utilisées par Unity sur d'autres plateformes. Ce changement permettra finalement à la plupart des développeurs de porter des jeux vers UWP.

Nous aide à offrir un meilleur soutien

La deuxième raison de cette dépréciation est de nous faciliter la tâche en vous aidant à résoudre efficacement les problèmes. Parce que le backend de script .NET est complètement différent des runtimes que nous utilisons pour toutes les autres plates-formes Unity, il nous a été difficile de maintenir un niveau de qualité constant, par rapport au reste de Unity. Cette dépréciation nous permettra finalement de passer moins de temps à maintenir le backend de script .NET, et plus de temps à travailler sur les fonctionnalités et les problèmes qui sont les plus importants pour vous.

IL2CPP a la même surface API .NET que toutes les autres plates-formes Unity, et IL2CPP a pris en charge l'accès aux types et aux API WinRT depuis un certain temps. Ainsi, avec l'ajout du débogueur géré par IL2CPP dans la version 2018.2, l'expérience du développeur sur IL2CPP est maintenant à la hauteur de ce que le backend de script .NET fournit.

IL2CPP est la valeur par défaut depuis 2017.2, donc nous nous attendons à ce que la plupart des utilisateurs n'aient aucun problème avec cela. Cependant, si vous n'avez pas encore essayé d'utiliser IL2CPP et que vous rencontrez des problèmes, assurez-vous de les enregistrer. Nous prévoyons de mettre fin au support backend pour les scripts .NET dans la version 2019.1.

C# Job System, Entity Component System et Burst Compiler

Avec notre nouveau système multithread haute performance introduit dans la version 2018.1, nous reconstruisons la base même de Unity. Le nouveau système permettra à vos jeux de tirer pleinement parti des processeurs multicœurs actuellement disponibles - sans le mal de tête de la programmation. Ceci est possible grâce au nouveau C# Job System, qui vous offre un bac à sable sûr et facile dans lequel écrire du code parallèle. Nous introduisons également un nouveau modèle pour écrire du code performant par défaut avec l'Entity Component System (ECS), et le Burst Compiler pour produire du code natif hautement optimisé.

Avec des performances exceptionnelles par défaut, non seulement vous serez en mesure d'exécuter vos jeux sur une plus grande variété de matériel, mais vous serez en mesure de créer des mondes de jeu plus riches avec plus d'unités et des simulations plus complexes.

Entity Component System (ECS)

Dans la version 2018.2, nous avons ajouté plusieurs améliorations, y compris des échantillons du système réactif. Le système réactif vous permet de répondre en cas de modification de l'état du composant et d'émuler le comportement piloté par les événements. Vous pouvez en apprendre plus sur les systèmes réactifs en regardant le discours d'Unite Berlin de Joachim Ante sur le sujet.

Nous fournirons également un certain nombre d'exemples et de documentation sur la mise en œuvre de systèmes réactifs utilisant ECS.

Au cours de la deuxième moitié de l'année, nous fournirons de petits échantillons de jeux Unity créés par les utilisateurs d'Unity et convertis en ECS par nous.

Burst Compiler

Avec cette version, la burst compilation pour ECS est disponible sur toutes les plateformes d'édition (Windows, Mac, Linux), et vous serez capable de construire des AOT pour les plateforme standalone (Desktop, PS4, Xbox, iOS et Android).

Au fur et à mesure que nous progressons vers la version 2018.3, nous continuerons à mettre l'accent sur les performances ECS, à publier un aperçu du déterminisme et à prendre en charge davantage de constructions de langage .NET C# (DllImport, tableaux constants, foreach, etc.)

Nous visons à sortir le Burst Compiler en Preview dans la version 2018.3.

Débogueur IL2CPP-Managed

Le débogage IL2CPP-Managed est maintenant disponible, permettant aux développeurs d'utiliser leur débogueur préféré pour trouver et corriger les erreurs, même en utilisant le backend IL2CPP.

Toutes les fonctionnalités de débogage seront prises en charge pour Visual Studio (avec Visual Studio Tools pour Unity) et JetBrains Rider sur des plateformes standalone, PlayStation 4, mobiles et Xbox One prévues pour plus tard.

débogueur IL2CPP-Managed
Débogueur IL2CPP-Managed.

Amélioration de l'exécution du script dans Unity 2018.2

Unity 2018.2 est livré avec des dizaines de corrections de bogues liées à l'exécution des scripts, grâce à tous les excellents commentaires que nous avons reçus depuis le .NET 4.x.

Support ARM64-bit pour Android

Avec cette version, le support ARM64-bit pour Android, basé sur la technologie IL2CPP, supprime l'étiquette Preview. Cette version vous offre des avantages en termes de performances, car les applications Android 64 bits et vos jeux pourront traiter plus de 4 Go d'espace mémoire.

Séparation APK par architecture

Vous avez maintenant la possibilité de diviser l'architecture cible (x86, ARM 32, ARM 64) en plusieurs fichiers APK plutôt que d'en faire un grand. Ensuite, pour les magasins qui supportent cette option (comme Google Play), il vous suffira de télécharger le fichier APK avec l'architecture appropriée.

architectures cibles
Architectures cibles.

Google Play Instant Games Plugin

L'un des plus grands obstacles à l'acquisition de nouveaux joueurs est le tracas du processus d'installation.

Le téléchargement et l'ouverture d'une application prennent du temps et entraînent l'abandon de nombreux utilisateurs avant d'avoir découvert votre jeu.

Avec Google Play Instant, les joueurs peuvent essayer une version instantanée du jeu de 10 Mo sans avoir à l'installer en premier. Ce plugin simplifie la conversion d'une application Android basée sur Unity en une application instantanée, qui peut être déployée via Google Play Instant.

Le plugin est disponible en tant que projet sur GitHub à utiliser avec Unity 2017.x et versions plus récentes.

Les fonctionnalités du plugin incluent :

  • L'option pour basculer entre les modes Installé et Instant-build
  • Une vue centralisée de Unity Build Settings et des paramètres Android qui doivent être modifiés pour prendre en charge Google Play Instant
  • La possibilité de créer et d'exécuter l'application instantanée sur un appareil Android connecté à l'ADB

Synchronisation du magasin de certificats de la plate-forme C#

Nous prenons maintenant entièrement en charge le cryptage moderne (TLS1.2) sur toutes les plates-formes à partir des API .NET 4.x et UnityWebRequest. Cela inclut la vérification automatique des magasins de certificats spécifiques à la plate-forme.

Sur Xbox One et PS Vita, qui n'offrent pas l'accès à la validation du magasin système, un magasin de CA intégré est utilisé pour la validation.

Fin du support pour UnityScript

Comme annoncé précédemment, nous avons terminé la dépréciation de UnityScript avec cette version. Voir le blog de Richard Fine de l'été dernier pour des informations détaillées.

En général, nous avons pris cette décision parce que nous continuons à mettre à jour le Scripting Runtime et la version de C# que nous supportons, C# permettra de plus grandes possibilités :

  • La mise à jour de Scripting Runtime vous permet d'utiliser .NET 4.6 et plus tard C# 7.
  • Le JobSystem permet d'écrire facilement du code multithread d'une manière qui vous protège des conditions de course et des interblocages.
  • Le type NativeArray vous permet de créer et de travailler avec de grands tableaux dont le stockage est contrôlé par du code natif, ce qui vous donne plus de contrôle sur le comportement d'allocation et élimine les problèmes de garbage-collection.
  • Vous avez le contrôle sur le pipeline de compilation de scripts, vous pouvez donc personnaliser la façon dont vos scripts sont combinés en assemblages.

Nous avons également arrêté d'accepter de nouveaux packages Asset Store contenant du code UnityScript, et nous avons supprimé des packages avec UnityScripts.

Enfin, nous avons fourni un outil de conversion automatique UnityScript-to-C#. Il y en a quelques-uns disponibles, mais nous n'étions pas satisfaits des approches qu'ils utilisent. Puisque nous avons beaucoup appris sur l'utilisation du code UnityScript lorsque nous avons écrit le Script Updater, nous avons décidé d'appliquer ces connaissances et de construire notre propre solution. Vous pouvez le télécharger ici.

Visual Studio Code Debugger Extension

Pour ceux qui sont intéressés à utiliser Visual Studio Code comme IDE, nous avons développé, et nous maintenons, l'extension Visual Studio Code Debugger pour Unity, qui est disponible en tant que Preview.

Visual Studio Code Debugger Extension
Visual Studio Code Debugger Extension.

Pour ceux qui sont intéressés à utiliser VSCode pour déboguer le code C# dans Unity, allez sur ce forum et essayez-le. Nous aimerions entendre ce que vous en pensez. Notez que nous mettons également à jour l'extension pour qu'elle prenne en charge le débogage de C# dans le nouveau moteur d'exécution Mono dans Unity et la résolution des bogues signalés.

XR

HoloLens Holographic Remoting

HoloLens Holographic Remoting permet aux applications de tirer parti de la puissance d'une machine de bureau locale pour décharger le rendu et le traitement lors de l'exécution. Nous pensons que nos clients automobiles et AEC trouveront cette fonctionnalité particulièrement utile.

Notes de version

La version 2018.2 comprend également 183 améliorations et 1426 correctifs. Veillez à consulter les notes de publication pour la liste complète des nouvelles fonctionnalités, améliorations et correctifs. Nous serons heureux de discuter de vos commentaires sur les nouvelles fonctionnalités sur notre forum.

les réactions

Pour laisser un avis, vous devez être inscrit et connecté

Se connecter