TIL

자원 전쟁 프로젝트 ProtoBuf 구분 기준

추운날_너를_기다리며 2024. 11. 15. 21:28
우리가 서버에서 사용할 message를 모아둔 .proto 메시지를 SessionServer, GameServer, 그리고 공용으로 나누기 위해서는 각 서버의 역할과 메시지의 사용 목적에 따라 구분해야 합니다. 아래는 메시지를 나누는 기준과 구체적인 분류입니다.

구분 기준

  1. SessionServer:
    • 사용자 인증, 토큰 관리, 대기실 매칭 등 사용자 관리와 세션 관련 로직을 처리.
    • 로그인, 회원가입, 토큰 갱신 등의 메시지가 여기에 해당.
  2. GameServer:
    • 게임 플레이와 관련된 실시간 데이터 동기화와 게임 상태 관리를 처리.
    • 플레이어 동기화, 게임 상태, 유닛 상태, 액션 관련 메시지가 여기에 해당.
    • 대기실에 관한것 부터 이제 GameServer에 해당.
  3. 공용:
    • SessionServerGameServer 모두에서 사용되거나 공통적으로 활용 가능한 메시지.
    • 우리는 모두 사용되는게 없음.
    • 왜냐하면 SessionServer에는 우리는 User데이터에 대한 정보로 로그인, 회원가입, 토큰 정도만 담고 대기실을 만듬.

분류 결과

SessionServer

  • 사용자 인증 관련: account.proto
    • C2SRefreshTokenReq, S2CRefreshTokenRes
    • C2SSignUpReq, S2CSignUpRes
    • C2SSignInReq, S2CSignInRes
  • 대기실 매칭 관련: lobby.proto
    • C2SCreateRoomReq, S2CCreateRoomRes
    • C2SMatchCancelReq, S2CMatchCancelRes
    • C2SMatchReq, S2CMatchProgressNoti
    • C2SJoinRoomReq, S2CJoinRoomRes
    • C2SQuitRoomReq, S2CQuitRoomNoti
    • C2STeamChangeReq, S2CTeamChangeRes
    • S2CSyncRoomNoti
    • C2SGameStartReq, S2CGameStartRes
    • C2SLoadProgressNoti, S2CSyncLoadNoti

GameServer

  • 게임 상태 관련: inGame.proto
    • GameState
    • S2CInitialNoti, S2CSyncPlayersNoti
    • S2CSyncFurnaceStateNoti, S2CSawmillStatusNoti, S2CWorkbenchStatusNoti
    • S2CGameOverNoti
    • Position
    • ItemData
    • PlayerRoomInfo, PlayerInitialData
    • PlayerState, FieldUnit
  • 플레이어 액션 관련: inGame.proto
    • C2SPlayerActionReq, S2CPlayerActionRes
    • C2SSurrenderReq, S2CSurrenderRes, S2CSurrenderNoti
  • 객체 관련: inGame.proto
    • S2CSpawnObjectNoti, C2SDestoryObjectReq, S2CDestoryObjectNoti
    • S2CSyncFieldUnitNoti
  • 맵 이동: inGame.proto
    • C2SMoveToAreaMapReq, S2CMoveToAreaMap
  • 건물 요청 및 응답: inGame.proto
    • C2SWorkbenchReq, S2CWorkbenchRes
    • C2SFurnaceReq, S2CFurnaceRes
    • C2SSawmillReq, S2CSawmillRes
  • Ping/Pong: healthCheck.proto
    • S2CPingReq, C2SPongRes

공용

  • 데이터 구조
    • 우리는 공용데이터가 없다.