218 lines
No EOL
5.1 KiB
Protocol Buffer
218 lines
No EOL
5.1 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
// Rove
|
|
//
|
|
// Rove is an asychronous nomadic game about exploring a planet as part of a
|
|
// loose community
|
|
package roveapi;
|
|
option go_package = "github.com/mdiluz/rove/proto/roveapi";
|
|
|
|
// The Rove server hosts a single game session and world with multiple players
|
|
service Rove {
|
|
// Server status
|
|
// Responds with various details about the current server status
|
|
rpc ServerStatus(ServerStatusRequest) returns (ServerStatusResponse) {}
|
|
|
|
// Register an account
|
|
// Tries to register an account with the given name
|
|
rpc Register(RegisterRequest) returns (RegisterResponse) {}
|
|
|
|
// Send commands to rover
|
|
// Sending commands to this endpoint will queue them to be executed during the
|
|
// following ticks, in the order sent. Commands sent within the same tick will
|
|
// overwrite until the tick has finished and the commands are queued
|
|
rpc Command(CommandRequest) returns (CommandResponse) {}
|
|
|
|
// Get radar information
|
|
// Gets the radar output for the given rover
|
|
rpc Radar(RadarRequest) returns (RadarResponse) {}
|
|
|
|
// Get rover information
|
|
// Gets information for the account's rover
|
|
rpc Status(StatusRequest) returns (StatusResponse) {}
|
|
}
|
|
|
|
//
|
|
// ServerStatus
|
|
//
|
|
|
|
// ServerStatusRequest is an empty placeholder
|
|
message ServerStatusRequest {}
|
|
|
|
// ServerStatusResponse is a response with useful server information
|
|
message ServerStatusResponse {
|
|
// The version of the server in v{major}.{minor}-{delta}-{sha} form
|
|
string version = 1;
|
|
|
|
// Whether the server is ready to accept requests
|
|
bool ready = 2;
|
|
|
|
// The tick rate of the server in minutes (how many minutes per tick)
|
|
int32 tickRate = 3;
|
|
|
|
// The current tick of the server
|
|
int32 currentTick = 4;
|
|
|
|
// The time the next tick will occur
|
|
string next_tick = 5;
|
|
}
|
|
|
|
//
|
|
// Register
|
|
//
|
|
|
|
// RegisterRequest contains data to register an account
|
|
message RegisterRequest {
|
|
// The desired account name
|
|
string name = 1;
|
|
}
|
|
|
|
// Account describes a registered account
|
|
message Account {
|
|
// The account name
|
|
string name = 1;
|
|
|
|
// The account secret value, given when creating the account
|
|
string secret = 2;
|
|
}
|
|
|
|
// RegisterResponse is the response given to registering an account
|
|
message RegisterResponse {
|
|
// The registered account information
|
|
Account account = 1;
|
|
}
|
|
|
|
//
|
|
// Command
|
|
//
|
|
|
|
// CommandType defines the type of a command to give to the rover
|
|
enum CommandType {
|
|
none = 0;
|
|
// Move the rover in a direction, requires bearing
|
|
move = 1;
|
|
// Stashes item at current location in rover inventory
|
|
stash = 2;
|
|
// Repairs the rover using an inventory object
|
|
repair = 3;
|
|
// Waits a tick to add more charge to the rover
|
|
recharge = 4;
|
|
// Broadcasts a message to nearby rovers
|
|
broadcast = 5;
|
|
}
|
|
|
|
// Command is a single command for a rover
|
|
message Command {
|
|
// The command type
|
|
CommandType command = 1;
|
|
|
|
oneof data {
|
|
// A bearing, example: NE
|
|
// Used with MOVE
|
|
string bearing = 2;
|
|
|
|
// A simple message, must be composed of printable ASCII glyphs (32-126)
|
|
// maximum of three characters
|
|
// Used with BROADCAST
|
|
bytes message = 3;
|
|
}
|
|
}
|
|
|
|
// CommandRequest describes a set of commands to be requested for the rover
|
|
message CommandRequest {
|
|
// The account to execute these commands
|
|
Account account = 1;
|
|
|
|
// The set of desired commands
|
|
repeated Command commands = 2;
|
|
}
|
|
|
|
// CommandResponse is an empty placeholder
|
|
message CommandResponse {}
|
|
|
|
//
|
|
// Radar
|
|
//
|
|
|
|
// RadarRequest is the data needed to request the radar for a rover
|
|
message RadarRequest {
|
|
// The account for this request
|
|
Account account = 1;
|
|
}
|
|
|
|
// RadarResponse describes radar information
|
|
message RadarResponse {
|
|
// The range in tiles from the rover of the radar data
|
|
int32 range = 1;
|
|
|
|
// A 1D array representing range*2 + 1 squared set of tiles, origin bottom
|
|
// left and in row->column order
|
|
bytes tiles = 2;
|
|
|
|
// A similar array to the tile array, but containing objects
|
|
bytes objects = 3;
|
|
}
|
|
|
|
//
|
|
// Status
|
|
//
|
|
|
|
// StatusRequest is information needed to request rover status
|
|
message StatusRequest {
|
|
// The account for this request
|
|
Account account = 1;
|
|
}
|
|
|
|
// Log is a single log item
|
|
message Log {
|
|
// The unix timestamp of the log
|
|
string time = 1;
|
|
|
|
// The text of the log
|
|
string text = 2;
|
|
}
|
|
|
|
// Vector describes a point or vector in 2D space
|
|
message Vector {
|
|
int32 x = 1;
|
|
int32 y = 2;
|
|
}
|
|
|
|
// StatusResponse is the response given to a status request
|
|
message StatusResponse {
|
|
// The name of the rover
|
|
string name = 1;
|
|
|
|
// Position of the rover in world coordinates
|
|
Vector position = 2;
|
|
|
|
// The range of this rover's radar and broadcasting
|
|
int32 range = 3;
|
|
|
|
// The items in the rover inventory
|
|
bytes inventory = 4;
|
|
|
|
// The capacity of the inventory
|
|
int32 capacity = 5;
|
|
|
|
// The current health of the rover
|
|
int32 integrity = 6;
|
|
|
|
// The maximum health of the rover
|
|
int32 maximumIntegrity = 7;
|
|
|
|
// The energy stored in the rover
|
|
int32 charge = 8;
|
|
|
|
// The max energy the rover can store
|
|
int32 maximumCharge = 9;
|
|
|
|
// The set of currently incoming commands for this tick
|
|
repeated Command incomingCommands = 10;
|
|
|
|
// The set of currently queued commands
|
|
repeated Command queuedCommands = 11;
|
|
|
|
// The most recent logs
|
|
repeated Log logs = 12;
|
|
} |