Information
게임서버

게임서버 구성

4a21c6c6a1188441dbf2fac4e60303b8

[현재 서버 구성]

서버는 총 4개로 구성되어 있습니다.

  1. 글로벌 서버 -모든 서버와 연결된 통신하며 클라이언트와는 통신하지 않습니다. 현재는 서버의 고유 GUID 발급 보장, 유저 중복 접속 방지 등의 역할을 수행중입니다.
  2. 로그인 서버 - 유저가 처음으로 접속하는 서버입니다. Flutter 에서 넘어온 토큰을 이용하여 로그인 프로세스를 수행합니다. 접속한 유저에 해당하는 지역의 원할한 메인 서버로 접속을 유도합니다.
  3. 메인 서버 - 로비 과정에서 캐릭터 생성,선택 등을 담당합니다. 지역간 유저끼리 커뮤니케이션 할 때 역할을 담당합니다. 예를 들어 길드나 친구, 마이룸 방문, 채널 이동 등을 관리할 수 있습니다. 현재는 캐릭터 선택,생성 프로세스, 마이룸 방문, 채널 관리, 유저 프로필 업데이트 전파,존서버 유저 분배 등의 역할을 수행중입니다.
  4. 존 서버 - 유저가 주로 활동하는 영역이며 상태 동기화를 주로 담당합니다. 클라이언트들의 위치,애니메이션 등의 동기화를 담당합니다. 지역 이동간에 퀘스트 및 지역의 유저들 상태를 동기화 합니다. 퀘스트 관련 데이터를 DB 에 저장 및 생성,삭제,업데이트 및 전파 합니다. 채팅을 전파합니다.

[서버 및 클라이언트 작동 방식]

서버는 Windows Server에서 작동중이며 DB는 MySQL 사용중입니다. 서버에 사용한 네트워크 기술은 서버간 통신에는 C++/IOCP/TCP 사용중이고 클라이언트간 통신에는 웹소켓 및 SSL 대응을 위해 C++/Boost.asio 를 사용중입니다. Boost.asio 도 윈도우 서버에서 작동시 내부적으로는 가장 빠른 IOCP로 동작합니다. 추후 웹소켓을 제외한 다른 플랫폼은 기존 서버간 통신에 이용한 C++/IOCP/TCP를 사용하여 통신 속도를 올릴 계획도 있습니다. 서버 구성은 현재 지역(ex.유럽,아시아,한국), 그룹(한국1,한국2.. 그룹당 메인 서버 1:1 매칭), 그룹별 index(한국1-1,한국1-2,한국1-2… index = 존서버) 으로 나누어서 연결 및 분산 관리 하고 있습니다. 유저 부하가 심해질 경우 그룹이나 그룹별 index를 확장하고 상위 서버에서 원할한 서버로 분배하여 유저 부하를 분배하게 설계되어 있습니다.