boardgamers / gaia-project Goto Github PK
View Code? Open in Web Editor NEWEngine and viewer for the boardgame Gaia Project
Engine and viewer for the boardgame Gaia Project
Itars still show the +1t income in their board (out of the PI slot). I'll check if it shows +1t in their PI slot after built soon, but it's probably still using their regular values.
It's just a visual inconsistency, since the actual income is correct (I didn't get +1t in the first round)
Tested in match: https://www.boardgamers.space/game/Piramidal-tatu-8014
https://www.boardgamers.space/game/Pink-redundancy-941
I tried viewing this game's replay and it stopped after 52/432 in the replay bar. Nothing happened after that, it went to 53,54,55... but there was no movement on the map or in the log. This has happened previously in some games, one such game is https://www.boardgamers.space/game/Telling-secretary-320
In the second link, it stops in the 90's (94/190 or something if I remember right).
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
would it make sense to show the projected victory points?
meaning
- bid
+ final points if all current resources were converted to c
Good for performance!
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)
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,
},
);
This is the game, around move 387.
For this federation:
BGS only finds the federation with one satellite more:
This is due to the heuristic we use. I see a few solutions:
minimumPathLength
call every step of the algorightm (doubtful it helps)minimumPathLengh
between a combination is <= 7. (probably the best way)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
https://www.boardgamers.space/game/Red-school-1483
The chart of VP overtime shows 208 VP for gleens, but they have 212 VPs
Hi! I'm trying to convert 1 ore to 1 token in this game https://www.boardgamers.space/game/Piling-decision-6894 and it won't let me. I've try converting 1 ore to credit just to see and it works just fine. I'm on mobile phone if that helps. Thanks!
https://www.boardgamers.space/game/Holistic-morning-1717
At move 6 in replay mode, P2 is shown for the third & fourth player
I can't think of any valid reason for a player to charge power after passing in the final round, so this would help speed things up.
https://www.boardgamers.space/game/Static-guacamole-1932
Twice it warned me about forming a federation with tokens outside bowl 1, even though this was not actually necessary either time. Nor did it actually spend any tokens outside bowl 1.
Check the code for federation.ts
Should skip the check for ivits. Either move the check out of the function, add faction as an argument, ...
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
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?
I'm seeing constant console.logs for receive event gameHeight
in my browser, and also noticed that the game has massively drained my iPhone battery while playing the game on mobile Safari. I believe this to be a recent regression, had not been happening before.
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.
Firaxs wisdom income not working properly on the balanced version
https://www.boardgamers.space/game/Quick-ground-6142
i should hv get 3 wisdom, but instead i got +2
its a huge difference, i cant get a dumb, where i need it, (i had 1 wisdom after turn 1)
so i should hv had 4 instead of 3
....
and another game
where my friend could not use bescods passive in a 3p balanced game
https://www.boardgamers.space/game/Swift-farm-7018
make all factions tier3 - based on the popular metric to categorize factions into tier1 to tier3
based on discussion in chat
Based on this thread
More rules to prevent accidental misuse
Warnings
Warnings at end of round -> do this for all actions that could be activated?
https://www.boardgamers.space/game/Noisy-festival-7261
Move 6.5
Workaround: offer custom federation option earlier (already published)
@gaia-project/engine/src
import from viewer.vue
fileI tried installing plugins / ... and it didn't work. It may have to do with using pnpm
and not yarn
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:
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
https://boardgamegeek.com/thread/2324994/more-balanced-factions
and internally https://www.boardgamers.space/page/gaia-project/faction-variants
The changes are simple
To be able to make new balancing changes without breaking anything, maybe store them in the JSON:
loadFaction(faction: Faction, expansions = 0, skipIncome = false, balanced = false) {
this.factionChanges ||= (balanced ? balancedChanges(faction) : {});
// ...
}
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.
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,
...
}
Maybe it can always be enabled if it's unobtrusive (just one click on a button) and not be a preference
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.
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.
See 1
When picking planets, it's allowed to choose a subselection of planets from a planet clusters.
Further clarifies (1).
Multiple satellites of the same player are allowed in the same space sector - as long as they belong to different federations.
Maybe a different color on the map? Orange?
https://forum.boardgamers.space/topic/177/request-warning-when-hard-digging
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.