Thoughts on improving/simplifying this design for automating space ship requests?
In 2.1 I decided to try switching to interrupt based trains, and I am now sold and hooked immediately. The simplicity is fantastic, I don't have to hard code trains to different routes, and my defense train went from a gigantic 20-30 stop list to just a set of interrupts and have stops drive whether or not they need a train to come. Fantastic changes.
I wanted to try and apply the same idea to space logistics, and its been difficult. Biggest issue I think is that there's no parametric way to address spaceship routes, so you have to do a lot of legwork. And its not like you can turn a planet on and off like you can with stations.
So I did some experimenting in my save, this is the solution I came up with: Landing pad driven interrupt requests using radar.
Here's an example of a planet . We separate the , green sets requests and red reads contents. The first combinator is just to turn the red signal into a green signal, and set a multiplier so that I can control what level of missing items actually triggers a request. Right now its set so if Im missing half the request value, itll trigger output. Each one of these radar blocks consists of 4 things:
A constant combinator with a planet signal, not used for anything its just so I can see what planet its for
A constant combinator holding the set of requests I want that pad to have, output to red
A decider combinator who take the pads multiplied contents, and checks if any request items are greater than whats in the storage container. If so, it outputs the current planet's signal
A radar broadcasting to the planet signal for the planet thats being requested
You have a block for each planet request you have, right now I just have a single ship serving the inputs and outputs for each planet, though I haven't figured out how I want to handle shared routes (who handles nauvis requests from vulcanus, the nauvis ship or the vulcanus ship?). Right now its just arbitrary. I think my current plan is just over time have a single ship dedicated to every single planet connection, that would also make request uptime much higher as you dont have one ship dealing with requests between multiple planets.
Then on the ship, we have this. These are reading output signals from each radar, and outputting them to to the platform. The deciders exist mostly just as a separation, because I don't want the radars to output to eachother cause that would mess everything up. There's 2 kinds of radar here that are slightly different, on the vulcanus ship we have a vulcanus channel radar, everything from that radar just gets sent out. Then for all the other radar, we have it filtered so its only reading vulcanus signals from those radar.
So to sum up, planet X will check if needs anything from planet Y, and will output X on the Y channel. In other words, if channel A is outputting B, it means that B is requesting items from A.
The final piece is the platform: One of the more annoying parts is that we have to set all the requests we want to handle. It would be nice if there was some kind of grouping I could do so I could just say like "all requests from vulcanus" or something but I haven't thought of a clever way to do this. Just make sure if I have a new vulcanus request, the vulcanus ship picks it up. The second thing is the interrupt list. There's two types of request:
Restock interrupt. This ones simple and handled by regular interrupt shit, if you're missing a planetary import, go to the planet and get those resources. Put this one higher because otherwise if you're trying to handle a request for resources you don't have, you'll be stuck looping trying to fulfill a request you cant handle
An import request interrupt. Here we finally take that signal we generated, and use that to say "hey go to this planet and fulfill their request".
So overall I'm fairly happy with the result, I think there's two annoying problems to me that get worse with the multiple planet mods I have installed:
Imagine I have 10 planets, I need 10 radar blocks for every single platform and landing pad, and I need 20 interrupts for the planet restock and import requests. The interrupts is likely not avoidable since we can't do parametric planet requests.
Managing the list of requests and remembering to update all my ships and stuff gets really annoying.
So yeah, that's it. Wondering if people have ideas to improve or simplify things or any thoughts on the problems I laid out.
11
Kommentare
u/CamelCaseConvention·1·
I'm probably dumb, but I don't get this. In part, it reads like you want a fleet of ships that can go anywhere to pick up any request and deliver it to anywhere. This is how interrupt-based trains work. Then you say that you currently have one ship for each planet, but want one ship for each connection. This is a completely different model of transport. Also, it's not clear if you mean one ship per direct connection, or per pairing of planets. One ship per direct connection would again be different.
Then there's the "platform", which I'm not sure how that fits in. I guess you'd want intermediary platforms over each planet if you don't have end-to-end shipping. And you need to tell every platform and ship on the route that they need to request and release the wanted item. Is that what this is all about?
u/Raknarg·1·
it's not ships that handle anything from anywhere, it's ships that handle all requests from one planet to another on a pull-based interrupt system, and my setup has single ships handling multiple of these routes. Eventually I'll probably transition it to single ships for every route but that's expensive at the current stage of the game, takes hours to get the ships I'm using up and running
Then there's the "platform", which I'm not sure how that fits in
I'm just referring to the ships platform hub.
u/CamelCaseConvention·1·
Thoughts on improving/simplifying this design for automating space ship requests? · r/factorio · SubRead