Another stab at an autonomous miner. This one still needs some optimization to cut down on time, but its pretty close. The miner runs three Programable Block scripts: a mining script that governs its basic flight, a debugging script that tracks all of the grid's actions, and a emote script.
I don't write scripts and I haven't written a line of code in three decades. Instead I just told Claude what I wanted and ran iterations feeding the debug logs back to it with human language discussion about what I wanted. The emote script is kinda cute - i just told Claude to write a script that would let the emote block show me how the drone was feeling.
The drone flies to a designated waypoint above a known ore deposit. It terrain clears to the depth of the deposit using a canary box and then drills a horizontal spiral-cut that's approximately circular. The drone pushes the circle out whenever it finds ore. If it doesn't find ore at a particular point it stops extending that arc of the circle. Over time the spiral cut approximates the shape of the deposit.
When the drone can't find any more ore at a given depth it extends the initial vertical bore hole and repeats the process. Repeats until it can't find anymore ore. It takes breaks to drop of cargo, is mindful of its power levels, and remembers where it last left off.
Still needs optimization on where its wasting time, but the gaps at this point are pretty small. The logs track drilling rate and time between tasks, and that just feeds the next revision. I still need to implement a way to tell the drone if I actually want stone or ice (right now its chucks anything not ore during the horizontal drilling (but not vertical).
LLM driven scripting is a literal game-changer for this game. FWIW, I found the debug logs invaluable - not for me, but for the LLM. The Debug script writes the log into Custom Data on blocks that have the capacity. I started using LCDs for this, but Access Pannels work too and cost less PCU. Claude will read out the log directly from the blueprint file: copy the grid => replace the blueprint => drag and drop the file into Claude. With the Log, the LLM can effectively troubleshoot its own scripts (and can do the same thing with automation blocks generally).