Résolveur Satisfactory

·

Je suis devenu accro à Satisfactory durant l’Update 3.

Qui aurait pu deviner que j’aimerais un jeu où il faut optimiser des workflows et créer des systèmes parfaitement balancés?

J’ai essayé oh combien de fois de construire une feuille Excel générique pour calculer diverses options d’usines rapidement. Je voulais qu’elles soient les plus efficientes possible et qu’elles soient les plus rentables possible.

Plusieurs outils sont disponibles en ligne pour faire exactement cela, et même plus. Satisfactory Calculator est un exemple populaire.

Cependant, je le percevais comme étant de la triche. Je voulais jouer au jeu, avoir l’expérience complète, et cela signifiait faire toutes les maths par moi-même.

Mais, si je fais un programme qui calcule les maths, alors je fais toutes les maths par proxy! C’est ce projet.

Présentation

La figure suivante conçoit une usine de “Modular Frame” générant 60 items par minute.

Un exemple d'usine de Modular Frame Un exemple d’usine de Modular Frame

L’application affiche certaines informations utiles de la manière suivante.

SymboleSignification
Bordures bleuesUn surplus de production
Bordures rougesUn déficit d’entrées
Nombres sur les noeudsLe nombre de machines requises
Nombres sur les arêtesCombien d’items intermédiaires allant de A vers B

Elle permet de comparer plusieurs designs d’usine et d’évaluer lequel est meilleur dans une situation donnée.

Comparaison de plusieurs variations d'usine de vis Comparaison de plusieurs variations d’usine de vis

L’application gère également les cycles gracieusement, utilisant les produits avant de requérir plus d’entrées (tel que vu avec l’exemple de l’eau dans la figure suivante).

Gestion des cycles d'items Gestion des cycles d’items

Motivations

Stack technique

Les items et les recettes sont scraped du Wiki en utilisant un script Node personnalisé.

L’application est conçue en utilisant React et se base largement sur React Flow pour gérer les saisies utilisateur.
Elle est disponible via GitHub Pages.
Tout est codé avec TypeScript.