더북(TheBook)

그림 5-6의 시퀀스도에 나온 ~에 걸친 서버와 클라이언트 간 대화를 설명하자면 다음과 같습니다.

1. 서버는 월드(world), 즉 씬의 상태 전체 내용을 이미 알고 있지만, 클라이언트는 이를 전혀 모릅니다. 따라서 서버는 클라이언트에 씬 상태 전체를 전송합니다. 예를 들어 월드에 있는 모든 캐릭터의 위치와 기타 정보를 담은 배열을 전송합니다. 혹은 각 캐릭터의 위치와 정보를 각각 메시지로 만들어 클라이언트에 모두 전송합니다. 이제 서버와 클라이언트는 모두 똑같은 월드 상태를 가집니다.

2. 게임 플레이어가 채팅이나 캐릭터 이동 등 어떤 행동을 취하면 이를 메시지로 만들어 서버로 보냅니다. 그러면 서버는 이를 받아서 자기가 갖고 있는 월드 상태를 변화시키는 데 사용합니다. 몬스터 캐릭터처럼 플레이어 행동이 전혀 없어도 자동으로 움직이는 것들은 클라이언트에서 행동 메시지가 오지 않더라도 변화가 일어날 것입니다.

3. 월드 상태가 변하면 서버는 월드에서 변한 부분만 클라이언트에 보냅니다. 클라이언트는 이 메시지를 받아서 자기가 갖고 있는 월드 데이터에 반영합니다. 이렇게 함으로써 서버와 클라이언트는 항상 같은 월드 상태를 유지합니다.

4. 게임 플레이어가 행동을 취할 때마다 각 행동에 대한 메시지를 만들어 서버에 보내 줍니다.

5. 월드 상태가 변할 때마다 메시지를 만들어 클라이언트에 보내 줍니다.

이렇게 하면 서버의 월드(씬 상태)가 클라이언트와 항상 동일하게 유지됩니다. 다른 말로 서버와 클라이언트의 월드 상태는 동기화됩니다.

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