Unreal 4.7 est disponible : liste des nouveautés et améliorations

C’est avec un plaisir non dissimulé qu’hier soir, vers 22H00, en relançant mon éditeur UE4, j’ai eu la bonne surprise de voir que la version “4.7.0” d’Unreal Engine était disponible ! Moi qui voulait me coucher tôt, c’était plutôt râté ! Car le liste des nouveautés est impressionnantes !

Parmi ces dernières:  la possibilité d’utiliser un nombre très importants d’objets dans de larges scènes, des améliorations sur le rendu du Foliage, le support des textures HDR (High Dynamic Range), la possibilité d’éditer ses propres animations dans l’éditeur, et tout un tas d’optimisations et d’améliorations.
De nombreuses fonctionnalités très demandées ont été ajoutées: Vous pouvez maintenant assembler de nouveaux acteurs en utilisant des composants directement dans votre niveau, et même créer vos propres types de composants en utilisant les blueprints ou le C ++! En parlant de script, le Blueprint Editor UI a été redessiné avec une mise en page unifiée plus claire. Et il n’a jamais été plus facile d’importer le contenu dans votre projet Unreal Editor détecte désormais les nouveaux fichiers d’assets et les importe automatiquement!

L’export HTML5 + WebGL est prêt à l’emploi -j’ai pu le tester, c’est impressionnant, même si dans mon test, certaines textures ne passaient pas encore. Je suppose qu’il y aura quelques petits modifs à apporter. On peut donc lancer notre jeu dans un navigateur compatible (ex: Firefox 64 bits) en un seul clic! Pour ceux qui utilise l’éditeur sous Mac, l’export Android est maintenant fonctionnel. Pour les créateurs de réalité virtuelle, nouvelle fonctionnalité Aperçu VR vous plonge instantanément dans le monde que vous venez de créer, et ce, directement à partir de l’éditeurEn outre, vous pouvez désormais accéder au Leap Motion si vous construisez un projet à base de code C++. Enfin, le code source du moteur complet est téléchargé automatiquement avec la version de l’éditeur, ce qui rend les manipulations beaucoup plus simples pour apprendre et déboguer. 

Prêt à faire le tour des principales nouvelles fonctionnalités ?  Let’s go !

Realistic Foliage Lighting

Le nouveau système permet à la lumière d’être transmise au travers de l’herbe, des feuilles, du papier ou tout autre matériau.
Realistic Foliage Lighting
L’éclairage diffus sur le côté opposé de la surface devient un éclairage transmissif sur le côté ombré:

  • L’éclairage transmissif est un mélange de retour de lumière diffuse dépendant de la vue pour la rétrodiffusion
  • La couleur de subsurface filtre cet éclairage et peut être utilisée pour représenter une épaisseur variable ainsi (par exemple, les nervures des feuilles)
  • Notez que l’utilisation d’opacité avec ce modèle d’ombrage qui n’affectera que la distance de atténuation de l’ombre

Bref, un algorithme complexe, mais optimisé pour le temps-réel et qui donne des visuels impressionnants.

Foliage Rendering pour des mondes gigantesques (et Open Worlds)

Le système de foliage system a été optimisé pour supporter des larges Open Worlds.
Foliage Rendering for Large Worlds
Le moteur utilise désormais un système hiérarchique pour gérer et effectuer le culling qui peut aller jusqu’à plusieurs millions d’instances ! Aussi, une transition en douceur se fait entre les niveaux de détail (LOD)  avec un fondu temporel pour éliminer le bruit !

In-World Component Editing

Les composants peuvent maintenant être ajoutés directement à des acteurs placés dans le niveau (c’est à dire, sans passer par l’asset d’origine).
In-World Component Editing
On peut désormais sélectionner individuellement les composants dans la fenêtre “Details”:
Select Individual Components
Après avoir créé un ensemble de composants, on peut cliquer sur “Blueprint / Add Script” pour le sauver comme une classe réutilisable de Blueprint ou de C++. L’acteur sera automatiquement remplacé par une instance de cette classe.
Blueprint / Add Script

Empty Actors

Des acteurs de type “Empty” peuvent être ajoutés directement à la scène:
Empty Actor
C’est valable aussi pour les “pawns” et les “characters”.

Blueprintable Components

Il est désormais possible de créer des composants “indépendants”, de les programmer et de les ajouter à la volée à un acteur de la scène. Imaginons un composant “Fait Tourner”, vous le programmer pour qu’il tourne automatiquement et hop, vous l’ajoutez à un acteur de la scène. Plutôt cool non ?
Poru cela: Cliquez sur “Add Component”,  puis sélectionnez “New Blueprint Script Component…” en haut à droite.
Demo Recording (Network Replay Capture)
On choisit ensuite la Parent Class pour le nouveau composant.
Choose Parent Class
Et voici la partie la plus cool: ajoutez un blueprint au composant
Writing Blueprint Script CodeIl est maintenant possible d’ajouter ce composant à n’importe quel acteur:
Drop The Component onto any actor

Importation Automatique des Assets

Que ce soit pour ajouter des modèles, des textures ou des sons, il suffit maintenant de les mettre dans le répertoire “Content” du projet pour qu’ils soient automatiquement “importés” dans le projet. Les conversions nécessaires seront automatiquement effectuées.
Automatic Asset Importing
C’est d’autant plus intéressant quand on est amené à faire des modifications sur ses assets avec un éditeur externe. Plus besoin de devoir réimporter.

Notons qu’il est possible de désactiver cette fonctionnalités dans les préférences de l’éditeur (“Loading & Saving” > Monitor Content Directories” )

Blueprint Editor UI a évolué !

Un redesign des fenêtres a été réalisé – on est un peu perdu au début, mais l’intégration est plus homogène. Attentions à tous les tutos et bouquins, car il va falloir chercher un peu si vous débutez !
Redesigned Blueprint Editor UI

HTML5 et WebGL Support (Windows seulement)

C’est pour moi une des fonctions les plus importantes. Je n’avais pas réussi à faire fonctionner le bouzin avec la version 4.6.1, même en recompilant l’éditeur et en suivant à la lettre la procédure.
Maintenant, je constate que c’est réglé – c’est directement accessible dans l’éditeur : je n’ai eu qu’à installer le  Emscripten SDK, et fermer et relancer l’éditeur, rien de plus !
HTML5 and WebGL Support
Ensuite, on peut même voir la preview dans le navigateur :
Emscripten SDK
Bon, pour le développement, il faut avoir un navigateur compatible: Firefox, Safari, ou Chrome 64-bit . L’export de mon jeu a pris pas mal de temps (plus d’une heure, j’ai l’ai retrouvé en me levant ce matin), et certaines textures ne passent pas. Par contre, les prochains exports seront plus rapides.

OpenEXR: Textures HDR (High Dynamic Range)

Les textures 2D High Dynamic Range (HDR) peuvent maintenant être importées sous la forme de fichiers OpenEXR (disponible précédemment uniquement pour les Cube Maps). On peut stocker des images avec des canaux allant jusqu’à 16 bits.OpenEXR: High Dynamic Range Textures

Développement Android sur Mac

La version OS X d’Unreal Engine supporte désormais pleinement le développement sous Android !
Android Development on Mac
Les utilisateurs de Mac peuvent builder et cooker les packages pour Android, tout comme les déployer sur les machines à partir de l’éditeur ou en ligne de commande.
package Product

  • il faut installer Java for OS X et l’Android SDK (qui peut être installé en utilisant le TADP installer : Engine/Extras/Android).
  • Après installation, on relance l’éditeur et on configure les chemins du SDK dans la nouvelle section “Android SDK” de “Project Settings”.

Full Engine C++ Source Code

Unreal Engine inclus désormais le code source C++ complet full engine du moteur et symboles pour le débogage.
Full Engine C++ Source Code
Pour les novices, cela permet progressivement de passer des blueprints au C++ sans qu’il y ait besoin d’une procédure complexe de téléchargement, de recompilation de l’éditeur et de configuration. En même temps, en cas de crash (et oui, ça arrive souvent quand même), on  a accès à un rapport plus complet.

Bon, il est toujours possible de recompiler l’éditeur. Pour cela, il suffit de se rendre sur le GitHub.

Jouer avec la réalité virtuelle

Il est possible de lancer un preview directement dans l’éditeur. Si vous êtes les heureux possesseurs d’un Occulus Rift … ou pas ! Vous allez pouvoir tester cela dans l’éditeur. Va falloir rapprocher votre bouille de l’écran et utilisez votre main pour faire séparateur… euh, pas sûr que cela soit terrible… Non, je déconne, cela envoi directement vers l’appareil.
Play in Virtual REality

Leap Motion Plugin

Alors là, trop cool. Vous connaissez cet appareil ? Si non, allez faire un tour sur www.leapmotion.com
Par défaut, l’éditeur supporte le plug in permettant de s’interfacer avec. L’appareil ne coute que 90€ et c’est vraiment épatant ce qu’on peut faire avec.
Leap Motion Plugin

Cela passe par un plugin, mais l’API est entièrement exposée vers les Blueprints et le C++. Franchement, je testerai bien… Si une bonne âme veut m’en faire cadeau, je lui fais un gros tuto dessus !

C++ Classes dans le Content Browser

Les classes C++ apparaissent maintenant dans le Content Browser!
C++ Classes in Content Browser
On peut les créer directement à partir de là !
New C++ Class
Bon, je dois vous avouer que cela n’a pas fonctionné pour moi: j’ai systématiquement un “Failed” à la compilation… Mais j’ai du mal faire quelque chose. Enfin, j’espère…

Morph Target Exageration

Il est désormais possible d’exagérer le morphing : une sorte d’interpolation au delà des limites prescrites, ce qui peut être bien pratique par moment. Et cela marche dans les deux sens:
Morph Target Exaggeration

Feature Packs and Content Packs

Plus besoin de créer un nouveau projet, de migrer les assets vers votre projet actuel pour disposer des fonctionnalités d’un template. On peut désormais “ajouter” la fonctionnalité au projet courant:
Features Packs and Content Packs

Imaginez que vous ayez bossé sur un FPS et que vous voulez ajouter un template Véhicle. Rien de plus simple avec cette nouvelle approche. J’imagine que cela va booster également le marketplace.
Add Feature PackAinsi, on peut également ajouter le Starter Content  à tout moment, avec une nouvelle version optimisée pour les mobiles.

Animation Editing System

Plus besoin de passer par un logiciel de type modeleur/animateur pour créer vos propres animations.
Animation Editing SystemBouger le curseur de temps, modifiez la position des bones, leur rotation en utilisant le gizmo, et créer une image clé (touche ‘S’). Répétez l’opération avec une autre position…
time slider
Grâce à la courbe, vous pourrez paramétrer le mouvement de façon très aisée. On peut également utiliser une “additive layer” qui permettra de conserver les anims, même si on réimporte le modèle et ses animations.
Third Person Walk
Il est même possible de sauver l’animation comme un Asset et ainsi, pouvoir la réutiliser dans de multiples projets.
Create Asset

Instant Bone Controller Preview

Les noeuds Bone Controller peuvent être ajustés directement avec le gizmo, sans passer par une recompilation intermédiaire à chaque fois.
BoneCont_Min_Gif.gif

Création d’Animations à partir de la physique

L’éditeur de physique permet maintenant d’exporter les simulations sous forme d’animation !Creating Animation from Physics
Il suffit de cliquer sur Record” dans la toolbar, d’interagir avec l’objet dans la viewport pour créer une simulation intéressante !Après, on clique sur “Stop” pour sauver la simulation en animation.
On peut aussi le faire à partir de l’éditeur de niveau: on clique sur “Simulate” dans la toolbar (play), on cherche les Skeletal Mesh qui sont en mode simulation dans la scène, clic droit sur le mesh et selectionez “Keep Simulated Changes” (ou touche ‘K’ ) pour sauver sous forme d’animation.

Project Launcher

La nouvelle interface “Project Launcher” permet de lancer plus facilement un projet avec plus de contrôles.
Project Launcher
Cela permet de tester son jeu sur de multiples plateformes et configurations plus simplement, tout comme lancer simultanément plusieurs sessions.

Blueprint Merge Tool

Il est maintenant possible de fusionner deux blueprints. L’outil permet de visualiser les différences et assiste dans la combinaison des deux.
blueprint MergerIl y a 3 façons d’utiliser cet outils:

  • File -> Merge dans le Blueprint Editor
  • Clic-droit sur un asset et select Merge
  • Ou en ligne de commande:  UE4Editor.exe -diff [options] <File A> <File B> <Common Base File> <Output File>

Git Source Control Plugin (Beta!)

Merci à Sébastien Rombauts pour son excellente contribution sur le plugin Git source control pour Unreal Engine!
git (Beta Version)

AI Perception System: Blueprint Scripting

Le système AI Perception qui partie normalement du pawn sensing est désormais configurable vie les blueprint.
AI Perception System

Tutorials for New Project Templates

Chaque nouveau projet (pour l’instant, il n’y a que TopDown) utilisant un template a maintenant son propre Overview Tutorial qui fournit un descriptif de ce qu’il fait et des classes associées.
Tutorials for New Project Templates
Il suffit de cliquer sur l’overview:

TopDown

New Thumbnail Look and Feel

New thumbnail look and feel
Les classes C++ et les Blueprint profitent dans la mesure du possible d’un nouveau système d’affichage des Thumbnails.

Paper2D:  Amélioration de l’édition de Layer Tile Map

Tile Map Example

  • Les Layers peuvent être réordonnés
  • On peut sélectionner directement le layer à peindre
  • Le layer sélectionné reste actif d’une session à une autre
  • On peut dupliquer les layers
  • Les Tile Maps sont désormais des assets réutilisables ou des instances du level (avec le possibilité de les transformer en asset)
  • Etc.

A noter que les Tiles Maps sont toujours une fonction expérimentale du moteur.

Paper2D:  Flipbook Collision Detection

Flipbook, c’est ce qui permet de créer des animations 2D à partir d’une série d’images (sprites 2D animés, planche d’images, etc.). Maintenant, il est possible de définir des propriétés de collisions au niveau des frames de l’animation.
Flipbook Collision
Ainsi:

  • No Collision: Pas de collision
  • First Frame Collision: Une collision est dispo uniquement pour la première image (elle sera identique partout)
  • Each Frame Collision: La collision est définir pour chaque image

UI: Curseur Personnalisé

On peut créer des custom Widgets qu’on utilise comme des Software Cursors . Ainsi, on peut ajouter du texte, une barre de vie, et tout ce qu’on veut au curseur, comme par exemple:
UI: Custom Cursor Support
Les Software cursors sont utiles dans plusieurs cas:

  • Ajouter des curseurs graphiques à du matériel ne possédant pas de curseur habituellement, comme par exemple, une souris virtuelle sur une console.
  • Ajouter des curseurs aux fonctionnalités avancées, avec des animations, ou possédant des interactions complexes.
  • Avoir des curseurs identiques d’une plateforme à une autre (PC, Mac, Linux, etc.)
A noter que les curseurs logiciels sont mis à jour à chaque frame, alors que les curseurs hardware bénéficient de la vitesse de rafraichissement du système d’exploitation.

Unreal Motion Graphics: le nouveau Widget Binding System

Il est possible d’ajouter des fonctions et bindings pour chaque sous-propriété d’un widget:Unreal Motion Graphics: New Widget Binding System

Les conversions de base sont gérées automatiquement(comme Linear Color vers Slate Color, ou Texture2D vers Slate Brush).
Binding to properties est désormais 10X plus rapide grâce à ce nouveau système.

Visual Logger (AI Visualization Tool)

Un nouveau système permet de gérer plus efficacement le débogage de l’IA des personnages:
Visual Logger

  • Les évènement sont loggés et on peut les retrouver grâce à une timeline. Voir cette video.
  • Les éléments de la timeline avec des warnings sont maintenant affichés en jaune, et les erreurs en rouge.
  • On peut utiliser une caméra spéciale type “Debug” pour se promener dans le  jeu quand celui-ci est en pause.
  • On peut sauver les rapports générés avec des liens hypertextes et tout ce qu’il faut pour mieux analyser l’ensemble.

Contrôle sur le classement des objets transparents

On peut classer par distance, par “projected Z” ou par axe les objets transparents, ce qi est bien pratique pour les jeux 2D:Sort Policy

Problème des Blueprint Cycliques

Certains blueprint faisant appel à d’autres blueprints pouvait planter sur ces autres faisaient eux-même appel à ce dernier. L’éditeur sait maintenant repérer ce genre de problème, ce qui évite des plantages intempestifs.

Améliorations concernant l’Unreal C++

Le code C++ utilisé par Unreal est rempli de macro permettant de l’utiliser sous forme scriptée (ou assimilée). Il n’est pas évident d’entrer rapidement dans ce genre de code même quand on maitrise le C++.
Il y a donc un effort continue pour simplifier l’approche et rendre le code plus “familier” pour les habitués (comprendre: plus standard ;))

Donc, plus besoin  de constructeur particuliers (utilisant unargument de type Object Initializer). Les sous-objets ont une syntaxe plus simple. On peut avoir plusieurs classes dans un seul header C++. . On peut déclarer des types Unreal (comme les Unreal Enums ou delegates) dans un header sans avoir à passer par une classe spéciale,etc. Bref, les programmeurs C++ apprécieront. Pour ma part, je n’ai pas encore trop attaqué le sujet, le visual blueprint répondant à une grande partie de mes besoins. Et puis, c’est un peu le chemin inverse pour moi, adorateur de C++ qui essaye de se contenter de la prog visuelle. Mais j’y viendrais… soon !

Animations Multi-threaded

C’est quand même un point vachement important: les animations de type skeletal demandent un certain temps de calcul à cause des interpolations et des différents calculs de transformation. Avant, toutes les animations étaient gérées dans une seule tâche: il n’était donc pas possible de les répartir entre les processeurs.
Mais aujourd’hui, tout le monde dispose d’un ordinateur avec plusieurs CPU et plusieurs coeurs ! Je dirais que ce n’était donc pas trop tôt !

Desktop-Quality Rendering on Android *BETA* (OpenGL ES 3.1 w/ AEP)

Une version bêta de l’utilisation d’OpenGL ES 3.1 (combinée avec l’Android Extension Pack)permet d’obtenir une qualité de rendu proche de celui qu’on a sur son desktop !
Il faut sélectionner “ES3.1+AEP” comme target au moment du building et cooking.

Notons qu’il faut recompiler l’éditeur pour bénéficier de ces fonctionnalités.  Pas encore eu le temps de tester pour ma part, et pas certain d’ailleurs que ma tablet supporte cette version d’OpenGL ES. A voir donc… Si vous testez, laissez un petit commentaire pour qu’on sâche si c’est bien ?

Downloadable Content (DLC) Packaging *BETA*

Le système de Downloadable content (DLC) peut être packagé et ajouté à vos projets pour la distribution.  C’est encore une bêta et cela fonctionne en ligne de commande pour l’instant,

Autres évolutions Android

Loading movies et startup movies fonctionne désormais pour Android (à partir de la version 4). A configurer dans les Project’s Settings.
A noter que l’appareil Android doit pouvoir lire des vidéos au format MP4.
Les paths vers le SDK peuvent aussi être configurés directement dans l’éditeur (plus la peine de passer par des variables d’environnement).
android sdk
Pour une description complète des évolutions de la version 4.7, regardez ici.

Voilà, j’espère que ces évolutions vous ont autant enthousiasmé que moi. Je devrais poster assez rapidement un petit exemple en HTML5, alors restez connectés et ajoutez ce site dans vos flux RSS – vous allez de plus en plus entendre parler d’UE4 sur ce blog!
Je vous laisse avec une vidéo des développeurs d’UE sur les nouveautés de la 4.7, et celles prévues pour les prochaines:

Ces articles pourraient aussi vous intéresser …