aboutsummaryrefslogtreecommitdiff
path: root/web/pw-server/src/routes/docs
diff options
context:
space:
mode:
Diffstat (limited to 'web/pw-server/src/routes/docs')
-rw-r--r--web/pw-server/src/routes/docs/rules.md86
1 files changed, 84 insertions, 2 deletions
diff --git a/web/pw-server/src/routes/docs/rules.md b/web/pw-server/src/routes/docs/rules.md
index 75d99a6..45a72c7 100644
--- a/web/pw-server/src/routes/docs/rules.md
+++ b/web/pw-server/src/routes/docs/rules.md
@@ -1,3 +1,85 @@
-# Rules
-Hello welcome on the rules page \ No newline at end of file
+## How to play
+In every game turn, your bot will receive a json-encoded line on stdin, describing the current
+state of the game. Each state will hold a set of planets, and a set of spaceship fleets
+traveling between the planets (_expeditions_).
+
+Example game state:
+
+```json
+ {
+ "planets": [
+ {
+ "ship_count": 2,
+ "x": -2.0,
+ "y": 0.0,
+ "owner": 1,
+ "name": "your planet"
+ },
+ {
+ "ship_count": 4,
+ "x": 2.0,
+ "y": 0.0,
+ "owner": 2,
+ "name": "enemy planet"
+ },
+ {
+ "ship_count": 2,
+ "x": 0.0,
+ "y": 2.0,
+ "owner": null,
+ "name": "neutral planet"
+ }
+ ],
+ "expeditions": [
+ {
+ "id": 169,
+ "ship_count": 8,
+ "origin": "your planet",
+ "destination": "enemy planet",
+ "owner": 1,
+ "turns_remaining": 2
+ }
+ ]
+ }
+```
+
+The `owner` field holds a player number when the planet is held by a player, and is
+`null` otherwise. Your bot is always referred to as player 1.
+Each turn, every player-owned planet will gain one additional ship.
+Planets will never move during the game.
+
+Every turn, you may send out expeditions to conquer other planets. You can do this by writing
+a json-encoded line to stdout:
+
+Example command:
+```json
+ {
+ "moves": [
+ {
+ "origin": "your planet",
+ "destination": "enemy planet",
+ "ship_count": 2
+ }
+ ]
+ }
+```
+
+All players send out their commands simultaneously, so there is no turn order. You may send as
+many commands as you please.
+
+The amount of turns an expedition will travel is equal to the ceiled euclidean distance
+between its origin and destination planet.
+
+Ships will only battle on planets. Combat resolution is simple: every ship destroys one enemy
+ship, last man standing gets to keep the planet.
+
+The game will end when no enemy player ships remain (neutral ships may survive), or when the
+turn limit is reached. The default limit is 100 turns.
+
+You can code your bot in python 3.10. You have the entire stdlib at your disposal.
+If you'd like additional libraries or a different programming language, feel free to nag the administrator.
+
+### TL;DR
+Head over to the editor view to get started - a working example is provided.
+Feel free to just hit the play button to see how it works!