Alt-F4 n°13 - Recherches achéologiques de Mégabases  13-11-2020

Écrit par stringweasel, édité par Conor_, nanogamer7, Therenas, nicgarner, Firerazer,
traduit par bev

Sommaire

Dans ce numéro 13 des Alt-F4, publié comme par un étrange hasard le vendredi 13 (c’est presque comme si nous l’avions prévu), nous nous concentrons sur un seul sujet : la construction du plus grand nombre possible de missiles de défense. Qu’est-ce qu’un missile de défense, me demandez-vous ? Eh bien, Stringweasel est là pour vous le dire, en vous ramenant à une époque plus simple : le pays de Factorio 0.11.

Les archives de Nauvis : Un missile de défense par minute stringweasel

Depuis le début, les joueurs ont repoussé les limites de Factorio ; en voyant à quel point ils peuvent construire leurs usines de plus en plus massives avant que le jeu ne commence à grincer et à succomber en une mort lente et douloureuse des UPS. Au fil des ans, ces limites ont été maintes fois dépassées chaque fois que les joueurs atteignent de nouveaux sommets. Aujourd’hui, les records sont basés sur la consommation continue d’un maximum de science, mesurée en termes de science par minute, ou spm. Le principal facteur limitant ici est que la construction d’usines plus grandes diminue également vos “mises à jour par seconde”, ou UPS pour lesquelles l’ordinateur peut fonctionner. Garder une mégabase proche de l’idéal de 60 UPS est une forme d’art en soi, et jouer avec des UPS plus faibles ralentit physiquement le jeu, ce qui rend très chronophage l’expansion de votre base.

Actuellement, le record mondial en spm semble être la base 60 UPS à 20 000 spm de u/swolar. Cette incroyable base fonctionne selon le jeu normal, mais elle a été construite en utilisant quelques mods et des commandes de console pour générer des minerais, etc. Il y a presque trois ans, le record était probablement détenu par u/SteveTrov avec sa base de 15 rpm fonctionnant à 15 UPS, sans aucun mod. (Remarquez que la mesure était le rpm, l’abréviation de fusées par minute, car c’était avant que la science infinie ne rende la mesure en spm possible.) À noter également, à la même époque, la base à 10 rpm non moddée de u/AccidentalChef fonctionnant à 10 UPS, ce qui a poussé SteveTrov franchir le cap des 15 rpm.

Il y a ensuite une race de joueurs qui construisent de véritables mégabases non moddées, sans utiliser l’éditeur ou les commandes de la console, et parfois même en conservant les déchiqueteurs, ce qui rend les grosses constructions beaucoup plus difficiles. Ce record est probablement détenu par la base à 10 000 spm de Gh0stP1rate et Hamiebarmund, fonctionnant à 15 UPS, qui a été réalisée très récemment. Le record précédent de ce genre a probablement été établi par u/SteveTrov, qui avait une base à 5800 spm en août 2020 fonctionnant à 90 UPS, qui a été construite “à l’ancienne”.

Alors, à quoi ressemblait la plus grande mégabase il y a cinq ans - avant même les lancements de fusées ; retour à l’époque de Factorio 0.11 ? Eh bien, il y a une base qui se démarquait vraiment des autres, et j’ai eu une discussion avec le créateur DaveMcW à propos de son concept.

Le récit

À l’époque, avant la 0.12, les bases étaient mesurées en missiles de défense par heure, ou rdph. Le Missile de défense était l’objet final du jeu qui déclenchait la condition de victoire, mais il était très coûteux, d’où le “par heure”. L’idée était de “protéger le débarquement de la flotte de sauvetage” - bien qu’aucune flotte de sauvetage ne soit jamais arrivée. Les bases n’atteignaient que rarement 1 rdph, pour ne pas dire 60 rdph. Construire des bases à une telle échelle n’était tout simplement pas faisable à l’époque, et on se demandait si le jeu pouvait même supporter des usines aussi grandes. Par exemple, la plus grande usine de l’époque était probablement celle de ColonelWill qui pouvait faire 15 rdph, mais pas de façon constante car elle était à court de matières premières. Et elle a été construite avec l’aide de certains mods comme FARL. Puis, le 29 juin 2015, DaveMcW a montré au monde entier ce qu’il était possible de faire avec sa megabase record ancienne école à 60 rdph (ou 1 rdpm).

Base à 1 missile de défense par minute de DaveMcW (publiée sur Reddit et les forums de Factorio).

Cette base de 6 km sur 6 km a fait trembler la communauté, comme l’a clairement exprimé le commentaire de u/TheWrongCat en haut de la page. Elle a surpris certains des plus grands constructeurs de Factorio, dont u/Zistau, u/rootnegative et u/Xterminator5. Même le fondateur de Wube, u/kovarex a fait remarquer qu’il serait difficile d’optimiser Factorio pour faire fonctionner cette base à 60 FPS/UPS (plus d’informations à ce sujet plus tard). Cette base a même été mentionnée dans le FFF-93 comme “la plus grande usine jamais construite”, et a été utilisée par les développeurs comme référence d’optimisation pendant un certain temps. DaveMcW a fait voler en éclats les attentes des gens quant à ce qui était possible de faire dans Factorio.

Il convient de noter que pour certains, il n’est pas surprenant que ce soit DaveMcW qui ait conçu cette base record ; il a toujours été à la pointe en matière de technique dans Factorio. Par exemple, il a été l’inventeur de la chaîne de caractères pour les plans, qui a ensuite été ajoutée au jeu normal. Il a construit le premier grand écran couleur, célèbre pour avoir présenté Sandstrom de Darude. Il a créé le mod appelé Recursive Blueprints pour automatiser le placement des plans, puis a construit une usine entièrement fonctionnelle en utilisant le mod et qui était limitée à seulement 9x14 tuiles. Il a même trouvé l’origine du graphisme originel de l’artefact alien !

Quel est le problème ?

La taille et le débit de cette base sont stupéfiants, même pour les normes actuelles. À l’époque, Factorio était loin d’être aussi optimisé, si bien que la base n’atteignait que 2 FPS/7 UPS lorsqu’elle fonctionnait à plein régime ! Pour la comparer à ce que nous connaissons aujourd’hui, nous pouvons nous intéresser à la quantité folle de circuits qu’elle consommait, qui étaient les principaux ingrédients du missile de défense. Il s’avère que c’est presque comparable à une usine actuelle de 2500 spm avec tous les bonus de productivité. Ce qu’il a construit était pourtant complètement nouveau ; c’était le vrai jeu de base, y compris les déchiqueteurs, sans copier-coller-annuler, sans livres de plans, sans roboports personnels, sans un affichage en direct sur la carte, ni aucun calculateurs existant, tout en jouant probablement à 5 FPS/15 UPS (usine au ralenti). Une véritable base de la vieille école.

À l’époque, il n’était pas évident d’atteindre ce débit. Par exemple, les convoyeurs perdaient de la compression dans les virages. Et puis, il y a les diffuseurs qui sont utilisées dans presque chaque mégabase. Ils diminuent la taille de votre base et augmentent votre UPS, mais nécessitent un débit élevé d’objets pour continuer à être alimentés. De nos jours, il est banal de placer 12 diffuseurs autour d’une machine d’assemblage avec suffisamment de bras et de convoyeurs pour l’alimenter et la décharger. Mais en 0.11, il n’y avait pas de bras haute-capacité et le seul bonus de taille de pile était pour les transferts de conteneur à conteneur où ils pouvaient empiler cinq objets. Cela signifie que le simple fait de placer suffisamment de bras à côté d’une machine est devenu un problème. Par exemple, remarquez comment les usines de produits chimiques qui produisent du plastique ont quatre bras de sortie dans l’image ci-dessous, même si elles ne sont affectées que par quatre diffuseurs chacune.

Une section de fabrication de circuits qui se répète dans toute la base. Remarquez le nombre de bras autour de l’usine chimique qui produit le plastique, et comment, sur un convoyeur comprimé comme la ligne de cuivre la plus à droite, les objets ne semblent pas comprimés, mais plutôt dispersés. (Accéléré 10 fois)

Plus impressionnant encore est le fait d’importer suffisamment de ressources brutes pour alimenter cette base ; cela nécessite une logistique qui est encore considérée comme massive aujourd’hui. L’une des principales raisons de cette situation est qu’en 0.11, il n’y avait pas de productivité minière, ce qui signifiait que les gisements de ressources s’épuisaient rapidement, et que le maintien d’une mégabase consistait malheureusement à reconstruire constamment les avant-postes (d’où l’ajout de la productivité minière en 0.15). DaveMcW a résolu a atténué ce problème en construisant un réseau d’avant-postes absolument gigantesque à l’aide de trains. Utilisant 72 gares de déchargement réparties sur quatre réseaux ferroviaires distincts, il avait 216 trains qui importaient du minerai de 216 avant-postes de ressources. (Non, ce n’est pas une faute de frappe). C’est ce dont il avait besoin pour alimenter son usine sans manquer de minerai, pendant 20 heures au moins. De plus, il disposait de 1 091 chevalets de pompage munis de diffuseurs pour la vitesse sur des champs de pétrole épuisés, tous reliés à la base principale. Pas de wagons-citernes en 0.11, souvenez-vous.

Le réseau ferroviaire tentaculaire lui-même, qui est l’aspect préféré de DaveMcW dans sa base, est également fascinant. Comme mentionné, il est énorme, avec 216 trains rapides circulant (ils étaient alimentés au charbon) entre les 216 avant-postes. En 0.11, il n’y avait pas de signaux chaînés, ce qui signifie que les grandes intersections étaient inextrickablement délicates à concevoir pour un débit élevé tout en évitant les blocages. Sa solution était d’éliminer la nécessité des carrefours. À la place, chacun de ses quatre réseaux ferroviaires en miroir était constitué d’une seule grande boucle, ce qui signifie qu’il n’y avait jamais de trafic traversant des côtés opposés ! En outre, en 0.11, les horaires de trains ne pouvaient traiter qu’une condition de temps d’attente dépassé en gare. Afin de s’assurer que tous les avant-postes soient exploités de manière égale, chacun des 216 trains avait donc un temps d’attente personnalisé. Il convient de noter que la construction de rails en 0.11 n’était pas aussi facile qu’aujourd’hui avec le mécanisme de construction cliquer-glisser. Avant la 0.13, les rails devaient être construits pièce par pièce en utilisant des morceaux de rails droits et courbés. À titre de référence, ce gigantesque réseau ferroviaire comptait près de 77 000 morceaux de rails. La plupart d’entre eux ont probablement été placés à la main, car ils ne pouvaient être placés par des robots que s’ils étaient couverts par la logistique (aucun roboport personnel n’était disponible).

Chemin de fer principal (de gauche à droite) montrant les embranchements vers les avant-postes (en bas) et un avant-poste de fer. Remarquez le vieux graphisme du train et les artéfacts alien qui gisent sur le sol. (Accéléré 10 fois)

Enfin, et c’est à mon avis la partie la plus impressionnante, c’est la disposition élégante et simple de la base, alors que son débit était plus de quatre fois supérieur à celui de toutes les bases précédentes. Il a fallu 11 mois à DaveMcW pour concevoir et construire cette base, et vous pouvez le voir dans la précision de cette construction. Un convoyeur est seulement aussi rapide qu’il doit l’être, et jamais placé inutilement. Tous les ratios sont parfaits à quelques pourcents près. De ce fait, les convoyeurs ne font que rarement marche arrière, ce qui donne à la base un aspect plus vivant. Et tout est magnifiquement symétrique dans les quatre directions, s’étendant à partir d’un seul point, ce qui met en évidence le missile de défense. Et le fait que tout cela ait été construit sans mod, et sans roboport personnel, est ahurissant.

Faire tourner l’usine en 1.0

J’étais curieux de savoir comment cette mégabase fonctionnerait avec Factorio 1.0 et toutes les optimisations que les développeurs ont apportées au cours des cinq années écoulées. Alors, je l’ai migrée. Cela a pris plus de temps que prévu, mais ça marche ! Pour information, sur mon PC utilisant la version 0.11.22, la base tourne à 2 FPS/6 UPS, mais en 1.0, elle atteint environ 65 FPS/65 UPS avec des graphismes de haute qualité ! (Avertissement : la migration vers la version 1.0 n’est pas totalement parfaite. L’objectif était simplement que toutes les machines fonctionnent de manière similaire à la version 0.11. Il y a probablement quelque chose que j’ai manqué ou simplement ignoré, par exemple la production d’énergie négligeable.)

Visualisation du graphique de production
Le nouveau graphique de production s’aligne presque exactement sur les objets produits il y a plus de cinq ans. La zone centrale montre le processus d’essais-erreurs (ce n’est pas une représentation exacte du temps passé).

Une des quatre fabriques de circuits en miroir. Remarquez la disposition : elle est répétée de gauche à droite avec quatre sections similaires, et elle montre trois sections répétées en ligne.

De nombreux changements ont été nécessaires pour faire fonctionner cette ancienne base en 1.0. Il a fallu commencer par ajouter des objets et modifier les recettes pour imiter la version 0.11, ce qui inclut la multiplication par dix des quantités de fluides et un rapport circuit avancé/câble en cuivre de 8:1, et pas de 6:1. Ensuite, il y a eu des changements plus simples, comme le remplacement des petites pompes (dont DaveMcW était également l’expert) par des pompes simples ; les petites pompes en 0.11 étaient beaucoup plus faibles que les pompes actuelles, de sorte qu’il fallait en avoir plusieurs en parallèle pour maintenir le plein débit. Un autre changement nécessaire était l’ajout manuel d’un convoyeur directement devant les bras où il n’était pas nécessaire auparavant, ce qui a dû être corrigé pour la plupart des avant-postes ! Et, comme mentionné précédemment, la taille de la pile des bras à l’époque était toujours de 1, sauf lorsque l’on passait de conteneur à conteneur, alors la prime était de 5. Ce nombre était fixé individuellement pour chaque bras à l’aide d’un script.

Différence entre les anciennes petites pompes et les nouvelles pompes (à gauche), y compris la nouvelle pompe côtière (à droite) et l’ajout de l’eau polluée. Notez également le changement dans la façon dont les transitions entre les tuiles sont gérées.

Il y a eu quelques autres changements qui n’étaient pas apparents au début, mais qui sont assez intéressants. Par exemple, en 0.11, le débit d’un répartiteur était limité par sa vitesse de sortie, alors qu’aujourd’hui il est limité par sa vitesse d’entrée. Un répartiteur jaune pouvait alimenter deux convoyeurs jaunes pleins avec un seul convoyeur rouge en entrée. Il a fallu aussi que je m’assure que les déchiqueteurs ne puissent pas pénétrer dans le périmètre avec des défenses dépassées. Cela s’explique en partie par le fait que dans la version 0.11, il n’y avait pas de déchiqueteurs géants, mais le problème principal était que DaveMcW utilisait le vieux truc du convoyeur qui interrompait l’animation d’attaque du cracheur, empêchant celui-ci de faire des dégâts. Cela signifie que les tourelles laser n’avaient à se concentrer que sur les mêlées de mordeurs. Ce truc du convoyeur ne fonctionne plus, ce qui signifie que le périmètre de défense doit aussi gérer les cracheurs. Pour contourner complètement ce problème avec la version 1.0, sans perdre l’impact des déchiqueteurs sur les performances, j’ai utilisé un script pour rendre ses ~24 000 tourelles laser 50 fois plus puissantes.

Truc du convoyeur avec le périmètre de défense laser
Mur d’enceinte dans la base 0.11 montrant le convoyeur qui interrompt l’animation d’attaque du cracheur. Remarquez les anciens graphismes de la tourelle laser 1x1. (Source de l’image)

Enfin, j’ai dû modifier manuellement toutes les gares verticales, ce qui a été la partie la plus longue puisqu’il y en a plus de 100 ! En effet, avant la version 0.13, les gares verticales et horizontales avaient des longueurs différentes en raison de la projection en 2,5D du monde dans Factorio. Dans l’ensemble, ce fut un défi très intéressant et passionnant de trouver et de résoudre les goulots d’étranglement et autres problèmes en changeant et en réparant le jeu, plutôt que la base elle-même.

Vue cartographique du réseau ferroviaire, montrant seulement un huitième des avant-postes.
Vue cartographique du réseau ferroviaire, montrant seulement 27 des 216 avant-postes.

Expérimentez vous-même cette base

Cette base est remarquable et restera toujours dans les mémoires comme l’une des premières véritables mégabases. Et vous pouvez explorer cette base vous-même en téléchargeant simplement la sauvegarde en 1.0 et le petit mod pack nécessaire ici. Ou, si vous aimez être rétro et avez de la patience, vous pouvez simplement télécharger Factorio 0.11 et la sauvegarde en 0.11 originale de DaveMcW. Ou, si vous voulez seulement jeter un coup d’œil rapide, vous pouvez même la visualiser au format Google Map ici, qui a été créé par Twinsen. Par ailleurs, des points Internet seront attribués à la première personne qui trouvera le roboport que DaveMcW a laissé tomber il y a cinq ans.

En conclusion, je voudrais demander que l’une des quatre fabrications de circuits en miroirs soit placé dans les prochaines simulations du menu principal de Factorio. La construction est chaotique, mais toujours très optimisée, mise en œuvre avec précision et très agréable à regarder. Plus important encore, cette base a établi des principes de mégabase qui seront valables pour les années à venir, à une époque où l’art des constructions hautement optimisées ne fait que commencer. C’est une base dont on pourrait se souvenir à jamais. (Ou du moins jusqu’à ce que cette flotte de sauvetage arrive enfin.)

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 !