더북(TheBook)

모든 게임 로직 처리를 클라이언트에서 할 수는 없습니다. 기본적으로 서버에서 모든 게임 플레이 판정을 할 수 있게 만들되, 쾌적한 품질과 타협하기 위해 일부 처리를 게임 클라이언트 쪽에 맡기는 것이 현실적입니다. 예를 들어 플레이어의 위치를 이동하려고 입력받은 것만 서버에 보내는 것이 아니라 클라이언트에서 플레이어의 위치 이동 판정까지 마쳐서 서버에 일방 통보를 하되, 공격 행동은 서버가 처리하는 것이죠.5

이러한 역할을 하는 서버가 중간에 꺼지면 어떤 일이 발생할까요? 일단 여러 플레이어끼리 하는 상호 작용이 중단됩니다. 게임 플레이 판정을 중재하는 서버가 중간에 사라져 버렸기 때문에 클라이언트는 서버에 메시지를 보내 보았자 서버가 아무런 응답도 하지 않을 것입니다. 또 서버에서 더 이상 능동적 통보도 없기 때문에 세션의 상태 변화가 더 이상 없을 것입니다.

그리고 플레이어 행동이 서버에 전달되지 못하기 때문에 클라이언트에서 하는 행동은 아무 의미가 없습니다. 아직 서버에 접속하지 않은 클라이언트에서는 게임 서버에 접속하려고 시도해도 접속을 받아 줄 서버가 없어 실패합니다. 결국 정상적인 게임 플레이를 하지 못합니다. 게임 서버 한 대가 전국 PC방에 있는 플레이어들을 처리한다고 할 때 그 서버를 끄면 전국 PC방을 한꺼번에 끄는 것과 맞먹는 상황이 벌어집니다.

 

5 플레이어의 이동 자체를 클라이언트에서만 일방적으로 판단하면 또 다른 해킹 위험이 도사립니다. 해커는 자기 플레이어의 위치를 마음대로 조작할 것입니다. 결국 해커의 플레이어 캐릭터는 매우 빠른 속도로 종횡무진 다니거나, 심지어 하늘을 높이 떠다니는 기이한 행동을 펼치기도 할 것입니다. 이를 막고자 서버에서는 플레이어의 이동 변화량을 추적하여 범위 밖의 행동을 하면 해커 유저로 간주하여 필요한 조치를 취하기도 합니다.

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