더북(TheBook)

이렇게 월드의 변화 정보를 서버에서 보내 줍니다. 플레이어 이동과 지형 충돌 판단, 공격과 방어 판정, 능력치에 대한 계산 결과 판정 등 게임 플레이 연산은 모두 서버에서만 합니다. 클라이언트에서는 어떤 판단도 하지 않습니다. 심지어 로컬 플레이어가 채팅 메시지를 입력해도, 그것이 서버로 전송된 후 서버에서 “표시하라.”라는 응답이 오기 전까지는 자기가 말한 것조차 표시되지 않을 것입니다.

global GameC2S
{
  MyPlayer_Move(targetPosition);
}
 
global GameS2C
{
  Character_Appear(ID, type, name, position);
  Character_ShowMove(ID, position);
  Bomb_Explode(ID, position);
  Character_Disappear(ID);
}

Tip

PIDL 파일로 선언한 메시지들로, 자세한 것은 6장 프라우드넷에서 설명하겠습니다.

 

5.2.1절에서 소개한 ‘모든 것을 서버에서 처리하기’보다는 이렇게 ‘서버에 월드 상태를 클라이언트에 동기화하는 방식’이 훨씬 효율적입니다. 그럼에도 여전히 해결해야 할 문제가 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.