boardgamers / gaia-engine

Javascript engine for project gaia
MIT License
13 stars 6 forks source link

Free actions are not clearing fed cache #193

Closed rzulian closed 5 years ago

rzulian commented 5 years ago

If you convert O to token, available federations should be recalculated.

Add line in engine.ts 1450: pl.federationCache = null ;

coyotte508 commented 5 years ago

Player.ts

availableFederations(map: SpaceMap, flexible: boolean): FederationInfo[] {
    const maxSatellites = this.maxSatellites;

    if (this.federationCache) {
      if (maxSatellites <= this.federationCache.availableSatellites) {
        return this.federationCache.federations.filter(fed => fed.satellites <= maxSatellites);
      } else {
        // Only try federations with building combinations not in federationCache.federations
      }
    }

    // Federation are being recalculated here

Federations are automatically recalculated if there are new satellites

rzulian commented 5 years ago

In this game https://gaiaform.io/game/SalmurOnTheBoard, Nevlas can convert two ore and form a federation with 12 satellites, but they are not getting the option to form a federation. If cache is cleared, then probably this is related to #194

coyotte508 commented 5 years ago

This is not a cache problem, the problem still happens with federation cache disabled.

This is the current heuristic for finding federations that is not working (it should work fine for 4-5 building groups, there are 7 here).

I'll add a custom federation option if the player has 8+ satellites and 6+ building groups with the sum of their power values being <= 7.

This is a good test case however for the future, if we want to improve the algorithm:

init 4 SalmurOnTheBoard
p1 faction bescods
p2 faction hadsch-hallas
p3 faction nevlas
p4 faction ambas
bescods build m -1x1
hadsch-hallas build m 3x1
nevlas build m -3x2
ambas build m -2x2
ambas build m 2x-5
nevlas build m 5x-1
hadsch-hallas build m -4x6
bescods build m -1x6
ambas booster booster4
nevlas booster booster5
hadsch-hallas booster booster3
bescods booster booster1
bescods build ts -1x1.
nevlas charge 1pw
ambas charge 1pw
hadsch-hallas build ts 3x1.
nevlas charge 1pw
nevlas build ts -3x2.
ambas charge 1pw
bescods charge 2pw
ambas build m -3x4.
hadsch-hallas charge 1pw
nevlas charge 2pw
bescods special up-lowest. up nav.
hadsch-hallas build lab 3x1. tech free3. up nav.
nevlas charge 1pw
nevlas build PI -3x2. spend 2pw for 2c. spend 2pw for 2c.
ambas charge 1pw
bescods charge 2pw
ambas build ts -3x4.
hadsch-hallas charge 1pw
nevlas charge 3pw
bescods build lab -1x1. tech free1. up nav.
nevlas charge 2pw
ambas charge 1pw
hadsch-hallas pass booster2
nevlas action power3.
ambas special step. build m 2x-6.
bescods build m -1x3.
ambas charge 2pw
nevlas special range+3. build m 0x-1.
bescods charge 2pw
ambas up nav.
bescods action power5.
nevlas action power4.
ambas action power6. build m 0x-3.
nevlas charge 1pw
bescods build ts -1x3.
ambas charge 2pw
nevlas up nav.
ambas build lab -3x4. tech nav. up nav.
bescods charge 2pw
hadsch-hallas decline 1pw
nevlas charge 3pw
bescods pass booster3
nevlas burn 2. spend 4t-a3 for 4k. up nav.
ambas build m -2x5.
bescods charge 2pw
hadsch-hallas decline 1pw
nevlas build m -5x3.
ambas pass booster6
nevlas build m 2x-2.
nevlas pass booster1
hadsch-hallas income 2t,1pw
nevlas income 1t
hadsch-hallas pass booster4
bescods special up-lowest. up sci.
ambas burn 1. action power4.
nevlas build ts 0x-1.
ambas charge 1pw
bescods charge 2pw
bescods build ts -1x6.
ambas charge 1pw
ambas build m -4x7.
hadsch-hallas decline 1pw
nevlas build lab 0x-1. tech free3. up eco.
ambas charge 1pw
bescods charge 2pw
bescods action power5.
ambas build ts -4x7.
hadsch-hallas decline 1pw
nevlas special 4pw.
bescods up gaia.
ambas build ts -2x5.
bescods charge 2pw
hadsch-hallas decline 1pw
nevlas spend 1t-a3 for 1k. up eco.
bescods up gaia.
ambas pass booster2
nevlas pass booster8
bescods build gf 2x-1.
bescods pass booster5
nevlas income 1t
hadsch-hallas pass booster1
ambas up nav.
nevlas action power4.
bescods special range+3. build m 4x0.
hadsch-hallas decline 2pw
nevlas charge 1pw
ambas build m -5x10.
nevlas special 4pw.
bescods up gaia.
ambas build m -7x11.
nevlas action power3.
bescods special up-lowest. up terra.
ambas build m -2x9.
nevlas action power7.
bescods build m 2x-1.
nevlas charge 2pw
ambas burn 1. spend 1pw for 1c. federation -2x2,-2x5,-3x3,-3x4,-3x5,-3x6,-4x7 fed2.
nevlas build ts 2x-2.
bescods charge 1pw
bescods build gf -5x5.
ambas build m -3x-2.
nevlas build lab 2x-2. tech eco. up eco.
bescods charge 1pw
bescods spend 3pw for 1o. build gf 1x5.
ambas pass booster3
nevlas spend 1t-a3 for 1k. up eco.
bescods spend 1q for 1o. build lab -1x6. tech eco. up eco.
ambas charge 2pw
nevlas pass booster2
bescods pass booster4
nevlas income 1t. income 2t
hadsch-hallas pass booster5
ambas build ts 0x-3.
nevlas charge 2pw
nevlas action power5.
bescods build m -5x5.
hadsch-hallas decline 1pw
nevlas charge 1pw
ambas charge 2pw
ambas build m 5x-3.
nevlas charge 1pw
nevlas action power4.
bescods special step. build m -7x6.
ambas action power7.
nevlas special 4pw.
bescods build m -9x7.
ambas spend 2o for 2c. build PI 0x-3.
nevlas charge 2pw
nevlas action power3.
bescods special up-lowest. up int.
ambas spend 1k for 1c. spend 2o for 2c. build ts 5x-3.
nevlas charge 1pw
nevlas build ac1 0x-1. tech nav. up nav.
ambas decline 3pw
bescods charge 2pw
bescods build gf 3x-2.
ambas federation 0x-3,1x-4,2x-3,2x-4,2x-5,2x-6,3x-3,4x-3,5x-3 fed3.
nevlas action power6. build m 3x-4.
ambas charge 1pw
bescods spend 1q for 1o. build m 1x5.
ambas special swap-PI. swap-PI -2x9.
nevlas build ts 3x-4.
ambas charge 1pw
bescods spend 1pw for 1c. build gf 2x5.
ambas pass booster6
nevlas federation 0x-1,1x-1,2x-2,3x-3,3x-4 fed4.
bescods pass booster8
nevlas build lab 3x-4. tech adv-eco. cover nav. up sci.
ambas charge 1pw
nevlas action power1. spend 1t-a3 for 1k.
nevlas up sci.
nevlas spend 4pw for 1q. action qic2. fedtile fed4.
nevlas up sci.
nevlas pass booster3
ambas income 2t
nevlas income 4pw. income 4pw. income 2pw. income 1t
hadsch-hallas pass booster1
ambas action power6. build m -8x10.
bescods build m 2x5.
nevlas action power5.
ambas build lab -2x5. tech adv-nav. cover nav. up nav. lostPlanet -6x10.
bescods decline 2pw
hadsch-hallas decline 1pw
bescods build m 3x-2.
nevlas charge 2pw
ambas charge 2pw
nevlas special 4pw. spend 4pw for 1o,1c.
ambas spend 2o for 2c. build lab -4x7. tech free3. up int.
hadsch-hallas decline 1pw
bescods build gf -8x5.
nevlas action power4.
ambas special 4pw.
bescods build ts 3x-2.
nevlas charge 2pw
ambas charge 1pw
nevlas action power3.
ambas spend 4pw for 1k. up int.
bescods build ts -5x5.
hadsch-hallas decline 1pw
nevlas charge 1pw
ambas charge 2pw
nevlas build ts -5x3.
bescods charge 2pw
ambas federation -2x9,-3x9,-4x10,-5x10,-6x10,-7x10,-7x11,-8x10 fed2.
bescods up nav.
nevlas build lab -5x3. tech free2. up terra.
bescods charge 2pw
ambas special swap-PI. swap-PI -3x-2.
bescods action power7.
nevlas up terra.
ambas action qic2. fedtile fed2.
bescods special up-lowest. up eco.
nevlas up terra.
ambas pass booster4
bescods build gf 4x-4.
nevlas up terra.
bescods pass booster6
nevlas build m -6x5.
bescods charge 2pw
nevlas build ts -6x5.
bescods charge 1pw
nevlas federation -3x2,-4x3,-5x3,-6x4,-6x5 fed4.
nevlas burn 1. spend 4t-a3 for 4k. up nav.
nevlas build m 2x1.
hadsch-hallas decline 2pw
nevlas build m 3x3.
hadsch-hallas decline 2pw
nevlas build m 7x-3.
ambas charge 1pw
nevlas spend 2o for 2t. pass booster8
ambas income 2t
nevlas income 1t
hadsch-hallas pass
ambas build ts 2x-5.
nevlas charge 2pw
bescods special up-lowest. up int.
nevlas special 4pw.
ambas special step. build m -1x-5.
bescods build m -8x5.
nevlas charge 2pw
nevlas action power3.
ambas spend 3pw for 1o. up int.
bescods build m 4x-4.
nevlas charge 2pw
ambas charge 2pw
nevlas action power4.
ambas spend 2pw for 2c. special 4pw. spend 1pw for 1c.
bescods up int.
nevlas spend 12pw for 3q. action qic2. fedtile fed4.
ambas spend 1pw for 1c. spend 1o for 1c. build ac2 -4x7. tech free2. up int.
hadsch-hallas decline 1pw
bescods action qic1. tech gaia. up gaia.
nevlas up terra.
ambas action qic3.
bescods up int.
nevlas up sci.
ambas up int. spend 1q for 1o. spend 1q for 1o. spend 1q for 1o. spend 4q for 4o. spend 4o for 4c. spend 1k for 1c.
bescods build PI -1x1.
nevlas charge 3pw
ambas charge 1pw
nevlas up int.
ambas special q.
bescods federation -1x3,0x3,0x4,1x4,1x5,2x3,2x5,3x2,4x0,4x1 fed2.
nevlas build m 1x7.
bescods charge 1pw
ambas build lab 2x-5. tech sci. up sci.
nevlas charge 2pw
bescods spend 1o for 1t. spend 1o for 1t. federation -1x1,0x1,1x0,2x-1,3x-2 fed3.
nevlas build ac2 3x-4. tech sci. decline up.
ambas decline 2pw
bescods charge 2pw
ambas special swap-PI. swap-PI -1x-5.
bescods spend 3q for 3o. build lab -5x5. tech adv-int. cover free1. up gaia.
hadsch-hallas decline 1pw
nevlas charge 2pw
ambas decline 2pw
nevlas special q.
ambas pass
bescods federation -1x6,-2x6,-3x5,-3x6,-4x5,-5x5,-6x6,-7x6,-8x5,-8x6,-9x7 fed1.
nevlas up int.
bescods pass
nevlas spend 1q for 1o. build m -3x10.
ambas charge 1pw
nevlas build ts -3x10.
ambas charge 1pw