Git Product home page Git Product logo

gaia-project's People

Contributors

coyotte508 avatar dependabot[bot] avatar hello2github avatar randomboolean avatar rzulian avatar zeitlinger avatar zevenberge avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

gaia-project's Issues

Automove in viewer

I'm not sure, current code:

    if (move) {
      copy.move(move);
      copy.generateAvailableCommandsIfNeeded();

      // Only save updated version if a full turn was done
      if (copy.newTurn) {
        engine = copy;
      }
    }

Possible code

    if (move) {
      // automove returns true only if at least a full move is done
      if (copy.autoMove(move)) {
        while(copy.autoMove()) {}
        // Only save updated version if a full turn was done
        engine = copy;
      } else {
        copy.move(move)
      }

      copy.generateAvailableCommandsIfNeeded();
    }

possible refacto too to make it seamless / use the same thing in engine/wrapper and viewer/self-contained

display projected victory points?

would it make sense to show the projected victory points?

meaning

  1. current points
  2. - bid
  3. + final points if all current resources were converted to c

Advanced log - cover tech tiles

This is really minor

The tech tile's content could be displayed when covering tech tiles.

Instead of cover terra, cover terra (k for planet types)

Lost planet in gaia phase & charge

With the move log below, geodens get to charge twice at once.

The first charge should have happened when Itars placed the lost planet, in the gaia phase.

let engine = new Engine(
    [
      "init 4 Bionic-union-2913",
      "p4 rotate -6x10 3",
      "p1 faction itars",
      "p2 faction geodens",
      "p3 faction gleens",
      "p4 faction firaks",
      "itars build m 8B2",
      "geodens build m 1A11",
      "gleens build m 2A7",
      "firaks build m 7A10",
      "firaks build m 3A7",
      "gleens build m 10B0",
      "geodens build m 5A3",
      "itars build m 2B3",
      "firaks booster booster9",
      "gleens booster booster6",
      "geodens booster booster4",
      "itars booster booster3",
      "itars build ts 8B2.",
      "geodens charge 1pw",
      "geodens build ts 1A11.",
      "itars charge 2pw",
      "gleens up nav (1 ⇒ 2).",
      "firaks up terra (0 ⇒ 1).",
      "itars build lab 8B2. tech free3. up terra (0 ⇒ 1).",
      "geodens charge 2pw",
      "geodens build PI 1A11.",
      "itars charge 2pw",
      "gleens build ts 2A7.",
      "firaks charge 1pw",
      "itars charge 1pw",
      "firaks burn 1. action power3.",
      "itars burn 4. action power5.",
      "geodens special step. build m 5A2.",
      "firaks charge 1pw",
      "gleens build lab 2A7. tech sci. up sci (0 ⇒ 1).",
      "firaks charge 1pw",
      "itars charge 1pw",
      "firaks build ts 7A10.",
      "itars charge 1pw",
      "gleens charge 2pw",
      "itars build ac1 8B2. tech free1. up sci (0 ⇒ 1).",
      "geodens charge 3pw",
      "geodens action power6. build m 1A0.",
      "itars charge 3pw",
      "gleens build m 10B3.",
      "firaks build lab 7A10. tech free3. up eco (0 ⇒ 1).",
      "itars charge 1pw",
      "gleens charge 2pw",
      "itars up sci (1 ⇒ 2).",
      "geodens up nav (0 ⇒ 1).",
      "gleens pass booster8 returning booster6",
      "firaks build ts 3A7.",
      "geodens charge 1pw",
      "itars pass booster6 returning booster3",
      "geodens up nav (1 ⇒ 2).",
      "firaks burn 1. spend 1pw for 1c. spend 1o for 1c. spend 1q for 1o. build PI 3A7.",
      "geodens charge 1pw",
      "geodens build m 5B3.",
      "firaks special down-lab. build ts 7A10. up eco (1 ⇒ 2).",
      "itars charge 1pw",
      "gleens charge 2pw",
      "geodens spend 1q for 1o. build m 2A3.",
      "itars charge 1pw",
      "firaks pass booster3 returning booster9",
      "geodens up eco (0 ⇒ 1).",
      "geodens pass booster2 returning booster4",
      "firaks income 4pw. income 2pw",
      "geodens income 4pw. income 1pw",
      "gleens action power4.",
      "itars action power6. build m 8A4.",
      "geodens charge 3pw",
      "firaks spend 3pw for 1o. build lab 7A10. tech eco. up eco (2 ⇒ 3).",
      "itars charge 1pw",
      "gleens charge 2pw",
      "geodens action power2. build m 2B0.",
      "itars charge 1pw",
      "gleens build ts 10B3.",
      "itars up sci (2 ⇒ 3).",
      "firaks special down-lab. build ts 7A10. up eco (3 ⇒ 4).",
      "itars charge 1pw",
      "gleens charge 2pw",
      "geodens up terra (1 ⇒ 2).",
      "gleens build lab 10B3. tech free1. up nav (2 ⇒ 3).",
      "itars up sci (3 ⇒ 4).",
      "firaks pass booster4 returning booster3",
      "geodens pass booster9 returning booster2",
      "gleens up nav (3 ⇒ 4).",
      "itars pass booster3 returning booster6",
      "gleens burn 1. action power3.",
      "gleens pass booster2 returning booster8",
      "firaks income 1t",
      "geodens income 4pw. income 1pw. income 4pw",
      "firaks action power3.",
      "geodens action power4.",
      "itars up nav (0 ⇒ 1).",
      "gleens build m 7B0.",
      "firaks charge 2pw",
      "firaks build lab 7A10. tech free1. up nav (0 ⇒ 1).",
      "itars charge 1pw",
      "gleens charge 2pw",
      "geodens build ts 2A3.",
      "itars charge 1pw",
      "itars up nav (1 ⇒ 2).",
      "gleens build ts 7B0.",
      "firaks charge 2pw",
      "firaks up nav (1 ⇒ 2).",
      "geodens federation 1A0,1A10,1A11,2A3,2B0,2B1 fed5.",
      "itars burn 2. action power6. build m 8B4.",
      "gleens up eco (0 ⇒ 1).",
      "firaks special step. build m 3B4.",
      "geodens charge 1pw",
      "geodens build lab 2A3. tech free3. up terra (2 ⇒ 3).",
      "itars charge 1pw",
      "itars action qic1. tech int. up int (0 ⇒ 1).",
      "gleens pass booster6 returning booster2",
      "firaks special down-lab. build ts 7A10. up int (0 ⇒ 1).",
      "itars charge 1pw",
      "gleens charge 2pw",
      "geodens build m 1B4.",
      "itars build ts 8A4.",
      "geodens charge 3pw",
      "firaks build ts 3B4.",
      "geodens charge 1pw",
      "geodens up terra (3 ⇒ 4).",
      "itars federation 8A4,8B2,8B4,8C fed4.",
      "firaks pass booster2 returning booster4",
      "geodens build ts 5A3.",
      "firaks decline 3pw",
      "itars build ts 2B3.",
      "geodens charge 2pw",
      "gleens charge 2pw",
      "firaks decline 2pw",
      "geodens spend 3pw for 3c. build lab 5A3. tech adv-terra. cover free3. up int (0 ⇒ 1).",
      "firaks decline 3pw",
      "itars pass booster7 returning booster3",
      "geodens special 3k.",
      "geodens up int (1 ⇒ 2).",
      "geodens action qic2. fedtile fed5.",
      "geodens pass booster3 returning booster9",
      "firaks income 1t. income 2t",
      "geodens income 4pw. income 1pw",
      "gleens build m 7B4.",
      "firaks charge 1pw",
      "firaks spend 4pw for 1q. build m 3B1.",
      "itars up nav (2 ⇒ 3).",
      "geodens action power3.",
      "gleens build m 9B0.",
      "firaks action power5.",
      "itars up nav (3 ⇒ 4).",
      "geodens build ac1 5A3. tech int. up int (2 ⇒ 3).",
      "firaks decline 3pw",
      "gleens build m 3A10.",
      "firaks charge 2pw",
      "firaks action qic1. tech int. up int (1 ⇒ 2).",
      "itars burn 4. action power6. build m 4A0.",
      "geodens charge 4pw",
      "gleens charge 2pw",
      "geodens action qic2. fedtile fed5.",
      "gleens up terra (0 ⇒ 1).",
      "firaks federation 3A7,3B1,3B4,3C fed4.",
      "itars build PI 2B3.",
      "geodens charge 2pw",
      "gleens charge 2pw",
      "firaks charge 2pw",
      "geodens build ts 5A2.",
      "firaks decline 4pw",
      "gleens build ts 3A10.",
      "firaks charge 2pw",
      "firaks build lab 7A10. tech adv-eco. cover free3. up terra (1 ⇒ 2).",
      "itars decline 4pw",
      "gleens charge 2pw",
      "itars pass booster9 returning booster7",
      "geodens spend 1pw for 1c. federation 5A2,5A3,5B2,5B3 fed4.",
      "gleens pass booster7 returning booster6",
      "firaks up terra (2 ⇒ 3).",
      "geodens action power2. build m 5A8.",
      "firaks build m 4B2.",
      "geodens up int (3 ⇒ 4).",
      "firaks special down-lab. build ts 7A10. up terra (3 ⇒ 4).",
      "itars decline 4pw",
      "geodens action qic3.",
      "firaks spend 3pw for 1o. pass booster6 returning booster2",
      "geodens special 3k.",
      "geodens up nav (2 ⇒ 3).",
      "geodens pass booster8 returning booster3",
      "itars income 1t. income 1t",
      "firaks income 1t",
      "geodens income 4pw. income 1pw",
      "itars spend 4tg for tech. tech nav. up nav (4 ⇒ 5). lostPlanet 2B2",
      "itars action power6. build m 2A4.",
    ],
    {
      advancedRules: true,
    },
  );

Federation not found

This is the game, around move 387.

For this federation:

image

BGS only finds the federation with one satellite more:

image

This is due to the heuristic we use. I see a few solutions:

  • Improve the heuristic (complicated)
  • Use the exhaustive search when there's 7 or less satellites (not worth it probably)
  • Improve the exhaustive search by adding a minimumPathLength call every step of the algorightm (doubtful it helps)
  • Adding a custom federation option when there's 7+ satellites and the minimumPathLengh between a combination is <= 7. (probably the best way)

Legacy code

This issue is to track what to remove on a major version:

      case Command.Decline: {
          if (command.data.offers) {
            ret.push({
              label: `Decline ${command.data.offers[0].offer}`,
              command: `${Command.Decline} ${command.data.offers[0].offer}`,
              warning:
                command.data.offers[0].offer === "tech" ? "Are you sure you want to decline a tech tile?" : undefined,
            });
          } else {
            // LEGACY CODE
            // TODO: Remove when games are updated
            ret.push({
              label: `Decline ${command.data.offer}`,
              command: `${Command.Decline} ${command.data.offer}`,
            });
          }
          break;
        }
[Command.ChargePower](player: PlayerEnum, income: string) {
    const leechCommand = this.availableCommand.data;
    // leech rewards are including +t, if needed and in the right sequence
    const leechRewards = Reward.parse(income);

    // Handles legacy stuff. To remove when all games with old engine have ended
    if (!leechCommand.offers) {
      leechCommand.offers = [{ offer: leechCommand.offer, cost: leechCommand.cost }];
    }

    const offer = leechCommand.offers.find((ofr) => ofr.offer === income);

    assert(
      offer,
      `Cannot leech ${income}. Possible leeches: ${leechCommand.offers.map((ofr) => ofr.offer).join(" - ")}`
    );

    this.player(player).gainRewards(leechRewards, Command.ChargePower);
    this.player(player).payCosts(Reward.parse(offer.cost), Command.ChargePower);
  }
// Legacy map generation, to keep old tests valid
    const oldGen = [
      "Gianluigi-Buffon",
      "randomSeed",
      "12",
      "9876",
      "yellow-paint-8951",
      "green-jeans-8458",
      "Fastgame01",
      "zadbd",
      "bosco-marcuzzo3",
      "Alex-Del-Pieroooooo",
      "SGAMBATA",
      "djfjjv4k",
      "randomSeed2",
      "randomseed",
      "polite-food-8474",
      "green-jeans-8458",
      "waiting-fabs-1",
      "curious-stay-2150",
      "Three",
      "GaiaRocks",
      "SalmurOnTheBoard",
    ].includes(this.seed);

    const [hexagon, ...hexagons] = conf.sectors.map((val: SectorInMapConfiguration, i) => {
      const def = (conf.mirror || oldGen ? rSectors : sectors)[val.sector].map;
      if (!val.center) {
        val.center = centers[i];
      }
      const center = val.center;

      return Sector.create(def, val.sector, center).rotateRight(val.rotation, center);
    });
// Due to legacy issues

const reverseSide = (side: string) => {
  return (
    side[0] +
    side.slice(1, 12).split("").reverse().join("") +
    side[12] +
    side.slice(13, 18).split("").reverse().join("") +
    side[18]
  );
};

const rSectors = keyBy(
  [s1, s2, s3, s4, s5, s5b, s6, s6b, s7, s7b, s8, s9, s10].map((s) => ({ name: s.name, map: reverseSide(s.map) })),
  "name"
);
  /** Fix old options passed. To remove when legacy data is no more in database */
  sanitizeOptions() {
    // if (get(this.options, "map.map")) {
    //   this.options.map.sectors = get(this.options, "map.map");
    //   set(this.options, "map.map", undefined);
    // }
  }
  it("should render as faded when given legacy data", async () => {
    const action = BoardActionEnum.Power1;
    const store = makeTestStore();
    store.state.gaiaViewer.data.boardActions[action] = PlayerEnum.Player5;
    const { container } = render(BoardAction, {
      props: {
        action,
      },
      store,
    });

    expect(container.querySelector(".faded")).to.not.be.null;
  });
    // Legacy value
    if ((player.settings.autoChargePower as AutoCharge | 0) === 0) {
      player.settings.autoChargePower = "decline-cost";
    }
    // LEGACY CODE
    // TODO: Remove when games are updated (also remove player !== Player.Player5)
    for (const key of Object.keys(engine.boardActions)) {
      const action = engine.boardActions[key];
      if (typeof action == "boolean") {
        engine.boardActions[key] = action ? null : PlayerEnum.Player5;
      }
    }
  static fromData(data: Record<string, any>) {
    const engine = new Engine();
    delete engine.version; // here
  • The Auction behavior

back / undo

Minor point - Let's say I am building a TS on my turn. I would then like to make some free actions. But once I click on free actions, I realise that I don't really want to do the free action, so I click on "Undo". It cancels the TS built and not just the free action tab

Over-eager warning about wasted charge

I was just given the opportunity to charge my last 3 power tokens from area 2 to area 3, and received a warning that I would have 2 "wasted" charge during the income phase. (1 pt income, 4 charge income)

However, I hadn't passed yet, so would have plenty of opportunity to spend that charge first! Should this warning only be happening if I've already passed, or if we can somehow detect that I'm close to passing?

Gleen federation tokens info

Once the game starts, I think the information about the special federation token of the Glenns is lost until they construct their PI.
It’d be nice if that information where to show up in some fashion.

tier3 variant

Goal

make all factions tier3 - based on the popular metric to categorize factions into tier1 to tier3

based on discussion in chat

Suggestions

Nevlas

  • remove sci1

Taklons

  • power 4/0/0

Make not actually using special actions illegal

Based on this thread

  • (1) Is it legal to take the 1/2 terraform step power action and not build a mine? NO!
  • (2) Is it legal to take the 1/2 terraform step power action and build a mine on your home planet type (i.e. not use any free steps)? NO!
  • (3) Is it legal to take the 1/2 terraform step power action and build a mine on a Gaia Planet (i.e. not use any free steps)? NO!
  • (4) Is it legal to take the Gain a Tech Tile QIC action if there is no tech tile you can take? NO!
  • (6) Is it legal to take the Gain knowledge/ore/credits power actions if you cannot gain ANY of the reward? NO!
  • (7) Is it legal to take the 1 free step or increased range booster tile actions and not actually place a mine (or a gaiaformer, in the case of the range tile)? NO!
  • (8) Is it legal to take a PI special action if it is not possible to carry it out at all? NO! -> covered by #77

More rules to prevent accidental misuse

  • don't allow activating range booster and not using it
  • don't allow activating step booster and not using it

Warnings

  • expensive terraforming (for 2 or 3)
  • step action is partially wasted
  • don't allow building without step booster if it would save a terraforming step (still allow it, in an edge case, with 15o, you might want to spend o before taking the booster)
  • don't allow building without range booster if it would save a QIC and if the range booster is used up (i.e. missing range is odd)
  • Gaia forming with tokens not in area 1
  • Form federation with tokens not in area 1

Warnings at end of round -> do this for all actions that could be activated?

  • step booster not used
  • range booster not used

Fix Eslint/prettier config

  • ban @gaia-project/engine/src import from viewer
  • make prettier work on viewer's .vue file

I tried installing plugins / ... and it didn't work. It may have to do with using pnpm and not yarn

Simplify JSON sent

With engine.options.map, we now have the configurations (sectors, rotations).

We just need to send that configuration, and changes (transdim planets gaiaformed, and other extra data like buildings, federations...).

This would cut down a lot on network traffic & database storage.

This can be done on a toJSON() or toString() method of GaiaHex:

  • only include planet if it's a gaia planet (as it may have been changed)
  • include remaining data

Actually since the map is grouped into sectors, the export can be done like this:

[{"sector": "1", "data": [,,,{"planet": "gaia", "building": "m", "player": 0},,,,,{"federations": [1,2]},]}, ...]

There's no need to even serialize coordinates as we can extrapolate the info from the sector & the index of the hex

lostPlanet leech during gaia phase

Because itars...

init 4 welcome-everyone
p1 faction gleens
p2 faction itars
p3 faction terrans
p4 faction ivits
gleens build m 2x0
itars build m 3x-3
terrans build m -1x3
terrans build m -5x8
itars build m -2x4
gleens build m -3x0
ivits build PI 2x4
ivits booster booster9
terrans booster booster3
itars booster booster4
gleens booster booster10
ivits income 4pw. income 4pw
gleens up nav.
itars build ts -2x4.
terrans charge 1pw
terrans build m 1x3.
ivits charge 2pw
ivits special space-station. build sp 3x3.
gleens build m 1x-1.
itars charge 1pw
itars build ts 3x-3.
gleens charge 1pw
terrans build ts -1x3.
itars charge 2pw
ivits build m 3x2.
terrans charge 1pw
gleens build ts 1x-1.
itars charge 2pw
itars burn 2. up gaia.
terrans build lab -1x3. tech eco. up eco.
itars charge 2pw
ivits action power3.
gleens build lab 1x-1. tech terra. up terra.
itars charge 2pw
itars special step. build m 3x-2.
gleens charge 2pw
terrans up eco.
ivits build ts 3x2.
terrans charge 1pw
gleens build m -2x-2.
itars action power4.
terrans build gf -1x2.
ivits build lab 3x2. tech free1. up terra.
terrans charge 1pw
gleens burn 2. action power6. build m -4x0.
itars build lab -2x4. tech terra. up terra.
terrans charge 1pw
terrans spend 2pw for 2c. pass booster2
ivits up terra.
gleens build m -6x2.
itars spend 1q for 1o. build PI 3x-3.
gleens charge 2pw
ivits pass booster8
gleens pass booster9
itars spend 2pw for 2c. build gf -5x4.
itars pass booster3
terrans income 2pw. income 1pw
ivits income 4pw
itars income 1t. income 1t
itars spend 4tg for tech. tech free3. up nav. spend 4tg for tech. tech nav. up nav
terrans build m -1x2.
itars charge 1pw
ivits burn 1. action power5.
gleens build ts 2x0.
itars up gaia.
terrans build gf -4x7.
ivits special space-station. build sp 3x1.
gleens spend 2k for 2c. action power6. build m 4x-2.
itars charge 3pw
itars build m -5x4.
terrans build ts 1x3.
ivits charge 3pw
ivits up terra.
gleens pass booster10
itars build m -7x6.
terrans build lab 1x3. tech free1. up eco.
ivits charge 3pw
ivits action power3.
itars spend 1q for 1o. build m 4x-5.
terrans action power4.
ivits build m 0x1.
gleens charge 2pw
terrans charge 2pw
itars spend 3pw for 1o. build m -7x4.
gleens charge 1pw
terrans pass booster4
ivits build m -1x0.
gleens charge 2pw
terrans charge 1pw
itars build gf -3x3.
ivits pass booster9
itars pass booster2
ivits income 4pw. income 4pw
itars income 2t. income 4pw
itars spend 4tg for tech. tech free1. up nav
gleens build ac2 1x-1. tech nav. up nav.
itars charge 3pw
ivits charge 1pw
terrans build ts -1x2.
ivits charge 1pw
itars charge 2pw
ivits action power3.
itars action power4.
gleens spend 1pw for 1c. special q.
terrans up nav.
ivits build ts -1x0.
gleens charge 2pw
terrans charge 2pw
itars build m -3x3.
terrans charge 2pw
gleens spend 1pw for 1c. spend 1q for 1o. build ts 4x-2.
itars charge 3pw
terrans special step. build m -4x3.
itars charge 1pw
ivits build lab -1x0. tech free2. up terra.
gleens charge 2pw
terrans charge 2pw
itars build ts 3x-2.
gleens action power5.
terrans build lab -1x2. tech sci. up sci.
ivits charge 2pw
itars charge 2pw
ivits federation 2x4,3x1,3x2,3x3 fed2.
itars spend 1pw for 1c. spend 1pw for 1c. build lab 3x-2. tech eco. up eco.
gleens decline 3pw
gleens federation 1x-1,1x0,2x0,3x-1,4x-2 fed3.
terrans spend 3pw for 1o. special 4pw.
ivits special space-station. build sp 4x0.
itars burn 1. action power7.
gleens up gaia.
terrans action power1.
ivits spend 1pw for 1c. build m 5x-1.
gleens charge 2pw
itars build gf 2x-1.
gleens up gaia.
terrans up nav.
ivits pass booster8
itars pass booster3
gleens build gf -4x-1.
terrans build m -4x7.
gleens pass booster2
terrans build gf 0x5.
terrans pass booster7
ivits income 4pw
itars income 1t. income 1t
itars spend 4tg for tech. tech sci. up sci
ivits action qic2. fedtile fed2.
itars build m -7x10.
terrans charge 1pw
gleens build ts -3x0.
ivits charge 2pw
terrans special 4pw.
ivits special space-station. build sp 6x-2.
itars build m -5x10.
terrans charge 1pw
gleens special q.
terrans action power3.
ivits build m 6x-3.
gleens charge 2pw
itars special 4pw.
gleens burn 1. spend 1pw for 1c. spend 1q for 1o. spend 1k for 1c. build PI -3x0.
ivits charge 2pw
terrans action power2. build m 2x1.
ivits charge 2pw
gleens charge 2pw
ivits action power4.
itars build m 2x-1.
terrans charge 1pw
ivits charge 1pw
gleens decline 3pw
gleens build m -4x-1.
terrans build m 0x5.
ivits charge 4pw
ivits burn 1. action power5.
itars action power7.
gleens build gf -9x6.
terrans up nav.
ivits up nav.
itars spend 1pw for 1c. build gf -3x9.
gleens pass booster10
terrans build gf -8x12.
ivits up nav.
itars federation 4x-4 fed3.
terrans build ac2 1x3. tech free2. up nav.
ivits charge 4pw
ivits pass booster9
itars build ts -3x3.
terrans charge 2pw
terrans special q.
itars spend 1o for 1t. federation -3x4,-4x4,-6x4,-6x5 fed5.
terrans spend 1pw for 1c. pass booster8
itars up nav.
itars pass booster7
ivits income 4pw. income 4pw
itars income 1t. income 1t
itars spend 4tg for tech. tech adv-nav. cover terra. up nav. lostPlanet -4x9
gleens special q.
terrans charge 1pw

The terran leech should have happened earlier. It's not a big problem, but we must be ready to switch to leeching phase other than during round move. And switch back to the correct phase instead of just round move.

Improve player data's JSON

For now the player data's json is:

  victoryPoints = 10;
  bid = 0;
  credits = 0;
  ores = 0;
  qics = 0;
  knowledge = 0;

This should be something like

  resources = {
    [Resource.Victorypoint]: 10,
    ...
  }

show more recent actions

player board

research area:

image

buildings

image
image

board actions

only the recent ones - you already know if they're taken in the current round

image

or

image

image

spin_token.mp4

Option for random factions

  • When in a game without auction: the player only has one suggested faction given to him
  • When in a game with auction: the game selects N faction (N being the number of players), players can only pick factions from those N factions

Heuristic not catching federation with 12 satellites

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

Nevlas should be able to form a federation by converting 2o to 2t.

simplified fedration rules

I'm wondering if it's a good idea to add a "simplified federation rules" option - specifically designed for computer play.

Changes I can think of
The changes are not optimized to produce the shortest rule text - it's rather a starting point for a discussion.

(1) allow multiple federations to be adjacent to each other

  • both in neighboring planets and in space
  • rationale: in computer play, we can separate colors for each federation

(2) newly build mines don't join federation on adjacent planet

See 1

(3) pick subselection of planet cluster

When picking planets, it's allowed to choose a subselection of planets from a planet clusters.

Further clarifies (1).

(4) Multiple satellites in same space sector

Multiple satellites of the same player are allowed in the same space sector - as long as they belong to different federations.

Change the auction system

First players picks a faction. Following players either pick a faction or bid on a picked faction. A player who picked a faction / made a bid, can't pick a new faction / make a new bid until someone bid on their faction.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.