MartianZoo / solarnet

Solarnet, an open-source game engine for the board game Terraforming Mars. Pets, a specification language for game component behaviors in said game.
Apache License 2.0
15 stars 2 forks source link

Solarnet

Fast facts

Class Example Pets syntax
LargeConvoy This: OceanTile, 2 ProjectCard, 5 Plant OR 4 Animal
ElectroCatapult Plant OR Steel -> 7
ArcticAlgae OceanTile BY Anyone: 2 Plant
Insulation This: PROD[X Megacredit FROM Heat]
EarthCatapult PlayCard: -2 Owed<Megacredit>
CitySP 25 -> CityTile, PROD[1]
TerraformRating ProductionPhase: 1; End: VictoryPoint
CityTile End: VictoryPoint / Adjacency<This, GreeneryTile<Anyone>>

Play around with it?

You totally can, but note: you will have a MUCH better time if you jump on the discord and ask lots of questions. Almost no one but me has tried to do much with it yet. It won't be self-explanatory (sorry).

It is supposed to be as simple to get going as:

git clone https://github.com/MartianZoo/solarnet.git
cd solarnet
./rego
help

But in these early days, you're unlikely to get far on your own. I want to improve that, but the best chance for that to happen is if YOU give things a try and tell me how it goes! Again, please do join the discord.

Learning more

Join the discord

Please do. This invite should work...

Videos

None of this is polished or anything.

Docs

I haven't written too much yet. There are too many things I could write down next, so it would really help to hear which topics you most want to know about and then I could just write about those (and eventually get around to everything).

Browse?

Want to just browse through how the game components are defined?

The cards are also here in spreadsheet form which can be easier to read.

Just breeze past all the things that don't make sense. Some of it will!

Poke around in the implementation?

If you can generate the docs (clone, ./gradlew dokkaHtmlMultiModule, then look at docs/api/index.html) that would be the ideal way to start.

I wrote it in Kotlin, which should make the whole thing usable from Java, JavaScript, and some other environments as well. Getting those working might not be trivial (?) but at least won't require a port.

Who are you

http://kevinb9n.github.io

I'd be more than glad to hear from you at kevinb9n@gmail.com.