A tool to help calculate how to split conveyors in Satisfactory into specific ratios.

Overview

Satisfactory Splitter Calculator

A tool to help calculate how to split conveyors in Satisfactory into specific ratios.

Dependencies

Python 3.9

PyYAML

Python Graphviz (Note: Requires actual Graphviz, more details on pypi.)

Usage

Run conveyor_nodes.py with a YAML file as the first argument.

python conveyor_nodes.py my_yaml.yaml

or just drag and drop the YAML onto conveyor_nodes.py so that it "Opens With" the python file.

YAML File

The YAML File is broken into multiple parts, broken up by ---. The first is the config section, that holds the options available to change how the program will calculate and show its output.

The second section is where you put what it is going to do. There are currently only three things that can go in here.

Calculate: output_filename    # This tell it to calculate the values in the next section and output to output_filename.
Save Nodes: Yes    # If Calculate is present, will additionally save to output_filename.yaml all the nodes used for the output.
Graph: output_filename    # This will try reloading nodes from the next section. Automatically set in file created by Save Nodes.

The third / last section is the ratio input. If you would like to just evenly split a belt into N outputs:

- N    # Where N is the desired amount of outputs. N should be an integer or it will fail.

Otherwise, put in how much to give to each output and put floats / decimals in as fractions or mixed numbers.

# Example of 3:5
- 3
- 5

# Example of a fraction (3/5):
- - 3
  - 5

# Example of mixed number (7 5/9):
- - 7
  - 5
  - 9

# Can also be used to get N outputs showing value X, example 5 of 12:
- 12
- 12
- 12
- 12
- 12

Can also be a JSON if it follows the sections being elements in a list, and it's filename ends with .json

Output

Output is done with a Graphviz Digraph. From each node, there is an arrow pointing to where it goes. The arrow should be labeled, but it may be hard on some outputs to associate a number with a node. When graphing, nodes are displayed in a few different ways depending on what it represents.

By Default, the house and inverted houses are Inputs and Output respectively. Diamonds are for splitters while diamonds with lines inside are smart splitters set to send everything down some belt amount with overflow for the rest. Squares are mergers. Currently, a chain of mergers will be condensed into a single merger, but I may change/fix that in the future.

Some examples:

Graph for 1:3 Graph for 60:15 Graph for 10:45:60 Graph for even split between 15 Graph for 33 1/3 : 5 1/8

It is likely still not perfect and I recommend checking that it makes sense. Mainly the sum of the inputs match the sum of the outputs and that the inputs and outputs are what you expect.

Planned Additions & Contributing

There's only two more things I'm really considering adding to this project. Those being 1) Being able to set how many belts can converge on one merger, and 2) Being able to take N inputs to M outputs. Besides that and polishing, I don't plan to do anything else.

I don't really have experience collaborating through GitHub, but you are welcome to submit a pull request. Good luck though, I tried keeping it clean, but some places are better than others and documentation / comments still need some work. (I'll get to it eventually (probably)).

License

MIT

Owner
RobotiCat
RobotiCat
Python Example Project Structure

Python Example Project Structure Example of statuses that can be in readme: Visit my docs for the full documentation, examples and guides. With this p

1 Oct 31, 2021
Simple kivy project to help new kivy users build android apps with python.

Kivy Calculator A Simple Calculator made with kivy framework.Works on all platforms from Windows/linux to android. Description Simple kivy project to

Oussama Ben Sassi 6 Oct 06, 2022
Open slidebook .sldy files in Python

Work in progress slidebook-python Open slidebook .sldy files in Python To install slidebook-python requires Python = 3.9 pip install slidebook-python

The Institute of Cancer Research 2 May 04, 2022
Ked interpreter built with Lex, Yacc and Python

Ked Ked is the first programming language known to hail from The People's Republic of Cork. It was first discovered and partially described by Adam Ly

Eoin O'Brien 1 Feb 08, 2022
Displays Christmas-themed ASCII art

Christmas Color Scripts Displays Christmas-themed ASCII art. This was mainly inspired by DistroTube's Shell Color Scripts Screenshots ASCII Shadow Tex

1 Aug 09, 2022
Provides guideline on how to configure pre-commit hooks in your own python project

Pre-commit Configuration Guide The main aim of this repository is to act as a guide on how to configure the pre-commit hooks in your existing python p

Faraz Ahmed Khan 2 Mar 31, 2022
We'll be using HTML, CSS and JavaScript for the frontend

We'll be using HTML, CSS and JavaScript for the frontend. Nothing to install in specific. Open your text-editor and start coding a beautiful front-end.

Mugada sai tilak 1 Dec 15, 2021
This is a simple analogue clock made with turtle in python...

Analogue-Clock This is a simple analogue clock made with turtle in python... Requirements None, only you need to have windows 😉 ...Enjoy! Installatio

Abhyush 3 Jan 14, 2022
Simplest way to find Appointments in Bürgeramt Berlin, Not over engineered.

Simplest way to find Appointments in Bürgeramt Berlin, Not over engineered. Der einfachste Weg, Termine im Bürgeramt Berlin zu finden, ohne viel Schnickschnack.

Jannis 8 Nov 25, 2022
A New, Interactive Approach to Learning Python

This is the repository for The Python Workshop, published by Packt. It contains all the supporting project files necessary to work through the course from start to finish.

Packt Workshops 231 Dec 26, 2022
A Lynx that manages a group that puts the federation first.

Lynx Super Federation Management Group Lynx was created to manage your groups on telegram and focuses on the Lynx Federation. I made this to root out

Unknown 2 Nov 01, 2022
Машинное обучение на ФКН ВШЭ

Курс "Машинное обучение" на ФКН ВШЭ Конспекты лекций, материалы семинаров и домашние задания (теоретические, практические, соревнования) по курсу "Маш

Evgeny Sokolov 2.2k Jan 04, 2023
A tool to build reproducible wheels for you Python project or for all of your dependencies

asaman: Amra Saman (আমরা সমান) This is a tool to build reproducible wheels for your Python project or for all of your dependencies. What this means is

Kushal Das 14 Aug 05, 2022
A demo Piccolo app - a movie database!

PyMDb Welcome to the Python Movie Database! Built using Piccolo, Piccolo Admin, and FastAPI. Created for a presentation given at PyData Global 2021. R

11 Oct 16, 2022
Transform your boring distro into a hacking powerhouse.

Pentizer Transform your boring distro into a hacking powerhouse. Pentizer is a personal project that imports Kali and Parrot repositories in any Debia

Michail Tsimpliarakis 2 Nov 05, 2021
Double Pendulum implementation in Python, now with added pendulums and trails :D

Double Pendulum Using Curses in Python. A nice relaxing double pendulum simulation using ASCII, able to simulate multiple pendulums at once, and provi

Nekurone 62 Dec 14, 2022
An upgraded version of extractJS

extractJS_2.0 An enhanced version of extractJS with even more functionality Features Discover JavaScript files directly from the webpage Customizable

Ali 4 Dec 21, 2022
Project issue to website data transformation toolkit

braintransform Project issue to website data transformation toolkit. Introduction The purpose of these scripts is to be able to dynamically generate t

Brainhack 1 Nov 19, 2021
The earliest beta version of pytgcalls on Linux x86_64 and ARM64! Use in production at your own risk!

Public beta test. Use in production at your own risk! tgcalls - a python binding for tgcalls (c++ lib by Telegram); pytgcalls - library connecting pyt

Il'ya 21 Jan 13, 2022
Hashcrack: Hash Bruteforse tool using python

HashCrack Hash Bruteforse tool Usage hashcrack.py -n 6 -c lower -l 5 -a md5 -t 3

Lev 1 May 04, 2022