Desynced Breakdown: Miner Shufflers

Sdílet
Vložit
  • čas přidán 5. 09. 2024
  • This episode shows off the "Miner Shuffler" - the key behavior in my "antinomad" mining strategy.
    It is the epitome of "Why Do it Right When You Can Do It Wrong".
    Normal people would just use robots for their miners, but then they would miss out on the beauty of an autominer network form and decay as a node is mined to exhaustion.
    As always, please let me know what you'd like to see next!
    Shufflers
    Regulate how many mine heads are active
    Pickup unused miners
    Place those miners near their mine head
    Precondition - Manually set P2 to a resource type before starting.
    if Match(P1, "Entity"):
    SetToComponent(0, "Miner")
    G = GetFromComponent("Deployer",2)
    if G&lt1:
    Need to pickup a miner
    P4 = 0
    with unlock:
    for B,A in LoopSignalMatch(P2):
    if A&gt10800:
    P4 = SelectNearest(P4, B)
    SetToComponent(P4, "Deployer", 1)
    while Match(P4, "Building"):
    pass
    P4 = 0
    else:
    Have a miner, deploy it
    First go to MineHead so we deploy near it.
    MoveUnit(E=: GetLocation(P1))
    while True:
    Engage miner, this will drive the robot automatically
    SetToComponent(P2, "Miner", 1)
    I = GetSelf()
    P4 = GetClosestEntity(P2)
    P3 = Distance(P4)
    if(P3 &gt 1):
    Too far from resource
    continue
    K = GetLocation(I)
    if not CompareNumber(P5, K):
    Two position snapshots differ, robot is still moving.
    continue
    Location found!
    Mine(0)
    SetToComponent(P5, "Deployer",1)
    while Match(C=:GetFromComponent("Deployer",1), "Building"):
    pass
    else:
    Find a new Mine Head
    with unlock:
    for H,D in LoopSignalMatch(P2):
    if D==10010:
    P1 = H
    Signal = P1
    #P1 is a minehead we're trying to negotiate with. Check for response...
    while True:
    J = ReadSignal(P1)
    DataTypeSwitch(J):
    NoMatch:
    #MineHead isn't communicating as expected, maybe it was deconstructed
    break #all the way to the top level loop
    Entity:
    #It is talking to someone... is it us?
    if not ResourceType(J):
    if not CompareEntity(J,I):
    Someone else was chosen
    P1 = 0
    else:
    we were chosen! Go back to the top
    pass
    Default:
    continue
    DSC1Qf1Z8YXY1BtI6h2kj47Q0BRFqV288psh1E9RU00PrIFw1XR4cr3dOjvu2TnwEG2tF1St02BXxr0m2Lsr2Z2gCT4Q51Tl1XSBLk0c2WQe1ESMH01mZ9EN11Jkgj3h6PXn1ggpXZ4O059i45kFvJ1ULmaz0Bf05R3Mqbvj2VObv01KUEmG1EQskg0H7cdz0d03l50h5ALI1nWTQN0pIvM20mf0Jz2lzxqE2Wl8OY35yjm21sj2Ej3WvDBe22rlP60vEF1W26qgV14GhKhy2mWElP1ZE8Ja1LeEhP2hXFYZ0yprsm1qvpSf09zIYD46Kgp60wFEqT1KmizU0dfAF73lJFMT4bbdsF3xp7cw2Q38yY2A7QPo1A6tqb4CwLBL08aIXT3JF1383pcpQ82VtQOI1DCXIN3DJ2ca07ZyBG3fOQcm06KRsz2yCfEX2C4HeV0kZ86t3MqWX330UPtJ3ZTthZ1Bt8pF38Nfh41Z0dIw2t88602Xk8hc1WNrIN4HssGz0RouP70wLmDc35DTrU1HuLcL1VAxQh2lDJy83XRiUL0500kE38sgKC1ZJmkN11CXhJ43iqnq10VgrL2SrUmR1cgDKk0qqDqQ3bR8l31ihQyB3rAb292uXAmL0g9p0c3xNiKy3OvU400VQ2Rq0uhY2p0MrK9H0IVbnv4UEqrj3judTJ17bSHA35vkF61ZlzsQ26ix6g1I2vCW2Kl3sQ3JZXDQ31DRkG4O2Gvm3sbqOb1vOqfw0WNoos3wMrCc0rAjbi2Ark2X2ZyPMi3TyBWE2CcSO10MLvLU3AfDBC3HPMwl3UPMy517fOmz39qwcm0dQ2q023Lp8B2IWHz82ppM2E3by3nI16D5Mj0Qzemp4T3iB81O1Tke35bdQZ0SD8jU1wWw3N0t4Yfw3vOGf52RCU3H1ZjAbf2AeAjN4fp0OZ1fLEvF0StglX3Vewo92EUlP14Ndw7W2GTdB71gHGdB4Ren9v1AK1cc3g9VWb3nuhij1XEdMR1urz3b2wC7E70r47Fq1YaKQv4SDj3v1spQAs26iZu80AB4kZ2gqzbG3BEOr03XnCYF43LT4c0KtSCu4RwkMN0f3VVL2wWKvu2rBsp43PabFP4eG80k0F1LDK0qtXCw162qUr4QYcgY1U1o3p3rQ34m47srsE3lG2kr2BJawg1BoJSD2HHCJ41Z5jiQ2LYfZ80yqIEw2vvHb22LJL163Ixbv735RPzK3o91FL3gONjq0h4o4D0HqM8D355Uvl0UTRY22qIzPd275E9E4TxV8X2UhhGq33EoAA4Tz7mR40U4P40hlzCf1sZbQh2uBtLc2jAJQa1qQorO4a2WGK3ACADY0NTvOF2lULAY4aMy043RlPTI2yCDsu3xp8

Komentáře •