클라이언트는 인프런 Rookiss 강의를 베이스로 제작되었습니다.

패킷 규칙 C_OOO : 클라이언트 → 서버 로 보내는 패킷 S_OOO : 서버 → 클라이언트 로 보내는 패킷

패킷은 Protobuf 로 제작되며 앞에 4바이트는 패킷의 사이즈, 그 다음 1바이트는 패킷의 아이디가 담기며, 이 후 패킷데이터가 포함됩니다. [ PacketSize ] [ PacketId ] [ PacketData ] 4 bytes 1 bytes

클라이언트에서 서버로 보내는 경우 사이즈 정보 4bytes 에서 데이터가 리틀 엔디안 으로 전송합니다. [ 7 ] [ 0 ] [ 0 ] [ 0 ] <- 사이즈가 7 인 경우 예시

서버에서 클라이언트로 보내는 경우 사이즈 정보 4bytes 에서 데이터를 빅 엔디안 으로 가정하고 파싱합니다. [ 0 ] [ 0 ] [ 0 ] [ 7 ] <- 사이즈가 7 인 경우 예시

Packet 상세 내용

Town Packet


<aside> <img src="/icons/document_brown.svg" alt="/icons/document_brown.svg" width="40px" /> Packet [ Id : 0 ]

message C_Enter{
  string nickname = 1;
  int32 class = 2;
}

응답 정보 나에게 : [ Id : 1 ] S_Enter

모두에게 : [ Id : 2 ] S_Spawn

</aside>

<aside> <img src="/icons/document_brown.svg" alt="/icons/document_brown.svg" width="40px" /> Packet [ Id : 1 ]

message S_Enter {
  PlayerInfo player = 1;
}

* PlayerInfo

</aside>

<aside> <img src="/icons/document_brown.svg" alt="/icons/document_brown.svg" width="40px" /> Packet [ Id : 2 ]

message S_Spawn {
  repeated PlayerInfo players = 1;
}

* PlayerInfo

</aside>

<aside> <img src="/icons/document_brown.svg" alt="/icons/document_brown.svg" width="40px" /> Packet [ Id : 5 ]

message S_Despawn {
  repeated int32 playerIds = 1;
}

</aside>

<aside> <img src="/icons/document_brown.svg" alt="/icons/document_brown.svg" width="40px" /> Packet [ Id : 6 ]

message C_Move {
  TransformInfo transform = 1;
}

* TransformInfo

응답 정보

모두에게 : [ Id : 7 ] S_Move

</aside>

<aside> <img src="/icons/document_brown.svg" alt="/icons/document_brown.svg" width="40px" /> Packet [ Id : 7 ]

message S_Move {
  int32 playerId = 1;
  TransformInfo transform = 2;
}

* TransformInfo

</aside>

<aside> <img src="/icons/document_brown.svg" alt="/icons/document_brown.svg" width="40px" /> Packet [ Id : 8 ]

message C_Animation {
  int32 animCode = 1;
}

응답 정보

모두에게 : [ Id : 9 ] S_Animation

</aside>

<aside> <img src="/icons/document_brown.svg" alt="/icons/document_brown.svg" width="40px" /> Packet [ Id : 9 ]

message S_Animation {
  int32 playerId = 1;
  int32 animCode = 2;
}

</aside>

<aside> <img src="/icons/document_brown.svg" alt="/icons/document_brown.svg" width="40px" /> Packet [ Id : 12 ]

message C_Chat{
  int32 playerId = 1;
  string senderName = 2;
  string chatMsg = 3;
}

응답 정보

모두에게 : [ Id : 13 ] S_Chat

</aside>

<aside> <img src="/icons/document_brown.svg" alt="/icons/document_brown.svg" width="40px" /> Packet [ Id : 13 ]

message S_Chat{
  int32 playerId = 1;
  string chatMsg = 2;

</aside>

Battle Packet