더북(TheBook)

지금까지 설명한 방식이 원활하게 작동하려면 다음과 같이 해야 합니다.

1. 서버에서는 1/60초마다 월드 상태를 업데이트합니다.

2. 서버는 1/60초마다 월드 상태의 변화를 클라이언트에 보냅니다.

3. 클라이언트는 이를 지체 없이 받습니다.

4. 클라이언트는 받은 것을 자기의 월드 상태에 반영합니다. 그리고 다음 렌더링 프레임에서 이를 그립니다.

 

이것이 원활하게 작동하려면 서버와 클라이언트 사이에 레이턴시가 1/60초보다 훨씬 낮아야 합니다. 게다가 레이턴시가 항상 균일해야 합니다. 그러나 현실적으로 이러한 네트워크 환경을 갖추려면 로컬 네트워크(LAN)가 아닌 이상 쉽지 않습니다.

서버에 접속해 있는 클라이언트 개수가 많아질수록 서버에서 해야 되는 일도 빠른 속도로 늘어납니다. 월드에 캐릭터가 매우 많으면 클라이언트에서 수신하는 데이터의 양도 부담이 될 수 있습니다. 따라서 1/60초마다 보내는 것이 가능한 경우는 그다지 많지 않습니다.

이 문제를 해결하려면 어떻게 해야 할까요? 1/60초 대신 1/30초나 1/10초 단위로 월드 변화를 클라이언트에 알리면 될 것 같습니다. 그러나 이렇게 하면 월드 상태가 1/10초마다 변하면서 캐릭터 움직임이 딱딱해지는 문제가 생깁니다.

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