10.5 플레이어 간 상호 작용 분산 처리
온라인 게임에서 플레이어 심리를 많이 자극하는 것 중 하나는 플레이어 간 상호 작용입니다. 대표적인 것이 플레이어 간 대전(Player vs Player, PvP)입니다. 플레이어가 공동의 적을 상대로 협업 플레이(co-op)를 하는 것도 플레이어 간 상호 작용이 들어갑니다. 예를 들어 플레이어 1이 적을 상대로 검과 방패로 근접 공격 중인 상황에서 플레이어 2는 플레이어 1을 치료하는 마법을 시전합니다. 꼭 전투가 아니더라도, 플레이어 간 게임 아이템을 물물 교환하는 경우도 플레이어 간 상호 작용이라고 할 수 있습니다.
플레이어 간 상호 작용의 특징은 다음과 같습니다.
• 매우 정확해야 합니다(간발의 차이로 PvP 승부 내기).
• 높은 성능 수준이 요구됩니다.
• 횟수가 매우 잦을 때가 있습니다. 예를 들어 두 플레이어가 서로에게 기관총을 난사하고 있다면 플레이어 간 상호 작용 메시지가 초당 5회 이상 발생합니다.
• 원자성이 있어야 합니다. 상호 작용의 결과가 두 플레이어에게 모두 반영되거나 어느 쪽도 반영되지 않아야 합니다. 예를 들어 플레이어 간 물물 교환을 할 경우 각각이 상대방에게 주려는 물품이 동시에 교환되거나 전혀 교환되지 않아야 합니다.
• 간발의 지연 시간도 문젯거리입니다. 예를 들어 헤드샷을 쐈는데 상대방에게 1/20초 오차가 날 경우, 충분히 머리를 피할 수 있는 시간이므로 이 때문에 두 플레이어 간에 오차가 발생합니다.
이렇게 까다로운 상황에서 플레이어 간 상호 작용을 서로 다른 서버에 분산 처리한다면 매우 곤란하겠지요. 그러다 보니 플레이어 간 상호 작용 처리는 분산하지 않는 것이 일반적입니다. 굳이 분산해야 한다면, 상호 작용할 일이 없는 플레이어들을 분산하는 것이 최선입니다. 즉, 지역적 분산 처리를 하는 것입니다.