Starmade | Shipyard pulling extremely inefficient
Closed, FinishedPublic

Description

Shipyard pulling is not really using the available capacity.

Its rather trying to operate on single-unsorted stacks.

Example:

This repeats until the 64 black advanced armor have filled the 56.000 block request......

To reproduce:

  • deconstruct a ship, with at least one stack that does not fit in the yard.
  • have a large storage connected to the yard and enable ressource pulling
  • on construction it does sometimes go in such an inefficient long term loop

Details

Testing Results
Affected Gamemode(s)
Single and Multi
Reproducible
Yes
Last tested (version)
0.19615 (Dev)
Issue Type
Bug
Category
Control Block System: Shipyards
Hardware/Software/System
OS-Specific
No
Hardware-Specific
No
Video Card Vendor
uncertain
Steps to reproduce
  1. Link a shipyard computer with a chest that has a lot of storage
  2. Deconstruct any medium ship
  3. Construct it
  4. Notice that it doesn't want to pull a split item stack if the full item stack's volume is bigger than what's free in the shipyard computer.
Tester information (Internal use only)

If the item it needs to pull takes more volume than the shipyard computer has available, it won't pull (and get stuck).

It should split and pull that item stack to fit in the shipyard computer.

AndyP created this task.Dec 27 2015, 8:41 PM
AndyP claimed this task.
AndyP shifted this object from the S1 Public space to the S3 Starmade space.
AndyP changed the visibility from "Custom Policy" to "Public (No Login Required)".
AndyP changed the edit policy from "Task Author" to "All Users".
AndyP changed Category from none/unspecified to Control Block System: Shipyards.
AndyP changed Affected Gamemode(s) from none/unspecified to Single and Multi.
AndyP changed Reproducible from uncertain to Yes.
AndyP set Last tested (version) to 0.1954.
AndyP edited Serverconfig (server.cfg). (Show Details)
AndyP edited Clientconfig (settings.cfg). (Show Details)
AndyP added a subscriber: AndyP.
Restricted Application added a project: Workflow Issue Navigation. · View Herald TranscriptDec 27 2015, 8:41 PM
AndyP set Issue Type to Bug.
AndyP set OS-Specific to No.
AndyP set Hardware-Specific to No.
AndyP set Video Card Vendor to uncertain.
AndyP changed the task status from "Open" to "In Queue (Game)".
AndyP added a subscriber: SmilingDemon.

-Confirmed-

AndyP edited the task description. (Show Details)Dec 27 2015, 8:49 PM
schema changed the task status from "In Queue (Game)" to "Resolved".Jan 28 2016, 9:08 PM
schema added a subscriber: schema.

Ok so...seems shipyard pulling suffers from multiple issues so it's hard to figure out which one is what.

Issue 1:


In the screenshot provided above, it still pulls 50 blocks for the black advanced armor. The shipyard computer only has 400 volume but it should allow a lot more blocks to be pulled.
It doesn't pull 50 blocks if it can fit the entire black advanced armor stack in the cargo computer, then it just moves the entire stack and uses that to fill the rest but that's issue 3.


Issue 2:


Assuming the shipyard computer can fit all the large stacks, you get this result. I provided enough blocks to fill it but nothing more than that.
It filled the blocks in this order:
Black advanced armor
Grey advanced armor 1/2
...

It pulls 2500 blocks every time, so in this case after it was done with the 5700 black advanced armor blocks, it added the remaining 2500 - 700 = 1800 to the next block to be filled, which was Grey advanced armor 1/2. It used 1800 grey advanced armor to do that.
It didn't look at the "Goal".


Issue 3:
If "Pulling on construction" is enabled, it always tries to pull as many stacks as it can fit even when it's not constructing.
It's acting as if it has "add all, amount = ∞" enabled.

lancake edited Tester information (Internal use only). (Show Details)Jan 29 2016, 1:48 PM
lancake changed the task status from "Resolved" to "In Queue (Game)".
lancake changed Last tested (version) from 0.1954 to 0.19552 (Dev).
lancake raised the priority of this task from "High" to "Urgent".Feb 5 2016, 11:34 PM
AndyP raised the priority of this task from "Urgent" to "Release Blocker".Mar 8 2016, 8:29 PM
schema added a comment.Mar 9 2016, 1:06 AM

update to issue #2: The number did not roll over 1800. it used the difference to the grey advanced armor goal (1775) + the foal to the grey advanced armor 1/2

I have observed the > 100% supply issue repeatedly when using slabs, and it seems to prevent the construction from completing. This makes use of slabs very unreliable, when constructing with auto-pull.

Presumably manually feeding exact block counts would offer a workaround, but this seems difficult for medium and large craft.

schema changed the task status from "In Queue (Game)" to "Resolved".Mar 9 2016, 1:39 AM

issue 3 not reproducable

schema added a comment.Mar 9 2016, 1:39 AM

other two are fixed hoefully

AndyP changed the task status from "Resolved" to "In Queue (Game)".Mar 10 2016, 3:42 PM

-QA Testing-

Cannot test.
Construction fails with this stack trace:

[2016-03-10 16:35:04] HIT RESULT near: (66, 6, 8)[Storage]o[FRONT][inactive][50hp][BLOCK], on SpaceStation[ENTITY_SPACESTATION_Schine-Shipyard-01(6424)]
[2016-03-10 16:35:04] [CLIENT][POPUP] GAME: Opened
 Storage
Location: (66, 6, 8)
of Schine-Shipyard-01[Schine] 
[2016-03-10 16:35:04] HIT RESULT near: (66, 6, 8)[Storage]o[FRONT][inactive][50hp][BLOCK], on SpaceStation[ENTITY_SPACESTATION_Schine-Shipyard-01(6424)]
[2016-03-10 16:35:05] HIT RESULT near: (66, 8, 8)[Shipyard Computer]o[RIGHT][active][50hp][BLOCK], on SpaceStation[ENTITY_SPACESTATION_Schine-Shipyard-01(6424)]
[2016-03-10 16:35:05] [CLIENT][POPUP] GAME: Opened
 Shipyard Computer
Location: (66, 8, 8)
of Schine-Shipyard-01[Schine] 
[2016-03-10 16:35:05] [SHOP] org.schema.game.common.controller.elements.SpaceStationManagerContainer@1aaa Client(26) received mod: Price [priceTypeBuy=-1, amountBuy=3000, priceTypeSell=-1, amountSell=4000, priceForType=1, modName=null, add=false, senderId=0, permission=0]
[2016-03-10 16:35:12] [CLIENT][PlayerInput] successfully deactivated obfuscated.EC@931660e
[2016-03-10 16:35:13] [SHOP] org.schema.game.common.controller.elements.SpaceStationManagerContainer@1aaa Client(26) received mod: Price [priceTypeBuy=-1, amountBuy=3030, priceTypeSell=-1, amountSell=4000, priceForType=1, modName=null, add=false, senderId=0, permission=0]
[2016-03-10 16:35:21] [CLIENT][PlayerInput] successfully deactivated org.schema.game.common.controller.elements.shipyard.ShipyardCollectionManager$ShipyardCommandType$6$1@7bdc280b
[2016-03-10 16:35:28] HIT RESULT near: (66, 6, 8)[Storage]o[FRONT][inactive][50hp][BLOCK], on SpaceStation[ENTITY_SPACESTATION_Schine-Shipyard-01(6424)]
[2016-03-10 16:35:28] [CLIENT][POPUP] GAME: Opened
 Storage
Location: (66, 6, 8)
of Schine-Shipyard-01[Schine] 
[2016-03-10 16:35:29] HIT RESULT near: (66, 6, 8)[Storage]o[FRONT][inactive][50hp][BLOCK], on SpaceStation[ENTITY_SPACESTATION_Schine-Shipyard-01(6424)]
[2016-03-10 16:35:29] HIT RESULT near: (66, 8, 8)[Shipyard Computer]o[RIGHT][active][50hp][BLOCK], on SpaceStation[ENTITY_SPACESTATION_Schine-Shipyard-01(6424)]
[2016-03-10 16:35:29] [CLIENT][POPUP] GAME: Opened
 Shipyard Computer
Location: (66, 8, 8)
of Schine-Shipyard-01[Schine] 
[2016-03-10 16:35:39] [SHOP] org.schema.game.common.controller.elements.SpaceStationManagerContainer@1aaa Client(26) received mod: Price [priceTypeBuy=-1, amountBuy=2500, priceTypeSell=-1, amountSell=4000, priceForType=1, modName=null, add=false, senderId=0, permission=0]
[2016-03-10 16:35:46] [GLFRAME] THROWN: class java.lang.NullPointerException Now Printing StackTrace
[2016-03-10 16:35:46] java.lang.NullPointerException
[2016-03-10 16:35:46] 	at obfuscated.abQ.<init>(SourceFile:42)
[2016-03-10 16:35:46] 	at obfuscated.BB.a(SourceFile:824)
[2016-03-10 16:35:46] 	at obfuscated.BQ.callback(SourceFile:85)
[2016-03-10 16:35:46] 	at org.schema.schine.network.client.GUICallbackController.execute(SourceFile:40)
[2016-03-10 16:35:46] 	at obfuscated.C.updateStateInput(SourceFile:1364)
[2016-03-10 16:35:46] 	at obfuscated.avx.a(SourceFile:1167)
[2016-03-10 16:35:46] 	at obfuscated.C.h(SourceFile:2865)
[2016-03-10 16:35:46] 	at obfuscated.QF.run(SourceFile:92)
[2016-03-10 16:35:46] 	at java.lang.Thread.run(Thread.java:745)
[2016-03-10 16:35:46] [GLFRAME] THROWN: class java.lang.NullPointerExceptionPrinting StackTrace DONE
[2016-03-10 16:35:46] java.lang.NullPointerException
[2016-03-10 16:35:46] 	at obfuscated.abQ.<init>(SourceFile:42)
[2016-03-10 16:35:46] 	at obfuscated.BB.a(SourceFile:824)
[2016-03-10 16:35:46] 	at obfuscated.BQ.callback(SourceFile:85)
[2016-03-10 16:35:46] 	at org.schema.schine.network.client.GUICallbackController.execute(SourceFile:40)
[2016-03-10 16:35:46] 	at obfuscated.C.updateStateInput(SourceFile:1364)
[2016-03-10 16:35:46] 	at obfuscated.avx.a(SourceFile:1167)
[2016-03-10 16:35:46] 	at obfuscated.C.h(SourceFile:2865)
[2016-03-10 16:35:46] 	at obfuscated.QF.run(SourceFile:92)
[2016-03-10 16:35:46] 	at java.lang.Thread.run(Thread.java:745)
[2016-03-10 16:35:50] AGAIN PRINTING STACK TRACE
[2016-03-10 16:35:50] java.lang.NullPointerException
[2016-03-10 16:35:50] 	at obfuscated.abQ.<init>(SourceFile:42)
[2016-03-10 16:35:50] 	at obfuscated.BB.a(SourceFile:824)
[2016-03-10 16:35:50] 	at obfuscated.BQ.callback(SourceFile:85)
[2016-03-10 16:35:50] 	at org.schema.schine.network.client.GUICallbackController.execute(SourceFile:40)
[2016-03-10 16:35:50] 	at obfuscated.C.updateStateInput(SourceFile:1364)
[2016-03-10 16:35:50] 	at obfuscated.avx.a(SourceFile:1167)
[2016-03-10 16:35:50] 	at obfuscated.C.h(SourceFile:2865)
[2016-03-10 16:35:50] 	at obfuscated.QF.run(SourceFile:92)
[2016-03-10 16:35:50] 	at java.lang.Thread.run(Thread.java:745)
[2016-03-10 16:35:50] [GLFrame] (ErrorDialog Chose Exit) Error Message: null
AndyP added a comment.Mar 16 2016, 2:08 PM

-QA Testing- Part 2

Can test it now, but pulling does not work anymore.
It will pull once cycle and then stop.

In T1021#47333, @AndyP wrote:

-QA Testing- Part 2

Can test it now, but pulling does not work anymore.
It will pull once cycle and then stop.

If the item it needs to pull takes more volume than the shipyard computer has available, it won't pull (and get stuck).

lancake edited Steps to reproduce. (Show Details)Mar 18 2016, 11:39 PM
lancake edited Tester information (Internal use only). (Show Details)
lancake changed Last tested (version) from 0.19552 (Dev) to 0.19611 (Dev).
schema changed the task status from "In Queue (Game)" to "Resolved".Mar 19 2016, 8:28 PM
lancake claimed this task.
lancake closed this task as "Closed".

-QA Testing-

Fix confirmed, pulling splits stacks if it can't fit it. I did see some weird 1-2 block pulls mixed together with big stacks, looks like that happened to fill the used volume to as close to the limit as possible which is fine.

There was no item loss or duplication in the process.

Restricted Application removed a project: Workflow Quality Assurance. · View Herald TranscriptMar 20 2016, 1:26 AM
Restricted Application removed a subscriber: AndyP. · View Herald Transcript
lancake changed Last tested (version) from 0.19611 (Dev) to 0.19615 (Dev).Mar 20 2016, 1:26 AM

Add Comment