171 lines
3.8 KiB
Protocol Buffer
171 lines
3.8 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package proto;
|
|
|
|
option go_package = "a301_game_server/proto/gen/pb";
|
|
|
|
// ─── Authentication ────────────────────────────────────────
|
|
|
|
message LoginRequest {
|
|
string username = 1;
|
|
string password = 2;
|
|
}
|
|
|
|
message LoginResponse {
|
|
bool success = 1;
|
|
string session_token = 2;
|
|
string error_message = 3;
|
|
uint64 player_id = 4;
|
|
}
|
|
|
|
message EnterWorldRequest {
|
|
string session_token = 1;
|
|
}
|
|
|
|
message EnterWorldResponse {
|
|
bool success = 1;
|
|
string error_message = 2;
|
|
EntityState self = 3;
|
|
repeated EntityState nearby_entities = 4;
|
|
uint32 zone_id = 5;
|
|
}
|
|
|
|
// ─── Entity State ──────────────────────────────────────────
|
|
|
|
message Vector3 {
|
|
float x = 1;
|
|
float y = 2;
|
|
float z = 3;
|
|
}
|
|
|
|
message EntityState {
|
|
uint64 entity_id = 1;
|
|
string name = 2;
|
|
Vector3 position = 3;
|
|
float rotation = 4;
|
|
int32 hp = 5;
|
|
int32 max_hp = 6;
|
|
int32 level = 7;
|
|
EntityType entity_type = 8;
|
|
}
|
|
|
|
enum EntityType {
|
|
ENTITY_TYPE_PLAYER = 0;
|
|
ENTITY_TYPE_MOB = 1;
|
|
ENTITY_TYPE_NPC = 2;
|
|
}
|
|
|
|
// ─── Movement ──────────────────────────────────────────────
|
|
|
|
message MoveRequest {
|
|
Vector3 position = 1;
|
|
float rotation = 2;
|
|
Vector3 velocity = 3;
|
|
}
|
|
|
|
message StateUpdate {
|
|
repeated EntityState entities = 1;
|
|
int64 server_tick = 2;
|
|
}
|
|
|
|
message SpawnEntity {
|
|
EntityState entity = 1;
|
|
}
|
|
|
|
message DespawnEntity {
|
|
uint64 entity_id = 1;
|
|
}
|
|
|
|
// ─── System ────────────────────────────────────────────────
|
|
|
|
message Ping {
|
|
int64 client_time = 1;
|
|
}
|
|
|
|
message Pong {
|
|
int64 client_time = 1;
|
|
int64 server_time = 2;
|
|
}
|
|
|
|
// ─── Zone Transfer ─────────────────────────────────────────
|
|
|
|
message ZoneTransferNotify {
|
|
uint32 new_zone_id = 1;
|
|
EntityState self = 2;
|
|
repeated EntityState nearby_entities = 3;
|
|
}
|
|
|
|
// ─── Combat ────────────────────────────────────────────────
|
|
|
|
message UseSkillRequest {
|
|
uint32 skill_id = 1;
|
|
uint64 target_id = 2;
|
|
Vector3 target_pos = 3; // for ground-targeted AoE
|
|
}
|
|
|
|
message UseSkillResponse {
|
|
bool success = 1;
|
|
string error_message = 2;
|
|
}
|
|
|
|
message CombatEvent {
|
|
uint64 caster_id = 1;
|
|
uint64 target_id = 2;
|
|
uint32 skill_id = 3;
|
|
int32 damage = 4;
|
|
int32 heal = 5;
|
|
bool is_critical = 6;
|
|
bool target_died = 7;
|
|
int32 target_hp = 8;
|
|
int32 target_max_hp = 9;
|
|
CombatEventType event_type = 10;
|
|
}
|
|
|
|
enum CombatEventType {
|
|
COMBAT_EVENT_DAMAGE = 0;
|
|
COMBAT_EVENT_HEAL = 1;
|
|
COMBAT_EVENT_BUFF = 2;
|
|
COMBAT_EVENT_DEBUFF = 3;
|
|
COMBAT_EVENT_DEATH = 4;
|
|
COMBAT_EVENT_RESPAWN = 5;
|
|
}
|
|
|
|
message BuffApplied {
|
|
uint64 target_id = 1;
|
|
uint32 buff_id = 2;
|
|
string buff_name = 3;
|
|
float duration = 4;
|
|
bool is_debuff = 5;
|
|
}
|
|
|
|
message BuffRemoved {
|
|
uint64 target_id = 1;
|
|
uint32 buff_id = 2;
|
|
}
|
|
|
|
message RespawnRequest {}
|
|
|
|
message RespawnResponse {
|
|
EntityState self = 1;
|
|
}
|
|
|
|
// ─── Admin / Debug ─────────────────────────────────────────
|
|
|
|
message AOIToggleRequest {
|
|
bool enabled = 1;
|
|
}
|
|
|
|
message AOIToggleResponse {
|
|
bool enabled = 1;
|
|
string message = 2;
|
|
}
|
|
|
|
message ServerMetrics {
|
|
int32 online_players = 1;
|
|
int32 total_entities = 2;
|
|
int64 tick_duration_us = 3;
|
|
bool aoi_enabled = 4;
|
|
}
|
|
|
|
message MetricsRequest {}
|