Files
a301_game_server/proto/messages.proto
2026-02-26 17:52:48 +09:00

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 {}