Files

105 lines
4.8 KiB
Markdown

This is a list of all the commands that are available from the client to the
server along with the expected response.
# Message types
## Client
### Hello
Sent during initiali connection phase.
### Query
Query information from the server about a specific topic
### Command
Request an action to be performed on the server
## Server
### Hello
Responses and further queries during the connection phase. Example is asking
what faction they want to be.
### Update
Response to a query or a command. Examples would be responding to a query of
how much money the player has. A response updating the target positon of a ship
and it's location.
This is also used to provide updates about the game state. There are periodic
updates that define where everything should be. This is the type used there.
### Event
This is an event that the client did not create or ask for. For example, a
battle starting, a building finishing, a planet found.
### Error
A response sent when the requested action can not be completed. This is likely
to be a frequent response to things like not having enough resources.
# Full message definitions
For all communication with the server the player you need the player id
## Hello
For the hello message neither key is optional for connecting. They are both
required. If a new player is created then it does not matter what the faction
key is (as long as it is a valid faction) however when connecting an existing
player the faction key *must* match the key stored on the server or a
connection error will happen.
| Domain | Payload keys | Expected response |
|:-------|:-------------------|:----------------------------------------------------------------------|
| Player | connect: player_id | An update with payload success OR an update with a payload of faction |
| | faction: faction | An update to the player (when creating a player) that has the faction |
| | | |
| | | |
## Queries
For queries the keys just need to exist. There are not any values for the
payload keys. You can also apply as many keys in a single request as you would
like. All parts of the message should be in snake_case. All of the values for
the keys may be whatever you wish, they are discarded by the server though.
| Domain | Payload keys | Expected response |
|:-------|:-------------|--------------------------------------------------------------------|
| Game | time | The current game time. |
| | size | The current size of the game universe. |
| Player | resources | The resources the player has |
| | planets | The planets the player can see (All planets owned, and discovered) |
| | buildings | The buildings the player has |
| | ships | The ships the player has |
| | construction | The builds in progress the player has |
| | | |
| | | |
## Commands
This lists the domain and the payload keys required as well as the expected
value.
| Domain | Payload keys | Expected response |
|:-------|:----------------------------------------------------|:-----------------------------------------------|
| Game | resign | An update with payload success. |
| Player | build: type [tech, building, ship], name: item name | An update with payload success. |
| | move: type [ship], name: item\_id | An update with the new target of the item. |
| | equip: item\_id, target: item\_id | An update with the stats of the targeted item. |
| | | |
| | | |
| | | |
| | | |
| | | |