Génération Procédurale: Quid de Unity vs Unreal Engine ?

Il y a quelques temps, je suis tombé sur cet article qui compare Unreal Engine et Unity sous l’angle de la génération procédurale utilisant des voxels. Voyons ce qu’en pense l’auteur, et ce que nous pouvons aussi ajouter sur ce sujet.

La génération procédurale, je ne vous la présente plus ? C’est la possibilité de générer des paysages, mais aussi tout objet comme une échelle, à partir d’un certain nombre d’assets et d’un programme. Pour une échelle, vous avez besoin des cotés et d’un barreau pour générer n’importe quelle taille d’échelle avec de multiples barreaux, en utilisant une “procédure” qui va allonger les cotés et multiplier les barreaux. Pour un paysage, c’est plus compliqué, mais on raisonne de la même façon. Quant aux Voxels, ce sont des pixels 3D qui ont un volume. Les blocs de minecraft en sont un exemple. On parlera de voxel pour la représentation mémoire des blocs, alors que l’affichage passe bien par de la rasterisation de triangles. Un paysage en voxels (même uniquement mémoire), vous permet de creuser ce dernier par exemple. Bon, je m’arrête ici pour le rappel.

L’auteur nous dit qu’Unity a un gros avantage sur UE4, c’est qu’il supporte nativement les « Textures Arrays ». Toutefois, il semble oublier que depuis peu, UE4 les supporte également en natif au travers des textures volumétriques. L’article date pourant du 30 juin, mais nul n’est parfait. Bon le support n’est peut-être pas aussi bien intégré toutefois, mais cela devrait s’améliorer dans quelques temps. D’ailleurs, il me semble qu’il y a de nouvelles pistes avec la version 4.18, mais n’ayant pas encore eu le temps de l’explorer, je ne veux pas m’aventurer.

Autre point important, c’est la gestion physique : PhysX utilisé par UE4 ne supporte pas les convex hulls alors qu’Unity les supporte sans broncher. Il faut donc intégrer un nouvel algorithme pour cela. Il y a aussi le fait que la destination d’un navmesh ne peut-être modifiée en temps-réel sous UE4. On peut le faire en changeant le code avec peu de modifs, mais pas avec la version officielle.

L’auteur conclut donc que, bien qu’on puisse modifier UE4 coté code source par rapport à Unity qui est une boite noire, un développeur de plugin ne peut utiliser cette option ! On se rappellera les turpitudes avec Truesky où on travaillait toujours avec une version « alternative » du moteur, toujours en retard… L’auteur semble oublier qu’Epic Games a tendance à fusionner les « pull requests » en quantité et donc, assez rapidement, ce genre de soucis est écarté. Alors que coté Unity, si ce n’est pas prévu… ben, il faudra attendre qu’ils décident de le mettre en place.

Bon, l’auteur n’est pas le premier venu, il bosse chez Voxel Farm qui propose probablement le meilleur plugin de voxels pour UE4 :

Notez que la version Voxel Farm 3 INDIE coûte 260€ et qu’elle dispose d’un plugin pour UE4 et pour Unity (Windows uniquement). Elle offre le droit à 1 an de mises à jour. Pour du multi-plateformes, il faudra aller vers la version Pro (995$). Une version Trial de 30 jours est disponible.

3 réflexions sur « Génération Procédurale: Quid de Unity vs Unreal Engine ? »

    1. convex hulls: c’est l’enveloppe convexe, c’est une sorte d’objet simplifié qui enveloppe un objet 3D et qui le représente pour la gestion de la physique. On peut par exemple utiliser un cube “physique” pour représenter une sphère 3D, mais elle ne va pas rouler… Pour des objets complexes, un convex hull va permettre de coller au mieux de l’objet, tout en restant plus “simple” pour la 3D.
      Le Navmesh, c’est le mesh de navigation. C’est un objet 3D contenant le chemin qu’un personnage est capable de suivre sur un terrain. Il y a des surfaces sur lesquelles il peut marcher, d’autres non. Ca permet de calculer le plus court chemin pour relier un point d’une carte à une autre et déplacer ainsi un personnage.

Laisser un commentaire