1인용 게임인 싱글컴퓨터 게임에는 모든 게임의 입출력과 연산이 하나의 컴퓨터에서 일어나기 때문에 컴퓨터 사이의 통신이 필요하지 않다. 게임의 작업순서는 아래와 같은 단계를 반복한다.
하지만 서버가 포함되는 온라인게임에서는 클라이언트-서버간의 통신을 통해 상대방의 정보, 현재상태에 대한 처리결과를 주고 받는 구조가 존재한다.
클라이언트와 서버간의 상호작용에는 4가지가 있다.
클라이언트가 서버와 데이터를 주고 받기위한 환경을 설정하는 단계로 클라이언트에서 서버에게 연결을 요청하고 서버가 이를 수락하면 클라이언트-서버간의 연결이 완성된다. TCP연결의 3-way handshake가 이에 해당한다.
클라이언트가 서버에 어떤 데이터나 행동을 요청했을 때 요청에 대한 결과나 허락, 거절응답을 받을 수 있다. 하지만, 서버는 클라이언트의 모든 요청에 응답할 필요는 없다. 서버입장에서는 요청을 보낸 클라이언트가 악의적인 공격자일수도 있기 때문이다.
클라이언트는 요청한 데이터 말고도 다른 클라이언트에 대한 정보를 통보받을 수 있다. 예를들면 게임 대기방에서 다른 플레이어가 방에 합류했음을 서버로부터 통보받는 구조나 다른 플레이어가 전송한 채팅에 대한 내용을 받을 수 있다.
더이상 서버와의 통신이 필요없을 때 클라이언트는 서버와의 연결을 해제할 수 있다.
위에서 말한것과 같이 게임로직은 클라이언트와 서버와 나누어서 처리해야 한다. 이러한 구조는 아래 그림과 같은 구조를 가지고 있다.

그렇다면 아래 그림과 같은 구조로 "모든 게임로직을 서버에서 할 수는 없는가?"라는 의문이 생길 수 있다.

결과만 말하자면 클라이언트가 요청으로부터 응답을 받는데까지 걸리는 시간이 늘어날 것이다. 프레임률이 60프레임이라면 서버는 한 클라이언트에 대해 1초에 60번의 로직연산을 해야하는데 한번의 로직연산이 많아지면 많아질수록 응답하는데 걸리는 시간은 점점 늘어날 것이다.
그렇다고 게임로직을 클라이언트에게 대부분 맞기는 것은 옳지 않다. 앞서 언급했듯이 서버입장에서는 클라이언트가 보낸 정보를 완전히 신뢰할 수 없기 때문이다. 서버는 클라이언트가 보낸 정보를 의심을 해야한다.