[Project_] R - 로그인, 캐릭터 생성에 대한 고민
패킷에 기반하여 구현해본 결과
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을 사용하게 되는데 문제가 되는 부분이 있는가에 대해 고민하게 되었다.
문제점으로 나올 수 있는 것은
● 동시성 문제가 가장 크게 다가올 듯 하다. 현재 구현하는 프로젝트는 온라인 서버 기반의 게임이기 때문에
여러 클라이언트가 동시에 캐릭터 생성, 로그인 시도를 했을 때 문제가 생길 수 있을 거 같다
아직 발생한 문제는 아니지만
● 발생하지 않은 문제로 벌써부터 고려를 하고 구현을 미루는 것은 문제가 될 수 있기 때문에
일단은 구현한대로 사용하다가 문제가 발생했을 때 어떤 문제가 어떻게 발생했는지 차차 해결하는 것이
좋을 듯 하다.