There's a fan-based expansion called Ares [1] which I'd love to see some online play. From a gameplay perspective, it adds:
From a technical perspective, not knowing your code well, I suspect the areas below are the ones where your technical design might need to expanded to support this:
[1] https://boardgamegeek.com/thread/2218211/tm-ares-fan-expansion-more-interaction-map-mars
Yeah, already seeing an interesting conflicting area: replacing cards. For example, the replacement ecological zone is a near perfect replacement for the original, but it provides an adjacency bonus. The adjacency bonus rules can be tied to the tile, which is another topic. But how then would this card play out?
This is tricky as you have a hard mapping between card names and text (eg HTML_data.ts, other functions.) It's also a reason why you might be reluctant to let in fan-expansions as this wouldn't be the first name conflict - probably not going to work.
Give cards/ares/EcologicalZone.ts the name "ares:Ecological Zone" (yay, I've just introduced namespaces! Oh boy.) But then when rendering the card remove the "ares:" prefix.
Parameterize cards/EcologicalZone.ts. No. Nope. Nope.
I'll be operating under the assumption that 2. is the way to go (though use a :ares suffix and not a prefix, because alphabet.)
It looks like filtering cards is possible because you have this "Exclude some cards" option which I might be able to hook into.
Hi @kberg, it's interesting. I think it would be fine to have Ares as a game option on the main page, under a new header "Fan Expansions". We will likely reorganize the "Create game" form sections at some point.
For the 11 cards that replace existing cards, I ran into a similar issue when adding Big Box promos. The approach I took was to add a suffix to CardName (e.g. DEIMOS_DOWN_PROMO) and add the replacement logic in Dealer.ts. In your case, CARDNAME_ARES should be fine.
About the other new functionality:
1. adjacency tile rules: placing tiles next to other tiles lets players gain bonuses.
This can be supported; it's similar to oceans and Philares.
2. a new milestone and award
This should be doable; do note the interaction with "randomize milestones and awards" if the new milestone and award must always be in play.
3. upgraded ocean behavior.
We could extend getAvailableSpaces to allow placing tiles on top of oceans for Ares expansion only, or add separate methods e.g. getAvailableSpacesOnLandForAres to handle it. The latter would be clearer IMO.
4. rules about bad weather events, providing negative adjacency benefits.
This should be fine too; hazard tiles could belong to a NEUTRAL player that's added during game setup.
Overall it looks like a nice expansion! 👍 Excited to see what you come up with. I'd suggest pushing small changes incrementally so that it's easier to review and test along the way.
Yeah, so far so good -- I'm really surprised. In the meantime, here's my progress to date. https://github.com/kberg/terraforming-mars/tree/ares
@kberg I created a new feature branch https://github.com/bafolts/terraforming-mars/tree/ares, you can raise a PR to here so that other devs can take a look as well
Thanks!
Woo! Now I'm _somebody!_
>
# Card behavior
+ 100% Basic cards
- 0% Ocean cards, on the verge of starting.
- 0% Hazard cards: blocking on updating the board, saving for last.
# Underlying Ares functionality
+ 99% Adjacency benefits: missing a couple of tests.
! 80% Adjacency costs: works, but does not ask for user confirmation in the event they did not realize the extra costs.
- 0% Ocean behavior. I might want advice.
+ 100% Hazard placements
+ 80% Placing on top of hazard tiles: needs testing, same UI issue about adjacency costs.
# UI
+ 100% Select Ares expansion (though could include choosing whether to include sub-modules, eg oceans, hazards.)
! 80% Card HTML. Need special icons for 3 of the cards.
! 80%: Tiles: needs polish.
- 0%: Hazard indicators. (will want advice.)
Latest is at github.com/kberg/terraforming-mars/latest
# Card behavior
+ 100% Basic cards
+ 90% Ocean cards. Huh, that was simple. Though the tests are proving sticky.
- 0% Hazard cards: blocking on updating the board, saving for last.
# Underlying Ares functionality
+ 99% Adjacency benefits: missing a couple of tests.
! 80% Adjacency costs: works, but does not ask for user confirmation in the event they did not realize the extra costs.
+ 100% Ocean behavior.
+ 100% Hazard placements
+ 80% Placing on top of hazard tiles: needs testing, same UI issue about adjacency costs.
# UI
+ 100% Select Ares expansion (though could include choosing whether to include sub-modules, eg oceans, hazards.)
! 80% Card HTML. Need special icons for 3 of the cards.
+ 100%: Tiles.
- 0%: Hazard indicators. (will want advice.)
# TODOs
32 down from 42.
Latest is at github.com/kberg/terraforming-mars/latest
Focus on:
A manual test shows most hazards work -- but for some reason 6 oceans didn't remove the dust storms. Overplacement worked.
Logging is both insufficient and broken. There is some condition I can't explain where adjacency is granting much more money than I expected. (What a problem, huh?)
This branch is ready for testing and external feedback.
# Card behavior
+ 100% Basic cards
+ 100% Ocean cards. Huh, that was simple. Though the tests are proving sticky.
- 0% Hazard cards: blocking on updating the board, saving for last.
# Underlying Ares functionality
+100% Adjacency benefits: missing a couple of tests.
! 99% Adjacency costs: works, but does not ask for user confirmation in the event they did not realize the extra costs.
+ 100% Ocean behavior.
+ 100% Hazard placements
! 90% Placing on top of hazard tiles: needs testing, same UI issue about adjacency costs.
# UI
+ 100% Select Ares expansion (though could include choosing whether to include sub-modules, eg oceans, hazards.)
! 95% Card HTML. Need special icons for 3 of the cards.
+ 100%: Tiles.
- 0%: Hazard indicators. (will want advice.)
# TODOs
19 down from 32.
Latest is at github.com/kberg/terraforming-mars/latest
Status update 2020-09-24:
Completely forgot about milestones and awards. So, very little change, but I'm adding more items to the list.
# Card behavior
+ 100% Basic cards
+ 100% Ocean cards. Huh, that was simple. Though the tests are proving sticky.
- 0% Hazard cards: blocking on updating the board, saving for last.
# Underlying Ares functionality
+100% Adjacency benefits: missing a couple of tests.
! 99% Adjacency costs: works, but does not ask for user confirmation in the event they did not realize the extra costs.
+ 100% Ocean behavior.
+ 100% Hazard placements
+ 90% Placing on top of hazard tiles: needs testing, same UI issue about adjacency costs.
- 0% Milestone and awards behavior.
# UI
+ 100% Select Ares expansion (though could include choosing whether to include sub-modules, eg oceans, hazards.)
! 95% Card HTML. Need special icons for 3 of the cards.
+ 100%: Tiles.
- 5%: Hazard indicators. (will want advice.)
- 100%: Milestone and award UI images.
19, steady, though I guess milestone/award behavior makes 20! It's just not in a TODO.
I had the chance to try out a game with @kberg's latest code as of yesterday, and I think it's a pretty great expansion. Instead of just adding more separate boards to look at, it makes the main board much more interesting. That is cool.
I would love to see it included under some kind of "community" heading like you're using for Agricola corp!
Status update 2020-09-28:
Big update today.
# Card behavior
+ 100% Basic cards
+ 100% Ocean cards
+ 100% Hazard cards
# Underlying Ares functionality
+100% Adjacency benefits
+100% Adjacency costs
+100% Ocean behavior
+100% Hazard placements
+ 90% Placing on top of hazard tiles, a minor known issue
+100% Milestone and awards behavior.
# UI
+ 100% Select Ares expansion
! 95% Card HTML. Need special images for 2 of the cards.
+ 100%: Tiles.
! 50%: Hazard indicators. For now I'm using a cheap text layout.
+ 100%: Milestone and award UI images.
# Unit tests
I'm not putting a number on this, just know that I have a fair bit of unit tests left to write, because I got excited about bringing the app to a completed feature state.
# TODOs
15 remaining.
It's now entering alpha testing.
The only change was the Underlying Ares Functionality, which went from 90% to 100%. I added a fascinating little unit test the type of which I haven't seen yet - serialization and deserialization. I also fixed bugs related to hazard deployment as a response to global parameters. Unit tests continue to be useful.
Ongoing I'm moving from a % to an issues-list. But just for the sake of being thorough, % progress is at the bottom.
cardname|aresNuclear Zone next to the Hellas "Pay 6M€ to place an ocean" space. Have 6 or 7M€, and then place a tile on the "Pay 6M€ to place an ocean." This will result in a bug.Desperate Measures, instead of placing a bronze cube, it puts your player cube on the board. As a benefit, you get the pleasure of owning a hazard tile for the entire game.Mining Guild is supposed to get a steel production bonus from placing adjacent to steel/titanium adjacency producers, however, that’s not coded yet. Making this clean could use some proper analysis.Mars First from Turmoil has a ruling policy: When you place any tile on mars, receive 1 steel. It's unclear whether this applies to the Geological Survey benefit. Either way, I think there's an inconsistency -- I forget, it was a while ago last I looked at it.# Card behavior
+ 100% Basic cards
+ 100% Ocean cards
+ 100% Hazard cards
# Underlying Ares functionality
+100% Adjacency benefits
+100% Adjacency costs
+100% Ocean behavior
+100% Hazard placements
+100% Placing on top of hazard tiles, a minor known issue
+100% Milestone and awards behavior.
# UI
+ 100% Select Ares expansion
! 95% Card HTML. Need special images for 2 of the cards.
+ 100%: Tiles.
! 50%: Hazard indicators. For now I'm using a cheap text layout.
+ 100%: Milestone and award UI images.
# Unit tests
I'm not putting a number on this, just know that I have a fair bit of unit tests left to write, because I got excited about bringing the app to a completed feature state.
# TODOs
14 remaining.
Hi! Been a while. That's because there's not much left to do besides some real clean-up. I've fixed bugs, added tests. Remaining TODOs are internal organization. There are some things that need to change, but this is ready for Beta.
cardname|aresNuclear Zone next to the Hellas "Pay 6M€ to place an ocean" space. Have 6 or 7M€, and then place a tile on the "Pay 6M€ to place an ocean." This will result in a bug.Desperate Measures, instead of placing a bronze cube, it puts your player cube on the board. As a benefit, you get the pleasure of owning a hazard tile for the entire game.Mining Guild is supposed to get a steel production bonus from placing adjacent to steel/titanium adjacency producers, however, that’s not coded yet. Making this clean could use some proper analysis.Mars First from Turmoil has a ruling policy: When you place any tile on mars, receive 1 steel. It's unclear whether this applies to the Geological Survey benefit. Either way, I think there's an inconsistency -- I forget, it was a while ago last I looked at it.Ecological Survey and Arctic Algae: Arctic Algae says "When anyone places an ocean tile, gain 2 Plants." If you place an ocean on a space without plants and Arctic Algae grants you 2 plants. Do you gain a third?Some cleanup and general whatnot work. I've once again moved issue tracking, but now it's at https://github.com/kberg/terraforming-mars/issues so that seems reasonable.

Discovered some issues with Land Claim and claiming a hazard space, but ha ha ha who would do that? Ha ha ha.
I'm at a stage where the bug list is _pretty low_ and I'm only making major changes in response to changes in master -- two ongoing examples are the new interrupts and card layout. And so I'd like to start moving pieces of code into the master repo. I feel pretty confident that my test coverage is good -- The bafolts/ares has ~75 more tests than bafolts/master. Obviously a big question is tests introduced into existing expansions. I've continued getting feedback about issues, some large, some small. But I can't tell you the number of plays -- it looks like the project is most definitely in use.
Obviously a full PR is going to take someone a long time to review. I'm happy to cut new versions of the changes as incremental application to bafolts/master, ending with the UI component that turns the feature on -- amusingly one of the very first things I did.
So I'm looking for feedback on what to do next.
Cutting new versions of the changes as incremental to bafolts/master would be my vote. That will be easier to review. I am fine with getting it into master whenever.
Let's do it. I can help with playtesting and reviews
On Fri, Oct 16, 2020, 18:27 Brian Folts notifications@github.com wrote:
Cutting new versions of the changes as incremental to bafolts/master would
be my vote. That will be easier to review. I am fine with getting it into
master whenever.—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/bafolts/terraforming-mars/issues/1281#issuecomment-710114731,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAGMEUY666TN5GK6S3Q4KVTSLBQ4TANCNFSM4RJ4ICXA
.
Thanks. I'll start that this weekend.
Six weeks later and the project is complete. Tiles and cards need an update, and a couple of things here and there, but this is done.