왜 순간이동 할 때 기다려야 하나요?

첫째. 공정한 플레이를 유지하기 위해서입니다. 종종 쿨타임 없는 순간이동 자체가 게임 플레이의 일부인 경우가 있기는 합니다. 정확히 이런 용도가 아니라면 순간이동에는 쿨타임이 있습니다. 가장 큰 이유는 플레이를 공정하게 만들기 위해, 달리 표현하면 어뷰징 할 상황을 줄일 수 있기 때문입니다. 만약 전투 도중에 플레이어가 갑자기 다른 존으로 이동한다면 자잘하게 해결해야 하는 문제들이 생깁니다. 만약 순간이동 한 플레이어가 마지막으로 입력한 공격이 아직 안 끝났다면? 또는 상대 또는 몬스터가 플레이어를 향해 사용한 공격이 아직 안 끝났다면 플레이어가 갑자기 사라질 때 문제가 됩니다. 단순한 공격이라면 그냥 실패한 것으로 처리하고 끝낼 수 있지만 10초 동안 2초에 한번씩 플레이어 반경 내에 있는 적들에게 공포 효과를 주는 스킬이 있다면 10초가 되기 전에 플레이어가 다른 위치로 이동할 때 이를 처리하기 어려워집니다.

단순히 플레이어가 다른 곳으로 이동하면 남은 시간 동안 도착한 곳에서 효과가 계속되면 된다고 생각할 수도 있지만 이곳이 전투 불가능으로 설정된 마을이거나 플레이어의 팩션이 변경되어야 하는 난입 가능한 전장이라거나 하는 상황에 따라 처리가 상당히 복잡해집니다. 게임 모드에 따라 사용할 수 없는 스킬의 효과일 수도 있습니다. 그래서 간단히 플레이어가 전투 상태에서 평화 상태로 전환되는데 걸리는 시간과 같거나 그보다 약간 더 긴 시간 동안 기다리게 만듭니다. 평화 상태로 전환되려면 일단 주변의 전투 상황과 플레이어의 상태가 자연스럽게 정리되기 때문입니다. 일단 평화 상태에 진입하면 아무 장소로나 이동해도 큰 문제가 되지 않습니다.

둘째. 레벨 사이를 이동할 때 상대 위치와 동기화를 맞추는데 시간이 필요하기 때문입니다. 클라이언트는 서로 다른 레벨 사이를 이동하는데 시간이 걸립니다. 현재 레벨을 언로드하고 새 레벨을 로드해야 하고 새 레벨의 위치에 따라 다른 서버에 접속해야 할 수도 있습니다. 이런 과정에는 수 초는 필요합니다. 반면 서버 입장에서 플레이어는 순식간에 목표 지점에 도착할 수 있습니다. 하지만 이 상태를 그대로 놔두면 역시 이상한 상황이 일어나는데 클라이언트가 로딩을 하는 동안 서버 입장에서 플레이어 캐릭터가 완전 무방비 상태가 됩니다. 서버 상에서 옆에 있던 몬스터가 와서 플레이어를 공격해도 클라이언트는 아직 로딩 중이므로 조작할 수도 응답할 수도 없습니다. 그래서 서버는 무작정 플레이어를 새 위치로 옮기지 않고 잠깐 기다려 클라이언트의 상태에 따라 새 위치에 플레이어를 스폰 시키는데 이 작업을 안전하게 처리하는데 필요한 시간입니다.

이 시간이 좀 더 길다면 위치 사이에 이동할 때 정리할 작업이 많다는 의미로 받아들여도 됩니다. 반면 이 시간이 상당히 짧거나 없다면 이 이동 행동 자체를 플레이의 일부로 간주하는 게임이라고 생각할 수 있습니다.

One thought on “왜 순간이동 할 때 기다려야 하나요?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s