diff options
Diffstat (limited to 'web/pw-server/src/routes')
-rw-r--r-- | web/pw-server/src/routes/__layout.svelte | 2 | ||||
-rw-r--r-- | web/pw-server/src/routes/docs.svelte | 14 | ||||
-rw-r--r-- | web/pw-server/src/routes/docs/rules.md | 86 |
3 files changed, 85 insertions, 17 deletions
diff --git a/web/pw-server/src/routes/__layout.svelte b/web/pw-server/src/routes/__layout.svelte index 86acf5b..4baefce 100644 --- a/web/pw-server/src/routes/__layout.svelte +++ b/web/pw-server/src/routes/__layout.svelte @@ -17,7 +17,7 @@ <a href="/leaderboard">Leaderboard</a> </div> <div class="navbar-item"> - <a href="/docs">How to play</a> + <a href="/docs/rules">How to play</a> </div> </div> <div class="navbar-right"> diff --git a/web/pw-server/src/routes/docs.svelte b/web/pw-server/src/routes/docs.svelte deleted file mode 100644 index c7357c0..0000000 --- a/web/pw-server/src/routes/docs.svelte +++ /dev/null @@ -1,14 +0,0 @@ -<script> - import RulesView from "$lib/components/RulesView.svelte"; -</script> - -<div class="container"> - <RulesView /> -</div> - -<style scoped lang="scss"> - .container { - max-width: 800px; - margin: 0 auto; - } -</style> 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! |