Construction robots should not...

Post your ideas and suggestions how to improve the game.

Moderator: ickputzdirwech

Post Reply
drs9999
Filter Inserter
Filter Inserter
Posts: 831
Joined: Wed Mar 06, 2013 11:16 pm
Contact:

Construction robots should not...

Post by drs9999 »

...accept a decontruction job if there is no inventory space left in which they can place the mined result.

That is all :D Thoughts?

sillyfly
Smart Inserter
Smart Inserter
Posts: 1099
Joined: Sun May 04, 2014 11:29 am
Contact:

Re: Construction robots should not...

Post by sillyfly »

I agree.
Just like they don't fly around uselessly when the item to construct is not available. The current state only makes the bots crash after waiting for the player to construct a storage chest.

User avatar
ssilk
Global Moderator
Global Moderator
Posts: 12888
Joined: Tue Apr 16, 2013 10:35 pm
Contact:

Re: Construction robots should not...

Post by ssilk »

Clever, but calculation is difficult.

Because everything is dynamic. Other deconstructions can obtain the storage just some seconds after your order - some of the simplest examples. But well, it would really help newbies, to see a message like "cannot deconstruct, either built enough storage/requester chests or request items yourself"
Cool suggestion: Eatable MOUSE-pointers.
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...

drs9999
Filter Inserter
Filter Inserter
Posts: 831
Joined: Wed Mar 06, 2013 11:16 pm
Contact:

Re: Construction robots should not...

Post by drs9999 »

ssilk wrote:Because everything is dynamic
Yeah I though about it, too.

But the same applies to logistic robots as well and afaik they can deal with this situations quiet well.

On the other hand an easy solution is to program it as suggested and call situations in which a construction robot is assigned to a job (enough storage-space at the moment), but then notice that he cannot put the items anywhere just bad-luck.

Not excellent, but imo that would make sense ;)

User avatar
ssilk
Global Moderator
Global Moderator
Posts: 12888
Joined: Tue Apr 16, 2013 10:35 pm
Contact:

Re: Construction robots should not...

Post by ssilk »

Hm. This thing we are talking about here is in informatics called "isolation level". The level at which a transaction can be called isolated.

http://en.wikipedia.org/wiki/Isolation_ ... systems%29
http://en.wikipedia.org/wiki/Database_transaction

This is needed for example when transferring money and is used in databases (Oracle, MySQL etc.), because otherwise you would loose (or win) money, because you can order stuff, which isn't longer in storage, or because you can transfer money, without waiting, if it really has reached the target account.

And many, many more stuff like this.

The problem is: Full isolation level must be bought with time you wait for the transaction. Now, with factorio, when the bots fill a chest, we have thousands of transactions.

A full transaction level for that case means, that the bots can fly only one after the other. Only one bot can fill the chest per time. And even I could not just put some items into a chest. I need to wait, till the current bot has come along and then put stuff in the chest, so that the next bot see this different situation.

My suggestion to that:
- Switching of the isolation level might be useful. For example a very simple algorithm: The less stacks are left to put the items into, the higher the isolation level for that target.
- A "reservation system" might be very useful. See https://forums.factorio.com/forum/vie ... f=6&t=2428
- Total isolation cannot be reached.
Cool suggestion: Eatable MOUSE-pointers.
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...

drs9999
Filter Inserter
Filter Inserter
Posts: 831
Joined: Wed Mar 06, 2013 11:16 pm
Contact:

Re: Construction robots should not...

Post by drs9999 »

I do not get the connection...

I have to admit that I did not check exatly what is going on in the code but just from in-game observation the following is the current behaviour:

- robot is assigned to a job
- robot fullfills the job
- robot checks if there is empty inventory space somewhere; if not wait
- robot flies to target inventory
- robot does another check if the inventory is still valid; if not wait
- return to roboport to recharge or assign another job

The only thing I suggest is another "inventory-check" before the robot is actually assigned to a job

Post Reply

Return to “Ideas and Suggestions”