온라인게임원리
- 로컬 게임은 연산의 결과를 모두 로컬에서 나오게 하는 것이 보통이다. 그러나 온라인 게임은 서버와 클라이언트를 두고, 클라이언트가 연산을 요청하면 서버가 그것을 받아 연산 결과를 다시 클라이언트에 보내주는 식으로 진행한다. 간단히 말을 바꾸자면 그림을 표시하는 것은 집에서, 그리고 그 안에서 캐릭터가 점프했다, 적을 밟았다, 캐릭터가 죽었다 등의 연산은 서버가 하고, 결과를 다시 집으로 보내주면 집의 컴퓨터가 그것을 그리게 되는 것이다.
- 원격지의 서버가 여러 사용자를 동시에 접속받아 계산을 진행하게 하면 한 번에 많은 수의 사용자가 결과를 받아볼 수 있게 된다. 이것이 다중 접속 사용자 게임이 성립할 수 있는 원리다. 원격지의 서버에 접속해야만 연산을 할 수 있기 때문에 네트워크 접속이 필수이며, 원거리에 접속하기 때문에 결과를 주고받는 과정에서 필연적으로 지연이 생기게 된다. 때문에 온라인 게임은 콘솔의 액션 게임처럼 즉시 응답할 수 있는 액션 게임을 만들기는 어렵다.
- FPS 같은 극히 실시간적인 동기화를 요구하는 게임은 지연 시간을 메우기 위해 데드레커닝 방식 등을 사용해 통신 상대의 정보를 미리 클라언트에서 추측하여 선판정한 후 정확한 정보을 담은 패킷을 전송받으면 오류를 보정해 동기화하는 식으로 즉시 응답에 가까운 액션 게임들이 많이 나오고 있는 추세다. 마찬가지로 연산을 서버에서 하기 때문에, 로컬의 의지와는 관계없는 처리지연이 발생하게 된다. 이른바 랙이라는 현상으로 그 원인은 다양하며 오래 된 온라인 게임을 최신 사양의 컴퓨터에서 플레이해도 발생하는 수가 생긴다.
- 배틀넷처럼 중계 서버 방식을 이용해 서버는 연산을 하지 않고 단순히 패킷을 다른 클라이언트로 재전송만 하는 서버도 있다. 이 경우 상호간 전송 지연 자체는 줄어들며 클라이언트의 컴퓨터가 패킷을 읽고 연산한다. 이런 방식은 속도의 장점이 있지만 패킷이 클라이언트에 노출되므로 이를 조작할 가능성이 있어 보안이 취약해진다는 단점이 있다. 때문에 배틀넷 등의 중계 서버는 사용자가 패킷 정보를 조작하는지 검사하는 별도의 자체적 안티치트 시스템을 갖추고 있다.
답글 남기기