team-remember-to-hydrate / battlecode23-team-remember-to-hydrate

GNU Affero General Public License v3.0
1 stars 0 forks source link

Strategy: Skyblock Anchor Delivery I #9

Closed 1NF053C closed 1 year ago

1NF053C commented 1 year ago

Goal: Implement the simplest "working" version of this strategy as possible

Rationale: This will enable the team to decide on how to "enhance" this strategy (if needed) once this is functional (depending on individual bandwidth)

Strategy:

Capabilities:

How to decide what to implement for the next version of this strategy: "Resilient" Iteration:

  1. Build effective robots that are good at doing the job they are meant for in simple cases
  2. Identify potential failure, unexpected input, condition or malicious attack on the bot
  3. Modify or Add capability that enables robot to maintain useful level of functionality (its job) without disruption
  4. If entirely disrupted from its job, consider modification that would let it return to job quickly
1NF053C commented 1 year ago

Once this MVP is implemented, it might be reasonable to enhance with: https://github.com/team-remember-to-hydrate/battlecode23-team-remember-to-hydrate/issues/8

1NF053C commented 1 year ago

Insights / recommendations I've jotted down from discussion with @mklapp2 :

[x] Picks up anchor if its available
[  ] Go to nearest _unclaimed_ island (not just nearest island in gen)
[x] Use Odyhibits HQ logic for anchor production logic
[  ] At least one base should prioritize making an anchor as its first action..

One change:
- Only do it if the carrier is at full health (anchor is big expense).

Maybe:
- Wary of enemies sensed? (could backfire if enemies always there).
1NF053C commented 1 year ago

Notes for self

// Ody's HQ logic

        // if we are holding an anchor we saw an island, lets build a carrier.
        // Pick a direction to build in.
        Direction dir = RobotPlayer.directions[RobotPlayer.rng.nextInt(RobotPlayer.directions.length)];
        MapLocation newLoc = rc.getLocation().add(dir);
        if(rc.getNumAnchors(Anchor.STANDARD) > 0){
            // Let's try to build a carrier.
            rc.setIndicatorString("Trying to build a carrier");
            if (rc.canBuildRobot(RobotType.CARRIER, newLoc)) {
                rc.buildRobot(RobotType.CARRIER, newLoc);
            }
        }