4.4 압축
이제 모든 종류의 데이터를 직렬화할 수 있는 도구를 갖추었으므로, 게임 객체를 네트워크로 전송하고 복원할 수 있게 되었다. 하지만 네트워크에 부여된 대역폭 내에서 동작할 만큼 효율적인 코드인지는 미지수이다. 멀티플레이어 게임 초창기엔 게임에 허용되는 대역폭이 초당 고작 2,400바이트 또는 그 이하에 불과했다. 오늘날 게임 엔지니어는 그보다 몇천 배나 빠른 고속 연결을 활용할 수 있으니 운이 좋은 편이긴 하지만 여전히 대역폭을 최대한 절약할 방법을 강구해야 한다.
게임 월드가 대형화되어 수백 개의 객체가 움직이는데, 이들 객체의 움직임을 낱낱이 데이터로 바꿔 수백 명의 플레이어에게 실시간으로 보내려면 현존 최고 품질의 연결망에서도 대역폭이 모자랄 지경이다. 따라서 이 책에서는 가용 대역폭을 최대한 활용할 수 있게 다양한 방법을 제시하고자 한다. 9장 규모 확장에 대응하기에선 누가 이 데이터를 보아야 하는지, 어떤 클라이언트에 어떤 객체 속성을 업데이트할지 판단하는 고급 알고리즘을 알아볼 것이다. 하지만 이 절에서는 우선 가장 저수준의, 즉 비트와 바이트 수준에서 데이터를 압축하는 기술에 대해 알아보자. 다시 말해 보낼 데이터 조각을 확보했을 때 가능한 적은 비트 수로 이를 보내는 방법에 대해 알아본다.