Alt-F4 n°65 - Factorio en Unreal Engine 5  30-06-2023

Écrit par Hurricane, édité par Nanogamer7, stringweasel, Conor_, Therenas, MyNameIsTrez, Firerazer,
traduit par bev, Firerazer

Sommaire

Aujourd’hui, nous avons un projet très amusant à vous présenter : le projet FUE5, expliqué dans cet article par Hurricane. C’est Factorio, mais en 3D ! Les rêves deviennent parfois réalité. Ce n’est pas tout à fait un jeu, mais plutôt une nouvelle présentation étonnante de ses éléments visuels. Il y a beaucoup de détails techniques sur la façon dont cela a été réalisé, alors sautons dans le vif du sujet.

FUE5 ? C’est quoi ?

FUE5 (en abrégé Factorio avec Unreal Engine 5) est un projet expérimental avec un objectif simple : visualiser le monde 2D de Factorio dans un espace 3D. Il a été créé par l’artiste 3D Hurricane et le moddeur de Factorio Nuke en 5 mois (à partir du 10 janvier 2023). Alors que de nombreuses personnes créatives au sein de la communauté des moddeurs de Factorio créent des mods impressionnants, à grande échelle, tels que Space Exploration, les mods de Bob ou ceux d’Angel, nous avons décidé d’adopter une approche légèrement différente. Pour faire simple, ce projet est un environnement de visualisation 3D qui permet d’importer des bases depuis le jeu Factorio et de reproduire visuellement leur comportement. Il ne contient pas de mécanisme de jeu, mais vous pouvez survoler et visiter votre base en 3D.

Vue 3D d’une usine à grande échelle avec une variété de machines et de structures.
Exemple d’une usine à grande échelle issue de la bande-annonce. (Ne vous occupez pas des poteaux électriques manquants !)

Comment cela a-t-il été réalisé ?

Avant même de commencer à penser à un projet comme celui-ci, il était nécessaire de modéliser et d’animer chaque élément de Factorio, qu’il s’agisse d’une machine d’assemblage ou d’un bras, à partir de zéro, en se basant sur les graphismes du jeu. Nous avons utilisé Cinema4D pour la modélisation 3D et Adobe Photoshop pour la création des textures. Une fois le modèle et les textures terminés, la structure entière est exportée de Cinema4D au format FBX, qui est ensuite importé dans Unreal Engine 5, où les nuances appropriées sont appliquées. Ces nuances sont généralement des matériaux tels que le verre, le métal, ou même la fumée d’une cheminée.

Représentation de l’usine de produits chimiques en 3 étapes. À gauche : Graphisme de Factorio. Au milieu : Modélisation en fil de fer. À droite : Modélisation texturée.
Le processus de modélisation a été très amusant, mais la prochaine fois, il faudra plutôt demander les modèles originaux de Factorio, pour préserver ce qu’il reste de notre santé mentale.

Il était également nécessaire de reproduire plusieurs systèmes clés comme les convoyeurs, les trains et le système logistique. Ceux-ci ont été créés via le système natif de nœuds de plans de UE5. Nous avons décidé de créer toute la logique de ces systèmes une fois la modélisation 3D presque terminée, car il était nécessaire de placer les modèles 3D avec la bonne taille dans l’espace 3D pour aligner correctement les éléments mobiles tels que les trains et les objets sur les convoyeurs. Une étape majeure qui a permis de faire avancer le projet a été l’idée ingénieuse d’exporter les bases de Factorio directement depuis le jeu, puis de les importer dans l’environnement d’Unreal Engine. Cette solution a permis de gagner beaucoup de temps sur la construction des bases, qui aurait été fastidieuse et n’aurait pas eu l’air correcte si elle avait été réalisée uniquement dans Unreal Engine.

Graphe de nœuds dans Unity.
Quand on ne sait pas coder, on associe ces nœuds, et si ça ne marche pas, on en rajoute simplement de plus en plus et ça devient de plus en plus confus. Ça ressemble étrangement à un jeu d’usines auquel j’ai joué récemment...

1. Le système des structures

La première fonctionnalité majeure de FUE5 est la possibilité d’engendrer des structures de manière identique à ce que l’on trouve dans Factorio. En lisant les données du jeu, nous pouvons obtenir les types de bâtiments, leur orientation et les connexions de câbles. Ces informations sont exportées sous la forme d’un fichier JSON via le mod d’exportation FUE5 directement depuis le jeu. Ce fichier est ensuite lu par le projet FUE5, ce qui suffit à reproduire visuellement tous les comportements structurels et de véhicules de la base réelle.

2. Le système des convoyeurs

En plus de reproduire les modèles 3D des convoyeurs individuels, nous avons dû mettre au point le mécanisme de déplacement des objets. Pour ce faire, nous avons représenté les convoyeurs sous forme de courbes. Lors de l’exportation d’une base Factorio via l’exportateur FUE5, chaque segment de convoyeurs continus (des convoyeurs qui sont connectés et qui se terminent dans un tunnel, en cul-de-sac ou qui forment une boucle) est traité comme son propre système individuel. Une fois que FUE5 a lu ces données, il construit une courbe pour chacun de ces systèmes individuels. Ces courbes guident ensuite les objets sur le même chemin que celui qu’ils suivent dans le jeu.

3. Le système des trains

Le système ferroviaire est assez différent du système des convoyeurs, car il serait très difficile de reproduire les horaires des trains, les signaux et les itinéraires des locomotives. Au lieu de cela, nous avons choisi d’utiliser le système natif de Factorio pour trouver les itinéraires que les trains doivent emprunter. Pour qu’un train puisse apparaître et rouler dans FUE5, il faut définir sa destination et lui donner le feu vert avant d’exporter la base. À ce stade, nous pouvons lire la trajectoire pré-calculée du train et l’utiliser pour construire une courbe qui dictera ensuite le mouvement du train dans FUE5.

4. Le système logistique

D’emblée, nous avons laissé de côté les robots de construction, puisque nous générons pour le moment les bâtiments via le système de script de construction natif de UE5. Et c’est ainsi que cela va rester pendant un certain temps. Nous nous sommes plutôt concentrés sur le bon fonctionnement des robots logistiques, car ils sont la ligne de vie de toute base intermédiaire dans Factorio et ils ajoutent beaucoup d’intérêts visuels à l’ensemble de l’image. Chaque roboport a une probabilité d’engendrer aléatoirement une série de robots logistiques, où chaque robot a son propre cerveau simple pour chercher des coffres logistiques dans les environs et voler entre eux pour reproduire visuellement le transport des ressources. Une fois le transport des ressources terminé, le robot détermine l’emplacement du roboport le plus proche et s’y rend pour disparaitre.

Problèmes et optimisation

Les premiers problèmes majeurs sont apparus lorsque des bases plus importantes ont été importées dans FUE5, dans les premiers jours du projet. Le taux de rafraîchissement chutait de manière significative et les événements de plan commençaient à produire des résultats peu fiables, ce qui explique pourquoi un important travail d’optimisation a été nécessaire pour faire tourner le projet ne serait-ce qu’à 30 ou 60 images/s.

Les principales décisions d’optimisation ont porté sur le nombre de polygones, la résolution des textures, les particules et la quantité de mises à jour en temps réel. Ces dernières ont dû être réduites de manière drastique en optimisant le système de convoyeurs de transport, qui provoquait de nombreux bégaiements dans les premiers jours du projet. Nous avons également beaucoup gagné en ajustant et en optimisant le niveau de détail des parties animées des structures. Ces parties comprennent des éléments tels que les cylindres en rotation sur les centrifugeuses, ou tous les engrenages et les pistons sur le toit des machines d’assemblage.

Réseau de textures 3D de fours électriques.
On n’a jamais assez de plaques de fer.

Il a également fallu obtenir l’approbation des développeurs de Factorio, Wube Software. Interrogés sur la légalité de cette entreprise, ils ont fait preuve d’une grande compréhension et ont autorisé la publication du projet, à condition qu’il ne soit pas utilisé à des fins commerciales.

La partie amusante

Une fois que l’idée générale et la plupart des prototypes ont été mis au point au cours des deux premiers mois de production, il est devenu assez facile de reproduire les divers éléments et systèmes de Factorio. C’est à ce moment-là que nous avons pu nous concentrer sur l’aspect esthétique de l’ensemble et sur la création de la bande-annonce de lancement, qui présente des bases à grande échelle construites à l’aide de l’exportateur FUE5, ainsi que beaucoup d’autres choses intéressantes que l’on peut faire dans l’environnement FUE5.

Il a fallu construire beaucoup de choses personnalisées pour les usines à grande échelle présentées dans la bande-annonce. La simple possibilité d’exporter les bases de Factorio dans le jeu ne permet pas d’obtenir des résultats très propres et cinématographiques, c’est pourquoi il a fallu procéder à de nombreux ajustements à la main pour que tout soit beau pour la caméra ! Il s’est également avéré que les bases spaghetti sont beaucoup plus amusantes visuellement que les longues rangées de bâtiments identiques optimisées pour une production de sciences par minute (ou SPM) élevée.

Cube avec des machines et des structures sur chaque côté.
Est-ce le *skyblock* dont j’ai tant entendu parler ?

Comment utiliser FUE5 ?

Ce projet n’est pas un jeu, n’a pas d’interface utilisateur et est assez complexe. Ceci étant dit, vous pouvez trouver une description complète du processus sur notre page GitHub. En plus de l’installation de UE5 et de l’exécution du projet téléchargé, le processus se résume simplement à sélectionner la partie de votre base que vous souhaitez exporter, et à l’exporter vers FUE5 comme décrit dans le guide détaillé. Une fois que vous avez suivi le processus une fois, il devient très facile de le répéter.

Pour le futur

Nous avons voulu partager ce projet en open source via GitHub, parce que la communauté Factorio est un groupe extrêmement dévoué de personnes très créatives, et avoir accès à un tel projet pourrait permettre à certaines d’entre elles de découvrir le monde qu’elles aiment dans une nouvelle dimension. De plus, cela pourrait donner aux plus créatifs la possibilité de créer des choses qui n’étaient pas possibles auparavant.

Nuke et moi-même travaillons actuellement à peaufiner les systèmes existants afin qu’ils soient faciles à utiliser et qu’ils fonctionnent bien, même avec des bases plus importantes. Nous avons également commencé à réfléchir à l’idée d’ajouter du contenu moddé dans le futur.

The factory must grow! L’usine doit s’agrandir !

Base d’ascenseur spatial en 3D entourée de convoyeurs et de machines.
Ce n’est pas une blague. Allez jouer à Space Exploration.

Contribuer

Comme toujours, nous attendons vos contributions pour les Alt-F4, que cela soit par la soumission d’un article ou en aidant pour les traductions. Si vous avez quelque chose d’intéressant en tête que vous souhaitez partager avec la communauté, vous êtes au bon endroit. Si vous n’êtes pas sûr, nous serons heureux de vous aider en discutant structure, contenu et idées. Donc si vous voulez vous impliquer dans les Alt-F4, rejoignez-le Discord pour ne rien rater !