Unreal Engine 4.12 est sorti
Après plusieurs semaines de prévisualisation, Unreal Engine 4.12 est enfin arrivé. La plus grande nouveauté est sans conteste le séquenceur.
Sequencer combine la puissance d’un éditeur non linéaire et de l’animation 3D pour vous permettre de produire des cinématiques dans le jeu ainsi qu’une séquence de plans pour le film, la télévision et la prévisualisation.
C’est assez impressionnant, car ils ont essentiellement construit un éditeur non linéaire entier dans Unreal Engine, ce qui vous permet de créer des scènes coupées en superposant plusieurs éléments de scène différents. Si vous avez utilisé un NLE traditionnel comme After Effects ou même Blender, vous devriez avoir une bonne idée de ce qui est disponible ici.
Bien sûr, le séquenceur n’est pas la seule nouveauté de cette version. Cette version apporte également le premier aperçu de VR Editor.
Il s'agit d'une fonctionnalité avant-gardiste qui vous permet de naviguer librement dans vos mondes en VR à l'aide de contrôleurs de mouvement. Vous pouvez sélectionner et déplacer des acteurs, placer de nouveaux objets et même accéder à l'interface utilisateur de l'éditeur, tout en étant immergé dans la réalité virtuelle. Cette fonctionnalité nécessite actuellement un matériel de développement HTC Vive ou Oculus Touch. Pour l'essayer, activez simplement "Activer l'édition VR" dans la section Expérimentale de vos Préférences Editeur.
Sur le front de la réalité virtuelle, cette version ajoute également la prise en charge d’OpenVR et de la nouvelle norme annoncée par DayDream VR de Google. Une autre partie extrêmement intéressante de cette version est la possibilité de préparer des plans en C ++. Il ne s’agit là que d’une fonctionnalité d’aperçu, mais il pourrait en résulter une nette amélioration de la vitesse pour les personnes programmant avec Blueprints.
Une autre fonctionnalité majeure de cette version est l’importateur de scènes complètes. Cela vous permettra d'importer un niveau complet créé dans Max, Maya ou Blender et de l'importer dans Unreal Engine à l'étape suivante.
Ces fonctionnalités ne font que gratter la surface de cette version. À partir des notes de version complètes:
AI
- Nouveau: la journalisation v des attributs de Ability System est maintenant contrôlée par une variable de la console, g.debug.vlog.AttributeGraph.
- Notez que cela signifie également qu'il peut être désactivé pour l'ensemble du projet s'il est ajouté à DefaultEngine.ini.
- Nouveau: Ajout d'une nouvelle option au système de requête d'environnement (EQS) pour effectuer des tests en utilisant la profondeur plutôt que la largeur.
- Nouveau: Ajout d'une fonction de plan directeur pour définir les paramètres nommés à utiliser lors de l'exécution d'une requête EQS à partir de plans directeurs.
- Nouveau: ajout d'un seuil d'avertissement du nombre de requêtes pour détecter et signaler un grand nombre de requêtes effectuées dans EQS.
- Par défaut, cette option est désactivée, mais facilement activée par le biais d'une modification de la valeur du fichier de configuration en fichiers QueryCountWarningThreshold et QueryCountWarningInterval dans les fichiers ini du jeu (par exemple, BaseGame.ini, DefaultGame.ini, etc.).
- Nouveau: EnvQueryContext_BlueprintBase n’a plus besoin que l’acteur demandeur soit non-NULL. Il spécifie également à présent un objet demandeur (qui est un UObject * et peut être NULL). Le nouvel objet interrogateur est disponible dans toutes les fonctions implémentables dans un plan, dans le contexte, qui renvoie le ou les acteurs ou les acteurs: Fournir un acteur unique, Fournir un emplacement unique, Fournir un ensemble d’acteurs, Fournir un ensemble d’emplacements.
- Correction: amélioration de la stabilité et des performances du système de perception de l'IA.
- La fonction GetHostileActors ne récupère plus les acteurs déjà oubliés par l'intelligence artificielle.
- Le stimulus de perception d’un acteur expiré est marqué en conséquence, mais n’est pas supprimé.
- Correction de bug: Correction d'un bug dans EQS qui réinitialisait parfois l'équation de scoring lors du chargement d'actifs de requête.
- Correction: le système de perception de l'IA ne notifie plus aux auditeurs les informations des sens pour lesquels ils ne sont pas enregistrés.
- La fonction SetFocus d’AIController effacera maintenant implicitement tout focus d’emplacement ayant la même priorité.
- La fonctionnalité "Sweet Spot" des tests EQS a été renommée "Valeur de référence".
- Le "temps moyen de réponse d’instance" d’EQS utilise maintenant des millisecondes au lieu de secondes.
Arbre de comportement
- Nouveau: Prise en charge de l'utilisation des nœuds de service directement sur les tâches de l'arborescence de comportement.
- Nouveau: l'éditeur d'arborescence de comportement affiche désormais toujours l'index d'exécution des nœuds, plutôt que l'index enfant.
- Correction: L'arrêt forcé de l'arbre de comportement n'entraîne plus d'échec si la tâche active nécessitait des mécanismes d'abandon latent.
- Correction: La recherche dans l’arborescence de comportement ne saute pas de branche lorsque la demande de redémarrage arrive pendant l’abandon de la tâche.
- Correction: Un bug empêchant le mode d’observation du décorateur BT de fonctionner lorsqu’il était modifié.
- Correction: L’utilisation de l’annulation sur des décorateurs ou des services ne corrompra pas les données de l’arbre de comportement.
- Correction: L’index d’exécution affiché sur les nœuds de l’arbre de comportement est maintenant mis à jour correctement après les opérations de déplacement ou d'annulation.
Outils de débogage
- Correction: Le débogueur EQS stocke les données correctement lorsqu'une option suivante est celle qui produit le résultat final.
- Correction: Visual Log saisit maintenant le "cliché" de l'élément enregistré même s'il ne s'agit pas d'un acteur.
- Améliorations générales de la stabilité de Visual Logger.
La navigation
- Nouveau: Ajout du suivi de trajectoire lié à l'accélération, contrôlé par l'indicateur "Utiliser l'accélération pour les trajectoires" dans les composants de mouvement.
- Nouveau: Prise en charge supplémentaire de l'utilisation de Tri Mesh Collision comme obstacle à la navigation.
- Nouveau: le balisage Navmesh pour Nav Modificateur Composant va maintenant combiner toutes les formes pertinentes de son acteur parent au lieu de créer une simple boîte.
- Correction de bug: Correction d'un bug dans les filtres de navigation qui pouvait entraîner des différences dans le fonctionnement des zones de navigation dans les versions de développement par rapport aux versions de débogage.
- Correction: L'état de simulation de la foule de l'agent est maintenant correctement défini.
- Correction de bug: Plusieurs occurrences bloquantes dans une géométrie conforme au mode de mouvement NavWalking seront désormais gérées correctement.
- Correction: la fuite de mémoire a été supprimée du gestionnaire de simulation de foule.
- Correction: l’exportation de navigation fonctionne correctement pour les maillages destructibles sans collision.
- Correction: Correction des mises à jour de navigation des pièces jointes lorsque l'acteur est déplacé dans le monde de l'éditeur.
- Correction de bug: les radios Navmesh n'échouent plus grâce aux vérifications 2D effectuées sur le dernier nœud.
- Correction: La détection de bloc de composant suivant le chemin ne conduit plus à tester par rapport à un mécanisme différent de celui demandé.
- Correction: L’initialisation intelligente du navlink lors du chargement de la carte fonctionne correctement.
Animation
- Nouveau: Ajout de la possibilité de forcer des états de réinitialisation à mesure qu’ils sont ré-entrés même s’ils ne sont pas complètement fondus.
- Nouveau: Ajout de l'option "Téléportation à l'heure explicite" pour les évaluateurs de séquence. La valeur par défaut est true pour conserver le comportement précédent. Si true, ne fait PAS avancer le temps, afin que les notifications ne soient pas déclenchées, le mouvement racine ne soit pas extrait, etc. Si false, le temps avance, le déclenchement notifie, en extrayant le mouvement racine si applicable, etc. Remarque: L'utilisation d'un groupe de synchronisation force le temps indépendamment de ce que cette option est définie sur.
- Nouveau: ajout d'un nouveau noeud, Copy Bone Delta, qui accumule ou copie la transformation d'un os source par rapport à sa position de référence d'origine.
- Nouveau: Ajout d’une nouvelle version du mode de visualisation de la complexité du shader qui indique également le coût du surmenage quadruple.
- Nouveau: ajout d'un message d'erreur dans la fenêtre d'affichage Persona lorsque les animations de pose additives ont une échelle de 0.
- Nouveau: ajout de l’affichage du nom de l’os aux titres des nœuds de la dynamique animée.
- Nouveau: Ajout de l’option de duplication d’emplacement dans Montages.
- Nouveau: ajout de limites fixes modifiables pour les maillages squelettiques, de getters exposés aux plans.
- Nouveau: Ajout d'un indicateur au composant de maillage squelettique Initialize pour initialiser à la pose de référence au lieu de cocher l'occurrence d'animation. Cette option réduit le temps de réapparition des composants de maillage squelettique.
- Nouveau: fonctionnalité ajoutée pour la gestion de paramètres nommés à partir de données d'animation à l'aide du contrôleur piloté par l'os.
- Nouveauté: Ajout du menu "Tester les noms de courbes squelettiques avant d’utiliser" dans Persona pour répertorier toutes les courbes de toutes les animations ne conduisant pas à une cible de morphing ou à un paramètre de matériau. Aide les utilisateurs à identifier les candidats possibles à supprimer pour améliorer les performances.
- Nouveau: Ajout du traitement au compilateur de plans d’animation et à l’instance d’animation pour stocker et mettre en mémoire tampon les poids d’état internes de la machine sur l’instance. Ils peuvent être interrogés inter-machine sans problème.
- Nouveau: Retargeting ajouté pour les séquences à référence variable dans les plans d’animation.
- Nouveau: Autoriser le changement de nom de courbe dans Curve Track pour s’appliquer aux noms de courbes existants. La courbe existante prendra simplement le nouvel UID / Nom et conservera tout le reste. Ajout d'un avertissement lors de la tentative de renommer une courbe en un nom déjà utilisé dans la séquence en cours.
- Nouveau: le reciblage d’animation prend en charge l’échelle et le mouvement racine.
- Nouveauté: L'importation de courbes de matériau dispose désormais de l'option "Définir le paramètre de contrôle de matériau sur l'attribut personnalisé", qui permet de définir automatiquement les indicateurs de paramètres de matériau lors de l'importation de courbes.
- Nouveau: le nœud "Regarder" acceptera maintenant un socket comme cible.
- Nouveau: Les machines d'état de niveau supérieur sont maintenant réinitialisées lorsqu'elles deviennent pertinentes. Cela correspond au comportement des machines à états imbriquées.
- Nouveau: le reciblage d’un squelette copie également les sockets.
- Correction: Un problème lié à la non sérialisation des métadonnées dans Anim Montage ou Anim Composite a été corrigé.
- Correction de bug: Correction d'un crash lors de la tentative de conversion des courbes en métadonnées après l'importation d'une séquence d'animation.
- Correction: BlendSpace fusionne maintenant les poids d'échantillons identiques. En plus d'être une optimisation, cela corrige un problème d'évaluation des synchronisations basées sur des marqueurs dans le même échantillon avec des données différentes.
- Correction: Le problème avec des matériaux différents avec le même nom de paramètre ne fonctionnait pas dans les courbes d'animation.
- Correction: L'option de fusion alpha "Linéaire" renvoie désormais une valeur alpha bloquée. Les valeurs non verrouillées peuvent générer des poids de transition négatifs dans les machines à états.
- Correction: Les animations enregistrent désormais correctement hors écran avec la commande RecordAnimation.
- Les vérifications conditionnelles ZERO_ANIMWEIGHT_THRESH sont extraites par les nouvelles fonctions IsRelevant et IsFullWeight dans FAnimWeight.
- Ajout de balises de registre d'actifs liées à la compression pour les séquences animées.
- Ajout du filtrage aux sélecteurs d'actifs de nœud d'animation afin que le type d'animation incorrect ne puisse pas être défini sur un nœud existant.
- Ajout d'un indicateur affiché sur les nœuds d'animation lorsqu'ils utilisent le "raccourci".
- Ajout du test de données de courbe en cache invalide à la logique d’évaluation Refresh Bone Transforms de Skeletal Mesh Component afin que les données en cache non valides ne soient pas utilisées.
- Les graphiques Anim sont maintenant déboguables dans l'éditeur de graphes Persona.
- Correction: Les gestionnaires de valeurs exposées du plan directeur Anim ne contiennent plus de références de fonction à TRASHCLASS.
- Correction: les problèmes de récupération de place et d'annulation / restauration avec le proxy d'instance de l'animation ont été résolus.
- Correction: Les valeurs corrigées n'étaient pas copiées correctement lorsque l'accès au mélange en couches par os était effectué à partir d'une structure située dans le "raccourci".
- Correction: Les broches divisées fonctionnent maintenant comme des entrées de nœud de graphe animé.
- Correction: Un certain nombre de problèmes de casse de coin d'animation ont été résolus:
- Les pins de Bitfield sont maintenant correctement supportés.
- Les épingles d’objets sont désormais correctement prises en charge dans les jeux préparés.
- Correction de bug: Correction d'un crash pouvant survenir lors de la tentative de collage d'un noeud de machine à états à l'intérieur de la machine à états elle-même.
- Correction: Un certain nombre de pannes ont été corrigées lors de l'édition de machines d'état de plan directeur d'animation et de problèmes pouvant entraîner le marquage erroné des sous-graphes de machine d'état en lecture seule.
- Correction: Les transformations osseuses ne sont plus récoltées à partir d'une pose lorsque l'os n'est pas valide pour le niveau de détail actuel.
- Correction: Les joueurs de blendspace corrigés ne signalaient que le temps normalisé lorsqu’on utilisait un temps de lecture dans une transition de graphique animé.
- Correction: Les notifications BP sont maintenant affichées dans le menu contextuel "Ajouter une notification" lorsqu'elles proviennent d'une classe de base abstraite.
- Correction: Les mailles squelettiques fusionnées ne plantaient plus lorsque l'on accédait aux matrices de pose composées avant la finalisation du maillage.
- Correction: l'infobulle de prévisualisation d'animation Persona ne se bloque plus lors de la commutation entre les espaces de fusion avec un nombre différent d'échantillons.
- Correction: Les graphes de fusion personnalisés n'apparaissent plus de manière inappropriée en lecture seule après une opération de copier / coller.
- Correction de bug: Correction des doublons de noms d'emplacement dans les groupes d'emplacement d'animation.
- Correction: Les transformations osseuses incorrectes ne sont plus transmises au rendu lors de la définition du maillage squelettique. Cette présenté comme artefacts de flou de mouvement dans l'éditeur.
- Correction: Le fichier INF en cours de création (qui s'est transformé en NaN) a été corrigé lorsque les échelles osseuses étaient proches de zéro.
- Correction de bug: Correction d'un état non valide pour les mailles squelettiques dont la mobilité était définie sur statique.
- Correction: "Le marqueur précédent introuvable dans GetMarkerIndicesForPosition" ne se déclenche plus lors de l'activation de l'animation de synchronisation du marqueur.
- Correction: Les objets d'animation ne sont plus inappropriés. Ordures collectées dans le jeu. Nous avons également ajouté une optimisation aux courbes d’enregistrement afin que nous n’ajoutions pas de clés, sauf lorsque vous terminez l’enregistrement.
- Bugfix: Les os de cache sont correctement appelés à partir de machines d'état en cas de besoin.
- Correction: Correction des courbes de mise à l'échelle manquantes lors de l'exportation d'une animation au format FBX.
- Correction: Les notifications sont maintenant correctement déclenchées lorsque le serveur appelle Montage_JumpToSection.
- Correction: La notification dans les séquences animées dans les montages est maintenant correctement déclenchée, même si la notification est à l’heure 0.
- Correction: Le composant Morphtarget du composant esclave fonctionne avec le composant Pose principale. Les composants esclaves peuvent également remplacer leur propre Morphtarget.
- Correction: Certaines épingles d'anciens modèles d'animation n'étaient pas transactionnelles.
- Correction: Les index des objets d’animation cuits non initialisés ont été corrigés, l’écriture des versions CDO / par défaut est donc déterministe.
- Correction: La modification des os dans Persona qui ne font pas partie du LOD actuellement affiché ne se bloque plus.
- Correction de bug: Correction d'un crash lors de la recherche des noms de groupe de synchronisation par nom sur les BluePrints enfants.
- Correction: Les plans d'animation corrigés étaient marqués pour la recompilation en octets seulement, ce qui ne réinitialisait pas l'instance de script.
- Correction: Un bug dans la recherche de segment de montage a été corrigé: nous le comparions à l'heure de début de l'animation de segment et non à l'heure de début du segment.
- Correction de bug: Get Instance Asset Player Time ne renvoie plus le temps normalisé pour les actifs de blendspace.
- Morphtarget DeltaTangentZ n'est plus du type PackedNormal. Il est maintenant de type FVector, car les valeurs vont de -2 à 2.
- Suppression de la logique de réenregistrement des composants dans Set Skeletal Mesh. Cela permet à Set Skeletal Mesh de conserver la pose actuelle lors des modifications de maillage.
- Définissez la position initiale de la lecture de l'animation à la fin de l'animation lorsque vous faites glisser une animation avec un taux de lecture négatif dans un niveau.
- Les jeux autonomes bénéficient désormais, si possible, de la mise à jour parallèle d'anim.
l'audio
- Nouveau: Possibilité d’obtenir la réverbération actuellement active à partir de plans.
- Nouveau: Possibilité de définir un périphérique audio préféré dans les paramètres du projet Windows Platform.
- Nouveau: Possibilité d'activer ou de désactiver les sous-titres des plans.
- Nouveau: Possibilité de définir un canal de trace personnalisé pour les appels de trace d'occlusion audio.
- Nouveau: Activer le traçage de rayons d'occlusion audio asynchrone par défaut.
- Nouveau: La nouvelle commande de console "AudioMemReport" génère un rapport audio détaillé.
- Nouveau: La prévisualisation des sons dans le navigateur de contenu et la prévisualisation sound-cue sont exemptes du volume principal et sont toujours lus à plein volume.
- Correction: La lecture du montage animé avec une échelle négative dans la fenêtre de niveau a été corrigée.
- Correction: Correction pour les sons 2D ayant une atténuation appliquée.
- Correction: Le problème de rapport de mémoire sur PS4 a été résolu
- Correction: La lecture en boucle des sons ne s’arrête plus lorsque aucun des enfants ne joue un son. Cela peut arriver si un nœud aléatoire a une broche déconnectée, par exemple.
- Correction de bug: Réverbération fixée sur PS4.
- Améliorations apportées au décodage d'ogg-vorbis:
- Réduire les problèmes de processeur dus à la décompression audio de Ogg-Vorbis en rendant les informations de fichier initiales analysant de manière asynchrone.
- La gestion des tâches de décodage ogg-vorbis asynchrone en temps réel vers un thread de périphérique audio corrige les sous-exécutions de la mémoire tampon de décodage en temps réel.
- Peut maintenant jouer de l’audio décodé en temps réel sur des écrans de chargement et à d’autres moments lorsqu’il s’agit de l’affrontement des perfs du thread principal.
- Plusieurs améliorations apportées aux fonctionnalités de qualité de vie de l'éditeur SoundCue pour les ressources DialogueWave.
- Ne dupliquez plus les ressources audio AT9 compressées sur PS4.
- Info-bulle mise à jour pour la résolution d'accès simultané aux sons StopLowestPriority, de sorte qu'il indique que le système arrêtera le son le plus ancien si tous les sons ont la même priorité.
- Mise à jour du SDK Oculus Audio vers la version 1.02.
Automatisation
- Nouveau: BuildPatchTool ajouté à la construction binaire.
- Nouveau: UAT recherchera automatiquement Build NoRedist Keys.txt dans le répertoire du projet. S'il existe, tous les fichiers pak seront signés à l'aide de ces clés.
- Correction: correction pour l'UAT où les répertoires cibles des serveurs de stockage intermédiaire ne seraient pas nettoyés correctement au préalable, ce qui laisserait des données redondantes.
- Correction: L'utilitaire UAT VersionUpdater ne touche plus le fichier cible si rien n'a été modifié
- Correction: L'emplacement UnrealPak a été ajouté pour que le noeud MakeFeaturePacks puisse fonctionner correctement sur Mac.
Les plans
- Nouveau: Ajout d'un nœud de conversion qui autorisera les connexions entre les types de structure associés (routage d'une structure enfant dans une broche de structure parent). Cela résout également un crash pouvant survenir à partir de connexions directes.
- Nouveau: Ajout d'une fonctionnalité permettant aux graphiques de Blueprint en double d'être automatiquement ouverts et ciblés.
- Nouveau: Ajout d'un noeud MakeHitResult.
- Nouveau: ajout d'un nouveau noeud "copie" pour protéger les sorties de référence contre les modifications non désirées.
- Nouveau: ajout d'un avertissement et d'un nouveau nom pour les nœuds d'événement collés, afin de mieux communiquer que la copie ne sera pas déclenchée avec l'original.
- Nouveau: génération de collisions ajoutée pour les composants de maillage spline créés ou mis à jour au moment de l'exécution.
- Ceci n'est pas prévu pour les changements de collision en temps réel lorsqu'une spline se déplace comme un tentacule, mais cela devrait fonctionner pour les maillages de splines générés de manière procédurale ou créés autrement par blueprint.
- Remarque: les composants de maillage de spline sont "statiques" par défaut. Pour les générer au moment de l'exécution, vous devrez peut-être modifier leur mobilité en "déplaçable" dans le panneau de détails ou le nœud de modèle "ajouter un composant".
- Nouveau: ajout d'un commandlet permettant de réexécuter l'étape de conversion pour tous les actifs répertoriés dans un manifeste. La syntaxe est la suivante: "-run = NativeCodeGen nom_ plateforme1 nom-plateforme2", par exemple "C: MonProjet MonProjet.uproject -run = NativeCodeGen windowsnoeditor".
- Nouveau: Ajout du temps de dessin et des options de couleur supplémentaires aux fonctions Blueprint "Traçage".
- Nouveau: Le noeud Index valide est ajouté à la bibliothèque de tableaux de Blueprint.
- Nouveau: Ajout du plan de construction à partir de points et de normales dans la bibliothèque mathématique Blueprint.
- Nouveau: ajout des nouvelles options EulerInterp et DualQuatInterp au nœud "Lerp (Transform)".
- Nouveau: Ajout de nœuds pour convertir les chaînes formatées en vecteurs, rotateurs et flotteurs.
- Nouveauté: Ajout du nœud Random Bool With Weight pour générer un résultat aléatoire basé sur une valeur en pourcentage.
- Nouveau: ajout de la possibilité pour les utilisateurs d’étendre complètement les arborescences dans le panneau MyBlueprints en maintenant la touche Maj enfoncée tout en cliquant sur une flèche.
- Nouveau: Les étapes Step Over et Step Out ont été ajoutées en tant que mappages de touches, bien qu'aucune entrée réelle n'ait encore été configurée. Pour utiliser la nouvelle fonctionnalité, révisez ou remappez les touches attribuées dans les préférences de l'éditeur pour entrer / passer / revenir / sortir dans les préférences de l'éditeur / Général – Raccourcis clavier / Play World.
- Nouveau: le nom de l'actif est maintenant affiché dans le journal de cuisson pour les erreurs de compilation de plans directeurs.
- Nouveau: les GUID sont maintenant utilisés pour identifier les propriétés créées à partir de plans. Cela garantit une rétention plus efficace des valeurs utilisateur.
- Nouveau: connecté de nombreuses nouvelles icônes pour les classes de composants.
- Nouveau: Les macros peuvent maintenant avoir des variables locales de type "wildcard".
- Nouveauté: les paramètres du projet incluent désormais une nouvelle option de la cuisinière permettant d'activer un chemin potentiellement plus rapide pour l'instanciation dynamique des types de Blueprint Actor avec plusieurs composants au moment de l'exécution.
- L'option est intitulée "Cuire les données du composant Blueprint pour une instance plus rapide au moment de l'exécution".
- L'option est désactivée par défaut, mais elle peut être activée pour améliorer potentiellement les performances dans une construction préparée lorsque des instances de classe Blueprint (Actors) avec plusieurs composants sont générées de manière dynamique au moment de l'exécution.
- Nouveau: Ajout d'un filtre pour afficher uniquement les propriétés répliquées d'un plan d'action.
- Bugfix: Correction du crash de l'éditeur lors de la recompilation de Blueprint avant Play In Editor.
- Correction: Un problème empêchant les utilisateurs d'utiliser des clés de débogage dans les bleus pour parcourir et déboguer des bleus a été résolu. Les graphiques ne perdent plus le focus lorsque vous parcourez les plans.
- Correction: Les plans basés sur des classes autres qu'Actor seront désormais correctement détectés en tant que données uniquement.
- Correction: Les nœuds SpawnActor / ConstructObject mettent correctement à jour leur hovertext lorsque le code PIN de la classe est modifié.
- Correction: L'échelle ne change plus lors de la mise à l'échelle par glisser-déplacer dans la fenêtre de prévisualisation de l'éditeur Blueprint. Ceci est accompli en n'appliquant pas de valeurs delta proches de zéro.
- Correction: Le noeud Ease gère correctement l’interpolation entre les valeurs autres que 0 et 1.
- Correction: La modification de la valeur par défaut d'une variable struct ne provoque plus la déconnexion des broches.
- Ajout d'informations à l'outil de recherche Blueprints pour distinguer les Blueprints obsolètes des Blueprints non indexés.
- Noms de fonction incohérents corrigés dans Blueprint Editor.
- Correction: La chaîne PostConstructLink est correctement terminée lors de la reconnexion d'une classe Blueprint.
- Correction: Une erreur du compilateur Blueprint qui pouvait survenir lors du basculement de la sortie d’une fonction d’interface vers une entrée a été corrigée.
- Correction: Un bug qui pouvait provoquer un crash après la suppression forcée d'un Blueprint référencé par un autre a été corrigé.
- Correction: Un bug qui pouvait provoquer un plantage lors de la recherche de Blueprints après le changement de langue a été corrigé.
- Correction: L’utilisation de variables d’objet locales dans une fonction Blueprint ne se bloque plus.
- Correction: Les canaux de collision personnalisés ne seront plus désynchronisés avec leurs noms associés.
- Correction: L'erreur de compilation Blueprint ne se produit plus lors de l'utilisation d'un nœud SpawnActor pour un acteur avec un membre struct exposé à travers le nœud.
- Correction: un bug qui laissait les nœuds de graphes réduits dans un état non valide après en avoir annulé la suppression.
- Correction de bug: Correction d'un bug qui empêchait les références de variable dans une fonction d'interface d'apparaître dans une recherche Blueprints.
- Correction: Les tableaux de TimerHandles ne seront plus effacés lorsqu’on essaiera de supprimer un seul élément.
- Correction: Les fonctions Blueprint dans les Blueprints qui implémentent une interface sont désormais consultables.
- Correction: Les nœuds Blueprint ajoutés via des raccourcis clavier peuvent maintenant être annulés.
- Correction: Lors de la lecture dans l'éditeur avec un serveur dédié exécutant in-process, les appels de fonctions esthétiques ne seront plus ignorés.
- Correction de bug: Correction d'un bug qui créait des variables mal formées via l'option "Promouvoir en variable" d'une épingle.
- Correction: Les paramètres de la fonction Blueprint affichent désormais correctement leurs valeurs par défaut.
- Correction: Les plans modifiés par un nœud de variable avec l'option "Remplacer la variable avec …" sont correctement marqués comme nécessitant une compilation.
- Correction: Les "Définir les membres dans [Struct]"noeud gère maintenant correctement les structures littérales référencées par le pin de sortie.
- Correction: Une erreur de cuisson pouvait survenir lorsqu'une interface de Blueprint n'était pas complètement chargée avant le Blueprint qui l'utilise.
- Correction: Une erreur de cookie pouvant survenir lors de la réduction d'une broche séparée avec une surveillance de débogage sur l'une des valeurs a été corrigée.
- Correction: Un plantage pouvait survenir lors de l'ajout, de la sélection ou de la suppression d'un nœud Blueprint.
- Correction de bug: Correction d'un crash pouvant survenir lors de l'application de modifications d'instance à un Blueprint (lorsque le Blueprint contenait un tableau d'éléments de texte).
- Correction: Un plantage pouvant survenir lors de la modification d'un tableau de structures Blueprint afin d'utiliser un type de structure différent.
- Correction: Correction d'un trou dans le chargement de dépendance cyclique, où d'autres Blueprints pouvaient être chargés au mauvais moment via le processus d'importation de texte (fichiers de configuration, etc.).
- Correction: les classes Blueprint héritent désormais correctement des métadonnées "HideCategories".
- Correction: Les Blueprints gèrent correctement la promotion de leurs fonctions lors de la suppression d’une interface.
- Correction: Invoquer Redo alors que le tampon de transaction était vide ne provoquait plus de plantage.
- Correction: Le comportement d'échelle de transformation incohérent après le remplacement du composant racine par glisser-déposer dans l'éditeur de plan directeur a été corrigé.
- Correction: Les recherches de références d’événements Blueprint incluent désormais les endroits où l’événement est appelé.
- Correction: Les classes Blueprint basées sur les acteurs utilisant un ou plusieurs nœuds d’appel de fonction latents (par exemple, Delay) dans le graphe d’événements ne plantaient plus dans l’éditeur après la recompilation.
- Correction: Le chargement d'un projet avec une structure et un plan directeurs cycliquement dépendant l'un de l'autre ne provoquera plus de crash.
- Correction de bug: Les personnalisations par instance sur un acteur faites à partir d'un plan directeur présentant de graves erreurs de compilation ne seront plus perdues lors de la résolution des erreurs de compilation du plan directeur.
- Correction: les éditions de propriété sur les composants hérités ne font plus qu'un plan ne soit plus uniquement basé sur les données
- Correction: L'arborescence des composants sera à nouveau mise à jour après une opération d'annulation / de restauration d'une action de pièce jointe dans l'éditeur de plan directeur. Cela a été accidentellement cassé dans la version précédente.
- Correction: L'Editeur ne se bloque plus lorsqu'un composant avec une balise "Dans" est ajouté à un Plan directeur.
- Correction: L'éditeur de plans ne se bloque plus lors de la modification du nom d'un composant par le nom d'un composant précédemment ajouté, puis restitué via la commande d'annulation.
- Correction: La cause principale d'une assertion potentielle à l'exécution a été corrigée lors d'une tentative de génération dynamique d'instances de classe Blueprint basées sur Actor avec un ou plusieurs sous-objets par défaut imbriqués créés via la construction de classes parentes natives.
- Suppression d'un avertissement de charge trompeur (se plaindre d'incohérences propriété / valeur) pouvant survenir lors du chargement de contenu cyclique.
- Amélioration de la logique de détection des clics de souris sur les broches avec des descriptions courtes, y compris des broches exec non étiquetées.
- Documentation améliorée sur les nœuds "RInterpTo" et "RInterpTo_Constant".
- Amélioration du message d'erreur pour les nœuds CreateEvent qui encapsulent un événement / une fonction qui ne correspond plus à la signature attendue.
- La messagerie d'erreur de chargement est plus descriptive pour les importations échouées d'objets de composant appartenant à Blueprint lors d'une charge de niveau.
- Temps de recherche Blueprint modérément améliorés.
- Démarrage optimisé ComponentTypeRegistry.
- Version révisée de FObjectInitializer :: InitProperties () et de la chaîne PostConstructLink pour les types de classe Blueprint afin de créer un chemin plus rapide pour l'instanciation de la classe Blueprint.
- Une certaine logique de validation de plan a été déplacée pour s'exécuter après l'élagage du graphe d'exécution, empêchant ainsi les nœuds inutilisés de bloquer le conditionnement.
- La fonction "Supprimer les variables non utilisées" considère désormais le noeud "Obtenir les valeurs par défaut" et supprime toutes les broches de sortie variables qui ne sont pas connectées.
- Le nœud "Obtenir les valeurs par défaut des classes" est mis à jour correctement en réponse aux modifications structurelles de la classe Blueprint (par exemple, l'ajout et la suppression de variables).
Coeur
- Nouveau: Ajout d’aides à la vérification d’allocation pour faciliter le suivi de la libération des mêmes pointeurs plusieurs fois.
- Nouveau: Ajout de la fonction ChangeExtension à FPaths pour modifier l’extension d’un nom de fichier.
- Nouveau: Ajout du périphérique de sortie contenant uniquement de la mémoire, qui sera utilisé par défaut dans les config de livraison dans lesquelles la journalisation est activée.
- Ajout du paramètre -logtomemory en ligne de commande pour forcer le journal de la mémoire dans d'autres configurations.
- Ajout du paramètre -nologtomemory en ligne de commande pour forcer la journalisation des fichiers lors des tests et de l'expédition.
- Le journal de la mémoire sera sauvegardé dans le fichier à la sortie (dans les configs non-expédition) et toujours attaché aux rapports d'incident.
- Nouveau: Ajout de SCOPE_SECONDS_ACCUMULATOR qui chronométra son étendue en secondes et l’enregistre avec la statistique d’accumulateur fournie.
- Nouveau: Ajout de paramètres pour améliorer le contrôle sur le comportement de la fenêtre.
- Vous pouvez contrôler si la fenêtre verrouille la souris lors de l'acquisition.
- Vous pouvez contrôler si la fenêtre acquiert la capture au lancement de l'application (activation de la première fenêtre).
- Nouveau: Ajout de statistiques supplémentaires au groupe pakfile.
- Nouveau: Ajout de la possibilité de filtrer les arguments de ligne de commande à partir des journaux.
- Nouveau: possibilité de limiter le nombre d'anciens fichiers ini conservés sur le disque par le moteur. La valeur par défaut est 10 et est configurable via [LogFiles] Paramètre ini de MaxLogFilesOnDisk.
- Nouveau: La commande stat 'dumpnonframe' prend désormais un nom de groupe facultatif, qui sera utilisé pour filtrer la sortie.
- Nouveau: lors de la cuisson, les données en vrac non en ligne peuvent être écrites dans un fichier ubulk séparé, à côté du uasset original.
- Cela nous empêche de rompre la contiguïté de lecture de fichier lorsque vous utilisez des fichiers pak, car vous devez ignorer ces données en vrac non lues afin d’atteindre le fichier suivant.
- Activé avec UseSeperateBulkDataFiles = True dans le [Core.System] section du fichier ini du moteur du projet.
- Nouveau: Permet aux applications de s'assurer qu'elles ont été exécutées via le lanceur.
- Nouveau: Modification du rapporteur d'incidents pour qu'il respecte le filtrage des paramètres de ligne de commande lorsqu'il est activé via la définition du projet.
- Nouveau: Modification de la sérialisation des FNames afin de supprimer les coûts de temps de chargement inutiles dus au chargement des entrées FName.
- Nouveau: FMath :: FindDeltaAngle est obsolète et divisé en FindDeltaAngleRadians et FindDeltaAngleDegrees. La fonction d'origine utilisait des radians.
- Nouveau: GitHub 2041: Autoriser FMaintenance :: DeleteOldLogs dans la configuration USE_LOGGING_IN_SHIPPING.
- Nouveau: amélioration des performances de l’annulation des demandes d’IO.
- Nouveau: améliorations et optimisations apportées au système de signature pak.
- Stockez les CRC chiffrés de chaque bloc de 128 Ko du fichier pak dans un fichier sig séparé à côté du fichier pak.
- Fond décrypter les signatures si possible.
- Nouveau: les propriétés d’entier sont maintenant correctement converties lors de la désérialisation si elles ont été enregistrées sous un type d’entier différent, par exemple. enregistré en tant que int16, chargé en tant que uint32.
- Nouveau: les objets d'expression matérielle qui ne sont pas requis dans la génération cuite seront désormais supprimés des packages cuits.
- Nouveau: Module pour les jeux afin de s’assurer qu’ils ont été lancés dans le lanceur, ils sont donc à jour.
- Nouveau: Nouveau commutateur de ligne de commande pour UnrealPak, "-TestEncryption", qui exécute des tests sur la fonctionnalité de signature de clé asymétrique.
- Nouveau: Optimisations pour FBigInt.
- Nouveau: les plugins pour les projets peuvent maintenant être optionnels. Le projet ne manquera pas de se charger s’ils ne sont pas trouvés.
- Nouveau: prévention de la triche via ConsoleVariables.ini.
- Nouveau: les programmes rechercheront également des plug-ins dans le répertoire du projet si le fichier de projet est spécifié dans la ligne de commande.
- Nouveau: UnrealSync a été supprimé de la base de code.
- Nouveau: lorsque DirectoryWatcher ne parvient pas à déplacer un fichier, il enregistre désormais l’espace disque restant.
- Nouveau: lorsque le pilote graphique tombe en panne, le moteur s'assigne afin que nous puissions envoyer un rapport d'incident.
- CrashReportClient va maintenant essayer d'initialiser Slate Renderer plusieurs fois avant d'abandonner, auquel cas il enverra le rapport d'incident en mode sans assistance.
- Nouveau: Ajout de la possibilité de définir un statut de sortie dans un programme UE4 (implémenté uniquement sous Linux).
- Nouveau: Ajout de compteurs de performance du serveur pour l'espace disque et la mémoire disponible.
- Nouveau: les remplacements Ini sont désormais utilisables dans les versions d’expédition des serveurs.
- Nouveau: L'ordre des tâches XGE est garanti pour plus de 10 versions.
- Nouveau: le temps d'inactivité peut être exclu des diagrammes FPS.
- Nouveau: le composant de capture de réflexion, l’animation sous UV, le nœud audio et l’expression de matériau ne seront plus chargés sur des serveurs dédiés.
- Correction: Les fichiers de configuration ne seront plus sauvegardés avec les chemins de répertoire de jeu réels. Copier le projet dans un autre dossier n'entraînera plus d'avertissements ni d'erreurs.
- Correction: Le registre de ressources cuit contient maintenant des références de carte de niveau inférieur dans les données de graphique de dépendance.
- Modification du message d'avertissement lorsqu'aucune DLL de profileur externe n'est disponible dans un message de journal plus convivial (il ne s'agit pas d'une situation d'erreur).
- Correction: La panne a été corrigée lors de l'analyse des chaînes de clé de chiffrement.
- Correction: correction d'un crash rare où un éditeur de liens serait libéré à mi-chemin de EndLoad (), mais avant qu'il soit terminé.
- Correction: correction d'un problème d'annulation des charges de paquet quand il y avait encore des paquets en file d'attente. (Nous remercions Takeshi Hida de Namco Bandai Studios.)
- Correction: correction de l'analyse du paramètre de ligne de commande "NoLoadTrackClear".
- Correction: Les appels récursifs dans le profileur rapportent maintenant des statistiques correctes.
- Correction de bug: Correction d'un crash avec la sauvegarde d'un niveau> 2 Go, bien qu'il puisse y avoir d'autres crashs.
- Correction: le gestionnaire FLinkerLoad corrige:
- La fonction GetLoadersWithNewImportsAndEmpty ne vide plus le mauvais tableau.
- La fonction DissociateImportsAndForcedExports est importée uniquement dans les versions non cuites.
- Bugfix: Corrected bad data in min/max/average inclusive times in the profiler and added min/max/average number of calls. Also fixed event graph tooltip not displaying correct values.
- Bugfix: Compile button no longer disappears.
- Bugfix: MD5Hash LexicalConversion::FromString now produces correct results.
- Bugfix: Fixed shutdown crashes due to illegal StaticClass usage.
- Bugfix: The time reported when hot reload is triggered via the IDE is now accurate.
- Bugfix: Fixed UnrealHeaderTool.exe's error code when -warningsaserrors is specified.
- Bugfix: The "-unversioned" flag is no longer ignored when cooking.
- Bugfix: Mirroring by using negative scale on an attachment or Skeletal Mesh Component is fixed. Note that because Skeletal Mesh Components are animated, this can cause a performance hit.
- Bugfix: The function NewObject
(Outer, ExplicitClass) will now assert if ExplicitClass is not actually a subclass of T. This avoids potential memory corruption. - Bugfix: Fixed incorrect asset loading in Cooked game data.
- Bugfix: The engine will no longer display message boxes when a D3D device is removed/lost if the engine was running in unattended mode.
- Bugfix: Unreal Automation Tool will no longer eat backslashes when parsing the command line.
- Bugfix: Fixed loading PortalRPC and related modules on the server.
- Bugfix: Fixed FPS charts being generated wrong during multiple runs.
- Memory profiler loads real-world captures in reasonable time (minutes instead of hours).
- Reduced memory usage by the profiler by about 50%.
- Reduced peak memory usage when async loading by 5.5x to 10x.
- Improved asset registry redirector resolution to account for circular dependencies.
- Improved live connection handling in the profiler.
- Tagged Properties that were previously serialized but are no longer (typically because they were made transient) will no longer be loaded, even if their type has also changed.
- When loading an object with duplicated lazy object pointer GUID, the engine will no longer generate a new GUID. Instead, It will invalidate the old GUID to avoid non-deterministic cooked builds.
- Increased server FPS cap from 120 to 1000.
- When running -server, shaders will not be compiled.
Editor and Tools
- New: Added a warning message when an Hierarchical LOD cluster exceeds 65536 vertices for mobile target-platform projects.
- New: Added aggressive filtering to the session frontend profiler with the 'AF' checkbox next to the filter text. This rebuilds the stats tree, removing non-matching options and reparenting stats of identical names such that thread time for a particular stat is visible in a single tree row.
- New: Added an option ("r.SaveUncompressedEXRFrames") to save uncompressed high res screenshots.
- New: Added AssetUserData support to Animation and Texture assets.
- New: Added bake and reduce selected keys or whole curve to the curve editor tools.
- New: Added ScanFilesSynchronous to the Asset Registry interface, which is useful to force scan specific files that you have a TAssetPtr or StringAssetReference to.
- New: Added support for a scene depth picker. It's currently used for focus depth sampling for the new Cinematic Camera Actor.
- New: Added the ability to choose the world in the scene outliner.
- New: Added view mode for visualizing Hierarchical LOD system behaviour.
- New: Alt-Tab between multiple PIE windows should behave much closer to how Alt-Tab between standalone games would behave.
- New: Made curve editor colors consistent for X, Y, and Z channels. The colors are red, green, and blue respectively. All other curves are gray by default.
- New: Many improvements to the Rebuild Lightmaps automation script (map checkouts, better errors, email notifications, etc.).
- New: Map text box in the editor now converts paths to long package names making them more portable.
- New: Now allow AssetUserData-derived Objects to be added to assets in the editor via details panel.
- New: Polished Hierarchical LOD outliner and behaviour.
- New: 'Recently Used Levels' and 'Favorite Levels' now hold long package names instead of absolute paths. This makes them project relative, which means they will remain valid even if the project location changes.
- New: Separated input and output snapping in the curve editor into two different toggles.
- New: SplineComponents now have a debug render feature, allowing them to be visualized in-game in non-shipping builds, or in-editor even when not selected.
- This can be enabled with the Splines show flag (or 'show splines') from the console.
- It can also be enabled or disabled per-instance with the SetDrawDebug function on SplineComponent.
- New: The editor now supports many new methods of opening new asset editors. You can choose where tabs open with a great deal more options in Editor Preferences > Appearance > Asset Editor Open Location. This will reset the 'always open asset editors in new windows' option, it completely replaces and enhances that option.
- New: The eye dropper in the color picker can now be cancelled by pressing Esc, or completed by clicking the Left Mouse Button.
- New: UnrealGameSync: Mouse wheel rotations no longer switch projects if the selected project box has focus.
- New: UnrealGameSync: Pressing Ctrl-C with a change selected will copy the changelist number to the clipboard.
- New: UnrealGameSync: Status panel now shows the currently selected stream, and clicking on it gives a menu allowing fast-switching to another stream.
- Bugfix: Fixed an issue where .ini files could have a double extension (.ini.ini).
- Bugfix: Pasting multiple lines of text into a string or text field in the property matrix no longer leaves the "r" character in windows platforms.
- Bugfix: Fixed color properties not receiving the correct values in Sequencer.
- Bugfix: Drag-and-drop preview actor now appears at the proper scale.
- Bugfix: Editor no longer emits a log warning when selecting an actor while in Simulate mode.
- Bugfix: Child Actors can no longer be picked for an Actor reference property in the details panel.
- Bugfix: Curve editor no longer crashes when box selecting outside the bounds of the viewport.
- Bugfix: Fixed a bug that caused PIE standalone games to launch in fullscreen.
- Bugfix: Trying to reset an interface array property with empty entries no longer causes a crash.
- Bugfix: Viewport settings are correctly saved when shutting down the editor.
- Bugfix: Fixed an issue where text properties wouldn't notify or transact (for undo) correctly when they were edited.
- Bugfix: Modifier keys are registered correctly on PC even if both the modifier and another key were pressed in same frame.
- Bugfix: Color picker’s size is fixed to prevent it from being off-screen.
- Bugfix: Crash in Curve Struct Customization when no objects were selected for editing.
- Bugfix: Fixed crash which could occur when diffing blueprints if the SkeletonGenerated class for a particular revision was null.
- Bugfix: Ensure no longer fires when editor mode input handlers activate other modes.
- Bugfix: Fixed issue where Editor would attempt to launch on iOS if the project was both a code project and used plugins.
- Bugfix: Merge Actor functionality will now combine material sections in the final mesh.
- Bugfix: Fixed rare crash in FlushPressedKeys on PIE shut down.
- Bugfix: Fixed rare tooltip related crash.
- Bugfix: Slate numeric drop-down now updates from combo box values if text is selected.
- Bugfix: Slate throttling no longer prevents viewport resizes from working properly.
- Bugfix: Fixed the "Make collection from referenced assets" feature in the Reference viewer.
- Bugfix: The class picker filter’s behavior now matches all other in-editor filters.
- Bugfix: Fixed various crash bugs in the mesh painting tool.
- Bugfix: Levels will no longer be dirtied when launching standalone from the editor.
- Bugfix: Moving parent & grouped child actors no longer results in deltas being applied twice.
- Bugfix: Fixed some Sequencer tracks incorrectly replaying all keys in reverse when looping forward or backward.
- Bugfix: Undo/Redo after using Replace Actors no longer crashes.
- Bugfix: Updated ExampleLibrary included in Third Party Plugin example so that it can be built and loaded on Mac.
- Bugfix: Now only .FBX or .T3D files are accepted as importable types. Previously, an unsupported type would lead to an editor crash.
- Made the Config Editor button more visible.
- Bugfix" Fixed a potential crash when managing your favorite levels.
- Bugfix: Fixed a crash when changing Media asset path.
- Updated the VR In-Editor Tutorial.
- UnmappedTexelsPercentage is now 100-based.
- When a custom build step is used, if it's async, we now advance the build step upon completion. Otherwise, we just continue to work on the same async build step.
- The Landscape In-Editor Tutorial now makes sure you have a Landscape before allowing the tutorial to continue to the next step.
- The auto-reimport settings have been changed so that "Detect Changes on Startup" defaults to true. There is a prompt every time a new source asset has been detected, so the user can veto the auto-reimport if desired.
- Added Vulkan Preview Enable to Experimental and hide it if Vulkan support is not compiled.Clarified the function of the "Import" option in the File menu. This, and “Import Scene”, have now been combined into a single option 'Import Into Level'.
Content Browser
- New: Added built-in type category for Media assets.
- New: Added UI action for creating new content browser folders.
- New: Sorting asset type categories alphabetically.
- Bugfix: Downgraded an assert in Path View’s Load Settings function to avoid a common crash when a saved path no longer exists.
- Bugfix: Fixed a crash when pasting a path containing a class into the asset view of the Content Browser.
- Bugfix: Fixed a rare crash re-importing a mesh into the content browser.
- Disabled 'Show in Explorer' context menu option (in Content Browser) for newly created/unsaved assets.
Paysage
- New: Added ability to expand landscape bounds.
- New: Added support for baking landscape material world position offset into collision for collision mip settings other than 0.
- New: Added support for Landscape grass to use the landscape's static light/shadow maps through the "Use Landscape Lightmap" setting in the Landscape Grass Type. This doesn't look quite as good as dynamic lighting and shadowing, but it is much much cheaper.
- New: Landscape can now use material world-position offset in static lighting calculations. This can be enabled via "Use Material Position Offset In Static Lighting" on the landscape actor.
- New: "Random Scale" option for Landscape Grass. Works just like the random scale options for foliage.
- New: PNG heightmaps are now supported in world composition's tiled landscape import.
- New: You can now set a different LOD for Landscape simple collision and full detail collision. If the simple collision LOD is not set or is set the same as the full collision LOD, they will use the same collision object (as before).
- Added better input filtering for "Landscape Layer Blend" material node. Now it won't allow "texture object" (etc.) to be connected, and the height inputs won't accept material attributes (only the layer inputs).
- Added warnings when trying to use the Landscape Visibility Tool without the landscape material having a "Landscape Visibility Mask" node. Just add the "Landscape Visibility Mask" node to the material and link it to the "Opacity Mask" output (doesn't matter that it's disabled, and you can leave the material as "opaque" blend mode) and Landscape will handle the rest.
- Bugfix: Fixed bounds calculation for landscape splines. This fixes the issue with the first landscape spline point being invisible and later points flickering.
- Bugfix: Crash fix when undoing following component whitelist changes that were made with [+]/[-] + [Click].
- Bugfix: Landscape components being perfectly flat no longer causes bounding size to be 0.
- Bugfix: Landscape and foliage tools now work in orthographic viewports.
- Bugfix: Landscape editor updates viewports properly in non-realtime mode.
- Bugfix: Landscape grass now updates when using a material instance as the landscape material and changing parameters.
- Bugfix: Landscape spline lines show up properly on flat landscapes.
- Bugfix: Fixed layer allocation issues when undoing after a layer is fully painted away on a component This could cause multiple layers to be allocated to the same texture channel, with very bad visual results.
- Bugfix: Fixed LODFalloff setting on landscape getting reset when using the "Change Landscape Component Size" tool.
- Bugfix: Removed stalls when choosing layer infos in the "New Landscape" dialog by not loading layer infos that aren’t needed.
- Bugfix: Fixed up broken references between Landscape Render and Collision components on load. This was causing a few issues ranging from crashes to collision not updating when sculpting.
- Bugfix: Fixed a crash when calling Editor Apply Spline with a null spline component. The function also no longer does anything in PIE (it's for Blutilities, not runtime).
- Bugfix: Fixed a crash when entering landscape mode with a landscape selected while simulating. Landscape infos are no longer created for PIE/Simulate landscapes, as they were empty anyway.
- Bugfix: Loading landscape projects that use tessellation no longer causes a crash.
- Bugfix: Fixed shader compile errors when applying a speedtree material to a landscape spline.
- Grass will no longer tick in-game if there is no grass on a given landscape.
Material Editor
- Bugfix: Fixed a crash which would occur when pasting a material function call node from one project into another in which it is not defined.
- Bugfix: Landscape layer blend nodes now updating connections correctly when an input is changed from weight/alpha (one input) to height blend (two inputs) or vice-versa.
Matinee
- New: Added "Enable Group" option so that you can disable certain groups if you want.
- New: You can play multiple animations at the same time if the slot nodes are in different groups.
- Bugfix: Fixed incorrect audio playback when scrubbing before stopping playback.
- Bugfix: Dragging a selection box outside of the Matinee window will no longer crash the editor.
Cascade
- Bugfix: Fixed crash when using "Convert to Seeded" in Cascade.
Persona
- New: "Bone Draw" was on/off but now it has the options All, Selected, or None. The default is Selected.
- New: Added CPU skinning option to Persona.
- Bugfix: Pose evaluator customizations are now processed at the correct times. Properties will no longer be re-added after being removed from the details panel, which was leading to duplicate entries.
- Bugfix: Reported triangle count no longer duplicates count of cloth sections when set to show detailed mesh stats in Persona.
- Fixed crash when accessing selected graph nodes after doing an evaluator conversion in Persona.
- Fixed naming error in rotation multiplier node.
- Auto Adjust Floor to Mesh is now saved to config file.
Project Browser
- Bugfix: Fixed an issue when creating a copy of a project whose version is older than the current engine version. Previously, the copy would still be attempting to access assets from the original project, and would fail to package.
Static Mesh Editor
- Bugfix: "Generate KDOP Collision" will no longer generate bad collision data.
- Bugfix: Fixed crash in auto-convex collision tool when running on very small meshes.
Foliage
- New: Added foliage scalability group.
- By default the foliage scalability option will alter the rendered density of landscape grass between 0% (low) and 100% (high).
- It can also alter the density of any foliage types which opt-in to the behaviour via the "Enable Foliage Density Scaling" option in the FoliageType. This is recommended for foliage which doesn't have a gameplay-relevant effect
- Note: Foliage density scaling only applies in-game (including PIE), not in the editor, for both usability and technical reasons. Grass density scaling will still happen in-editor.
- Note: "Low" foliage setting will remove all grass and detail foliage.
- New: Added the ability to filter procedural foliage by BSP, StaticMesh, Landscape, or Translucent.
- You can now specify vertex color masking rules for each color channel when painting foliage.
Cooker
- New: Improved parallelisation of the cook commandlet by allowing packages to be saved while shaders / textures are caching.
- New: Resave lighting commandlet now supports building lighting as an option. Requires a video card installed on the machine to run.
- Bugfix: Fixed deterministic cooking issues caused by StaticMesh NavCollision import, class flags which were saved into cooked packages, and UParticleRequiredModule (which was dependent on load order).
- Bugfix: Content will no longer be marked as modified when garbage collecting.
- Commandlet tweaks made to Fixup Redirects and Cook-on-the-fly Server.
Sequencer
- New: Sequencer functionality unlocked in UMG.
- Event Tracks are now available.
- You can now call a PlayTo() function to play to a specified time in the animation.
- Bugfix: It is now possible to render out 4K image sequences using Matinee or Sequencer.
- Bugfix: The color gradient for color tracks now matches the colors in the color picker.
- Bugfix: Scrubbing attached audio tracks no longer causes a crash.
Gameplay Framework
- New: Added "cheatscript" functionality to CheatManager. This enables users to combine a set of console commands into a single script accessible via a single command.
- New: Actor and Component OnClicked/OnReleased events can now be triggered by more than just Left Mouse Button.
- PlayerController now contains a list of keys that will trigger a OnClick/OnReleased event if the cursor is over an Actor/Component that implements the event.
- OnClick/OnReleased events now have an additional argument that specifies which key was responsible for the event.
- New: Actor delegates OnTakeAnyDamage, OnTakePointDamage, OnActorBegin/EndOverlap, OnBegin/EndCursorOver, OnClicked/Released, OnInputTouchBegin/End/Enter/Leave, OnDestroyed, and OnEndPlay have all had a new parameter added to allow binders to know which Actor the event occurred on in cases where a single event entry point is bound to multiple Actors.
- New: A "Strength Over Time" Curve Float parameter has been added to Constant Force root motion source for scaling constant force over its duration.
- New: Added support for tag redirectors on Gameplay Tag structs. It works the same as Tag Containers using the GameplayTagRedirects section of Engine.ini. Invalid gameplay tags (which are no longer in the tag dictionary) will now warn at load time.
- New: Added "Velocity Mode On Finish" setting to Apply Root Motion Move To Force ability task node. Can now choose to set character velocity to a specific value when root motion ends.
- New: Added AbilityTask_WaitAttributeChangeRatioThreshold for triggering logic when the ratio of two attributes matches/stops matching threshold comparison.
- New: Added AbilityTask_WaitAttributeChangeThreshold that triggers when the state of an attribute starts/stops matching some comparison threshold.
- New: Added a configurable slow frame printout (prints out the length of any slow frames over a threshold of t.SlowFrameLoggingThreshold seconds).
- New: Added a method called "Get Default Resolution Scale" to Game User Settings to return the desired resolution scale based on Desired Screen Height and the current resolution.
- New: Added 'Get Game Time Since Creation' function to Actor.
- New: Added option to allow Camera Shakes to blend out when stopping according to their blend-out time (default behavior is unchanged).
- New: Added optional LineThickness parameter to HUD DrawLine function.
- New: Added support on listen servers for smooth interpolation of the local view of remote characters.
- CVar "p.NetEnableListenServerSmoothing" controls this. It is on by default.
- Added separate tuning settings for interpolation lag on listen server (ListenServerNetworkSimulatedSmoothLocationTime, ListenServerNetworkSimulatedSmoothRotationTime).
- This implementation interpolates the mesh location (similar to how clients interpolate it), but does not simulate movement of the collision capsule on intermediate frames where the server updates without a client update.
- New: Added Tau to Blueprint function library.
- New: Added the ability to filter DataTable Assets by their row using the metadata. (meta = (RowType="MyRowName”).)
- New: All Axis keys can now have their properties edited through the Input section of the Project Settings.
- New: Can now query if an Actor Is Replicated in blueprints.
- New: Primitive Component delegates OnComponentHit, OnComponentBegin/EndOverlap, and OnComponentWake/Sleep have all had a new parameter added to tell binders which Primitive Component the event occurred on in cases where a single event entry point is bound to multiple Primitive Components.
- New: Scene Component Snap To and the blueprint version of Attach To now return a boolean indicating success.
- New: Text Render Components can now specify a vertical spacing adjustment.
- New: Vertical Alignment can now be set from Blueprints for Text Render Components.
- Bugfix: Component overlaps now end (triggering the OnComponentEndOverlap event) whenever an overlapping component is destroyed.
- Bugfix: Child Actors of the Preview Actor being moved will no longer be collided against when snapping to ground.
- Bugfix: Child Actors will no longer bleed into other blueprint thumbnails.
- Bugfix: ChildActors now inherit their visibility from the owning component and actor visibility.
- Bugfix: Crashes related to WorldSettings not being found after hot reload when a game specific World Settings subclass is in use have been fixed.
- Bugfix: ApplyRootMotionMoveToForce ability task can now set Movement Mode to non-Falling modes.
- Bugfix: Customizations applied to a child actor from the parent construction script are no longer being lost when recompiling the blueprint of the child actor's class.
- Bugfix: Duplicate overlap events when moving the same component again during an overlap event no longer happen.
- Bugfix: Fixed a fatal error that could occur when loading a game's default map fails. This could happen if, for example, the asset for the default map specified in the project settings was deleted, and then the game tries to connect to a server and fails.
- Bugfix: Box Component, Sphere Component, and Capsule Component now update bounds when extent, radius, or capsule size change.
- Bugfix: Fixed bug in Gameplay Cue Tag details customization where the Notify field wouldn't refresh properly when the selected tag changed.
- Bugfix: Fixed cases where child actor component copies could be orphaned in the editor level.
- Bugfix: Fixed crash when a Child Actor Component is marked pending kill and does not get destroyed cleanly until garbage collection runs.
- Bugfix: A Sound Cue containing a Sound Quality node being referenced from a native constructor no longer causes a crash.
- Bugfix: Fixed crash when player stands in a Physics Volume that streams out. Primitive Components with Should Update Physics Volume set to true are prevented from continuing to reference Physics Volumes in a level that is streamed out.
- Bugfix: Fixed crash when tick function with a tick interval was disabled while awaiting rescheduling.
- Bugfix: Fixed editing Plane Constraint Normal on Movement Component not propagating to instances in the world after some edits.
- Bugfix: Geometry sweeps will now return FaceIndex if requested. This fixes foliage color masking paint mode not respecting vertex colors.
- Bugfix: Child actors that have a non identity root component scale will now be scaled correctly.
- Bugfix: Camera Anim FOVs are now correctly applied.
- Bugfix: Fixed issue where using BugItGo would result in the player to falling through the world.
- Bugfix: Fixed issues with character getting out of water when impacting objects above the surface.
- Bugfix: Player Controllers spawned in Standalone always return true in Is Locally Controlled.
- Bugfix: A potential PlayerState leak was fixed.
- Bugfix: Widget Component materials now work properly with Opacity Mask and Two-Sided Mode.
- Bugfix: Requests for a character to crouch to a half height smaller than the radius no longer call On Start Crouch with an incorrect Height Adjust value.
- Bugfix: Simulated character proxies no longer get stuck in falling if velocity reaches zero while there was encroachment without further network updates.
- Bugfix: When a sub-level set to be unloaded but with visibility state set to true, Is Streaming State Pending was returning the wrong value.
- Bugfix: Convert Transform To Relative (in Kismet Math Library) now performs the correct operation.
- Bugfix: Character Z velocity is maintained when trying to switch to default movement mode that goes through Walking but then immediately exits walking.
- Bugfix: Replicated Actors with a replicated Child Actor Component will no longer result in two copies of the Actor on clients.
- Bugfix: Using the Set console command during standalone games no longer crashes.
- Bugfix: Undo/redo of attachment changes of an IWCE component from another IWCE component and a BP constructed component now works correctly.
- Bugfix: When the console closes it now properly restores the viewport’s input state (both focus and capture).
- Bugfix: Fixed a crash during garbage collection calling Destroy Component on a sub-component.
- Bugfix: Crash no longer happens if the Game Singleton class specified in Engine.ini is invalid.
- Actor iterators will now include results for Actors in an associating level. This means that in Begin Play of sub-levels being streamed in, Actors in that sub-level will now be returned by functions such as Get All Actors Of Class.
- Actors can no longer fail to spawn due to mesh overlap with the geometry of a child actor.
- Added a warning log when trying to possess a Pawn when we don't have network authority.
- Added Blueprint-exposed function to get the closest one on a Skeletal Mesh to a point.
- Added Set Control Rotation From Pawn Orientation flag to AI Controller to control whether it copies the Pawn rotation to Control Rotation if there is no focus point.
- Added support for Character Movement being based on sockets (not just bones).
- Added teleport flag to Set Actor Rotation. Improved documentation.
- Destroyed child actors are always renamed.
- Changed Smooth Target View Rotation (in Player Controller) to use a tunable interpolation speed, Smooth Target View Rotation Speed.
- Engine Settings classes that cannot be found will now fallback to default class instead of crashing.
- Exposed Primitive Component functions Get Collision Enabled, Is Collision Enabled, Is Query Collision Enabled, Is Physics Collision Enabled functions to blueprints.
- FInterpTo function now treats negative values as well as zero as instant speed, consistent with other *InterpTo functions.
- Get Time Down, Get Key Value, Get Raw Key Value, and Get Vector Key Value now warn if used with AnyKey.
- Improved component & actor attachment API.
- Replaced enum-based attachment location with new per-component attachment rules.
- Fixed "Snap to Target, Keep World Scale" not working correctly when parent was already scaled.
- Improved linear smoothing for character movement under realistic network conditions with variable packet lag.
- Improved swimming movement behavior at water surface.
- Improved in-game console.
- Italian keyboards now have a usable default key for opening the console.
- Key presses on unbindable keys (e.g. multimedia buttons) no longer route to the player input system.
- Made walking on destructibles work correctly so that we can follow each chunk as they move.
- Improved On Teleported to avoid temporary falling state when entering water, maintain Z velocity correctly, and call Process Landed when going from falling to walking.
- Create Render State For Hidden Components bool is now accessible in game, not just in editor.
- Optimized spawning emitters to avoid redundant transform updates before registration.
- Post-Process weight in Camera Anims is now affected by scaling, including blending in/out.
- Procedural Foliage Component will now use the level bounds when a volume is not present.
- Removed redundant seek for world composition-related data inside the level package in cooked builds.
- We now send client-side camera updates (if enabled) when the Character is simulating physics. This prevents the character from losing network relevance when simulated (or attached to a simulated object).
- Static and skeletal mesh sockets now use the supplied Relative Scale. Older-format data will reset scale to (1, 1, 1) to avoid causing problems when upgrading.
- Timer Handles are now 64-bit values.
- Calc Radial Shake Scale (in Player Camera Manager) uses camera location instead of actor location, since actor location is not replicated to the server.
- Using wildcard operator with the "KismetEvent" or "ke" console commands will now only trigger the event on objects in the world in which it was triggered.
- Was Just Pressed, Was Just Released, Is Key Consumed, and Is Pressed now correctly handle AnyKey.
- When blending out Camera Anims, the blendout is not restarted, since this will cause a pop if non-immediate Stop is requested again.
- You can now run more than 10 Play in Editor sessions simultaneously.
Learning Resources
In-Editor Help
- Bugfix: "Next Tutorial" button now links to the designated tutorial.
Localization
- New: Added an Asset Localization context menu to the Content Browser. This enables you to create, edit, and view localized assets from any source asset, as well as edit and view source assets from any localized asset.
- New: Added methods to remap and restrict the available cultures.
- You can now use the config system to remap cultures (either in DefaultGame, DefaultEngine, or DefaultEditor), to deal with platform remappings that aren't natively understood by UE4.
- This is represented by an array of semicolon separated mapping entries: SourceCulture;DestCulture.
- The remapping is handled by FInternationalization::GetPrioritizedCultureNames.
- You can also now disable certain cultures that might be placeholder (either in DefaultGame, DefaultEngine, or DefaultEditor) in certain builds.
- This is represented by an array of potentially semicolon separated mapping entries: Culture[;BuildConfig[,BuildConfig,BuildConfig]](no build config(s) implies all build configs).
- The filtering is handled by FInternationalization::GetCulturesWithAvailableLocalization.
- New: Improved the culture fallback detection for Chinese (or any cultures that use scripts).
- If given a culture without a script code, we now try and work out what script should use based upon the available cultures.
- For example, if we were given "zh-CN", we would detect "Hans" (from "zh-Hans-CN") and then process "zh-Hans-CN", "zh-CN", "zh-Hans", and "zh" in order until we find one with matching translations.
- This allows you to use "zh-Hans" and "zh-Hant" for Chinese translations without running into issues on platforms that don't provide the script code.
- Bugfix: An issue was found and fixed with FText FFormatArgumentData that could potentially cause packages to fail loading in packages created prior to Release 4.11.
- Bugfix: Fixed a crash that could occur when using the Google Pinyin IME, the QQ IME, or the Sogou IME.
- Bugfix: Fixed localization for placement mode Cube, Sphere, Cylinder and Cone strings.
- Bugfix: Fixed the asset localization gatherer not reporting conflicts correctly.
- Improved the way localized packages are handled in UE4.
- Most of the localization concerns that had been added to the FPackageName API have been removed in favor of using FPackageName::GetLocalizedPackagePath in a few key places to perform package localization when loading.
- This change fixes an issue where the package localization wouldn't consider less specific cultures when loading packages (eg, if your culture was set to en-US, it wouldn't consider en packages), and also allows prioritized fallback of localized packages (eg, you may have an en-GB texture and an en texture, but only en audio).
- Literal escaped character sequences parsed from string literals are now un-escaped when gathering them for localization.
- UAT now stages all project translation targets.
Networking
- New: Added the ability to have single pass, partial network profile streams (i.e. you don't need to change maps to force it to do the final save).
- New: Added "demo.minrecordhz" cvar to set a floor on replay recording rate per actor.
- New: Added a new replication condition, COND_ReplayOrOwner, for replicating properties to replays as well as the owning connection.
- This is useful for properties that would normally be COND_OwnerOnly, but would also be used in replays.
- The Ability System Component’s Activatable Abilities’ replication condition is now COND_ReplayOrOwner, so that these abilities can be displayed in replays.
- New: Added support for async loading worlds when playing back replays (demo.AsyncLoadWorld 1).
- New: Added support for getting replay ID from the Network Replay Streaming interface.
- New: Downgraded some non-critical network logging from warning verbosity to log verbosity.
- New: HTTP Network Replay Streamer now caches downloaded info for more responsive playback/scrubbing.
- New: Overhauled IPv4/IPv6 and multicast handling.
- New: Recording actors for replays is now amortized more evenly across multiple frames. This helps smooth out spikes in CPU usage when recording replays.
- New: True network saturation detection support added.
- UNetConnection::RemoteSaturation contains a value of 0-1, which means the connection is 0-100% saturated.
- New: Implemented removal of expired transport nodes.
- New: We no longer replicate movement properties in replays now that we save this data externally.
- Added new replication conditions that exclude replays.
- Added ability to change replication condition of super properties.
- New: We no longer use package guid when determining if network connection is compatible. We now only use the checksum built from replicated properties (so as long we you don't change a replicated property in a package, it can load even if it differs on server/client).
- New : Removed SLIP overhead from network bandwidth stats. Also, added per-connection bandwidth stats.
- Bugfix: Using -notimeouts will no longer prevent a PlayerController from being destroyed if the player was explicitly kicked.
- Bugfix: Fixed an issue where servers would GC objects, and client would refer to it. We now allow the server to re-load these objects.
- Bugfix: Fixed a bug in Network Driver where a spawn-deferred actor (over multiple frames) could end up being considered for replication even though it hadn't completed its initialization.
- Bugfix: Fix bug where enums would use too few number of bits when serializing over network.
- Bugfix: Fixed a bug in how we clamp replay delta seconds, which could cause issues when the server was running in slomo, and keeps it consistent with how delta seconds are normally clamped.
- Bugfix: Fixed a crash that could occur when attempting to seamless travel while a replay is recording. This only affected non-editor build configurations.
- Bugfix: When trying to play a replay using the "demoplay" command in an Execute Console Command Blueprint node, there is no longer an indefinite hang.
- Bugfix: Fixed an issue that could cause replicated properties of actors statically placed in a map not to update when scrubbing to a new time in replays. RepNotify functions for these properties will now be called as well.
- Bugfix: Remote player controllers on a server are no longer incorrectly flagged as local player controllers after a seamless travel.
- Bugfix: Fixed an issue with certain components and actors that could have default values that differ from CDO. This would cause those properties not to replicate if they changed from their CDO to the default value.
- Bugfix: The demo.SkipTime cvar now works with negative values.
- Bugfix: Fixed issue where clients do not progress if they seamless travel faster than the server does.
- Bugfix: Tunnel default settings now save correctly. Also did a code and documentation cleanup pass.
- Bugfix: "AvgPing" perfcounter no longer reads as NaN.
- Bugfix: Fixed some network stats not getting updated without connections, causing stale values to linger.
- Compiled out tunnel support on non-desktop platforms.
- Added retry logic to HTTP Network Replay Streaming module.
- Lowered verbosity on rep layout history overflow (benign issue that can happen with latency/saturated connections).
- Separate reading/writing polling status for PS4 sockets, so we can properly wait the full timeout when we want to check read status.
- ServerReplicateActors has had a major refactor to make it more readable, removed unnecessary code as well.
- We've refactored how we save objects in the network stream, so we can now more easily skip over them if needed. The new method is also generally more stable.
En ligne
- Bugfix: Fixed an issue with HTTP response headers where header values that were set more than once in a single response would cause only the last setting to be remembered. It now is appended to the previous value with a comma. The same issue existed in HTTP requests, but instead of changing the behavior of SetHeader, there is now a new function called AppendToHeader that adds a value onto an existing header.
- Bugfix: HTTP Progress delegates are no longer called after the module that registered them has been unloaded.
Autre
- New: Added in support for pushing touch events to head mounted displays if they're supported by the device.
- New: Added user activity tracking API to Engine and hooked it up to the shutdown/crash analytics to add context to error reports.
- User activity is passed to MTBF analytics and to crash reports sent to Epic.
- Game programmers can use FUserActivityTracking::SetActivity().
- Blueprint users can use Set User Activity nodes.
- New: MTBF analytics is now an Engine feature (moved from Editor).
- New attributes for runtype (editor/game) and projectname.
- Controlled by new project settings in DefaultEngine.ini.
- Added support for SystemWideCriticalSections on PS4.
- New: Better visualization of unknown media durations.
- New: Audio track specs are now updated each frame to better support streaming media and variable streams.
- New: Windowed fullscreen is now the default window mode in game user settings.
- New: Added a separate log category for logging analytics events payload.
- New: Advanced selective download features for UE 4.12 updates include options for Art Tools and Target Platforms on the launcher.
- New: Advanced selective download features for locale install support which will allow the ability to download specific languages for smaller downloads on the launcher. This is dependent on games and apps taking advantage of this new feature.
- Bugfix: Fixed possible issue where console window from -log could spawn off screen due to errors saving values in the .ini files.
- Bugfix: Transitioning levels with a GearVR no longer crashes.
- Bugfix: Rendering no longer freezes on GearVR after sleeping and waking up.
- Bugfix: SteamVR is now able to initialize when the Oculus runtime is running.
- Bugfix: Fixed problems with Maximized Window mode using fullscreen mode's resolution for rendering and a bug that prevented users from increasing fullscreen resolution.
- Bugfix: Fixed support for MTBF on PS4 and Xbox One.
- Handling app deactivation callbacks and rejecting abnormal shutdowns in deactivated state on PS4.
- Handling app backgrounding callbacks and rejecting abnormal shutdowns in background state on XB1.
- Reporting abnormal shutdowns on PS4 as AbnormalShutdownPS4 since we can't tell the difference between crashes and abnormal shutdown on that platform.
- Bugfix: Fixed the black screen after Alt-Tabbing back into game in Native Fullscreen mode.
- Bugfix: The VR PIE analytics event now has a proper event name.
- Bugfix: Fixed a culling issue caused by late update on HMDs.
- Bugfix: Rewrote async media resolve handling code to prevent a race condition crash when a player is destroyed.
- Shader Compiler Environment now uses ANSICHAR instead of TCHAR strings to store values to save memory.
- Focus is restored to the default widget on window activation only if it wasn't activated with the mouse, so that for mouse activation the focus gets set to the widget under the cursor.
La physique
- New: Add the option to scale linear limits of physics constraints.
- New: Added map check warning for StaticMeshActors with collision enabled but no collision geometry.
- New: Added simulation space support and external forces to anim dynamics.
- New: Added validation to existing and incoming cloth chunks to make sure there are no more than 4 influences on that chunk. Existing chunks will not cause errors, but will log warnings.
- New: Expose contact offset values to project physics settings. This value overrides the cvar that already exists.
- New: Primitive data in physics assets can now be edited using the details panel.
- New: Simplify character physics code so that it pushes at impact. The old offset code is still available with flag.
- New: Added clamping of Friction, Restitution, Density and RaiseMassToPower properties of PhysicalMaterial.
- Bugfix: When a component's mobility is changed to static, its parent will no longer remain marked as simulating physics.
- Bugfix: Cloth behaves smoothly when changing LODs.
- Bugfix: Changing custom collision of blueprints now updates placed instances without needing a restart.
- Bugfix: Fix for radial force components applying impulses multiple times to destructible components.
- Bugfix: Hit notifications now properly report materials by face index.
- Bugfix: Set constraint works properly from construction scripts.
- Bugfix: Simulated physics objects no longer start to simulate before the level is fully loaded.
- Bugfix: Fixed vehicle up and down gear ratios, which were previously assigned incorrectly.
- Bugfix: Welding now works correctly when a group that is welded together is welded to another (i.e. one actor to another).
- Bugfix: Fixed actor collision enable changes not affecting destructible mesh components.
- Bugfix: BP callable functions that affect skeletal mesh component transforms now work when simulating physics.
- Bugfix: Cloth solver frequency can no longer drop below 1.
- Bugfix: Cloth update uses the skeletal mesh component update mode to decide on updates rather than render status.
- Bugfix: Collision drawing (in editor and game) works correctly on hidden StaticMesh instances.
- Bugfix: Fixed components not creating physics state when transform moves from invalid (small scale) to a valid transform. Now, a body is instantiated with the smallest possible scale.
- Bugfix: Fixed destructible mesh reimport crash due to LOD Models not being cleaned up.
- Bugfix: Unassigning cloth in Persona when the mesh has more than one clothing asset no longer causes a crash.
- Bugfix: Fixed ensure caused by empty bounds on destructible component when all chunks are inactive.
- Bugfix: Fixed issue with incorrect bounds for meshes that had Consider All Bodies enabled.
- Bugfix: Removed a memory leak in cloth (1.43 KB per cloth chunk per render creation) and unsafe memory management of all other vertex factories.
- Bugfix: Fixed required LOD bones when associating a cloth chunk that uses bones that aren't weighted to that LOD.
- Bugfix: Self-intersecting aggregates now clear self-collision bitmaps, which prevents broadphase crashes.
- Bugfix: If using fixed framerate, we sleep when performance is faster than expected.
Platforms
- New: Added support for deploying and launching to multiple targets from a single UFE command.
- New: Enabled IPv6 support on iOS and Mac.
- New: tvOS has been enabled in the binary release. This platform is still in an experimental state and similar to IOS. Only content-only projects can be packaged from Windows, but the full tool chain is available on Mac.
- Bugfix: Fixed an issue where FMath::RandHelper sometimes returned the upper-bound integer value on several non-windows platforms.
Android
- New: Binary build can now enable different Android architecture options if they are included with the installed platforms.
- New: Added ability to pass -Architectures and -GPUArchitectures to UBT on the command line, so that other Android Architectures can easily be built/distributed from UAT.
- -Arm64 versions added to binary build for now.
- New: Added addLibrary and removeLibrary to APL (contributed by robertfsegal).
- New: Added support for different Ant verbosity settings during packaging.
- New: An uninstall batch or script file is now written for packaged projects.
- New: Android Vulkan dynamic loader with fallback to ES2 is used if either the loader or driver is not available when Supports Vulkan is enabled.
- New: Deployment for Android now runs Ant with -quiet first, and will rerun without if there is an error to get the log.
- New: Updated to support NDK r11c.
- New: Android can act as server with OnlineSubsystemNull.
- Bugfix: Android movie playback now handles cases where the full surface is not used on some Android devices.
- Bugfix: Fixed a crash with the WebBrowser UMG widget when running on devices with Android 6.0.
- Bugfix: Fixed Android In-App purchase data reporting back with product identifiers not matching the pricing and descriptions.
- Bugfix: LoadString function for the Android UMG WebBrowser widget no longer allows the user to specify HTML text directly.
- Bugfix: Fixed UnrealBuildTool not honoring an override of the Android toolchain version in a project'sDefaultEngine.ini file.
- Bugfix: The engine now correctly gets the GooglePlay User's Alias and PlayerID when the External Login UI is used.
- Bugfix: Removed the hard-coded Use Unity Build variable in UBT for Android.
- Bugfix: Corrected SupportsVulkan check for Vulkan shader format (need glslang library, not SDK)
- Fixed permissions on new uninstall script on Mac.
- If NDK level set above 19 forces minSdkVersion to 21 or above to prevent installation on unsupported devices.
- Set the DT_SONAME field in linker (stops warning toast on newer Android versions).
- We now use a third-party vulkan header if NDK11 or VULKAN_SDK are not available.
- Added additional architecture support for stripping symbols.
- Added cxa_demangle.Build.cs and dependency in Core instead of hiding it in UEBuildAndroid.cs as a hardcoded link.
- Added requirements to ARM64 and x86_64 tooltips.
- Media urls with dots but no actual extension can now be used.
- Vulkan-only Android code builds can be made.
- Added protection against calling Input Device methods added in KitKat on older devices.
- We now broadcast a Media Event called Media Opened when media opens successfully.
- Moved an audio warning to show proper error result code.
iOS
- New: Delta Copy is now bundled with UE4 and no longer needs to be installed separately for use in remote compiling.
- New: Performing a Package in the editor will now create an Xcode-compatible archive file. This is still a work in progress.
- New: tvOS devices are properly filtered out when launching to an iOS device, and similarly, iOS devices are filtered out when launching to a tvOS device.
- Bugfix: Intermittent crashes on Metal due to over-releasing of texture resources have been resolved.
- Bugfix: Fixed an issue which prevented enabling the IOS Online Subsystem when only In-App Purchasing was required.
- Bugfix: Fixed an occasional crash on IOS during startup on iOS 9 devices.
- Bugfix: Fixed occasional rendering and animation issues when compiling an IOS game for smaller size.
- Bugfix: Support for iPhone SE device profiles works correctly, and support has been added for iPad Pro 9.7 device profiles.
- Disabled Multiple Render Targets in Metal on A7 devices, since it doesn't support a wide enough MRT for GPU particles
- Re-enabled metal on iOS 8 devices as a shader compiler issue has been fixed by Apple in IOS SDK 9.3.
Linux
- New: Added compiler hints so branches in check() are expected not to be taken.
- New: Added code for CPU identification to Linux platform abstraction layer.
- New: Crash folders on Linux now have predictable names based on crash GUID, which is passed in on the commandline.
- New: We now attempt to set exec permissions before executing files.
- Bugfix: Fixed crashes in crash handler when handling stack overflow. Adds 128KB of signal stack per thread.
- Bugfix: Fixed CrashReportClient crashing in unattended mode.
- Bugfix: hlslcc now strips asserts in Release.
- Bugfix: Logs are no longer cut on normal quit on Linux.
- Bugfix: We now switch to "crash malloc" on crashes and eliminate a rare deadlock during handling signals.
- Linux crash/ensure data will now be saved in Saved instead of Binaries, making it easier to run from read-only media.
- Case-insensitive search is used in the file open dialog on Linux.
- To avoid excessive spam, warnings are no longer forwarded to syslog().
- Linux crash handling is improved by ignoring signals except where explicitly handled, and forcing vfork() when starting crash reporter.
- Hitches are reduced when generating ensure() callstacks by not parsing debug info. This also reduces memory consumption.
- Ensure() is now reported via the crash reporter.
- SIGTRAP is now treated as crash.
Mac
- New: Added a "-metaldebug" command-line to force enable the Metal validation layer when running outside Xcode.
- New: Added editor settings for selecting the direction of scroll gestures for 3D and Ortho viewports. This allows Mac users with trackpads or Magic Mouse to use Natural scrolling.
- New: Crash logs produced while running commandlets from AutomationTool are now printed to the output log.
- New: Enable full PostProcessSelectionOutling on OpenGL versions lower than 4.2.
- New: Apple's Driver Monitor stats are exposed into UE4 stat groups. DriverMonitor has the common stats, DriverMonitorAMD, DriverMonitorIntel, and DriverMonitorNvidia have the vendor/GPU specific stats.
- The Metal and OpenGL RHIs update the driver monitor stats group for the current GPU at the appropriate time.
- These stats show details of GPU core, memory and bus utilisation that can be helpful when profiling.
- New: Implement Async Compute support in MetalRHI for AMD GPUs which provide it.
- New: Implement Metal support for index buffer SRVs.
- New: Implemented operation threshold submission of Metal command buffers to keep the GPU busier and not just idle waiting for the CPU.
- Whenever the Console Variable "rhi.Metal.CommandBufferCommitThreshold" is set to a positive value and the current command buffer has >= draw/dispatch operations outstanding then the command-buffer will be committed at the next encoder boundary.
- New: Initial implementation of parallel execution in Metal RHI to support command-encoding across multiple threads.
- New: Metal object lifetime tracking has been reimplemented as stats in the stat-group, though the old system is maintained as a debug-only tool that could (and probably should) be extended to track over/under-release bugs.
- Currently the texture count will be distorted by texture SRVs so this will need improvement, but other stats should be reliable.
- New: The mechanism to explicitly select the GPU to use on Mac has been unified so that it applies to both Metal and OpenGL.
- The value is accessible from Mac Platform Misc's Get Explicit Renderer Index function and is specified as a 0-based index into the GPU listed in Get GPU Descriptors. Using a value of -1 will disable explicit selection and let the OS choose the default device.
- The value can be set via the console variable 'Mac.ExplicitRendererID', by specifying the command-line '-MacExplicitRenderer=X' (where X is the index) or selected in the Mac Graphics Switching plugin's settings when using the Editor.
- New: Added an explicit, experimental option for using OpenCL to accelerate the convex decomposition tool on Mac rather than assuming that it is desirable (defaults to off).
- This may prevent a crash on Nvidia's OpenCL drivers while enabling AMD & Intel users to run it if desired.
- New: Added implementations of unpackHalf2x16, countbits, firstbitlow & firstbithigh for Metal.
- New: Added autorelease pools around sensitive functions in Metal RHI such as Metal Viewport's Get Drawable call to ensure that we control all object lifetimes.
- New: Added shader macro STENCIL_COMPONENT_SWIZZLE to access the stencil component of a texture – not all APIs can swizzle it into .g automatically.
- Bugfix: Fixed a Metal validation error when trying to set a 0-sized scissor rectangle.
- Bugfix: Fixed broken Metal uniform buffer allocation – the old Suballocate routine had been interfering with the sized-pools and potentially causing incorrect buffer usage.
- Bugfix: Metal shaders now compile properly when Xcode isn't installed by falling back to the slower runtime compiled text format.
- Bugfix: Fixed crashes when enabling ES2 emulation in the Editor when running on Mac Metal by adding an ES2 emulation shader platform.
- Bugfix: Implementation of BeginRenderingPrePass was changed to clear the depth and stencil buffers only when it is asked to.
- Bugfix: Metal reporting of GPU memory through the RHI is correctly treated as being in bytes, not MB.
- Bugfix: Fixed synchronisation errors caused by overflowing the ring-buffer inside each Metal context. Instead, we now reallocate it so that it is sufficiently large.
- Bugfix: GetPrimaryGPUBrand now returns the primary GPU as expected, which for dual GPU Macs means the discrete GPU connected to a display. Where no GPU is connected to a display, the first GPU will be reported.
- Bugfix: The intermittent errors with editor selection outline on AMD 9000 GPUs under Metal (M295X & M395X) have been fixed.
- Bugfix: Editor windows no longer reorder on Mac on app activation when a notification is on screen.
- Bugfix: Fixed Matinee video recording when using Metal to render on Mac by inserting an intermediate texture before drawing to the screen. This ensures there is always a render-target to draw to and read from.
- Bugfix: Fixed support for custom icon for non-monolithic games on Mac.
- Bugfix: Compilation via Distcc on Mac OS X was fixed.
- Bugfix: A submit-and-wait is enforced in Metal when contexts are being destroyed to prevent kernel panics in drivers which continue to process the now-abandoned command queue and encounter invalid resources.
- Bugfix: Only spawn one ShaderCompilerWorker for each physical core on Mac as they consume so much memory and can cause OS X to suspend all running processes to display the ''Out of Application Memory" dialog, which requires user interaction.
- Bugfix: Removed erroneous declaration of SM4_PROFILE and SM5_PROFILE when using METAL_SM4_PROFILE/METAL_MRT_PROFILE /METAL_SM5_PROFILE respectively and fixed up the few locations that care about these defines explicitly.
- Bugfix: Fixed a memory leak in Metal by caching a temporary texture created in order to render the Material Editor properly.
- Bugfix: Identifying the selected GPU in Mac OpenGL no longer crashes.
- Bugfix: Added a workaround for a bug in OS X 10.11.5 that can cause a hang when an application switches the active GPU on a dual-GPU MacBook Pro.
- We now use managed memory on Mac Metal for buffers.
- We capture the system.log contents from the moment we boot to the point we crash to report GPU restarts and other system errors not written into our own logs.
- Changes have been made to the shader-cache's default GameVersion that ensure only caches valid for the current build will be used. This is intended to keep load time growth down to what is strictly required.
- Construction of command encoders in MetalRHI are deferred on AMD GPUs to eliminate empty encoders that don't perform a clear operation. This improves performance slightly.
- Mac compile times in Development & higher have been improved at the expense of optimisations in Slate/Editor code wrapped with PRAGMA_DISABLE_OPTIMIZATION_ACTUAL or PRAGMA_ENABLE_OPTIMIZATION_ACTUAL. These pragmas are defined for Apple LLVM 7.3.0 and higher.
- Metal is disabled on Mac OS X versions prior to 10.11.4 because the drivers are too buggy. Many issues that users would encounter have been fixed in 10.11.4.
- Point-light shadowing on Intel's Metal driver as of 10.11.4 is enabled.
- We no longer set shader resources from current uniform buffers in OpenGL when performing a shader predraw – the resources are tracked and set by the shader cache explicitly, so this may just access stale data.
- Enabled Metal resource lifetime delay on all platforms, not just iOS, to try to address intermittent invalid resource errors.
- Implemented the same stencil SRV fallback on OpenGL as for Metal by executing a blit at resource bind time so OpenGL versions at or below 4.2 can sample depth and stencil at the same time.
- Implemented GetTextureBaseRHI for Metal to avoid unnecessary virtual function call chain to resolve the FMetalSurface* from an RHI texture.
- Improved the shader cache code documentation.
- In Metal, scissor rect is set correctly through the state cache so that it remains in-sync when rendering and things don't clip incorrectly.
- Wants Selection Outline defaults to true so that editor selection outlines work reliably.
- Fixed a typo in Metal Features enum.
- RHI Block Until GPU Idle has been implemented on Metal.
- On Mac, we probe IORegistry to provide basic GPU details which is used to implement Get GPU Driver Info and correctly specify the GPU capabilities in Metal RHI.
- For performance reasons, we only verify the vertex attribute layout for Metal in debug builds or when using development with the Metal debug layer turned on.
- We pull the dmucs coordinatior name/IP from the settings file if it is present rather than the user having to set it – this means you can run distributed compiles using a DistCode coordinator on a remote machine.
- Reduced Metal's peak memory usage when streaming texture data during level load.
- When uploading data to Shared memory, Metal textures dispose of the source buffer immediately because it won't be required after the call to Replace Region.
- Added an optional Console Variable "rhi.Metal.MaxOutstandingAsyncTexUploads". If the current outstanding count of asynchronous texture uploads is greater than the specified Console Variable, wait for all operations to complete before purging the used buffers. By default, the Console Variable is set to 0, which disables the tracking and the game will use all available memory.
- Removed the -fno-fast-math workaround for Atmosphere rendering on Mac Metal and instead modified the shader code to avoid the problem directly.
- Removed the hlslcc major version from the Metal and OpenGL shader formats to ensure that there are enough bits to represent the different version components.
- There's no expectation that the major version of hlslcc will change and it will soon be removed entirely.
- Removed the presentable flag if present when creating a texture for predraw – for some RHIs like Metal this flag is invalid unless there is an attached viewport.
- Removed the uniform buffer resource caching from Metal.
- Removed the uniform buffer resource caching from OpenGLDrv & implemented GetTextureBaseRHI to avoid unnecessary virtual function.
- Silenced stderr reporting from Apple's 'defaults' tool when accessing the settings for Mac distributed building.
- Simplified Metal Context by having only one Submit Commands Hint implementation.
- Slightly improved Mac Metal performance on AMD by only creating texture-views when absolutely necessary.
- Switch uniform buffers to managed memory on Mac as this is more appropriate for AMD & Nvidia GPUs.
- Used a dispatch_semaphore, not an FEvent, for Metal free-list synchronisation as the dispatch_worker threads can't be properly set up for FStats.
- We now warn the user when trying to run on OpenGL 3.2 GPUs that they are running unsupported and there may be rendering errors and performance problems.
- Added a workaround for a Metal shader compiler problem on Nvidia GPUs – sample_compare doesn't like taking level(0) as its LOD-option argument and may not currently support any LOD-option.
PlayStation 4
- New: Added to/from json conversion functionality to Online Message Payload – message payloads are now sent/received as json instead of being serialized as byte arrays.
- New: Replaced Tsc with Process Time Counter.
- New: Added a timer around PS4 initialization and print the result out to the log.
- New: Added ability to write the log to /temp0 in shipping builds.
- New: Added BC6H and BC7 support.
- New: Added mouse support.
- New: Added Movie Stream improvements. Now uses GPU YUV conversion and Software2 decoder.
- New: Added pragma optimization enable/disable macros.
- New: Added RHI Bind Debug Label Name support for naming UAVs, Shaders and Render Targets to display in Razor GPU captures.
- New: When querying for online play privilege, we now validate the signed-in user and check age restriction.
- New: DualShock4 motion events are now disabled by default and controlled by the .ini option bDS4MotionEvents in the PS4Application section.
- New: Implemented an experimental GPU memory defragger for streaming textures.
- New: We load title-specific json configuration from titledata
title.json. - New: PS4 "out of GPU memory" logging now has more detailed information.
- New: PS4 will now fall back to allocating from flexible memory when the main memory area runs out. Most titles should see 100-200MB of extra memory available.
- Bugfix: NumInstances is now reset after DrawIndirect calls.
- Bugfix: Fixed Submit Done not getting called due to Save Data dialog.
- Bugfix: Fixed an erroneous warning log indicating that initializing the session interface failed if rooms were disabled.
- Bugfix: PS4 virtual keyboard no longer crashes if it is open when the text box that summoned it is destroyed.
- Bugfix: Fixed a crash that could occur on PS4 when rendering very large scenes.
- Bugfix: Cross thread file handle leaks have been resolved.
- Bugfix: Fixed loss of keyboard input after display of IME dialog.
- Bugfix: Fixed Media player seek and duration.
- Bugfix: Fixed memory alignment for back buffers.
- Bugfix: PS4 now uses the correct country codes for Spanish and Spanish – Latin American.
- Bugfix: Fixed race condition and crash updating slate vertex buffers on the render thread while they are in use on the RHI thread.
- Bugfix: Fixed session records not being written to the KeyValueStore.ini on packaged builds, now stored in /download0.
- Bugfix: Fixed WebAPI handling of non-ascii data.
- Bugfix: Fixed Grayscale SRGB support.
- Bugfix: Added missing Get No Affinity Mask.
- Bugfix: Disabled a layer of IO caching on PS4 that would cause large memory spikes during loading for little benefit.
- Bugfix: GPU bubbles caused by the CPU falling behind on submissions during a frame are now subtracted from 'stat unit' time as they are in development builds.
- Bugfix: OnlineExternalUI ShowWebUrl handles long URLs correclty now.
- Bugfix: Processing many reflection captures during level loading will no longer cause large GPU memory spikes.
- Bugfix: Fixed Render Target Output Format using the wrong output index for velocity rendering when using r.BasePassOutputsVelocity i set to True.
- Bugfix: Unlocking linear textures on PS4 no longer crashes.
- Bugfix: Fixed occasional WebRTC crash on SIGPIPE.
- Disabled platform file cache wrapper on PS4 by default.
- The presence of an external keyboard will now suppress the requirement for the virtual keyboard.
Xbox One
- New: Created better default thread affinities. Added GetAudioThreadMask() to the list of used Xb1 affinities. Fixed up places where the audio thread affinity was being ignored.
- New: Hardware decompression is now supported and used by default on Xbox One.
- New: The March 2016 XDK is now the default supported XDK.
- Added MemoryBarrier function to prevent compiler from reordering writes.
- Changed GPUMalloc memory mode to write combined, as this was causing all kinds of rendering issues.
- Enabled parallel occlusion queries.
- Bugfix: Fixed a movie streamer memory leak and fixed playing multiple movies in a row.
- Bugfix: Fixed possible texture corruption in rare circumstances.
- Bugfix: RHIUpdateTexture2D/3D is now able to write to the destination texture.
- Bugfix: UI no longer flickers when there is a lot of rendering happening.
- Bugfix: Fixed an access error issue if a duplicate CulturesToStage entry existed during resource generation.
- Bugfix: Fixed an issue that prevented tools from using non-default Xbox One targets.
- Bugfix: Fixed an issue where an incorrect setting on Xbox One caused the wrong number of task threads to be created. This will improve performance in some cases.
- Bugfix: Fixed an issue that would prevent in game console input from being processed before a control key (e.g. Backspace) was pressed on Xbox One.
- Bugfix: Packaging settings are now correctly being pulled from game INI files instead of engine INI files.
- Bugfix: Creating textures at non-power of 2 sizes with initial data no longer causes a crash.
- Bugfix: Fixed missing GPU particles on XB1.
- Bugfix: Motion blur is now properly applied to moving meshes.
- Bugfix: Critical Sections now behave the same as on Windows.
- Bugfix: Minor fixes to DFAO and DF Shadowing.
- Rebalanced memory bus priority so that the CPU gets a bigger share.
- Removed per-frame caching of uniform buffer resources. This is a small performance improvement.
- Xbox One now uses lock-free lists for passing messages between threads.
- Made occlusion query system more robust.
VR
- New: Oculus Rift: Added support for letterboxed and cropped/filled mirroring modes.
- "hmd mirror mode 3" (eMirrorWindow_SingleEyeLetterboxed) enables letterboxed mirroring.
- "hmd mirror mode 4" (eMirrorWindow_SingleEyeCroppedToFill) enables cropped mirroring. (fills whole screen)
- Only when cropping is required, we now clear the backbuffer to black.
- New: VR Stereo Layers improvements.
- Initial Oculus Rift support.
HTML5
- New: Enabled emscripten SIMD for HTML5.
- New: HTML5 SDK project settings – show user defined HTML5 browsers.
- New: PhysX updated – code changes for HTML5 builds.
- New: PhysX updated – generated Makefiles for HTML5.
- New: PhysX updated – recompiled libraries for HTML5.
- New: We now automatically reload the HTML5 page if a script download has failed. The error message will still be seen, but only briefly.
- Bugfix: Corrected VS 2015 websocket lib to look at the right offset.
- Bugfix: We fire off a "resize" event to force the canvas dimensions to be updated with browser's actual dimensions instead of starting off with hard coded 800×600 window size.
- Bugfix: Emscripten config file timestamp is no longer unnecessarily modified. This prevents system libs from being recompiled all the time.
- Bugfix: Load/save with "negative char size value" fixed – C++ functions used unsigned int 8 while javascript was running with signed types.
- Updated HTML5 ThirdParty libraries built with emscripten 1.35.0: freetype2.6, ICU, libogg, libPNG, libvorbis, PhysX, zlib.
- Chrome has been re-enabled to show up in the device manager.
- We now use HOME (OSX) and USERPROFILE (Windows) on the appropriate target platforms during emscripten builds.
les fenêtres
- New: PC builds now log engine initialization time with the load time tracker.
- Bugfix: Fixed a bug in Windows Application that was causing the Get Display Metrics function to incorrectly return the max resolution of the last enumerated monitor for all monitors.
- Bugfix: Rejoining a Steam lobby quickly after leaving no longer causes the player to get booted from the session.
- Bugfix: Applying windowed mode on Windows now works properly, instead of restoring the previous mode.
- Click location accuracy at low framerates on PC is now greatly improved.
- We now use the physical platform file when writing out steam_appid.txt, so that it still gets written to the correct location when running with cook on the fly.
All Mobile
- Bugfix: Fixed In-App Purchase Callbacks so they still fire whether or not the game is paused.
- Disabled heartbeat thread and checking on mobile platforms.
Programming
- New: Added support for pre- and post-build steps specified inside .uproject and .uplugin files.
- Steps are specified as a list of shell commands per target platform, and are written to a shell script for execution by UBT.
- The following target properties are expanded automatically: $(EngineDir), $(ProjectDir), $(TargetName), $(TargetPlatform), $(TargetConfiguration), $(TargetType), $(ProjectFile), $(PluginDir).
- Example: "PreBuildSteps": { "Win64": [ « echo Hello World », « echo The current project being compiled is $(ProjectFile) » ] }
- New: Removed duplicate binary files and reduced the size of PDBs for CEF3 to reduce the total download size.
- New: Support for the Visual Studio 2012 and 2013 toolchains has been deprecated.
- The only supported toolchain for UE4 is now Visual Studio 2015.
- It is still possible to generate Visual Studio 2013 projects.
- Visual Studio 2013 projects will be generated if a platform SDK that is not compatible with the Visual Studio 2015 IDE is detected or if -2013 is specified on the GenerateProjectFiles.bat command line.
- Visual Studio 2013 projects only allow the use of the Visual Studio 2013 IDE. Projects will always build using the Visual Studio 2015 toolchain, so Visual Studio 2015 will still need to be installed on any PC building UE4.
- New: The project Target.cs file can now specify a filename using for a set of signing keys which will automatically be compiled into the executable, restricting the use of pak files to only those signed with the same key
- Have your project's target.cs file specify a workspace relative filename in the "PakSigningKeysFile" of your game/client Target Rules class
- New: UBT writes to the log to indicate whether pak signing keys were found and included in the executable
- New: Visual Studio visualizers now support non-ASCII text for FNames (Credit to Yoshifumi Ohtsu of ORCA).
- Bugfix: Rebuild now works properly when binary version is installed in Program Files (x86).
- Improved cooker performance by several minutes during long cooks by fixing an early out pathway to work properly when a cooked package was not ready to save and was still waiting on asynchronous tasks to complete.
- Minor DDC performance improvement when using Get Async Results (move the result instead of copying it). Saves about 15sec during long cooks.
Rendering
- New: 'r.VisualizeOccludedPrimitives 1' shows statically occluded primitives in dark red.
- New: A new console variable 'r.ProfileGPU.Sort' was added to control the sorting mode of the 'profileGPU' output.
- New: A slew of new material functions are available in the material editor:
- Texture Bombing: Texture bombing takes a tiling texture input and blends multiple samples with offset coordinates with some flipping and rotation in order to reduce tiling artifacts. It blends to neighbors so it can be used with any textures, not just textures with tiles or borders. This implementation works using heightlerp so that the transition between offset samples avoids soft blending artifacts which can muddy the colors.
- Chroma Key Alpha: This is a classic green screen node. It gives some basic flexibility for alpha thresholds as well as a despill mask that you can use to either desaturate or blend additional edge coloration to help remove spill from the original chroma color.
- Contrast Preserve Color: This function lets you increase the contrast of a color texture without altering the relative colors. The behavior of this node is similar to what would happen in photoshop if you first duplicated a layer and set it to "Color" mode and then increased the contrast of the original layer.
- Luminosity and Color: Similar to above but simply combines a single channel as luminosity with a color input. Also behaves like a combination of luminosity/color layers in photoshop.
- Texture Bombing POM: This one is to be used with caution. Definitely way too expensive for any modern consoles, but may be of some use to archvis or cinematic teams. It performs texture bombing with Parallax Occlusion Mapping, which means a unique POM function is performed for each sample, which means 4 times for each use. So this means a POM-Bomb material with only 2 textures will perform hundreds of texture lookups considering the tracing.
- Bricks and Tile UVs: This is mostly meant to help bake procedural textures from inside the editor. As a result, some things in this function assume you want the macro offsets to repeat ever 0-1 overall UV. This is important since with the "Stagger" offset, tiles need to match their other half on the other side. So the macro offset pattern is itself a tiling pattern.
- Landscape Manual UVW: Returns a 0-1 gradient on each axis encompassing the bounds of the whole landscape based on the input min and max positions. Positions must be manually defined.
- 1D to 2D Index: Converts a position from 1d to 2d based on given grid size.
- New: Added a mesh texture coord size accuracy view mode to tweak texture streaming.
- New: Added a primitive distance accuracy view mode to tweak texture streaming.
- New: Added cvar "r.CustomDepth.Order" to get CustomStencil before DBuffer to allow masking in DBuffer decals.
- New: Added cvar "r.CustomDepth.Order" to get CustomStencil before DBuffer to fix lighting issues on characters.
- New: Added Pause Texture Streaming function to the Texture Streaming Manager interface to allow external systems to pause and unpause texture streaming.
- New: Added Morph Target support for experimental Skin Cache feature.
- Added Recompute Skin Tangent feature for Skin Cache.
- New: Added a "Thickness" parameter to debug drawing functions.
- New: Added "Warmup Time" and “CPU Collision” to content browser information for Particle Systems.
- New: Added "Was Recently Rendered" function to Actor, with optional tolerance in seconds.
- New: Changed HLOD textures to ignore r.streaming.mipmaplodbias. (Current detection is string based when the Streaming Texture is created, and should be replaced by a HLOD texture group in the future.)
- New: Changed Resolution Quality scalability settings from int32 to float, to allow hitting exact 3D render resolutions that aren't an integer percentage like 900p from 1080p.
- New: Depth Of Field Quality setting change to aid non-realtime workflows by enabling a faster (but still not realtime) very high quality setting.
- r.DepthOfFieldQuality = 4 corresponds to the prior behavior of associated with = 3. Extremely high quality, intended for non realtime cutscenes, CircleDOF only. (Very slow)
- r.DepthOfFieldQuality = 3 now corresponds to a new setting somewhere between the old 2 and 3. Very high quality, intended for non realtime cutscenes, CircleDOF only. (Slow)
- New: Exposed "up direction" on Cable Component, to better support vertical cables.
- New: The "listtextures" console command now prints a stat summary after the list per Texture LOD Group and per texture format.
- Bugfix: Corrected a crashing bug in rendering shadows for objects with malformed transforms. The editor should now handle this more gracefully and log information about the offending object with an ensure message.
- Bugfix: Exposed Material Sprite Element struct to Blueprints, and added a Set Elements function to Material Billboard Component.
- Bugfix: Fixed a bug that caused separate translucency primitives to not be rendered into reflection captures.
- Bugfix: Fixed a bug where file handles for streamed texture mips wouldn't be released under certain circumstances.
- Bugfix: Rendering resources from a previous map are now immediately released during switching to a new map.
- Bugfix: Texture LOD Bias is no longer applied twice in cooked builds.
- Bugfix: Fixed a crash when updating material instances that were garbage collected.
- Bugfix: Removed a potential crash when changing FOV angle in Matinee.
- Bugfix: Fixed a potential memory leak when clearing MaterialShaderMaps.
- Bugfix: Fixed a problem that could result in separate translucency primitives only being rendered in one eye in stereo mode.
- Bugfix: Non-uniformly scaling the bounding decal region no longer affects decal normals.
- Bugfix: Fixed a rare Slate threading crash when alt-tabbing from fullscreen applications.
- Bugfix: Create Section function on Procedural Mesh Component no longer clears other sections inappropriately.
- Bugfix: Fixed FBlendableManager when using aligned data.
- Bugfix: Separate translucency shows up correctly in Shader Complexity view.
- Bugfix: Materials using scene texture or global distance fields are now displaying correctly after a shader compile, including after the component is moved.
- Bugfix: Fixed pre-pass stencil dither being cleared in split-screen.
- Bugfix: Stretched decals work correctly.
- Bugfix: Texture coordinates are now calculated correctly when building tessellated cubes with the brush tool.
- Bugfix: Fixed varying tessellation multiplier, which caused cracks in geometry.
- Bugfix: Fixed 'Vertex Color' input of ProceduralMeshComponent using the wrong Color type.
- Bugfix: Fixed wrong stencil value being set on PS4.
- Bugfix: The 'profileGPU' command now properly reports triangle and vertex counts at different levels of the marker hierarchy.
- Bugfix: Attempting to read data from a null texture no longer causes a crash.
- Bugfix: Fixed an occasional crash when accessing LPVs.
- Bugfix: Fixed an issue with CastShadowAsMasked when using Embree.
- Bugfix: Disabling the LightPropagationVolumeBlendable plugin no longer causes the engine to crash during startup.
- Bugfix: Removed memory allocation for RHI resources when running with NullRHI.
- Removed autocompletion for ToggleRHIThread and ShowMaterialDrawEvents. These features are now accessed by console variables r.rhithread.enable and r.showmaterialdrawevents, respectively.
- Removed an unused cvar r.HLODEnabled. Everything related to HLOD cvars is done through r.HLOD.
- MaterialParameterCollection will correctly rename entries when duplicate named items are added.
- Optimized HLOD transition and visibility logic.
- Render view items and LOD level can be frozen in place now.
- UpdateShadowShapes now runs on the render thread rather than the game thread.
- The variable "r.ViewDistanceScale" can now go above 1.0.
- The screen percentage cvar can now be changed dynamically when using PSVR.
FX
- New: BoneSocket module in cascade can now be used to spawn from all bones on a skeleton if no SourceLocations are provided. Allows sharing of a single effect across many skeletons.
- New: Decal Components now have their lifetimes exposed such that they can be set to automatically be destroyed once the lifetime expires. The decal's lifetime as a t value (0 to 1) is also exposed as a material graph node to allow controlling the look of the decal as it's lifetime expires.
- New: Mesh particles now support motion blur. Mesh particles motion blur can be configured to enable/disable based on detail/quality level settings.
- New: Particle cutout optimization works on SubUVMovie module as well.
- New: Significance feature for particle systems.
- Game code can drive the required significance for each effect.
- This is tested against an artist defined significance value for each emitter. Emitters can be progressively disabled based on game-specific calculation of the emitter’s significance to the scene.
- For example, Paragon uses distance, VFX performance, and relevance to the local player to drive the required significance for its VFX.
- Bugfix: Disabled the Seconds Before Inactive optimization for non-looping effects because it can cause them to leak.
- Bugfix: Global vector fields fixed to work with fixed-bounds particle systems.
- Bugfix: Fixed a problem that could lead to emitter detail mode not being set properly when a particle system is first initialized.
- Bugfix: Cascade preview now respects the detail mode setting in the Cascade UI.
- Bugfix: Particle systems with emitters using both separate and non separate translucent materials now render correctly.
- Bugfix: Fixed issue where Ribbon particles would render an erroneous sheet to the emitter origin.
- Bugfix: Fixed rare crash bug accessing a console variable in particle code.
Éclairage
- New: Added a CaptureOffset variable to reflection captures, which lets artists decide how the cubemap resolution is allocated, but introduces some warping.
- New: Added r.CapsuleMinSkyAngle with a default of 15, keeps capsule indirect shadows from becoming so sharp that capsules are apparent in the stationary skylight case.
- New: Added several cvars to expose mesh distance field limits, which allows higher quality.
- r.DistanceFields.MaxPerMeshResolution, r.DistanceFields.DefaultVoxelDensity, r.DistanceFields.AtlasSizeXY, r.DistanceFields.AtlasSizeZ.
- New: Added the ability to apply DFAO to static indirect lighting, controlled by r.AOApplyToStaticIndirect.
- Lightmaps, stationary skylight and reflection captures are all affected.
- New: Heightfields are now represented in the global distance field, which is useful for fading out water normals near shores.
- Global distance field max distance can now be set from WorldSettings, although it will be overridden if there is a Movable Skylight.
- New: Capsule shadows are now supported in stereo rendering / VR.
- New: Improved sphere area light diffuse quality.
- New: Indirect lighting probes now use 3 band spherical harmonics, as opposed to 2 band previously.
- New: Lightmass now respects owner bHidden, and bCastHiddenShadow.
- New: Particle position is used for per-vertex lighting with particle cutouts (instead of vertex position) to give a stable result.
- Bugfix: Fixed a bug where dynamic lighting would be updated with a one frame latency.
- Bugfix: Fixed clear coat with movable skylight.
- Bugfix: Fresnel is correct on SSS skin.
- Bugfix: Fixed a crash with Ray Traced Distance Field shadows when r.DistanceFieldAO was disabled.
- Bugfix: Movable skylight now matches stationary for subsurface shading models.
Matériaux
- New: Added the option to the ScreenPosition node that will all the node to output viewport UVs.
- New: In response to user requests, deferred decals now support a negative in the transform when defining the decal bounds.
- In the past, the transform for a deferred decal had to have all positive scale values for the decal to be displayed. So if you had inadvertently hidden any decals in your content by using a negative scale they will now appear.
- New: An early (and unfinished) version of Pivot Painter 2 is included in this build. The final and fully functional version of the script and its material functions will be in the next build.
- Bugfix: AOMaterialMask restored to working order (was broken in 4.11).
- Bugfix: Custom material nodes no longer cause compile errors with tessellation outputs.
- Bugfix: Indirect lighting on skin renders at an appropriate brightness.
- Bugfix: Shiny cloth looks correct under indirect lighting.
- Bugfix: Subsurface scattering no longer reacts differently to indirect lighting.
- Bugfix: Fixed a threading issue with Material Instance base property overrides that could cause incorrect rendering.
- Bugfix: Opacity mask materials no longer produce incorrect shadows.
- Bugfix: Fixed a bug within the "Vertex Animation Tool" MAXScript that broke compatibility with 3DS Max 2016. The resulting output images are now forced into linear color space.
- Improved detection of unused material nodes and false positives enabling features.
Post-processing
- New: To simplify workflows, decals will now be visible in lit orthographic views.
- Corrected a problem with the post-processing fringe effect. The problem was most pronounced for large fringe values and could lead to unexpected fringe results when the window was resized.
- Bugfix: Fixed a case where destructible meshes would use the wrong motion blur data.
- Bugfix: Fixed stereo bloom rendering.
- Bugfix: Post-process materials are now blended smoothly.
Optimizations
- New: Added the option to discard override vertex color data on static meshes. Projects which don't use this data at runtime can save memory by discarding it. "r.KeepOverrideVertexColorsOnCPU".
- New: Adding "-forced" to the "ListTextures" command now only shows textures with forced mip residency.
- New: Finalized support for SSAO running on AsyncCompute when a full EarlyZPass is available.
- New: Nearest-Depth Neighbor upsampling for half res separate translucency.
- Enabled by default when r.SeparateTranslucencyScreenPercentage is 50.
- Produces full resolution silhouettes of opaque objects in front of half res translucency.
- New: Reduced texture streaming usage for meshes hidden by hierarchical LOD meshes.
- New: Texture streamer can now compute bounds per mesh section.
- New: Textures streamed for dynamic primitives are now processed on the async streaming task instead of on the game thread.
- Minor optimization to material handing.
- Minor tweaks to default scalability settings to provide a slightly better experience for low-end machines.
- Removed unnecessary upfront allocation of 4MB in Niagara.
Mobile Rendering
- New: Added mobile rendering support for planar reflections.
- Requires 'Planar Reflections' material setting to be checked before use.
- New: Materials can sample textures from the vertex shader with the mobile renderer, provided an absolute mip level is specified
- New: Mobile High Quality Gaussian DoF.
- To use enable 'High Quality Gaussian DoF on Mobile' in post-processing settings.
- This feature is used for feature level ES3.1, if it used with ES2 devices then standard mobile DoF is used as a fallback.
- New: New console varirables "r.OpenGL.StripExtensions" and "r.OpenGL.AddExtensions" add the ability to add or strip specific OpenGL ES extensions from the driver-reported extensions string.
- This can be used to work around issues in specific devices.
- For example to force specific device to use 32bpp targets for HDR rendering in DeviceProfiles.ini add: r.OpenGL.StripExtensions=GL_OES_texture_half_float,GL_OES_texture_float.
- New: GPU particle support for iOS Metal (A8+ only) and Android devices with ES3.1 support. Collision for GPU particles is not supported on mobile devices.
- New: Stationary lights can now combine CSM shadows with static shadows.
- When a stationary light's dynamic shadow distance is > 0 and inset shadows are disabled, movable primitives will to render to CSM which can then be combined with pre-calculated static shadows.
- For performance reasons, you must mark primitives which will receive both CSM and static shadows with 'Receive Combined Static and CSM Shadows from Stationary Lights' checked.
- However, you can set r.AllReceiveDynamicCSM=1 to enable both CSM and static shadows for all primitives.
- Using stationary lights with CSM requires an additional mobile texture sampler. You can reclaim this sampler and disable the feature with the project rendering setting: "Enable Combined Static and CSM Shadowing".
- Bugfix: Resolved an issue where Canvas Text Items did not correctly display some Unicode characters when running on an Android devices.
- Bugfix: Fixed an issue where Instanced Static Meshes were failing to render all instances when running in ES2.
- Bugfix: Fixed possible crash on iOS in which 2D render target components could be initialized before a valid GSystemResolution was available.
- Bugfix: "Hidden surface removal" is now properly detected on PowerVR Android devices.
- Bugfix: Material tiles now render properly on Canvas in projects with mobile HDR off.
- Bugfix: HDR rendering and bloom has been fixed on Galaxy S7 devices.
- Bugfix: Precomputed lighting samples are now correctly shifted when the world origin changes.
- Bugfix: Fix for precision issues causing incorrect modulated shadow positions on low end Android hardware.
- Bugfix: Removed halos surrounding modulated shadows when RGBE encoding is active.
- Bugfix: Resolved possible Z fighting issues with modulated shadows on iOS devices.
- Bugfix: Mobile HDR path now works on Gear VR.
- FeatureLevel es3.1's texture gamma with forward shading renderer now matches ES2's behavior.
UI
- New: Added support for debugging safe zones (visualization on any platform and simulation on platforms that don't natively provide safe zone information).
- r.DebugSafeZone.Mode controls the debug visualization overlay (0..2, default 0).
- 0: Do not display the safe zone overlay.
- 1: Display the overlay for the title safe zone.
- 2: Display the overlay for the action safe zone.
- r.DebugSafeZone.OverlayAlpha controls how opaque the debug visualization overlay is (0..1, default 0.3).
- On platforms that don't natively support safe zones, you can simulate a safe zone for quick/easy testing in the editor:
- r.DebugSafeZone.TitleRatio controls the title safe zone margins returned in FDisplayMetrics.
- r.DebugActionZone.ActionRatio controls the action safe zone margins returned in FDisplayMetrics.
- These both range from 0..1, and default to 1 indicating 100% of the display is safe. A typical test value would be 0.9
- Notes IMPORTANTES:
- For now, you need to be running in windowed fullscreen or fullscreen for the ratio to be correct.
- On PS4, you only need to enable debugging (r.DebugSafeZone.Mode 1), as the safe zone values are driven by the system setting you can pick in the PS4 OS menus.
- Bugfix: Corrected a regression in noise-related nodes Slate UI materials.
- Bugfix: Fixed a crash that could occur when editing an asset with an FText property.
- Bugfix: Fixed a regression with UI material nodes that required world position.
- Sub-fonts in a composite font are now only used when they contain the character to be rendered.
Ardoise
- New: Added slider bar thickness as a new style property in FSliderStyle.
- New: Added "Use Application Menu Stack" argument to SMenuAnchor, enabling programmers to create menu anchors that don't open one stack at a time.
- New: The MoviePlayer now has an OnPrepareLoadingScreen callback that modules can hook instead of relying on the PreLoadMap, which, depending on when you hook it, may be before or after the movie player. To alleviate that ordering problem – if the movie player goes to play a loading screen and one has not yet been configured this callback will be triggered so that hopefully one is supplied.
- Bugfix: Removed a crash in the menu system. Opening a new menu would lead to a window activation change which would result in the old root menu being dismissed.
- Bugfix: Fixed an infinite loop when using Ctrl+Up/Down in a multi-line editable text.
- Alt-tabbing out of a Standalone App or packaged version of a game will now trigger LostFocus.
- Changed a massive amount of things attempting to improve the Slate and VR intermingling. Popup layers should now function on widget components, lots of changes to make focus work better.
- Changing the way slate handles mouse enter/leave when the mouse is captured. Widgets in the capture path are now the only ones that get mouse enter/leave messages. Widgets in the capture path now actually get mouse enter messages after leave messages, previously they were only getting leave, along with all widgets you hovered over and later left, even if they were not part of the captor path – those same widgets did not receive mouse enter.
UMG
- New: Add support for animating material parameters which are used on brushes.
- Bugfix: Editing the navigation of a root UMG widget no longer crashes.
- Bugfix: Fixed aspect ratios now correctly size the right side of the screen, so that right-anchored content will fit properly inside the black frame borders.
- Bugfix: The user can no longer name an animation with a name the conflicts with a widget name. This fixes a runtime crash.
- Bugfix: Fixed a crash when undoing adding a track to an animation.
- Deprecated UWidget::GetEditorIcon and converted existing icon brushes to conform with FClassIconFinder expectations.
Programming Release Notes
AI
- New: Added a function to AISenseConfig allowing native-code MaxAge configuration.
- Fixed gameplay tasks stacking and pausing, added support for stacking move tasks.
- Template AI counters (FAISenseID, FPerceptionListenerID, FAIResCounter) now work consistently across multiple compilation units.
Behavior Tree
- New: Added a handy function to BlackboardComponent, IsKeyOfType, that allows one to check if given key is of specified type.
Debugging Tools
- New: Added a way to define class-whitelist for Visual Log so that classes outside of specified list won't get recorded.
- It does respect hierarchies, so if object A of not listed class is rerouted to an object B of whitelisted class then vlogs from that A will get recorded as well.
- New: Added new version of Gameplay debugger tool: allows easier creation of project specific categories, without need for implementing a separate module. Tool is currently in early access preview state and disabled by default.
Navigation
- New: Added an extra parameter to ARecastNavMesh::FindDistanceToWall that allows user to retrieve found location on a closest wall
- New: Added project specific flags to navigation links.
- New: Navigation Query Filters can now be instantiated per querier object. This allows passing additional variables to custom scoring and filtering functions for pathfinding.
- Fixed resetting navigation path data between repaths.
- Fixed value of TraversingLink parameter in crowd agent's velocity update function.
Animation
- New: Changed compressed animation data to have additives baked in and removed code in cook that did the same thing. Moved compressed data to the DDC.
Automatisation
- New: Moved code to write config file entries into InstalledPlatformInfo so that it can be reused by anyone wanting to make installed builds.
- Added AdditionalBundleResources to the list of external files used when packaging.
- Ensures that these files are included in a packaged build.
- Tweaked automation test framework by request from UDN post.
Blueprints
- New: Added "BlueprintPure=false" metadata to allow const functions to be exposed to Blueprints as non-pure.
Core
- New: Added TScopedDurationThreadsafeTimer<> allowing for threadsafe accumulation of cycles to either a 32 or 64 bit cycle accumulator.
- New: Added a leak detection malloc proxy that can help track down memory leaks. Must define MALLOC_LEAKDETECTION
- New: Added a ToHashSet extension method to IEnumerable.
- New: Added AlignDown function for rounding an integer or pointer down to the next alignment.
- New: Added an additional scale factor of 75% in the list to generate in GenerateConvenientWindowedResolutions.
- New: Added basic custom deleter support to TUniquePtr.
- New: Added better stats for SProfilerMiniView::ProcessData.
- New: Added debug code to catch memory stomps in the async loading buffers that's independent from mallocstomp allocator. Changed the signature of PageProtect functions to be able to read-only protect memory.
- New: Added FixupNeedsLoadForEditorGame commandlet to fixup exports saved with NeedsLoadForClient, NeedsLoadForServer and NeedsLoadForEditorGame set to false and then had NeedsLoadForEditorGame set to true.
- Added -IgnoreChangelist option to ResavePackagesCommandlet.
- Removed unused code from ResavePackagesCommandlet.
- New: Added FThreadSafeCounter64, a 64-bit version of FThreadSafeCounter.
- New: Added gc.FindStaleClusters console command to list any stale clusters.
- New: Added new FCString::Strspn and FCString::Strcspn functions.
- New: Added support perfect forwarding constructors to AsyncTask framework. References are now kosher to use, avoiding mysterious crashes that would otherwise occur.
- New: Added TEnumRange – allows ranged-for iteration over enums when they are declared with an associated ENUM_RANGE_* macro.
- New: Added the ability to detect when the engine hangs (enters infinite loop or a very long task).
- New: Added the ability to dump memory reports every x seconds.
- New: Added the ability to query the name of a thread given its TLS id.
- New: Added the option to load all symbols for stack walking in non-monolithic builds.
- New: Changed the FPS chart binning 'long frame' discard threshold to a cvar (t.FPSChart.MaxFrameDeltaSecsBeforeDiscarding) to allow it to be disabled or adjusted, still defaults to 1 second.
- New: Changed the OnMountPak file delegate to take an optional FDirectoryVisitor* so that callers can get a list of the files contained within the PAK file that was mounted.
- New: Cleaned up some of the hot reload implementation.
- New: Core: Added microseconds support to FTimespan.
- New: Dynamic Delegates can now have up to 9 parameters.
- New: FOutputDeviceFile will now use a separate thread for writing to the file on disk so that it doesn't block the calling process. Reduces time spent in Serialize function by a factor of 5.
- New: FTransform::GetLocation() now calls FTransform::GetTranslation().
- New: Garbage Collection assumptions verification code will no longer assert immediately after detecting the first offender. Instead it will list all offenders first and then assert.
- New: GetAllocatedSize function’s return type has changed to SIZE_T.
- New: Hot reload now only recompiles game modules and their dependencies, rather than every game module.
- New: Increase name bucket count to 65k. Increase name pool allocator to 256kb.
- New: Multiple TBigInt performance improvents – multiply is now 30x faster.
- New: New FMallocBinned2 general memory allocator for PS4 and PC platforms. This allocator is better at recycling freed memory blocks across threads and has thread-local caches to reduce contention during concurrent allocations.
- New: PR #1331 [Core] Added a stomp allocator that allows finding memory overruns, underruns, and read/write after free. (Contributed by Pablo Zurita)
- New: Reworked the task graph to support multiple banks of task threads at different priorities. This allows tasks to preempt other tasks. Only enabled for consoles. Misc threading fixes and cleanups.
- New: The engine will now assert if pak file is corrupted, even in shipping builds.
- New: Tweaked out MallocBinned2. Removed several recyclers in the engine since MB2 is faster. Reworked the container slack policies to use the allocator granularity.
- New: UCLASSes, UENUMs etc. are now prevented at being defined at global scope.
- New: UnrealHeaderTool now builds modules ordered by type in order to minimize wasted time during a hot reload build.
- New: UnrealHeaderTool plugins no longer need to be a separate plugin and don't require UnrealHeaderTool source code changes to work.
- Merged ScriptGeneratorPlugin with ScriptPlugin.
- Introduced the concept of UnrealHeaderTool plugin support for plugins so that UnrealHeaderTool's source files don't need to be modified to make it work with external plugins.
- Added RuntimeNoProgram module type (module that can be used at runtime but not by program targets).
- Fixed logic with project file path setting in the engine. It will no longer try to crate a full path from an already rooted path.
- New: UnrealHeaderTool.manifest has been renamed to
.uhtmanifest to aid readability. - New: Updated IntelTBB to 4.4u3 to catch more allocator usage.
- New: When maximum number of UObjects has been allocated, the engine will print the limit with the assert message.
- Added a missing memory barrier which would occasionally cause a task to be lost and a task to be executed twice.
- Added missing default tolerance value for FVector2D::Equal. (Contributed by MaikKlein)
- Added some postcondition checks to FModuleManager.
- Added some redundant cache checks to try to capture some spurious OOM reports.
- Changed the 'UObject Hash' stat category to be verbose by default to reduce high-watermark memory overhead of using stats on extremely slow frames.
- Code where LogUnion logging category is used will now properly compile outside of Core module.
- Deprecated FName constructor's unused bUnused parameter.
- Explicitly closing file handles after loading mips otherwise the handles never get closed.
- FEvent objects will now always be reset when returning the to the pool.
- Fix for class token stream sometimes not being initialized if the class was serialized.
- Fixed a crash when cancelling async loading caused by detaching linker from objects that had RF_NeedLoad flag set.
- Fixed a spurious error message being reported when hot reloading from Xcode when nothing had changed.
- Fixed a TMap crash which could occur during a ranged-for iteration after a Compact.
- Fixed ALIGNOF to work with abstract types.
- Fixed async loading releasing references to objects created during serialization before packages have been fully loaded.
- Fixed ConsoleCommandLibrary_DumpLibraryHTML accessing thrashed memory.
- Fixed crash in FPackageReader::ReadAssetRegistryDataIfCookedPackage.
- Fixed crash in UnrealBuildTool when compiling an individual module without a suffix.
- Fixed crash when copying an uninitialized TUnion.
- Fixed crash when move-constructing an unbound TFunction.
- Fixed custom versions not being detected when used in blueprint packages.
- Fixed deadlock in lockfreelist IsEmpty.
- Fixed debugger visualizers for TMap, TSet and TSparseArray in Visual Studio 2013 Update 5 and onwards.
- Fixed FIntPoint::Size() and FIntVector::Size() overflows when they contain large components.
- Fixed FMallocDebug's alignment checks.
- Fixed FStringAssetReferenceRenameSerializer not finding all references.
- Fixed Memswap to work on unaligned pointers for sizes of 3, 5, 6 and 7.
- Fixed some const-correctness issues in FModuleManager.
- Fixed some places where FIntVector was assumed to be 2D.
- Fixed some redundant array copies in hot reload.
- Fixed stall when cleaning up large number of tasks.
- Fixed the wrong max enum value used during net serialization.
- Fixed TIsClass to work with union types.
- Fixed TQueue::Peek's const-correctness.
- Fixes for VS2015's static analysis of Core, CoreUObject and UnrealHeaderTool.
- ForEachObjectWithOuter no longer filters out all children of an object that is filtered by the exclusion flags.
- Github #1543 [Windows] Remove remote debug prompt on fatal error. (Contributed by bozaro.)
- Hot reload will no longer be available in test configs.
- Improved performance of TSet::Intersect, Union, Difference, and Contains.
- In case when GetLastError returns 0, don't log the error code message as an error as that confuses external log parsers.
- IsReferenced function will now ignore references from an object to itself.
- Made "checkCode(Code)" macro work without requiring a semicolon in the code block.
- Made TQueue non-copyable.
- Optimized weak object pointer.
- Optimized FWeakObjectPtr operator== and operator!= to be faster when either object is valid.
- Optimized IsValid() when using default/no arguments (removes 2 branches per call).
- Made TWeakObjectPtr::Get() and TWeakObjectPtr::IsValid() with default/no arguments use the faster FWeakObjectPtr versions.
- PR #2073: Spelling in App:UnfocusedVolumeMultiplier changes from 4.10 (Contributed by Temaran).
- Reduced allocations in FStatNameAndInfo::ToLongName().
- Reduced memory usage when triggering automatic FPS charts for analytics.
- Added a new parameter to UEngine::StartFPSChart that indicates whether or not the per-frame arrays should be constructed, true when doing 'StartFPSChart' from the console but false from other programmatic uses.
- Updated HTML output total frame time stats to be tracked explicitly rather than computed from the per-frame arrays.
- Removed deprecated functions from TArray and TLinkedList.
- Renamed GPU analytics event from GPU to DesktopGPU to reflect that it is the default desktop adapter and not the one we initialized (which is GPUAdapter).
- Updated text/log based FPS chart events to print out GPUAdapter instead (with DesktopGPU in parens if they differ, e.g., in an optimus setup).
- Replaced FMath::Fmod(x, y) with our own implementation on all platforms. Ensure on y=0 input, and return 0 in this case (rather than NaN).
- Stack overflows will now be properly handled by crash reporting code.
- StaticLoadObject will now respect LOAD_NoRedirects flag.
- String referenced assets won't get cooked if referenced by editor-only properties.
- The engine will no longer create crash reports from ensures that were triggered after the engine has crashed.
- UnrealHeaderTool will now respect #if WITH_EDITORONLY_DATA properties inside of #if !CPP block.
- UnrealHeaderTool: Fixed an issue with alpha handling in default value parsing for FColor literals.
- UnrealPak will no longer be compiled with ICU support.
- UObjectBase::Name, Class, and Outer have been renamed NamePrivate, ClassPrivate, and OuterPrivate to fix large numbers of shadow variable warnings in VS2015.
- Updated UnrealHeaderTool error messages to refer to the new GENERATED_BODY macros instead of the old deprecated ones.
Editor and Tools
- New: Added a new virtual function for Actors: IsSelectable(). Overriding this function allows users to make an actor not selectable in some or all cases rather than relying purely on editor modes to determine selectability. For example, if you have a purely transient actor created at editor time for some purpose and it cannot be deleted or edited, you may want it also to be unselectable.
- New: Added UEngine::OnComponentTransformChanged delegate to Editor.
- New: Transaction notification can now be temporarily squelched for uses of the transaction buffer that do not need to be displayed to users.
- New: UActorFactory::SpawnActor now takes a FTransform instead of a FVector Location and FRotator Rotation.
- New: Unreal Editor now supports multiple default editor "modes" active at the same time (FEdModeTools).
- New: UnrealPak: Improved -diff output formatting to make it easier to save as .csv and view in Excel, also added it to the usage help for the tool.
- New: When calling UTransBuffer::Undo you can now specify that the transaction cannot be redone.
- Fixed PostEditChangeProperty being passed a null property when editing a vector or transform with a "3D property widget".
Content Browser
- New: Added a file import code path that doesn't load the entire file into memory prior to importing.
- New: Added the ability to spawn configurable one-off Content Browser widgets in C++.
- This feature is used by the VR Editor to spawn a Content Browser in VR.
- Various new options are available for customizing the spawned Content Browser:
- You can set whether the sources view should initially be expanded or not.
- You can set whether asset paths are shown in the Content Browser. Only useful if you only want to show collections.
- You can force collections to be initially visible, regardless of defaults.
- You can set a specific collection to view initially.
- You can now opt to have no class name label under the asset.
- Also, made a small tweak to the default splitter position for the sources view.
Gameplay Framework
- New: AActor::ParentComponentActor has been deprecated and replaced with the private ParentComponent use the accessors IsChildActor() or GetParentComponent() instead.
- New: Added a new overrideable function UGameplayAbility::ShouldActivateAbility, which can help decide whether or not an ability should be activated.
- New: Added AActor::GetIsReplicated() accessor.
- New: Added load time printouts to UEngine::LoadMap and the ListLoadedPackages command (load times in the former case are very useful, times in the latter are less so, since it represents wall time from start to finish, and can include overlapping times).
- New: Added TSet version of UPrimitiveComponent::GetOverlappingActors.
- New: Added TSet versions of AActor::GetOverlappingActors and GetOverlappingComponents.
- New: AGameMode::OnMatchStateSet is a new virtual that allows game mode subclasses to insert handling between MatchState being set and notification dispatch to the GameState and Blueprints.
- New: Avoided using TG_PrePhysics as the first tickgroup so that licensees can add tickgropups.https://udn.unrealengine.com/questio…irst-tick.html
- New: Can now GetActorTransform on AActor instead of having to access each component piecemeal via GetActorLocation/Rotation/Scale.
- New: FTraceHandle can now be used as a key in TMaps.
- New: GameMode is no longer mandatory to carry over between Source and Transition levels during SeamlessTravel and is instead included as part of the default implementation of AGameMode::GetSeamlessTravelActorList.
- New: There is now a OnPostEngineInit delegate on UEngine that is called after GEngine->Init has completed.
- New: UActorComponent::World and Owner have been renamed WorldPrivate and OwnerPrivate.
- New: UChildActorComponent can now be used as parent class from other modules.
- New: UChildActorComponent::ChildActor, ChildActorName, and CachedInstanceData are now private members.
- New: UPrimitiveComponent::MoveIgnoreActors is now a transient property array of AActor instead of a non-property array of AActor WeakObjectPtrs and GetMoveIgnoreActors returns const TArray<AActor>& instead of TArray<TWeakObjectPtr
>&. - New: USceneComponent::AttachParent, AttachSocketName, and AttachChildren have been marked as deprecated as a bridge step to their privatization in 4.13.
- USceneComponent::SetupAttachment has been added and is intended to be used in constructors instead of setting AttachParent and AttachSocketName directly.
- USceneComponent::AttachTo now routes to SetupAttachment when called from a constructor.
- New: Widget Components now support rendering native Slate widgets directly (rather than only UMG widgets.)
- Simply call SetSlateWidget() on the WidgetComponent in C++ code to bind a Slate widget to render
- New: WorldSettings is now a member of ULevel instead of the (intended) invariant being that Actors[0] is always the World Settings object.
- An effort is made to maintain World Settings in the Actors[0] index, but it is no longer guaranteed (particularly after hot reload).
- AActor::GetNetDriver no longer crashes for Actors that are not currently in a World.
- Add more logging when character is stuck.
- Added check to Actor::PostActorConstruction to avoid calling BeginPlay on pendingkill Actor.
- Added comment explaining how AttachmentReplication is updated (via GatherCurrentMovement).
- Added DiagnosticCheckNaN() version to FRotator and FQuat that takes a string argument to prepend to the message.
- Added logging to ResolvePenetration for location of other object and current netmode (to make networked PIE easier to debug).
- Added logging to try to track down very rare case of level bounds actor with null RootComponent.
- Added NaN check within UCharacterMovementComponent::HasValidData() for cached rotation.
- Adjusted inline TArray sizes for Component and Actor arrays in FQueryCollisionParams. Used common define between that class and PhysX filtering code.
- Avoid multiple iterations with axis flipping in FindTeleportSpot unless we are spawning something. The teleport spot could otherwise be placed on the other side of a wall.
- Also avoid using a partial MTD result in EncroachingBlockingGeometry() when one of the MTD tests fails.
- Changed UMovementComponent::UpdatedComponent and UMovementComponent::UpdatedPrimitive to be Transient.
- They are not editable properties so should not be saved or loaded. UpdatedComponent is intended to be set in Actor constructors or via SetUpdatedComponent() at runtime.
- UpdatedPrimitive is initialized as a cast on UpdatedComponent, it should never be loaded either.
- Changed FQuat::IsIdentity() to use a stricter tolerance, and check all components rather than just W to better handle very small rotations.
- Fixes root motion in character movement introducing error in rotations.
- Also increased number of digits in FQuat::ToString() since the 8th and 9th digits are significant for small rotations.
- Cleaned up NaN checks in CharacterMovement. Changed checks to ensures to avoid crashing, and added more details in some messages.
- Fix root motion source jump forces not providing consistent in-air velocity on their last tick due to partial simulation times being the default. Added settings flag to DisablePartialEndTicks, enabled that setting by default on jump forces.
- Fix shutdown crash caused by delayed cleanup tasks in tick task sequencer.
- Fixed crash caused by TPlayerControllerIterator iterating out of bounds (thanks mollstam!).
- Fixed FMath::Fmod(X, Y) sometimes returning small negative values for positive X and Y due to float imprecision.
- Fixed issue in PlayerCameraManager where the priority-based sorting of CameraModifiers wasn't sorting properly.
- Fixed matrix transforms inUCharacterMovementComponent::UpdateBasedMovement() causing slight position error.
- FixupDeltaSeconds() now considers time dilation when clamping. Acceptable ranges for time dilation values and undilated frametimes are now config parameters on WorldSettings.
- GameSession::SessionName is now respected in GameMode::InitGame. (Contributed by slonopotamus)
- GetComponentByClass is no longer virtual, FindComponentByClass should be extended instead.
- Ignore PlayerController::ServerUpdateCamera RPCs when bUseClientSideCameraUpdates is false. (Contributed by slonopotamus)
- Improved logging for ResolvePenetration and Client/Server corrections.
- ResolvePenetration now includes original location, object it's stuck in, and how far it's penetrating.
- Client/Server correction logging (from p.NetShowCorrections) now include actor name, and more path to component base. Component name alone was not helpful as it does not give the actor context.
- Made FTransform::GetSafeScaleReciprocal() tolerance SMALL_NUMBER instead of zero.
- Made UCharacterMovementComponent::VerifyClientTimeStamp() virtual so projects can override with specific client timestamp verification logic
- Made FOverlapInfo() constructors explicit. Fixed uses of this struct that violated this.
- Modified minimum Duration values for JumpForce and MoveToForce ability tasks so that having minimum Duration values doesn't trigger check()s.
- Moved UninitializeComponents outside bActorInitialized check in AActor::RouteEndPlay to always uninitialize components when actor fails to spawn due to blocking collision.
- Moved various functions to ignore Move and Look input from PlayerController to Controller.
- Optimized APlayerController::IsLocalController() in the case where the bIsLocalPlayerController is set, or on dedicated servers (always known at compile time).
- Optimized USceneComponent::SetWorldTransform() to avoid unnecessary copies and avoid unaligned SIMD reads and writes.
- Prevented UWorld::RemovePawn() from unpossessing the wrong pawn.
- Savegames now serialize custom versions to ensure future compatibility.
- USceneComponent::Pre/PostNetReceive and PostRepNotifies are now protected instead of private so subclasses can extend.
- When adaptive network frequency is enabled and a character moves, force a net update.
- This prevents a long delay between movement updates and the client's perception of movement, and avoids choppy movement while replication is ramping up, while still allowing frequency to go down when not moving.
- Added UCharacterMovementComponent::ShouldCancelAdaptiveReplication() which checks for location, rotation, or velocity changes, and can be extended to check other values as well.
- UEngine::DefaultPreviewPawnClass and DefaultPreviewPawnClassName have been removed.
Localization
- Invalid invalid text format arguments now emit a warning.
- Arguments that failed to parse as an index (either because they were a string or were empty) previously silently applied fallback behavior. This warning ensures they will be caught as they may break localization by preventing argument re-ordering.
Networking
- New: Added a delegate that will be called as soon as a processing timeslice is exceeded while processing network connections in UIpNetDriver (processing still continues afterwards).
- Controlled by a new cvar n.IpNetDriverMaxFrameTimeBeforeAlert, set to 1 second by default.
- Adjusted existing warning for slow frames due to networking to be configurable with cvar.n.IpNetDriverMaxFrameTimeBeforeLogging (remains at 10 seconds by default).
- New: Added a new replication condition, COND_ReplayOnly, for replicating properties only to replays.
- New: Added basic ICMP echo request function to engine.
- New: Added ImportTextItem() and To/FromJson() to FUniqueNetIdRepl struct to handle json import and export.
- New: Added to JsonObjectConverter the ability for a UStruct to emit json as a string if type traits are setup with ExportTextItem / ImportTextItem. Allows a UStruct to convert to json as something other than FJsonValueObject.
- New: Small optimization to network actors when beacons are in use. Network actors are only in the relevant net driver list (DemoNetDriver is the one exception). Made NetDriverName private (Use SetNetDriverName to change)
- New: The list of network actors to replicate to clients has moved from per-world (UWorld::NetworkActors) to per network driver (UNetDriver::NetworkObjects).
- This shouldn't affect you unless you have modified engine networking code, but it is an important step in enabling more networking optimizations.
- It also helps simplify the handling of cases where there are multiple network drivers in one world, such as demo and beacon drivers.
- Add progress delegate notification for http downloads on PS4.
- Added NotifyPreClientTravel multicast delegate.
- Default MaxSearchResults in FOnlineSessionSearch objects to 1 instead of 0, so that the default behavior is to find exactly one session instead of completing right away without searching for sessions.
- Fixed an issue where during replay playback, FHttpNetworkReplayStreamer was calling the FOnStreamReadyDelegate with an incorrect second parameter, indicating that the streamer was recording instead of playing back.
- Fixed FindInactivePlayer and AddInactive player to make sure to use valid unique IDs if they exist.
- Removed an invalid assert in FHttpNetworkReplayStreamer.
En ligne
- New: Add an optional parameter "bPrettyPrint" to FJsonObjectConverter::UStructToJsonObjectString and FOnlineJsonSerializable::ToJson (defaulted to true).
- New: Add config options [HTTP]CurlMaxSimultaneousRequests and [HTTP]CurlMaxRequestsAddedPerFrame to limit number of simultaneous HTTP requests processed through curl and number of requests added to curl per frame to reduce hitches. Default values are uncapped to retain prior behavior.
- New: Added a CheckAvailability function to the hotfix manager that simply checks for different/new/old hotfix files but doesn't apply them
- New: Added ParseHttpDate/ToHttpDate functions to FDateTime – parses based on spec found athttps://www.w3.org/Protocols/rfc2616….html#sec3.3.1
- New: Added UParty::HasPendingPartyJoin(), which will return true if a player has accepted an invite, but it hasn't been processed yet.
- New: Implement operator==/!= for FVariantData for bool type.
- New: Renamed UPartyGameState::InitLocalPlayerPartyData() to UPartyGameState::InitPartyMemberStateFromLocalPlayer, and changed how SendLocalPlayerPartyData initializes UPartyMemberState objects to reduce duplicate code and extra looping.
- New: WebBrowser: Adding a custom tag to devtool web browser windows.
- Allow hotfixmanager to run on dedicated servers and client builds.
- Improved FindInactivePlayer and AddInactivePlayer functions to better leverage UniqueIds per player if UniqueIds are in use in the game. Preferred over comparing via NetworkAddress.
Autre
- Cooker: Prevented log spew about moving items to chunk X when they were already pre-assigned to chunk X (items that are referenced by other chunk 0 items but hadn't been reached yet in the chunk traversal).
- Make sure that SaveToINI doesn't try to save console window positioning information when bad/invalid handles are present.
La physique
- New: Add the option to turn off active transforms for projects that don't use them.
- New: Added Test option to async scene query API (sweeps, raycasts etc), in addition to existing Single and Multi options.
- New: Allow efficient filtering by component or by actor in preFilter. Makes actor filtering thread safe.
- New: Give the ability to turn off face remap table which saves memory in PhysX.
- New: Make sub-stepping run on game thread. This is done for safety of various user callbacks and simplifies a lot of the code. The simulation is still not on the game thread of course, but the callbacks are.
- New: Prevent non simulating actors from being put in the simulation scene.
- New: Remove WITH_SUBSTEPPING as it is now supported on all platforms.
- New: Share BodySetup for sphere component. This skips the need to create a NewObject whenever a blueprint with a sphere component is spawned.
- New: Update HandlePhysicsCollisions_AssumesLocked so that it can filter hit events and modify impulses.
- Fixed FBodyInstance::GetBodyBounds not working on static bodies.
- PhysX fix for penetration test returning NaN.
Platforms
Android
- Added a way to unregister signal handlers on Android by calling FPlatformMisc::SetCrashHandler((void(*)(const FGenericCrashContext& Context)) -1); (used in VulkanRHI.cpp).
- Bugfix: Fixed linker warnings (mismatched function/variable declaration for glMapBufferOES and glUnmapBufferOES) for Arm64 with NDK11.
- Improvements for debugging. We now use dwarf-4 and don't force inline for debug builds.
iOS
- Make Xcode create a copy of iOS and TVOS apps in Payload folder when needed to work around the bug in Xcode where it tries to launch
-Mac- .app instead of .app. Mac
- OnControllerConnectionChange is dispatched on Mac when gamepad is connected/disconnected.
- RunUAT.sh can now be run from any working directory.
PlayStation 4
- New: Added a new interface in the platform features family, IVideoRecordingSystem, and an implementation for Playstation 4.
- This interface allows programmatic control over the platform's video recording functionality and allows clips recorded through the interface to be shared via the "SHARE" button.
- New: Implemented the SendSessionInviteToFriend and SendSessionInviteToFriends functions in FOnlineSessionPS4 so now invitations can be sent programmatically.
- New: Moved BoundShaderStateHistory to the context instead of the RHI to avoid critical section.
- Added a log statement when the gap between SubmitDone calls exceeds 2 seconds and removed a duplicate call to set the LastSubmitDoneTime.
- Call SubmitDone immediately after flushing the GPU (to ensure it happens during a long frame in case additional work is generated after the flush).
- Optimized PrepareForDrawcall.
- When checking the results from sceNpGetParentalControlInfo, we no longer check the chatRestriction or ugcRestriction flags if sceNpGetParentalControlInfo returned an error, since these flags are not reliably set in that case.
Xbox One
- New: Added support for FSystemWideCriticalSection to Xbox One.
- New: Enabled the use of variadic templates on Xbox One.
- XInputInterface now dispatches OnControllerConnectionChange messages.
HTML5
- New: master build script for HTML5 ThirdParty libraries.
les fenêtres
- XInputInterface now dispatches OnControllerConnectionChange messages.
- Window positions are now treated as being the top-left of the window client area. This only affects windows with an OS border, and matches the behavior of the other desktop platforms.
Programming
- New: Added the ability to query body setup directly for distance to closest point. Added the ability to query closest point on physics asset.
- New: Removed all code testing whether we are using a 'Rocket' build.
- Changed to check whether build was installed where appropriate, unified behavior in some other areas
- New: UnrealBuildTool: Exposed the ability to compile with checks enabled in shipping and test configurations by setting UEBuildConfiguration.bUseChecksInShipping in your Target.cs.
- Added a build exception to give a message instead of crashing when trying to generate all project files from an installed build.
- Added UnrealLightmass to list of programs to build when Build Solution is used and Editor configuration is selected.
- Changed UnrealFileServer to be non-monolithic so that it doesn't include code that is not public.
- Ensured that warnings from Dynamic Compilation of build.cs files are propagated up to user when compiling in IDE.
Rendering
- New: Added a tiny state cache to the frontend of RHICmdList to get rid of redundant rasterizer and depthstencil states.
- New: Added back support for draw event colors.
- New: Added code to optionally move the lighting stuff from initviews to after the prepass.
- New: Added detailed command list markers for GPU particles.
- New: Added display of benchmark results to the 'scalability auto' command output, and also added them to FQualityLevels returned by BenchmarkQualityLevels so user code can make use of them.
- New: Added render thread start and stop delegates. GitHub 2006.
- New: Added stats down to the emitter level. New -leaf option for stat dump commands. HUD stats now correctly add new stats while the display is up.
- New: Allow UTextureRenderTarget::GetRenderTargetResource to be called in parallel. By user request.
- New: Allow collision and trail particles to run off the game thread.
- New: Allow users to pass in multipliers for benchmark results to Scalability::BenchmarkQualityLevels (to scale the results prior to lookup in the scalability tables for the different quality levels).
- New: Allowed spline meshes to share vertex factories.
- New: Changed PC to default to parallel rendering when not in editor.
- New: Enabled texture streaming over budget tracking even when stat tracking is not enabled (Test and Shipping) (via IStreamingManager::Get().GetTextureStreamingManager().GetMemoryOverBudget()).
- New: Merged atmosphere, global distance field and perlin noise into the frame uniform buffer and disabled the BuiltinSamplersUB.
- Avoid recalculating shader map ID in a cooked build; it was readily available.
- Fixed a critical bug in the render thread fencing that could sometimes cause fences to complete before previous commands.
- Fixed an issue with recurisve shader init on consoles.
- Fixed async compute submits in the editor.
- Fixed memory bug with HISMC.
- Fixed race condition on particle system vertex factories.
- Fixed recursive shader intialization crash on consoles.
- Fixed rotation bug in DrawDebugSolidBox.
- Fixed shadows updating static meshes while the prepass is in progress.
- Fixed threading bug with atmosphere.
- Fixed crash in FHierarchicalStaticMeshSceneProxy related to reflection captures and foliage.
- Proper fix for shadow setup concurrent with prepass crash.
- Safe, plausible fix for crash report replating to override vertex colors.
FX
- New: Exposed FRawDistributionFloat and FRawDistributionVector outside Engine module.
Postprocessing
- Optimized allocations in FFinalPostProcessSettings. Fixed bug skipping an element when updating the ContributingCubemaps array if one is removed during an iteration.
Optimizations
- Removed unused TangentZDelta_DEPRECATED member from FVertexAnimDelta.
UI
Ardoise
- New: Added a UObject stat around a cache miss in FCompositeFontCache::GetFontFace, so the load time is traceable to the specific asset that is getting unpacked from bulk data.
Upgrade Notes
AI
Debugging Tools
- Please check GameplayDebugger.h for detailed upgrade instructions.
Blueprints
- No specific upgrade instructions, but the new system will not take hold until a blueprint is recompiled and saved.
Core
- Warnings may now issue on load when converting integer properties that lose information. This includes conversions like an int32 property saved as -1, then loaded as a uint32.
- Any tools which rely on reading UnrealHeaderTool.manifest will have to be updated to read
.uhtmanifest instead. - UCLASS, UENUM etc. declarations are now illegal outside of global scope. If you have a type which is nested inside a UCLASS or USTRUCT, they should be moved to global scope.
Editor and Tools
Content Browser
- UFactory::StaticImport will now call FactoryCreateFile for both text and binary files. The default implementation will load the file into a buffer/string and call FactoryCreateBinary/FactoryCreateText to preserve legacy behavior. New factories may override FactoryCreateFile to perform their own file processing instead.
Gameplay Framework
- Deprecated the following functions: AActor::AttachRootComponentTo, AActor::AttachRootComponentToActor, AActor::DetachSceneComponentsFromParent, USceneComponent::AttachTo, USceneComponent::DetachFromParent
- If you've overriden AGameMode::GetSeamlessTravelActorList and are not calling Super::GetSeamlessTravelActorList then must make sure to manually include this in the ActorList if you wish the GameMode to persist across the transition.
Localization
- Packages that may have failed to correctly serialize in 4.11 should now automatically serialize correctly if they contain an FText property making use of the FFormatArgumentData.
Networking
- Fixed byte ordering issues in IP address conversions
- non-desktop platforms now use a single (multicast) socket for Messaging
- simplified IPv4 API to make it easier to use
- added more unit tests, documentation
- This also fixes most of XboxOne Messaging support. It is now possible to interact with Xbox One in UnrealFrontend. Until we have support for running IPv4 and IPv6 in parallel in the Editor, this requires a StaticEnd.
En ligne
- Reimplement inherited implementations of void UPartyGameState::InitLocalPlayerPartyData() to UPartyGameState::InitPartyMemberStateFromLocalPlayer(const ULocalPlayer* LocalPlayer) and initialize UPartyMemberState objects one player at a time.
Platforms
- From the command line, separate targets with a '+' character.
- From the UI, set your Default Deploy Platform to None, then select the check box next to each intended target.
- To select multiple targets:
- From the UI, set your Default Deploy Platform to None, then select the check box next to each intended target.
- From the command line, separate targets with a '+' character.
Programming
- UE4 tools now require the Visual Studio 2015 Runtime to run.
Rendering
- In case you see "Rendering of stretched decals" you might have to make some small blueprint/code changes to your project, more info see: "Streched decals – fix and details".
- The CreateMeshSection and UpdateMeshSection functions on ProceduralMeshComponent have been changed to use LinearColor for the 'Vertex Color' input, as this is properly supported by Blueprints. Existing nodes will need to be replaced.
Éclairage
- Memory usage for light probes is slightly increased.
Matériaux
- Fixed inconsistency in lighting (in shadow and not in shadow) with SubsurfaceScatteringProfile. A minor retweak of the material might be needed.
GameDev News
Commentaires
Laisser un commentaire