home lecture link bbs blame

◈Online Game Server◈


1 Simple Client/Server


온라인 서버 모델의 구성은 보통 다음과 같은 구조도 만들어져 있습니다. 그림에서 보면
클라이언트는 로그인 서버에 접속을 하고 로그인 서버는 클라이언트를 인증합니다. 때로는
서버가 클라이언트에게 인증 코드를 주기도 하며 게이트웨이 서버의 아이피와 포트 번호를
알려줍니다. 클라이언트는 인증코드를 가지고 게이트웨이 서버에 접속을 합니다. 이 때
게이트웨이 서버는 클라이언트의 인증코드가 맞는지 로그인 서버에 문의를 하고 맞으면
접속을 허용합니다.

클라이언트의 입장에서 서버는 로그인 서버, 게이트웨이 서버 두 개만 보이게 됩니다.
로그인 서버와 게이트웨이 서버는 클라이언트의 정보를 처리하는 데이터베이스 서버를
가지고 있으며 특히 게이트웨이 서버는 게임플레이와 관련된 서버로 하부에 존 서버를
둡니다. 만약 채팅이나 NPC에 대한 처리가 많아지면 게이트웨이 서버는 별도로 채팅서버와
NPC서버를 둡니다. 존 서버는 주로 MMORPG에서 만들어지며 중소규모의 게임에서는
Room(방)과 같은 역할을 합니다.

< 게임서버 구조 >




그림에서 화살표의 방향은 접속의 방향입니다. 그리고 붉은 색 선은 암호화가 필요한
부분입니다.

모든 서버는 물리적으로 혹은 논리적으로 분리가 가능해야 합니다. 초기에 접속인원이
많지 않은데 서버 컴퓨터를 많이 두면 비용의 부담이 커질 수 밖에 없습니다. 서버의
증설은 클라이언트의 접속이 증가하면 여기에 맞추어 늘려주면 됩니다. 하드웨어가 증설될
경우를 대비해서 프로그램을 잘 만들어 주면 됩니다.

게임서버 사이의 통신은 TCP/IP, 파이프 구조 등을 주로 사용합니다. 알려진 바에 의하면
TCP/IP는 서버 사이의 운영체제와 하드웨어의 성능 차이에 관계 없이 처리 속도가 고르게
나타나는 반면 파이프 구조는 같은 운영체제, 같은 종류의 하드웨어를 가진 서버들 사이에서
속도가 뛰어나다고 보고 되고 있습니다. 자금이 넉넉한 회사라면 모든 컴퓨터를 같은
기종으로 같은 운영체제로 활용하는 것이 관리 면에서 편리할 수도 있으나 서버컴퓨터의
가격이 수 천 만원에서 수 억 원 차이가 나기 때문에 클라이언트가 증가해서 서버의 증설이
요구된다면 이 또한 만만치 않은 비용이 듭니다.

대부분의 회사에서는 서버 사이의 차이를 두고 증설을 하며, 이러한 이유로 인해 서버
사이의 통신은 주로 TCP/IP가 사용이 됩니다.

게임서버는 윈도우 운영체제라면 IOCP로 작성을 합니다. 따라서 IOCP를 기반으로 한
클라이언트 서버에 대한 완전한 모듈이 필요합니다. 네트워크 라이브러리의 코드들을
이용해서 IOCP클라이언트와 서버 모듈을 만들어 봅시다.


Sv11_IocpNet.zip



2. Login Sever





3 Game Server





4 Zone Server



Copyright (c) 2004 3dapi.com All rights reserved.

Creative Commons License