epic own save

somehow i accidentally saved my own goal

EDIT: this is like my best save ever

u/Number_3434 — 15 days ago
▲ 25 r/FactorioBlueprints+1 crossposts

Space Age: Fully Exhaustive List of EVERY signal, in a Combinator.

A Truly Exhaustive List of Every Valid Signal in Factorio: Space Age (v2.0.77).

I made a CSV file of every signal in Space Age, and put it into a combinator. Each signal is included in each of the 6 qualities.

I wrote a Lua snippet (run in the Factorio console) that finds every valid signal via inspecting the game's prototypes. This gave me the complete list of every possible signal Factorio would allow in a blueprint, which I then saved to a file. I then wrote a Python script that puts all those signals with every quality into a decider combinator, and converts those into a blueprint string.

  • I've also included the source code further down in case anyone else would like to reproduce my results / use this on a later version of Space Age.

Comparison Table (Space Age v2.0.77):

Version Base Signals Total Unique Signals Storage per Combinator
Previous best (used all signals directly selectable using UI) 581 2,905 (uses 5 qualities) 11.6 KB
Obscure previous best (JSON file of over half of all the siganls) 1,300 7,800 (if using all 6 qualities) 31.2 KB
This version (all signals exported using a script) 2,224 13,344 (uses all 6 qualities) 53.3 KB

Notable Inclusions

  • All placeable items (e.g. assembling machine, inserter, power pole, etc.) have their own "remnants" signal and "dying explosion" signal, both also available in every quality.
  • Almost all living entities have a "corpse" signal, and usually also multiple particles associated with them. For example, there are 182 different item IDs with the word "demolisher" in them.
  • This already TRIPLES the amount of usable signals. Note that these extra signals are available in Editor mode, but cannot be placed in a slot using the UI (they can be obtained in the cursor, but in "item placement mode" where menus cannot be opened and the player quickbar is hidden. For example, cliff is included, but can only be placed. Otherwise, it is not possible to obtain them in the cursor regularly).
  • A few signals DO NOT RENDER IN THE UI at all. For example, most of the parameter signals do not show up in the UI (no icon, no number, don't show up in input / output) but otherwise function like regular signals. (Verified using lamps and also a selector combinator with "count inputs").

This is a a singular decider combinator containing every possible signal in Factorio: Space Age a combinator can contain. I believe this list is exhaustive. (Stored in a decider combinator as it allows the blueprint string to be smaller in size than using a Constant combinator).

  • Includes every signal from the prototypes (item, fluid, virtual, entity, recipe, space-location, asteroid-chunk, quality), which are the only prototype categories allowed for signals, as defined in the Factorio API Reference.
  • Each signal is included in every quality (normal, uncommon, rare, epic, legendary, and quality-unknown). quality-unknown is a special quality used internally by Factorio, but is also a valid quality for a signal.
  • This list also includes signals only shown in Editor mode (such as cliff, big-demolisher-expanding-ash-cloud-1, etc.), as well as remnants and explosions (e.g. artillery-wagon-explosion, artillery-wagon-remnants).

^(N.B.: There are 8 signals from the CSV that don't work as they are wildcard signals.)

Below is the Python code used to generate the blueprint string:

# This is the original Python script used to generate the comprehensive list of all
# Factorio: Space Age signals as listed at https://lua-api.factorio.com/latest/concepts/SignalIDType.html
# Last updated: September 2026
#
# To generate `signals.csv`, run the below code in the Factorio console:
#
# /c local t={}; local function add(p,typ) for n,_ in pairs(p) do t[#t+1]=typ..","..n end end; add(prototypes.item,"item"); add(prototypes.fluid,"fluid"); add(prototypes.recipe,"recipe"); add(prototypes.entity,"entity"); add(prototypes.space_location,"space-location"); add(prototypes.asteroid_chunk,"asteroid-chunk"); add(prototypes.quality,"quality"); add(prototypes.virtual_signal,"virtual"); helpers.write_file("signals.csv",table.concat(t,"\\n"))
#
# Then, copy 'signals.csv' from the 'script-output' folder in the Factorio user data directory to the folder this script is in.
#
# Requires: pyperclip for copying to clipboard


USE_INDEXED = False  # If `True`, the signals value will match their 1-based index.`
CSV_FILENAME = "signals.csv"


def main():
    import base64
    import json
    from pathlib import Path
    import zlib

    import pyperclip

    if not (CSV_PATH := Path(CSV_FILENAME)).exists():
        raise FileNotFoundError(
            "\n".join([
                f"File not found: '{CSV_PATH}'",
                "To generate the CSV file, run the below code in the Factorio console:",
                "",
                """/c local t={}; local function add(p,typ) for n,_ in pairs(p) do t[#t+1]=typ..","..n end end; add(prototypes.item,"item"); add(prototypes.fluid,"fluid"); add(prototypes.recipe,"recipe"); add(prototypes.entity,"entity"); add(prototypes.space_location,"space-location"); add(prototypes.asteroid_chunk,"asteroid-chunk"); add(prototypes.quality,"quality"); add(prototypes.virtual_signal,"virtual"); helpers.write_file("signals.csv",table.concat(t,"\\n"))""",
                "",
                "Then, copy 'signals.csv' from the 'script-output' folder in the Factorio user data directory to the folder this script is in.",
            ])
        )

    def encode_blueprint(data: dict) -> str:
        raw = json.dumps(data, separators=(",", ":"), ensure_ascii=False).encode("utf-8")
        compressed = zlib.compress(raw, level=zlib.Z_BEST_COMPRESSION)

        # Factorio version prefix
        return "0" + base64.b64encode(compressed).decode("ascii")

    # These signals do not work
    BLACKLIST_SIGNALS = (
        "virtual,signal-everything",
        "virtual,signal-each",
        "virtual,signal-anything",
        "virtual,signal-item-parameter",
        "virtual,signal-fuel-parameter",
        "virtual,signal-fluid-parameter",
        "virtual,signal-signal-parameter",
        "virtual,signal-unknown",
    )
    SIGNALS = tuple(
        {"type": k, "name": v}
        for k, v in [
            line.split(",")
            for line in CSV_PATH.read_text().splitlines()
            if line not in BLACKLIST_SIGNALS  # 5 signals are invalid
        ]
    )
    QUALITIES = "normal", "uncommon", "rare", "epic", "legendary", "quality-unknown"
    outputs = []

    for s in SIGNALS:
        for q in QUALITIES:
            data = {
                "signal": {**s, "quality": q},
                "copy_count_from_input": False,
            }

            if USE_INDEXED:
                data["constant"] = len(outputs) + 1  # must be 1-indexed

            outputs.append(data)

    result = encode_blueprint({
        "blueprint": {
            "description": f"A decider combinator containing all the possible {len(outputs)} signals in Factorio: Space Age.{'\n\nIndexed by item count.' if USE_INDEXED else ''}",
            "icons": [{"signal": {"name": "decider-combinator"}, "index": 1}],
            "entities": [
                {
                    "entity_number": 1,
                    "name": "decider-combinator",
                    "position": {"x": 0, "y": 0},
                    "direction": 4,
                    "control_behavior": {
                        "decider_conditions": {
                            "conditions": [{"first_signal": {"name": "gate"}, "comparator": "="}, {"first_signal": {"name": "gate"}, "comparator": "\u2260"}],
                            "outputs": outputs,
                        }
                    },
                }
            ],
            "item": "blueprint",
            "label": f"Factorio: Space Age - All {len(outputs)} Signals{' (Indexed)' if USE_INDEXED else ''}",
            "version": 562949958467584,
        }
    })
    pyperclip.copy(result)  # Copy to clipboard

    print(f"Blueprint copied to clipboard.")
    print(f"Blueprint length: {len(result)}")


if __name__ == "__main__":
    main()

Below is the Lua snippet run in the Factorio console used to generate a CSV of all the available signals:

/c local t={};
local function add(p,typ) for n,_ in pairs(p) do t[#t+1]=typ..","..n end end;
add(prototypes.item,"item");
add(prototypes.fluid,"fluid");
add(prototypes.recipe,"recipe");
add(prototypes.entity,"entity");
add(prototypes.space_location,"space-location");
add(prototypes.asteroid_chunk,"asteroid-chunk");
add(prototypes.quality,"quality");
add(prototypes.virtual_signal,"virtual");
helpers.write_file("signals.csv",table.concat(t,"\n"))

  • Note: the CSV file appears in the "script-output" folder of the Factorio user data directory.
  • N.B.: If generating using the lua command, note the CSV file will contain the 8 invalid wildcard signals, and will need to be manually removed.
  • Note 2: Some signals don't even show up at all in the GUI but work as they light up lamps, can be counted, and otherwise act as regular signals.

TL;DR; This has 2,224 * 6 qualities = 13,344 signals

  • Includes the 581 * 5 qualities selectable from UI = 2,905 signals selectable using UI
  • Includes an additional 10,439 unique signals not obtainable from the UI (remnants, dying explosions, corpses, particles, and the 6th quality). Most of these can be found in the "Entities" section in Editor mode, and can be put in the cursor, but not into a signal slot using the UI.
u/Number_3434 — 1 month ago
▲ 203 r/osugame

pp rework buffs goated players

im loving this pp rework so much its buffing our goated osu players back to the top

nice job peppy ❤️❤️❤️

u/Number_3434 — 3 months ago

Water Duplication Glitch Mod?

I'd like someone to bring back the water duplication glitch (ideally the developers, or as a mod). I'd say it's a feature, not a bug. For example, Mojang decided to keep redstone bugs in Minecraft Java, and removed them in Minecraft Bedrock. Now we see how much redstone has flourished due to these little quirks.

Honestly, for the amount of time and effort it takes to execute the glitch for the relatively tiny output, I'd say this should be acceptable?

I'm curious how many people want to bring the bug back.

reddit.com
u/Number_3434 — 4 months ago

I'd greatly appreciate any feedback on the track, its presentation, and layout on Bandcamp. This is my first time using Bandcamp and I don't know if I hit the correct aesthetic.

I'd like to note this release was a little rushed, and I could have added more elements + the mix is slightly clipping near the beginning.

P.S. I'm posting this purely to meet criteria for an assignment.

u/Number_3434 — 6 months ago