Files
caliverse_server/Protocol/proto/Define_Common.proto
2025-11-28 16:54:56 +09:00

716 lines
18 KiB
Protocol Buffer

syntax = "proto3";
import "google/protobuf/timestamp.proto";
option java_multiple_files = true;
option java_package = "com.caliverse.admin.domain.RabbitMq.message";
//=============================================================================================
// 공통 정의 코드를 작성 한다.
//
// 공통적 성격의 정의 타입들을 작성 한다. (예: 계정, 유저, 위치, 비게임적인 정보 등등)
// - kangms
// enum 타입 관련 이슈 !!!
// enum 타입간 내부 정의명이 동일할 경우 Compile 에러가 발생 한다. !!!
// message 로 정의하여 도메인을 줄 경우 Complie 은 되나 생성된 코드에
// xxxxx.Types.xxxx 인위적인 추가 도메인이 생겨 코드 가독성을 저해 시킨다.
// 그래서 차악으로 Prefix 로 동일한 enum 명을 추가 했다.
//=============================================================================================
// 모듈 종류
enum ModuleId
{
ModuleId_None = 0;
ModuleId_DynamoDbConnector = 1;
ModuleId_MongoDbConnector = 2;
ModuleId_RedisConnector = 3;
ModuleId_RedisWithLuaScriptExecutor = 4;
ModuleId_RabbitMqConnector = 5;
ModuleId_S3Connector = 6;
ModuleId_ProudNetListener = 7;
}
// bool enum
enum BoolType
{
BoolType_None = 0;
BoolType_True = 1;
BoolType_False = 2;
}
// 계정 종류
enum AccountType
{
AccountType_None = 0;
AccountType_Google = 1;
AccountType_Apple = 2;
}
// 서비스의 종류
enum ServiceCategory
{
ServiceCategory_None = 0;
ServiceCategory_Caliverse = 1;
}
// 서비스 버전 타입
enum ServiceType
{
ServiceType_None = 0;
ServiceType_Dev = 1;
ServiceType_Qa = 2;
ServiceType_Stage = 3;
ServiceType_Live = 4;
}
// 서버 URL 타입
enum ServerUrlType
{
ServerUrlType_None = 0;
ServerUrlType_BillingApiServerUrl = 1; // 결제 Api 서버 URL
ServerUrlType_ChatAiApiServerUrl = 2; // Chat Ai Api 서버 URL
ServerUrlType_MyhomeEditGuideUrl = 3; // MyHome Api 서버 URL (언어별)
ServerUrlType_WebLinkUrlSeasonPass = 4; // WebLink Api 서버 URL (언어별)
ServerUrlType_CaliumConverterWebGuide = 5; // 칼리움 컨버터 Api 서버 URL (언어별)
ServerUrlType_S3ResourceImageUrl = 6; // 이미지 리소스 URL
ServerUrlType_RentalGuideURL = 7; // 렌탈 가이드 URL (언어별)
ServerUrlType_LandAuctionWebGuide = 8; // 랜드 경매 가이드 페이지 URL (언어별)
ServerUrlType_LandManageGuideURL = 9; // 랜드 관리 가이드 페이지 URL (언어별)
ServerUrlType_Calium_Exchange_Web1 = 10; // 칼리움 교환소 웹 페이지 링크 (교환소 UI 중앙 상단) (언어별)
ServerUrlType_Calium_Exchange_Web2 = 11; // 칼리움 교환소 웹 페이지 링크 (교환소 UI 우측 하단) (언어별)
ServerUrlType_WebLinkURLCurrency = 12; // 재화 구매 버튼 웹페이지 링크 주소 (언어별)
ServerUrlType_WebLinkURLSeasonPass1 = 13; // 시즌패스 1 웹페이지 링크 주소 (언어별)
ServerUrlType_WebLinkURLSeasonPass2 = 14; // 시즌패스 2 웹페이지 링크 주소 (언어별)
ServerUrlType_WebLinkURLSeasonPass3 = 15; // 시즌패스 3 웹페이지 링크 주소 (언어별)
ServerUrlType_WebLinkURLSeasonPass4 = 16; // 시즌패스 4 웹페이지 링크 주소 (언어별)
ServerUrlType_WebLinkURLSeasonPass5 = 17; // 시즌패스 5 웹페이지 링크 주소 (언어별)
ServerUrlType_WebLinkURLSeasonPass6 = 18; // 시즌패스 6 웹페이지 링크 주소 (언어별)
ServerUrlType_WebLinkURLSeasonPass7 = 19; // 시즌패스 7 웹페이지 링크 주소 (언어별)
}
// 언어별 서버 URL
message ServerUrlWithLanguage
{
LanguageType langType = 1;
string targetUrl = 2;
}
// 서버 URL
message ServerUrl
{
ServerUrlType serverUrlType = 1; // 접속할 URL의 서버 URL 타입
repeated ServerUrlWithLanguage serverUrlWithLanguages = 2; // 언어별 서버 URL 목록
}
// 서버 종류
enum ServerType
{
ServerType_None = 0;
ServerType_Login = 1;
ServerType_Channel = 2;
ServerType_Indun = 3;
ServerType_Chat = 4;
ServerType_GmTool = 5;
ServerType_Auth = 6;
ServerType_Manager = 7;
ServerType_UgqApi = 8;
ServerType_UgqAdmin = 9;
ServerType_UgqIngame = 10;
ServerType_BrokerApi = 11;
ServerType_Match = 12;
}
// 오토 스케일링 서버 종류
enum AutoScaleServerType
{
AutoScaleServerType_None = 0;
AutoScaleServerType_Login = 1;
AutoScaleServerType_Game = 2;
AutoScaleServerType_Indun = 3;
AutoScaleServerType_Chat = 4;
}
// 게임 서버 종류
enum GameServerType
{
GameServerType_None = 0;
GameServerType_Channel = 1;
GameServerType_Indun = 2;
}
// 디바이스 종류
enum DeviceType
{
DeviceType_None = 0;
// Desktop : IBM PC compatible
DeviceType_WindowsPC = 1;
// Mobile : Apple
DeviceType_IPhone = 5;
DeviceType_Mac = 6;
// Mobile : Samsung
DeviceType_Galaxy = 11;
// VR : Oculus
DeviceType_Oculus = 15;
}
// Os 종류
enum OsType
{
OsType_None = 0;
OsType_MsWindows = 1;
OsType_Android = 2;
OsType_Ios = 3;
}
// 플랫폼 종류
enum PlatformType
{
PlatformType_None = 0;
PlatformType_WindowsPc = 1;
PlatformType_Google = 2;
PlatformType_Facebook = 3;
PlatformType_Apple = 4;
}
// Account 생성 종류
enum AccountCreationType
{
AccountCreationType_None = 0;
AccountCreationType_Normal = 1;
AccountCreationType_Test = 2;
AccountCreationType_Bot = 3;
}
// 컨텐츠 종류
enum ContentsType
{
ContentsType_None = 0;
ContentsType_MyHome = 1;
ContentsType_DressRoom = 2;
ContentsType_Concert = 3;
ContentsType_Movie = 4;
ContentsType_Instance = 5; // 기본 인스턴스, 특별한 로직이 없는 경우
ContentsType_Meeting = 6;
ContentsType_BeaconCreateRoom = 7;
ContentsType_BeaconEditRoom = 8;
ContentsType_BeaconDraftRoom = 9;
ContentsType_EditRoom = 10;
ContentsType_BeaconCustomizeRoom = 11;
ContentsType_BattleRoom = 12;
ContentsType_ArcadeRunning = 13;
ContentsType_GameRoom = 14;
}
// 캐릭터 종족 종류
enum CharRace
{
CharRace_None = 0;
CharRace_Latino = 1;
CharRace_Caucasian = 2;
CharRace_African = 3;
CharRace_Northeastasian = 4;
CharRace_Southasian = 5;
CharRace_Pacificislander = 6;
}
// 계정 관리 레벨 종류
enum AuthAdminLevelType
{
AuthAdminLevelType_None = 0;
AuthAdminLevelType_GmNormal = 1;
AuthAdminLevelType_GmSuper = 2;
AuthAdminLevelType_Developer = 3;
}
// 세계 표준 ISO 639-1 코드 기준 - kangms
enum LanguageType
{
LanguageType_None = 0;
LanguageType_ko = 1; // 한국어(기본값)
LanguageType_en = 2; // 영어
//LanguageType_th = 3; // 태국
LanguageType_ja = 4; // 일본어
//LanguageType_zh = 5; // 중국어
//LanguageType_fr = 6; // 프랑스어
//LanguageType_de = 7; // 독일어
//LanguageType_es = 8; // 스페인어
//LanguageType_ru = 9; // 러시아어
//LanguageType_ar = 10; // 아랍어
}
// 상품 종류
enum ProductType
{
ProductType_None = 0;
ProductType_Currency = 1; // 재화
ProductType_Item = 2; // 아이템
}
// 로그인 방식의 종류
enum LoginMethodType
{
LoginMethodType_None = 0;
LoginMethodType_ClientStandalone = 1; // 클라이언트 단독 로그인
LoginMethodType_SsoAccountAuthWithLauncher = 2; // 통합계정인증과 함께 런처 로그인
}
// 로그인 실패 의미의 종류
enum LoginFailureReasonType
{
LoginFailureReasonType_None = 0;
LoginFailureReasonType_ProcessingException = 1; // 처리중에 예외가 발생 했습니다.
LoginFailureReasonType_AuthenticationFailed = 2; // 인증 실패 입니다.
LoginFailureReasonType_UserValidCheckFailed = 3; // 유저 신뢰성 체크 실패 입니다.
}
// 로그아웃의 의미
enum LogoutReasonType
{
LogoutReasonType_None = 0;
LogoutReasonType_ExitToService = 1; // 서비스 종료
LogoutReasonType_EnterToGame = 2; // 게임 서버 입장을 위해
LogoutReasonType_GoToGame = 3; // 게임 서버로 이동 하기 위해
LogoutReasonType_DuplicatedLogin = 4;
}
// 계정 제재 종류
enum AccountSactionType
{
AccountSactionType_None = 0;
AccountSactionType_BadBhavior = 1; // 비매너 행위
AccountSactionType_InvapproprivateName = 2; // 불건전 이름 사용
AccountSactionType_CashTransaction = 3; // 캐시 트랜잭션
AccountSactionType_GameInterference = 4; // 게임 진행 방해
AccountSactionType_ServiceInterference = 5; // 운영서비스 방해
AccountSactionType_AccountImpersonation = 6; // 계정 도용
AccountSactionType_BugAbuse = 7; // 버그/어뷰징
AccountSactionType_IllegalProgram = 8; // 프로그램 불법사용
AccountSactionType_PersonalInfo_Leak = 9; // 개인정보 유출
AccountSactionType_AdminImpersonation = 10; // 운영자 사칭
}
// 채널 서버 예약 종류
enum ServerMoveType
{
ServerMoveType_None = 0;
ServerMoveType_Force = 1;
ServerMoveType_Auto = 2;
ServerMoveType_Return = 3;
}
message ChannelInfo
{
int32 channel = 1;
int32 trafficlevel = 2;
}
message ServerConnectInfo
{
string serverAddr = 1;
int32 serverPort = 2;
string otp = 3;
string roomId = 4;
Pos pos = 5;
oneof instanceType
{
int32 instanceId = 6;
MyHomeInfo myhomeInfo = 7;
}
}
message MyHomeInfo
{
string myhomeGuid = 1;
string myhomeName = 2;
MyhomeUgcInfo myhomeUgcInfo = 3;
}
message MyhomeUgcInfo
{
int32 roomType = 1;
int32 version = 2;
repeated UgcFrameworkInfo frameworkInfos = 3;
repeated UgcAnchorInfo anchorInfos = 4;
repeated CrafterBeaconPos crafterBeaconPos = 5;
}
message UgcFrameworkInfo
{
int32 interiorItemId = 1;
int32 floor = 2;
Coordinate coordinate = 3;
Rotation rotation = 4;
int32 materialId = 5;
repeated UgcFrameworkMaterialInfo UgcFrameworkMaterialInfos = 6;
}
message UgcFrameworkMaterialInfo
{
string type = 1;
int32 materialId = 2;
Color color_mask_r = 3;
Color color_mask_g = 4;
Color color_mask_b = 5;
}
message Color
{
float r = 1;
float g = 2;
float b = 3;
float a = 4;
}
message UgcAnchorInfo
{
string anchorGuid = 1;
string anchorType = 2;
int32 tableId = 3;
string entityGuid = 4;
Coordinate coordinate = 5;
Rotation rotation = 6;
}
message CrafterBeaconPos
{
string anchorGuid = 1;
Pos crafterBeaconPos = 2;
}
message Coordinate
{
float x = 1;
float y = 2;
float z = 3;
}
message Rotation
{
float Pitch = 1;
float Yaw = 2;
float Roll = 3;
}
// 문자열 기반의 프로필 목록
message StringProfile
{
map<string, string> stringProfile = 1;
}
// 유저의 접속 및 위치
message UserLocationInfo
{
int32 isChannel = 1; // 1:채널서버, 0:인스턴스 서버
int32 id = 2;
int32 channelNumber = 3;
}
// 플레이어 상태 종류
enum PlayerStateType
{
PlayerStateType_None = 0;
PlayerStateType_Online = 1; // 온라인
PlayerStateType_Sleep = 2; // 자리비움
PlayerStateType_DontDistrub = 3; // 방해금지
PlayerStateType_Offline = 4; // 오프라인
PlayerStateType_Dormant = 5; // 휴면 계정
PlayerStateType_LeaveMember = 6; // 회원 탈퇴
}
// 엔티티의 위치 정보
message Pos
{
float x = 1;
float y = 2;
float z = 3;
int32 angle = 4;
}
// 양의 변화 정보 : 재화의 변화
enum AmountDeltaType
{
AmountDeltaType_None = 0;
AmountDeltaType_Acquire = 1; // 획득 (양의 정수)
AmountDeltaType_Consume = 2; // 소모 (양의 정수)
AmountDeltaType_Merge = 3; // 병합 (양의 정수:획득, 음의 정수:소모)
}
// 개수의 변화 정보 : 아이템의 변화
enum CountDeltaType
{
CountDeltaType_None = 0;
CountDeltaType_New = 1; // 신규
CountDeltaType_Update = 2; // 수정
CountDeltaType_Acquire = 3; // 증가
CountDeltaType_Consume = 4; // 감소
CountDeltaType_Delete = 5; // 삭제
}
// 재화 종류
enum CurrencyType
{
CurrencyType_None = 0;
CurrencyType_Gold = 1; // 인게임 전용 기본 재화
CurrencyType_Sapphire = 2; // 인게임 전용 상위 재화 (구) BlueCali )
CurrencyType_Calium = 3; // 랜드 업그레이드 보상, 오프/메타버스 방문 및 결재 (구) RedCali )
CurrencyType_Beam = 4; // 랜드 업그레이드 희귀 보상, 콘텐츠 랭킹 보상 (구) BlackCali )
CurrencyType_Ruby = 5; // 신규 추가 재화
}
// 금전량
message Money
{
double amount = 1;
}
// 금전의 변화량
message MoneyDeltaAmount
{
AmountDeltaType deltaType = 1;
double amount = 2;
}
// 프로그램 버전 종류
enum ProgramVersionType
{
ProgramVersionType_None = 0;
ProgramVersionType_MetaSchemaVersion = 1;
ProgramVersionType_MetaDataVersion = 2;
ProgramVersionType_DbSchemaVersion = 3;
ProgramVersionType_PacketVersion = 4;
ProgramVersionType_ResourceVersion = 5;
ProgramVersionType_ConfigVersion = 6;
ProgramVersionType_LogicVersion = 7;
}
// 파티 멤버 액션 타입
enum PartyMemberActionType
{
PartyMemberActionType_None = 0;
PartyMemberActionType_Invite = 1; // 초대
PartyMemberActionType_InviteAccept = 2; // 초대 수락
PartyMemberActionType_InviteReject = 3; // 초대 거절
PartyMemberActionType_Summon = 4; // 소환
PartyMemberActionType_SummonAccept = 5; // 소환 수락
PartyMemberActionType_SummonReject = 6; // 소환 거절
PartyMemberActionType_PartyInstance_Join = 7; // 파티 인스턴스 입장
PartyMemberActionType_PartyInstance_Leave = 8; // 파티 인스턴스 퇴장
PartyMemberActionType_PartyLeader = 9; // 파티 리더 임명
PartyMemberActionType_JoinParty = 10; // 파티 가입
PartyMemberActionType_LeaveParty = 11; // 파티 탈퇴
PartyMemberActionType_BanParty = 12; // 파티 추방
}
enum UserBlockPolicyType
{
UserBlockPolicyType_None = 0;
UserBlockPolicyType_Access_Restrictions = 1; //접근 제한
UserBlockPolicyType_Chatting_Restrictions = 2; //채팅 제한
}
enum UserBlockReasonType
{
UserBlockReasonType_None = 0;
UserBlockReasonType_Bad_Behavior = 1; //비매너 행위
UserBlockReasonType_Inappropriate_Name = 2; //불건전 이름 사용
UserBlockReasonType_Cash_Transaction = 3; //현금거래 행위
UserBlockReasonType_Game_Interference = 4; //게임 진행 방해
UserBlockReasonType_Service_Interference = 5; //운영서비스 방해
UserBlockReasonType_Account_Impersonation = 6; //계정도용
UserBlockReasonType_Bug_Abuse = 7; //버그/어뷰징
UserBlockReasonType_Illegal_Program = 8; //불법프로그램 사용
UserBlockReasonType_Personal_Info_Leak = 9; //개인정보 유출
UserBlockReasonType_Asmin_Impersonation = 10; //운영자 사칭
}
// 엔티티 알림 트리거 종류
enum EntityAlertTriggerType
{
EntityAlertTriggerType_None = 0;
EntityAlertTriggerType_ItemExpireWarningBefore = 1; //아이템 기간만료 삭제전 경고 알림
EntityAlertTriggerType_ItemExpire = 2; //아이템 기간만료 삭제 알림
}
// 엔티티 알림 방법 종류
enum EntityAlertMethodType
{
EntityAlertMethodType_None = 0;
EntityAlertMethodType_Mail = 1; //우편으로 알림
}
// 매칭 상태
enum MatchStatusType {
MatchStatusType_NONE = 0;
MatchStatusType_RESERVED = 1; // 매칭 예약 상태
MatchStatusType_PROGRESS = 2; // 매칭 진행 중
MatchStatusType_SUCCESS = 3; // 매칭 성공
MatchStatusType_CANCEL = 4; // 매칭 취소
MatchStatusType_TIMEOUT = 5; // 매칭 실패 - 대기시간 초과
MatchStatusType_FAIL = 6; // 매칭 실패 - 이유 미정
MatchStatusType_RESERVE_FAILED = 7; // 매칭 예약 실패
MatchStatusType_CANCEL_FAILED = 8; // 매칭 취소 실패
MatchStatusType_JOIN_ROOM_CHECKED = 9; // 매칭 룸 입장 확인 - 실제로 게임 룸에 입장한 이벤트를 받은 상태
MatchStatusType_QUIT_ROOM = 10; // 매칭 룸 퇴장
MatchStatusType_CANCEL_BY_DISCONNECT = 11; // 매칭 취소 (접종)
MatchStatusType_JOIN_ROOM_INVALID = 12; // 룸에 입장 하지 않음
}
// 매칭 취소 타입
enum MatchCancelType {
MatchCancelType_NONE = 0;
MatchCancelType_NORMAL = 1;
MatchCancelType_DISCONNECTED = 2;
}
// 게임 매치 유저 정보
message MatchUserInfo {
string userGuid = 1;
string serverName = 2;
string matchGroupId = 3;
int32 instanceId = 4;
string nickname = 5;
MatchStatusType status = 6;
google.protobuf.Timestamp startTime = 7;
// TODO: Need PartyInfo, MMR
}
// 게엄 매칭 상태 정보
message MatchStatusInfo {
MatchStatusType status = 1; //
int32 matchStep = 2; // 매칭 단계
int32 waitTimeSec = 3; // 예상 대기시간
int32 waitTimeMaxSec = 4; // 최대 대기시간
}
// 리전 핑 체크를 정보
message MatchRegionInfo {
string Name = 1;
string TextStringMetaId = 2;
string PingUrl = 3;
}
message MatchGameInfo {
int32 gameModeId = 1;
int32 eventId = 2;
int32 region =3;
}
enum BannerType
{
BannerType_None = 0;
BannerType_MainMenu = 1;
}
enum SortType
{
SortType_None = 0;
SortType_Ascending = 1;
SortType_Descending = 2;
}
enum SortColumnType
{
SortColumnType_None = 0;
SortColumnType_Price = 1;
SortColumnType_ItemId = 2;
}
enum ScoreType
{
ScoreType_None = 0;
ScoreType_Score = 1;
ScoreType_Time = 2;
}
enum ScoreModifyType
{
ScoreModifyType_None = 0;
ScoreModifyType_Overwrite = 1;
ScoreModifyType_Increase = 2;
}
enum RankingType
{
RankingType_None = 0;
RankingType_Pioneer = 1;
RankingType_GameMode = 2;
RankingType_WorldEvent = 3;
}
enum EventType
{
EventType_None = 0;
EventType_Contribution = 1;
EventType_PersonalCrafting = 2;
}
enum RankingScheduleStateType
{
RankingScheduleStateType_None = 0;
RankingScheduleStateType_Waiting = 1;
RankingScheduleStateType_Started = 2;
RankingScheduleStateType_Ended = 3;
}
enum IntervalType
{
IntervalType_None = 0;
IntervalType_Refresh = 1;
IntervalType_Snapshot = 2;
IntervalType_Initialization = 3;
}