Alt-F4 n°28 - FOR  19-03-2021

Écrit par Ph.X, édité par stringweasel, Nanogamer7, Conor_, Therenas, Firerazer,
traduit par bev

Sommaire

En cette belle semaine de mars, Ph.X, dont c’est la première contribution, nous parle de son système très compartimenté pour l’aménagement d’une base, à l’aide d’unités isolées reliées par un réseau de trains logistiques. S’inspirant du développement de logiciels et de ses leçons de programmation, Ph.X utilise les concepts de la programmation modulaire à son avantage.

Autre nouvelle, nous proposons désormais une liste de diffusion à laquelle vous pouvez vous inscrire ! Si vous ne naviguez pas régulièrement sur Reddit, les forums ou même notre Discord, nous vous offrons désormais la possibilité de vous inscrire à une liste d’adresses électroniques, un concept toujours très en vogue. Il vous suffit de nous communiquer votre adresse électronique ici et vous serez informé chaque vendredi de la sortie du dernier numéro. Bien entendu, nous n’utiliserons cette liste que pour les publications de Alt-F4 et nous ne vous inonderons pas de conneries sans intérêt.

Factorio Orienté Recette Ph.X

Factorio comprend un réseau complexe de chaînes de production (c’est-à-dire des spaghetti) qui rendent le jeu amusant et stimulant. Il s’agit d’un problème d’ingénierie complexe, avec des défis similaires à ceux du développement de logiciels. Je pense donc que ça vaut la peine d’utiliser une certaine approche de la vie réelle pour améliorer l’expérience de jeu.

“FOR”, c’est quoi ?

Les personnes ayant une expérience de la programmation devraient avoir entendu parler de la programmation modulaire orientée objet, qui est la théorie que Factorio Orienté Recette (FOR) vise à reproduire. La programmation modulaire est une technique de conception de logiciels qui met l’accent sur la séparation du fonctionnement d’un programme en plusieurs modules indépendants et interchangeables, de sorte que chacun d’entre eux contient tout ce qui est nécessaire pour exécuter un seul aspect du fonctionnement souhaité. Avec FOR, nous divisons l’ensemble de l’usine en unités de sous-usines indépendantes et interchangeables, de sorte que chacune d’entre elles contient tout ce qui est nécessaire pour traiter une seule recette de l’usine souhaitée.

Comme la plupart des philosophies, FOR essaie de trouver une Arkhè intemporelle comme origine de tout ; dans notre cas, nous choisissons la recette. Les circuits rouges peuvent être fabriqués par une machine d’assemblage de n’importe quel niveau, qui peut être affectée par différents modules, et les matières premières nécessaires peuvent provenir d’un convoyeur, d’un coffre logistique, ou même d’une machine d’assemblage de fils de cuivre adjacente, mais peu importe comment ces autres conditions peuvent changer, la recette elle-même reste des fils de cuivre, des circuits électroniques et des barres de plastique pour obtenir un circuit avancé. La recette est une sorte d’opération atomique dans Factorio : une unité indivisible, car elle ne peut être décomposée davantage.

En fonction de la recette choisie, une sous-usine dédiée est présentée comme une unité de fabrication. Un système logistique distinct est utilisé pour aller chercher les matières premières et acheminer les produits vers les unités, agissant comme une interface d’interaction entre elles et l’extérieur. L’objectif de cette division est d’obtenir une forte cohésion à l’intérieur des unités et une faible interaction entre elles. Une forte cohésion à l’intérieur de l’unité, ça signifie qu’elle contient toutes les installations (machines d’assemblage, bras, convoyeurs, poteaux électriques, diffuseurs, etc.) nécessaires à la réalisation de la recette afin qu’elle puisse fonctionner de manière autonome. Un faible couplage entre les unités, ça signifie qu’elles interagissent les unes avec les autres via des interfaces prédéfinies (par exemple, les réseaux électriques et ferroviaires) sans dépendance directe, ce qui les rend interchangeables.

Pour mieux mettre en œuvre cette idée, les mods LTN - Logistic Train Network, AAI Containers & Warehouses et Miniloader sont utilisés dans les exemples suivants. Les plans de tous les exemples ci-dessous peuvent être téléchargés ici.

Conception des interfaces

Avant de construire les unités de sous-usines, nous devons concevoir un réseau logistique universel qui servira d’interface entre elles. Même si un bus principal ou des robots logistiques peuvent être mis en œuvre en tant que système logistique dans une certaine mesure, un réseau ferroviaire maillé dépasse de loin les autres solutions en termes de débit, de réutilisation et de pure élégance.

Avec le jeu de base, les trains ne peuvent circuler que selon un horaire prédéterminé, ce qui n’est pas très flexible ni “logistique”. C’est là que le réseau de trains logistiques s’avère utile. Avec LTN, les trains sont parqués dans des gares de dépôt, tout comme les robots logistiques patientent dans des roboports. Lorsqu’il y a une demande logistique, le système trouve un train approprié au dépôt et génère un horaire pour qu’il aille chercher les objets spécifiés à la gare du fournisseur, puis se rende à celle du demandeur pour le déchargement, puis revienne à une gare de dépôt, de façon similaire au comportement d’un robot logistique. Mais contrairement aux robots logistiques, les trains ne se chargent ni ne se déchargent eux-mêmes, ce qui nécessite l’installation de bras ou de chargeurs dans les gares. Le réseau LTN est plus puissant qu’un réseau de robots logistiques en raison de l’énorme capacité de chargement, de la vitesse élevée et de la prise en charge des transports de fluides.

Dans mon exemple, le réseau ferroviaire choisi est une voie ferrée à double sens et circulation à gauche, ce qui me permet de placer les signaux ferroviaires entre les rails. Les embranchements sont perpendiculaires et ne permettent que de tourner à gauche, pour gagner de l’espace. La plupart des gares ont une limite de deux trains pour s’assurer qu’un seul train au maximum patiente à l’extérieur de la gare. Les sections occupées par des trains qui attendraient à l’extérieur des gares peuvent être contournées grâce au réseau entièrement interconnecté.

Réseau ferroviaire
Seule la case centrale contiendra une unité de fabrication.

Les unités sont maintenues à une certaine distance les unes des autres. Les mailles entre les unités sont utilisées pour la gestion du trafic ferroviaire, la production d’énergie solaire et la séparation des réseaux logistiques des robots. Les robots excellent dans la logistique à courte distance, mais sont très mauvais dans le transport à longue distance. Un réseau logistique séparé permet d’éviter que les robots ne fassent des vols longue distance inutiles, car cette partie du travail appartient aux trains.

Pour réduire la taille des trains et éliminer la nécessité d’équilibrer le chargement et le déchargement entre les wagons, on a choisi les plus petits trains possibles : deux voitures, c’est-à-dire une locomotive et un wagon de marchandises/wagon-citerne. Le réapprovisionnement en carburant des locomotives s’effectue dans les gares de dépôt LTN où les trains reviennent après chaque livraison.

Unité de dépôt ferroviaire
Le carburant utilisé pour le réapprovisionnement des locomotives est également acheminé via LTN.

Conception des unités

Commençons par l’exemple le plus simple, l’engrenage ; une recette avec un seul ingrédient et un seul produit. Un arrêt de train logistique en bas de la maille demande 8000 plaques de fer, et un arrêt de train logistique en haut fournit les objets (c’est-à-dire les engrenages) depuis l’entrepôt connecté.

Unité d’engrenages
Une unité d’engrenages simple. La gare des matières premières se trouve en bas, celle des produits est située en haut.

Étant donné que les entrées et les sorties de cette unité sont réalisées par des trains, les modifications ou les mises à niveau de la chaîne de production au sein de cette unité n’affecteront pas les autres. Ainsi, nous pourrions la transformer en une installation entièrement modulée sans rien changer d’autre dans l’usine globale.

Unité d’engrenages alternative
Unité d’engrenages avec diffuseurs. Pas de changement pour les gares, seule la ligne de production entre les gares est modifiée.

Maintenant, examinons une unité de circuits avancés avec trois types de matières premières. En paramétrant l’arrêt de train logistique pour demander plusieurs ingrédients, nous sommes en mesure de décharger toutes nos matières premières dans une seule et même gare. À ce stade, toutes les matières premières sont mélangées dans un seul entrepôt. Nous utilisons dès lors des chargeurs avec un filtre (similaires aux bras robotisés filtrables) pour séparer chaque matériau sur un convoyeur différent afin d’alimenter les machines d’assemblage.

Unité de circuits avancés
Unité de circuits avancés. Utilisation d’une seule gare pour fournir les matières premières.

Il en va de même pour les recettes qui produisent/consomment des fluides, si nous utilisons un wagon-citerne à la place.

Unité de raffinage du pétrole
Unité de raffinage du pétrole. Notez que le contrôle de la pompe via le signal LTN permet de charger ou décharger différents fluides à la même gare sans les mélanger.

Il existe également des recettes non conventionnelles, comme la recherche, la centrale électrique à vapeur et le silo à fusées.

Unité de centre de recherche
Unité de centre de recherche, qui n’a pas besoin de gare de sortie.

Unité de centrale électrique à vapeur
Centrale électrique à vapeur avec des remblais à placer sur l’eau. Ou bien vous pouvez utiliser Landfill Everything pour préparer le site.

Unité de silo à fusées
Unité de silo à fusées. Des réseaux de robots logistiques indépendants sont utilisés à l’intérieur de l’unité. La gare du bas est destinée aux matériaux nécessaires à la construction des fusées, et la gare de droite est destinée aux charges utiles de la fusée, généralement des satellites.

FOR, le pour et le contre

FOR s’adresse aux personnes ayant une âme d’ingénieur et permet aux joueurs de diviser et de maîtriser facilement les problèmes de production. Lorsque vous devez mettre en œuvre une certaine recette, il suffit de configurer les gares d’entrée et de sortie dans la maille qui correspondent aux types de matières premières et de produits, puis de concevoir des lignes de production entre les gares. Lorsque le débit est insuffisant, vous pouvez directement copier et coller l’unité correspondante et l’intégrer à l’ensemble de la production de l’usine sans alourdir les entrées et les sorties.

FOR n’est pas optimisé pour une production parfaite, car il ne s’agit pas d’une ligne de production à ratio parfait, il est donc fréquent que les structures s’arrêtent de fonctionner en raison d’un manque de matières premières ou d’un débordement de produits. Chaque objet doit être chargé et déchargé d’un wagon, ce qui ajoute de nombreux goulots d’étranglement à l’entrée et à la sortie, le plus souvent dans le cas du fil de cuivre, où le nombre de produits dépasse le nombre de matières premières et où le nombre de piles est élevé alors que la demande est énorme. Il y a un stock très important pour chaque unité à cause des entrepôts, ce qui ne vous aide pas à identifier à temps les objets dont la production est insuffisante (mais ce sera certainement le minerai de fer). Le réseau ferroviaire utilisé pour la logistique inter-unités dans l’usine est coûteux à construire et présente également un grand nombre de risques d’accidents de la circulation (merci au Spidertron).

Conclusion

FOR est plus un mode de pensée qui tente de simplifier des problèmes complexes qu’un livre de plans. Les exemples ci-dessus ne sont qu’une illustration de solutions qui utilisent FOR comme guide. Utiliser LTN pour construire un réseau ferroviaire peut être considéré par certains comme une tricherie, mais cette idée peut également être utilisée avec le bus principal par exemple. Il n’y aura jamais une seule façon “correcte” de jouer à Factorio, c’est la variété qui le rend génial.

Une partie avec le mod Space Exploration et utilisant le schéma FOR expliqué ci-dessus.

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 !