## Friday Facts N°441 – Améliorations de la logistique spatiale ###### **Posté par** [Genhis](https://www.factorio.com/blog/author/Genhis), [Klonan](https://www.factorio.com/blog/author/Klonan) le 05-06-2026 Bonjour, Je suis ravi de déjà vous revoir tous. --- ### Fusées mixtes ###### *par Genhis* Imaginez que vous mettiez en place votre première plateforme spatiale. Vous commencez par assembler des tuiles, et un chargement complet vous est envoyé par fusée. Lorsque vous avez besoin de convoyeurs, de machines d'assemblage ou de fours, là encore, un lot complet vous est envoyé. Une petite plateforme peut nécessiter 10 à 20 fusées automatisées et il reste alors beaucoup d'objets inutilisés dans l'inventaire. L'avantage est que vous n'avez pas à attendre de recevoir davantage de matériel lorsque vous décidez de la modifier ou d'y ajouter des machines. C'est ainsi que nous avons imaginé la construction des plateformes spatiales : comme une progression par étapes. Mais tous les joueurs ne procèdent pas ainsi. Certains préfèrent planifier davantage à l'avance. Pour eux, envoyer des piles entières d'objets revient à gaspiller des fusées, surtout en début de partie. Nous avons remarqué ces discussions sur nos forums, sur Reddit et sur le Discord de la communauté. Nous n'avons pas abordé cette question lors du développement de la version 2.0, car mélanger plusieurs types d'objets dans une seule fusée semblait trop compliqué. Cela soulevait de nombreux cas particuliers auxquels nous n'avions pas de réponse satisfaisante. Cependant, c'était aussi quelque chose qui m'avait manqué lors de ma propre partie, à tel point que j'ai commencé à travailler sur un mod de validation de principe en exploitant notre API Lua. Il était fonctionnel, mais pas assez abouti pour être mis à disposition, et non, aucun de mes collègues ne l'a jamais vu. Ensuite, cette fonctionnalité est apparue d'elle-même sur notre liste de souhaits interne pour la version 2.1, et je me suis porté volontaire pour la mettre en œuvre. Gérer les cas particuliers, réfléchir à nos options et discuter de ce que nous voulions réaliser a pris pas mal de temps et n’a pas été sans compromis. Au final, je pense que nous avons trouvé une bonne solution, alors laissez-moi vous présenter nos résultats : | | | | ----------- | ----------- | | ![Une demande typique de construction de plateforme "complète"](https://cdn.factorio.com/assets/blog-sync/fff-441-platform-construction-request.png) | ![L'un des chargements mixtes destinés à la construction de la plateforme.](https://cdn.factorio.com/assets/blog-sync/fff-441-mixed-rocket-payload.png) | L'aspect essentiel de la prise en compte des chargements mixtes était de rendre le processus entièrement automatique. Concrètement, vous passez une commande depuis votre plateforme spatiale et, si les demandes automatiques sont activées dans votre silo à fusées, le système doit sélectionner le lot d'objets approprié et faire en sorte que des robots les livrent au silo. Parallèlement, nous devions garder à l'esprit les performances et ne pas chercher nécessairement la solution la plus optimale, mais plutôt simplement une solution suffisamment efficace. Nous traitons les demandes de manière séquentielle et commençons par celles dont le nombre est le plus faible. Il s’agit de demandes de construction uniques ou d’objets importants, nous souhaitons donc les livrer avant les marchandises en vrac que les plateformes transportent habituellement, comme la calcite de Vulcanus ou les packs de science planétaire. Les choses se compliquent si vous avez trop peu de demandes en attente pour remplir une fusée. Envoyer la fusée à moitié vide serait du gaspillage, mais nous ne savions pas comment résoudre cela de manière élégante lors de l'élaboration de la version 2.0. Pour la version 2.1, nous avons décidé de sélectionner les objets les plus demandés et d'en livrer plus que nécessaire, car vous en voudrez probablement davantage plus tard. Retarder le départ de la fusée jusqu'à ce que les joueurs demandent plus d'objets ne serait pas intuitif et ne fonctionnerait pas vraiment avec la condition "Toutes les demandes satisfaites". ![Démonstration étape par étape du fonctionnement.](https://cdn.factorio.com/assets/blog-sync/fff-441-mixed-rocket-logic.mp4) 1 : Une plateforme envoie des demandes 2 : Extraire et trier les demandes non satisfaites 3 : Préparer un chargement mixte à partir des demandes 4 : Livrer plus d'objets s'il y a suffisamment d'espace 5 : La fusée virtuelle est pleine, envoyer les demandes à la fusée réelle Même en livrant plus que nécessaire certains objets, l’algorithme peut ne pas parvenir à trouver un lot complet en raison de nos contraintes de tri. Cela se produit généralement lorsque vous n’avez pas assez de stocks dans votre réseau logistique. L’algorithme espère que les objets manquants seront finalement produits et préfère attendre. Certains collègues étaient alors perplexes à ce sujet lors de nos tests de jeu, j’avais donc choisi de revenir à des fusées à objet unique pour que les choses fonctionnent correctement. J’ai également apporté diverses autres modifications, de sorte que ce cas de figure devrait être très rare et nous pourrons modifier davantage le système en fonction des retours des joueurs. #### Blocages lors de la construction de plateformes Un autre cas difficile concernait les blocages liés aux plateformes spatiales. Quelques semaines après la sortie de la version 2.0, nous avons reçu un [rapport de bug](https://forums.factorio.com/122185) sur notre forum : le joueur avait collé un plan de plateforme de grande taille et son noyau ne disposait pas de suffisamment d’espace d’inventaire pour répondre à toutes les demandes. Avant qu’il n’ait pu obtenir suffisamment de tuiles et de baies de chargement, d’autres objets avaient réussi à remplir complètement le noyau. La solution consistait à renvoyer certains objets sur la planète et à s'assurer que les baies de chargement soient cette fois-ci en mesure de les accueillir. Bien sûr, nous devions corriger cela. Rseding a donc modifié le code pour ne plus inclure d'éléments impossibles à construire dans les demandes de construction. Cette correction fonctionnait bien lorsque les fusées envoyaient des piles complètes, mais elle entraînait une utilisation inefficace avec les nouveaux chargements mixtes. Réintroduire ce bug n'était pas envisageable, nous avons donc dû trouver une autre solution. Le fil de cette discussion avait suggéré de donner la priorité aux fondations de plateformes spatiales, ce qui est désormais possible puisque les demandes d'objets étaient de toute façon triées pour la logique de regroupement. J'ai donc ajouté une API de priorité des demandes aux prototypes d'objets et l'ai activée pour les fondations de plateformes et les baies de chargement. Les baies de chargement sont prioritaires afin d'accélérer la construction de grandes plateformes en ajoutant davantage de trappes d'entrée et en augmentant la taille de l'inventaire, mais cela signifie qu'elles peuvent encore bloquer la plateforme dans des cas extrêmement rares. Nous avons estimé que c'était un compromis acceptable. Ce changement rajoute tous les fantômes aux demandes de construction, même si la plateforme dispose de suffisamment de ressources, et inclut également les demandes d'objets des entités non construites ![Attente de demandes plus prioritaires : Fondation de plateforme spatiale](https://cdn.factorio.com/assets/blog-sync/fff-441-priority-request.png) Lors de ces modifications, j'ai également trouvé le temps de corriger des bugs de longue date, comme celui concernant le [chargement minimum personnalisé](https://forums.factorio.com/120756). L'utilisation d'un chargement minimum personnalisé ne devrait plus être nécessaire, mais cela fonctionne désormais comme prévu. La fusée demandera autant d'objets que possible, dans la limite de la quantité demandée ou de la quantité disponible dans votre réseau logistique, la plus faible des deux prévalant. Elle tentera de décoller dès que le chargement minimum est atteint et qu'aucun robot n'est en route pour apporter d'autres objets. J'ai même corrigé des cas liés aux mods, comme le lancement automatique d'objets en orbite si un mod l'active avec l'Ère spatiale, ce qui m'amène à notre prochain sujet. #### Extension de la prise en charge des mods pour les fusées Puisque je devais de toute façon réécrire la logique de livraison par fusée, j’ai voulu examiner les demandes des moddeurs à ce sujet. Bon nombre d'entre eux étaient mécontents que la capacité de charge de la fusée soit une constante utilitaire globale, mais leur [demande](https://forums.factorio.com/120129) avait été marquée comme "ne sera pas implémentée" car cela nécessitait une refonte importante du système. C’était le moment idéal pour y revenir. J'ai été surpris de voir à quel point la possibilité de modifier la charge utile compliquait la mise en œuvre, et je pense que Rseding avait raison de rejeter cette idée. Je ne sais pas vraiment si la difficulté augmente avec les fusées mixtes ou non, mais cela ajoute un paramètre d'optimisation supplémentaire à la livraison automatique par fusée, il est donc logique que ce ne soit pas simple. Néanmoins, j'étais déterminé à l'implémenter. Trouver le conditionnement optimal devient exponentiellement plus difficile, car il faut désormais non seulement conditionner les objets de manière optimale dans une fusée, mais aussi choisir la bonne taille de fusée pour livrer le moins d’objets supplémentaires possible. J’ai commencé à travailler sur la solution optimale en espérant que le code resterait suffisamment simple, mais dès que je résolvais un problème, je tombais sur un autre cas limite. Je m'inquiétais de l'impact sur les performances que pourraient avoir des approches plus complexes, alors j'ai finalement abandonné la plupart d'entre elles et choisi la méthode la plus simple. La logique sélectionne désormais la plus petite fusée disponible capable de contenir tous les objets demandés, alors qu'une meilleure approche pourrait consister à répartir la charge sur plusieurs fusées plus petites. C'est un compromis raisonnable et nous pourrons l'ajuster plus tard si quelqu'un vient avec une solution plus intelligente. Quant à la capacité de la fusée mentionnée dans l'infobulle de l'objet, ce qui était un autre obstacle à cette fonctionnalité, j'ai décidé de la laisser faire référence à la capacité par défaut dans les constantes utilitaires. La remplacer par le poids de l'objet et laisser les joueurs calculer la capacité de la fusée eux-mêmes aurait peut-être été préférable pour les mods comportant de nombreux silos de fusées personnalisés, mais pas vraiment pour l'Ère spatiale. De cette façon, l'Ère spatiale n'est pas affectée et les mods peuvent traiter leurs chargements personnalisés comme des multiplicateurs de cette valeur par défaut. ![Une infobulle d'un silo de fusée moddé avec une capacité de charge supérieure.](https://cdn.factorio.com/assets/blog-sync/fff-441-modded-silo-tooltip.png) Enfin, pour que le système de livraison automatisé fonctionne correctement avec des fusées mixtes, j'ai rendu la taille de l'inventaire des silos de fusées dynamique. Les emplacements d'inventaire augmenteront ou diminueront automatiquement lorsque de nouveaux objets seront ajoutés ou retirés, que ce soit physiquement ou via une interaction à distance. L'ancien modèle n'a pas disparu. Les moddeurs peuvent choisir entre un inventaire à poids limité et emplacements illimités et un inventaire sans limite de poids mais à emplacements limités. Ce choix est lié au paramètre de prototype `launch_to_space_platforms` car la livraison automatique de fusées ne peut fonctionner qu'avec des inventaires à taille dynamique. --- ### Améliorations des plateformes spatiales ###### *par Klonan* Les plateformes spatiales constituent l'épine dorsale logistique du système de jeu de l'Ère spatiale, et bien qu'elles fonctionnent correctement, nous avons apporté quelques améliorations au cours du développement de la version 2.1. #### Importer depuis : N'importe où Les demandes orbitales peuvent spécifier une planète à partir de laquelle importer les objets. C'est nécessaire pour que les plateformes puissent réellement déplacer des objets entre les planètes (par exemple, récupérer du tungstène de Vulcanus et l'acheminer vers Nauvis). S'il n'y avait pas de filtre sur la planète de départ, le jeu n'aurait aucun moyen de savoir où il est judicieux de déposer l'objet. Mais il s'avère qu'il existe certains cas où nous souhaitons importer des objets depuis pratiquement partout, ou tout au moins empêcher le dépôt d'objets sur n'importe quelle planète. L'exemple principal concerne les objets dont les plateformes ont elles-mêmes besoin (comme les piles à combustible, les kits de réparation, etc.). Il est en quelque sorte possible d'y parvenir avec plusieurs sections logistiques (chacune important depuis un emplacement différent), mais cela est fastidieux. À la place, nous avons simplement mis en œuvre la suggestion habituelle consistant à "laisser le champ \[Importer depuis\] vide", ce qui signifie désormais "Importer depuis n'importe quel endroit" : ![Ce filtre ne sera actif que sur la planète spécifiée. Le laisser vide signifie que le filtre sera actif sur toutes les planètes.](https://cdn.factorio.com/assets/blog-sync/fff-441-import-from-any.png) #### Pas de départ avec des objets dans la poubelle Un problème connexe est que si vous avez un filtre configuré pour vous débarasser d'objets sur une planète spécifique (par exemple, envoyer les barres d'uranium usagées sur Nauvis), il était possible que la plateforme reparte avec les objets toujours dans les emplacements de largage. Cela causait un petit problème indésirable dans certaines situations, notamment en décidant de manière aléatoire où les objets finiraient. Nous avons donc modifié la logique de la plateforme afin qu’elle attende que ses emplacements de largage soient vides avant de quitter l’emplacement actuel (s’il y a une surface où les jeter). ![](https://cdn.factorio.com/assets/blog-sync/fff-441-clear-drop-slots.png) Cela s'applique bien sûr également à tout objet mis manuellement à la poubelle, afin que vos vaisseaux d'expédition ne partent pas pendant que vous attendez vos robots de construction ou autres. Vous remarquerez également sur la capture d'écran la nouvelle diode à côté du panneau 'Emplacements de largage orbital', en passant le curseur dessus, vous verrez s'afficher l'état du système de largage, par exemple "Attente du temps nécessaire pour larguer les objets" ou "Toutes les gares de la surface sont occupées". #### Transferts de plateforme à plateforme Vous remarquerez peut-être quelque chose d’un peu suspect sur la dernière capture d’écran : "Pourquoi la plateforme importe-t-elle de la glace/du carbone/du soufre ? N’est-ce pas extrêmement inefficace voire illégal ?". Et oui ! Vous auriez tout à fait raison si nous jouions à la version 2.0. Cependant, avec la version 2.1, nous ajoutons la possibilité pour les plateformes d’envoyer et de recevoir des objets provenant d’autres plateformes : ![Les livraisons seront demandées aux plateformes spatiales en orbite autour de la planète.](https://cdn.factorio.com/assets/blog-sync/fff-441-import-from-platforms.png) Dans la demande orbitale, vous pouvez spécifier à partir de quel endroit le filtre effectuera la demande : * Planète : les livraisons seront demandées aux silos à fusées situés sur la planète. * Plateformes : les livraisons seront demandées aux plateformes spatiales en orbite autour de la planète. * Tout : les livraisons seront demandées à la fois à la planète et aux plateformes spatiales. Pour éviter les transferts d'objets involontaires et faciliter la découverte de cette fonctionnalité, les plateformes disposent d'une case à cocher permettant de spécifier si elles peuvent approvisionner d'autres plateformes ou non : ![Autoriser cette plateforme à fournir des matériaux à d'autres plateformes en orbite.](https://cdn.factorio.com/assets/blog-sync/fff-441-provide-to-platforms.png) Cela ouvre bien sûr tout un éventail de nouvelles possibilités, telles que : * Des plateformes tampons en orbite pour accélérer les rotations de transport. * Le démarrage plus rapide de grandes plateformes grâce à l'apport initial de minerai de glace, de carbone ou de fer. * L'assemblage en orbite de matériaux spatiaux (tels que les fondations de plateformes spatiales) pour économiser les fusées depuis la surface. * Et bien d'autres encore... #### Configuration des demandes du noyau Aucune fonctionnalité de Factorio n'est complète sans une véritable automatisation via le réseau logique. L'une des raisons pour lesquelles nous n'avions pas ajouté les demandes via la logique auparavant est que nous n'avions pas de moyen de spécifier de quelle planète les objets devaient être importés, et cela semblait être un système difficile à mettre en œuvre. Mais désormais, nous disposons de l'option "Importer depuis n'importe où", ce qui nous permet de conserver une conception claire et intuitive en indiquant "Les demandes via la logique peuvent être importées depuis n'importe quel emplacement", elles le font également depuis 'toutes' les sources (depuis la planète et les plateformes). ![Définit les demandes logistiques du coffre en fonction des signaux provenant du réseau logique.](https://cdn.factorio.com/assets/blog-sync/fff-441-set-hub-requests.png) Il est également possible d’utiliser 'Définir les demandes' en même temps que 'Lire le contenu', grâce à une petite magie d’auto-soustraction des signaux du réseau logique. #### Radar en mode Univers Pour que toutes les pièces s'assemblent, nous avons besoin d'un moyen de transmettre des signaux entre les plateformes et les planètes, et il est tout à fait naturel d'avoir cette fonctionnalité comme une extension de la connexion logique du radar : ![Le signal sera diffusé vers tous les radars en mode Univers utilisant le même canal.](https://cdn.factorio.com/assets/blog-sync/fff-441-radar-universe-mode.png) Vous pouvez spécifier un canal (identifiant de signal), et tous les radars utilisant le même canal universel échangeront des données entre eux. Sur une plateforme, vous pouvez filtrer les canaux en fonction de votre position actuelle pour obtenir les matériaux manquants d’une planète ou la cargaison disponible, et mettre en œuvre toute logique de votre choix pour contrôler et commander votre flotte. Toutes ces fonctionnalités se combinent pour rendre la logistique spatiale de la version 2.1 bien plus performante, oh et il y a encore une chose... --- ### Nouvelle animation du silo à fusées Dans le cadre de la version 2.1, nous effectuons une dernière retouche des graphismes, alors préparez vos yeux pour ce régal et pour bien d’autres à venir. ![Graphismes par Zsolti, sons par Ian.](https://cdn.factorio.com/assets/blog-sync/fff-441-new-rocket-silo.mp4) On voit désormais beaucoup plus clairement quand le silo est en cours de fabrication, et nous avons ajouté une petite trappe en haut à droite pour que les robots puissent y récupérer ou déposer des objets. --- Comme toujours, mélangez un chargement de vos réflexions aux endroits habituels. {btnFactoForum}(https://forums.factorio.com/133809) {btnFactoReddit}(https://www.reddit.com/r/factorio/comments/1txhnd9/friday_facts_441_space_logistics_improvements/)