tsunamayo / Starship-EVO

Welcome to Starship EVO bug tracking repo !
118 stars 17 forks source link

[Bug] 24w42b- Newer Conveyor Tube bugs #6072

Open Crimson-Artist opened 3 weeks ago

Crimson-Artist commented 3 weeks ago

I found several bugs with the new conveyor tubes.

1. All new conveyor tubes can not be occupy the same space as hull blocks. This is strange since all of the normal conveyor tubes can be placed inside of hull blocks. It would only make sense that these blocks should too. 20241027020454_1

2. The Conveyor Router does not direct items correctly. The conveyor router seems to only be able to transfer items to the first storage that it is connected to regardless of the direction of the arrow. If you place two cargo boxes on either side then have a collector collect items, the items will only flow into the first cargo that was placed. Even if you change the router's state so the arrow is pointing to the other cargo box the items still only flow into the first cargo.

3. The Conveyor One Way does not allow items to flow from one cargo to another. Another problem with items flowing between cargo boxes. If you link to cargo boxes with the one way conveyor tube items will not flow in the direction of the arrow. There maybe times where we need to force all items from one cargo into another so this seems particularly frustrating.

tsunamayo commented 3 weeks ago

@Crimson-Artist Hi, regarding 3): do you want the item to flow automatically from on cargo to another? it is not how this works. These block wont trigger item move, only system that push or pull items will initiate an item move. Otherwise if I misunderstood I will need a more detailed test case, a blueprint would be easier. Will check 2) Thanks

Crimson-Artist commented 3 weeks ago

@Crimson-Artist Hi, regarding 3): do you want the item to flow automatically from on cargo to another? it is not how this works. These block wont trigger item move, only system that push or pull items will initiate an item move. Otherwise if I misunderstood I will need a more detailed test case, a blueprint would be easier. Will check 2) Thanks

wouldn't the point of directional movement based tubes be to force items to move? I had the idea to use buffer cargo boxes as a way to just dump all my items into and have them automatically sorted into other cargo boxes. A means to force movement between cargo boxes without something like a furnace/assembler/collector would be very helpful.

asanagisae commented 3 weeks ago

I agree with Crimson.

A one-way block that does not push/pull is useful for organizing your conveyor layout without the risk of sending items in an infinite loop.

However, a one-way block that does push/pull is also useful, particularly in the early survival game.


My survival experience has always been like this:

  1. Gather ore and scrap
  2. Build a crucible, workbench, then cargo container (I usually skip the wooden box since you can't attach it to conveyors)
  3. Fill the cargo container with as much ore/ingots as it can hold
  4. Once it's filled with components, use those components to build a bigger cargo container
  5. Repeat steps 3 and 4

I end up repeating steps 3 and 4 quite a few times before the cargo is big enough to hold enough resources for a ship. Each time, the container only grows by a little. And each time, I have to manually move each type of item from one cargo box to the other - there's over a dozen types of items in the early game including 5 combinations of ores and ingots, coal, silicon, 3 or 4 intermediate components like metal plates, two flavors of wood, and the unlimited number of stone colors and sizes you pick up.

If I could just connect an existing container to a bigger container with a one-way conveyor tube, flip a switch, and have all the items move automatically, this would smooth out the beginner phase quite nicely.

A toggle-capable, one-way conveyor tube is a cleaner and more reliable solution than two item collectors (one set to expel) and a conveyor belt. Item collectors don't work reliably on ships that move.


A one-way conveyor that pulls can also be used to empty the inventories of assemblers and furnaces which have accumulated components and ores in their local storage.

Sometimes assemblers build more components than needed for the recipe you choose and the remaining components just take up space in the assembler. When you have been running an assembler for a long time and crafted almost every recipe, it accumulates so many extra components that it doesn't have the inventory space to hold the ingredients for the next recipe you want to craft, and then you have to manually empty the assembler.

Sometimes furnaces gather ores of a certain type, but there isn't enough to smelt that type. One furnace could have 3 gold ores, another could have 5 gold ores, etc. If all the gold ores were in the same furnace, then it could be smelted, but furnaces don't coordinate like that. It's inconvenient for larger setups of 4 furnaces or more.

tsunamayo commented 3 weeks ago

@asanagisae Well that seems like a different and hard problem to tackle. If I had a block like that how you can make sure it is not simply stealing components / ingots needed by the assembler / furnace? Id say dump all your item from collector, and collect them back (from the same or another one). How is it done in Space Engineer? Thanks

asanagisae commented 3 weeks ago

Spilling items

Let's consider your suggestion about dumping items with a collector first.

This is a good suggestion because your cargo container is now empty. You can retrieve it and use its blocks to form your new cargo container, which means the new container can be larger.

Now for the negatives. There are a number of immediate concerns regarding free-floating items in the world. Some of these issues are true now, some may be true in future patches of this game, some are fears that players will have.

In summary, dumping items with the collector will work, but I think players will eventually want to discover a cleaner, more reliable solution.


Stealing items

I think the furnace will be ok in this regard. The one ore currently being processed cannot be taken by other blocks. This seems to be a separate "processing inventory" in the furnace, which is different from the "output inventory" on the right or the "storage inventory" at the bottom.

If the assembler can move items directly to the "processing inventory" that are immediately required for the current recipe, then other blocks shouldn't be able to pull items from your assemblers before your assemblers can build their recipes.

image


Holding items

Space Engineers is a bit limited in terms of cargo (on a large grid ship or base). You have these options:

If I've filled a Small Cargo Container and I want to double my carrying capacity, I have to build a second Small Cargo Container. They will be different and distinct inventories. I can't combine them into one inventory until I'm able to build a Large Cargo Container, which is 27 times the volume of a Small Cargo Container. There isn't much point to moving items between containers until I've built the Large Cargo, at least for starting bases.

SEVO has an advantage here. You can freely decide the size of your cargo boxes using whatever space is available. You can have a single cargo box containing everything, which makes it easy to find what you're looking for.


Moving items in Space Engineers

Space Engineers has a one-way conveyor block called the Sorter.

Here's a basic setup in Space Engineers:

image

The item collector on the right will collect floating items that it touches. It will push the items to the closest connected inventory; in this case, the Small Cargo on the right.

We can move items manually between cargo blocks:

image

This is fine if you only have a few blocks with inventory. When you have a lot of blocks with inventory, this list becomes a nightmare to scroll through. For instance, imagine when you have 26 Small Cargo containers because you can't afford the Large Cargo.

Thankfully, Space Engineers has a Sorter block (a one-way conveyor):

image

The Sorter can filter the types of items allowed through it (similar to your filter block in SEVO). The Sorter can also choose to pull items from connected inventories before it and push them to connected inventories after it (via the "Drain All" option).

image

You can use the Sorter with "Drain All" to move items from your Small Cargo to your Large Cargo block. This feature would provide a super clean solution to inventory upgrading in SEVO.

tsunamayo commented 3 weeks ago

@asanagisae thanks for the detailed answer. A problem is that you could make a look between cargo, with a filter set at Drain All, and then constantly have item moving around. I am not sure how things works in SE, but in SEVO you will check every connected cargo. It seems likely with that all cargo will be connected in a loop for convenience.

For example in a case like that: The filter would push either in CB1, CB2, or CA2, which might not be what you intended. CA1 = filter = CB1 | | | | CA2======CB2

I think a filter at the level of the cargo it self would work better, and then once the filter change it detects all item that dont matches and send them out.

asanagisae commented 3 weeks ago

Yes, the "drain all" feature on SE Sorter blocks opens up the possibility of infinite loops and cargo going where it's not intended. Usually it pushes to the closest block with inventory. It can make inventory issues difficult to diagnose for newer players.

A filter on the cargo block itself would be good, especially if it can "pull" those items periodically. If you can send an "off" signal to the cargo block to stop it from pulling items, that would be even more helpful. Of course, assemblers and furnaces will have a stronger "pull" level than cargo boxes, so that you can craft and smelt without issue. This removes the need for a "Sorter" block.

In the early survival scenario, if the cargo block can be set to "pull all" with an empty blacklist, that would make my early game much smoother. This also helps with my late game idea of designating one cargo box for holding my gold ores and ingots, one for silver, etc.

tsunamayo commented 3 weeks ago

@asanagisae Well it wont be set at pull, but at push. Otherwise you could have two cargo pulling endlessly item from each other. Here the cargo would look at what items are not passing the filter, then push those items if possible. Then anytime an item seeks a place to be stored, it would check the cargo filter first.

tsunamayo commented 3 weeks ago

@Crimson-Artist Also now that I think of it for 3) what is the test case exactly? is that similar to 2) in the sense that you expect the one-way to initiate an item drain? Thanks

Crimson-Artist commented 3 weeks ago

Heres a picture. I was testing a way to force items into other cargo boxes for a mining ship cargo setup. Basically it would have multiple cargo boxes each acting as a overflow for the primary cargo. I was hoping that the one way tube would force items toward the primary cargo box at the bottom of the chain but apparently not.
20241101020050_1