Hello @Casteele,
Nice to hear from you again! Doing our best. Funny coincidence but the next update will bring one of the most requested things :)) Spoiler: CraftoMates will become able to manipulate in new directions :)
There are some other issues, however...
(1) "Find and Pick" needs some more/better logic. Ideally, it should be able to include/exclude types, such as "From Box" (storage boxes), "From Raw" (I call those "piles" of raw/not-yet-mined resources), or even both. Perhaps even the ability to pick both but give a preferred type (Pick from Box, if available, raw pile otherwise). This is because I set up a CraftoMate (hereafter referred to as just CM) with a program to "Find and Pick", "Drop to" a box, then "To idle". But the result surprised me: It worked the _first_ time, but the second time it picked from the box it just dropped to (since it was now closest)! I adjusted to program to include a "Move to" first, but later in the game it caused problems when a) I had multiple storage boxes spread out on the map and the raw resources piles eventually became depleted. (Likewise, the "Drop to" might be able to only drop "On Ground" or "to Box".)
(2) Some degree of "look ahead" would be nice. I was trying to clear two adjacent Stone piles, so I had he logic of "Pick From" the first, and if that failed, it would "Pick From" the second. It worked, but every time it would move back to the first position, fail because it already cleared the tile, then move back to the second position. It should see that the first is already clear and go directly to the second, instead of wasting power moving back and forth needlessly.
(3) Related to (2), the "Warning" icon in the upper right that appears next to the pause button should not appear until the CM becomes truly "stuck". Every time it went to the first position and failed, the icon would pop up and then go away as soon as it went on to the second position. Not only does it create a momentary flash that distracted me, it also made it harder to be able to find and focus on the real problem areas/CMs which are stuck.
Some other observations and ideas:
-- I would like some detail/info on how variables work.
-- I kind of miss the old "Low Power" mechanics. I suggest that, instead of making it an "if/then/else" style operation, that you make it more like a sub-program (but not an exception that can occur any time -- only when instructed to check power). That is, create a "Low Power" label lower down like was done previously, and when the "Check Power" item executes, it will either continue to the next instruction, or "Jump" to the "Low Power" sub-program. This way, upon fixing the low power condition, we can choose to "Resume Next" which will go back to the "Low Power" check and continue on, or we could "Resume Idle" similar to the "To idle" instruction.
-- Make certain items not "eat-able". While experimenting, a flawed program made one of my CMs "eat" a seed. Oops. Also, some way of checking/testing _what_ if being held would be nice, to prevent accidentally eating the wrong item (especially when holding two items).
-- Related to the above, the ability of a grown tree to (sometimes?) "drop" a seed as well as wood would be nice.
-- Add an instruction to "Feed" another CM (as well as one to find one needing power). This way, we could assign one CM to "Stand By" the Battery Storage box, and when another CM needs power, the assigned one can grab a Battery and go feed it to the one needing power. (This could also be combined with my "Low power" suggestion to maybe add a "Call For Help" instruction, which would pause the bot until help arrives... or the player corrects the situation.)
-- Add the ability to pick up and move the "Current Execution" icon to any instruction in the current program screen.
-- A CM instruction to "Wait", which would make it wait (do nothing, such as "10 seconds", or until an even occurs, such as the "Feed" idea).
-- A "Give to" instruction, which could give to another CM. (Useful for things like "Feed"?)
Of course, I still hope to see:
-- Program labels, which could be targets of a "GoTo" instruction.
-- Sub-programs, which could be done with "Call" and "Return" instructions.
-- Real "if (condition) / then / else" logic. (Especially useful with sub-programs.)
-- Looping constructs. (Command Center wants 10 Steel Plates? Set up a CM to deliver exactly 10 then stop.)
Ufff such a huge abd cool feedback, lets starts from point to point.
(1)I think generaly smart commands is about "take less parameters, and make some complicated things" and in this case we dont need to add one extra parameter. Besides it generates some fun situations :)
Other reasin not to add such parameter is that usualy when you want to tell craftomate to "pick some element from storage" you talking about one specific storage, and for this case you have a "pick from"
Btw: we working on command that will dedicade a working zone for each craftomate, this should be usefull for your case
(2)This was some discussion topic for us. But currently our consensus is that this is works precisly like in real programming: "every data read event from isn't free (it costs time and energy)". But now "find and pick" brokes this concept down, so may be thats good idea.
Btw again: may be this problem can be solved by add "find" command: this is command that should save coordinates of coresponding element into variable (currently in work)
(3) Yep I agree Warning icon have outdated logic, we will rework it soon, thanks for reminder, I forget about that icon :)
to be continue...
Re (1), perhaps instead of an option, have different commands? "Find and Pick" to get from storage only, "Find and Mine" to get from raw resource piles only, and maybe a "Find and Get" which would get from either? As it is, it reminds me of how "Smart" phones like to "auto-correct" with the wrong correction... But at least with those you can choose to force it to your desired result.
As map size and game complexity grows. it will become less likely to have a single storage box dedicated to each item. Instead, transport lines will evolve: CMs will mine and deposit raw goods in areas where they are found, while other CMs will transport from those collection centers to different production areas where they are needed. (A true "ideal" would be a distribution "on demand", instead of "equally spread out"...)
In reality, a well-designed distribution is the opposite of "one specific storage", but a need to locate one of possibly many storage and staging sites with the desired item -- the lower cost of finding it outweighs the larger cost of walking across the map only to discover the single storage site is empty.
(2) That is not entirely true. A program can use logic to avoid wasted CPU or I/O. If a file is exactly 2 bytes in size, and you have already read 2 bytes, you know trying to read it again will give an EOF. Likewise, a CM knows if it is occupying the space requested, and nothing else is (or can, as the game is currently designed), it can skip trying to take take a step backwards to try to grab the space it just vacated.
A general "Find" feature would be a suitable alternative. But you can still assume that the CM has sensors (i.e., eyes) and can already know the command will fail.
"-- I would like some detail/info on how variables work."
I guess we will add some wiki for all commands not soon, but precisely wil :)
"-- I kind of miss the old "Low Power" mechanics...."
I guess this is not "low battery issue" this is problem with not enough tools to generate some well structured code. I guess we need something like "goto" instruction, may be it will be...
"--While experimenting, a flawed program made one of my CMs "eat" a seed." oops.. ;)
"Also, some way of checking/testing _what_ if being held would be nice, to prevent accidentally eating the wrong item" you can use compare function for this
"-- Related to the above, the ability of a grown tree to (sometimes?) "drop" a seed as well as wood would be nice."
In early versions wood drops seeds periodically at random time... And it wasnt cool corse most of players dont understand where this seed appeared from. And other problem is that when you get 5-10 seed you dont need it anymore, and corrently we dint have any other vay to use it instred of planting. I hope we can take a second try for this mehanc when we will added second stage of crafting tree, but cant promise this
"-- Add an instruction to "Feed" another CM (as well as one to find one needing power)." Yep this is in plans.
"-- Add the ability to pick up and move the "Current Execution" icon to any instruction in the current program screen." This is also in our warklist but this is quate unordinary feature in technical side, so I dont sure we will implement it in close perspective
"Of course, I still hope to see:" We working on it)