[Project_] R - 로그인, 캐릭터 생성에 대한 고민

2025. 2. 14. 21:37·Project_xxx

패킷에 기반하여 구현해본 결과

message C_Register {
  string email = 1;
  string pw = 2;
  string pwCheck = 3;
}

message S_Register {
  bool isSuccess = 1;
  string msg = 2;
}

message C_Login {
  string email = 1;
  string pw = 2;
}

message S_Login {
  bool isSuccess = 1;
  string msg = 2;
  repeated OwnedCharacters ownedCharacters = 3;
}

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

message S_CreateCharacter {
  bool isSuccess = 1;
  string msg = 2;
}

● 클라이언트에서 email, pw, pwCheck을 입력해서 데이터를 보내주면 서버에서 비밀번호, 비밀번호 재확인을
    서버에서 검증하여 회원가입을 진행

 

● 클라이언트에서 받은 데이터로 서버에서 DB에 저장하고 클라이언트에 성공 메시지를 전송

 

● DB에 User의 데이터가 저장되어 있기 때문에 로그인이 가능하다.

 

OwnedCharacters: (nickname_string, class_int) => {
    return { nickname: nickname_string, class: class_int };
  },

- payloadData에 OwnedCharacters를 정의하여 여기서는 DB에서 사용자가 캐릭터를 생성했는지를
  nickname, class_code를 가져와서 있다면 바로 Town으로 접속하고, 없다면 캐릭터 생성 창으로 이동한다.

 

 

고민했던 부분

● 회원가입을 진행할 때, Users 데이터를 저장함과 동시에 Players 테이블에 player_id와 user_id를 저장하고

nickname, class_code를 nullable 상태로 둔 데이터를 미리 생성한다.

 

● OwnedCharacters에 nickname, class_code가 null 값으로 받기 때문에 비어있는 판정을 받으므로
   캐릭터 선택창으로 넘어간다.

 

● 클라이언트에서 nickname을 입력하고 class_code 데이터를 서버에 전해주면 서버는 DB에 해당 데이터를
   UPDATE 문을 사용해서 데이터를 최신화한다.

 

→ 이렇게 구현했을 때 nullable을 사용하게 되는데 문제가 되는 부분이 있는가에 대해 고민하게 되었다.

 

 

문제점으로 나올 수 있는 것은

● 동시성 문제가 가장 크게 다가올 듯 하다. 현재 구현하는 프로젝트는 온라인 서버 기반의 게임이기 때문에
   여러 클라이언트가 동시에 캐릭터 생성, 로그인 시도를 했을 때 문제가 생길 수 있을 거 같다

 

아직 발생한 문제는 아니지만

● 발생하지 않은 문제로 벌써부터 고려를 하고 구현을 미루는 것은 문제가 될 수 있기 때문에
   일단은 구현한대로 사용하다가 문제가 발생했을 때 어떤 문제가 어떻게 발생했는지 차차 해결하는 것이
   좋을 듯 하다.

 

 

 

 

'Project_xxx' 카테고리의 다른 글

[Project_] R - DB 사용 방식과 Redis 사용 방향  (0) 2025.02.21
[Project_] R - 서버 설계 (Session)  (0) 2025.02.11
[Projcet_] TDO - Trouble Shooting  (0) 2025.01.31
[Project_] MG - Trouble Shooting  (0) 2025.01.16
[Project_] TD - Final  (0) 2025.01.02
'Project_xxx' 카테고리의 다른 글
  • [Project_] R - DB 사용 방식과 Redis 사용 방향
  • [Project_] R - 서버 설계 (Session)
  • [Projcet_] TDO - Trouble Shooting
  • [Project_] MG - Trouble Shooting
wakelight23
wakelight23
했던 공부를 기록하는 곳
  • wakelight23
    wakelight23 공부기록
    wakelight23
  • 전체
    오늘
    어제
    • 분류 전체보기 (110)
      • Programming Language (26)
        • Error Note (1)
        • HTML, CSS (3)
        • Javascript 공부기록 (5)
        • SQL 문제풀이 (4)
      • Develop Diary (34)
        • Interview (20)
        • TheFourFs (13)
      • Project_xxx (18)
      • IT (32)
        • DB (0)
        • Hardware (3)
        • Network (10)
        • Server (11)
        • OS (4)
        • 게임수학 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    KPT회고
    Til
    Today I learned
    weekly i learned
    today i learnd
    today i leraned
    today i lerned
    Wil
  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
wakelight23
[Project_] R - 로그인, 캐릭터 생성에 대한 고민
상단으로

티스토리툴바