목차
I. 온라인 게임 서버군의 디자인 구조
1. 기본 게임 서버군 디자인
2. 인증 서버에 따른 게임 서버군 디자인
가. 중앙 집중식 인증 구조 디자인
나. 분산식 인증 구조 디자인
II. 게임 서버 구조
1. 일반적인 게임 서버구조
가. NPC서버의 분리
나. 동기화 서버의 분리
다. 채팅 서버의 분리
2. 분산 게임 서버의 구조
III. 네트워크 프로토콜
1. TCP
2. UDP
3. 게임에서 사용하는 TCP/UDP
IV. 패킷과 암호화
1. 패킷의 특성
가. MTU
나. Nagle 알고리즘
2. 패킷 구조 정하기
가. ‘길이+헤더+데이터’ 패킷 구조
나. ‘길이+헤더+데이터+엔드마커’ 패킷 구조
3. 엔디안 문제와 마샬링
가. 엔디안 문제
나. 마샬링
4. 패킷 암호화(XOR/DES)
1. 기본 게임 서버군 디자인
2. 인증 서버에 따른 게임 서버군 디자인
가. 중앙 집중식 인증 구조 디자인
나. 분산식 인증 구조 디자인
II. 게임 서버 구조
1. 일반적인 게임 서버구조
가. NPC서버의 분리
나. 동기화 서버의 분리
다. 채팅 서버의 분리
2. 분산 게임 서버의 구조
III. 네트워크 프로토콜
1. TCP
2. UDP
3. 게임에서 사용하는 TCP/UDP
IV. 패킷과 암호화
1. 패킷의 특성
가. MTU
나. Nagle 알고리즘
2. 패킷 구조 정하기
가. ‘길이+헤더+데이터’ 패킷 구조
나. ‘길이+헤더+데이터+엔드마커’ 패킷 구조
3. 엔디안 문제와 마샬링
가. 엔디안 문제
나. 마샬링
4. 패킷 암호화(XOR/DES)
본문내용
동일해야만 게임 진행에 문제가 없다. 게임 서버의 최전방에서 새로 접속하는 유저의 버전을 관리하여 유저가 게임을 원활하게 즐길 수 있도록 해주는 중요한 임무를 맡는다.
● 인증 서버
: 유저의 인증(아이디, 비밀번호 체크)을 수행한다. 유효성을 검사하고, 중복 유저를 체크한다.
● 로비 서버
: 게임 서버에 쓰이는 유저의 캐릭터를 생성, 삭제, 선택할 수 있게 해준다.
〓> 보통 MMORPG에서는 계정 하나에 여러 개의 캐릭터를 생성하고 플레이할 수 있게 해준다. 그러므로 유저는 게임 서버에 접속하기 전에 사용할 캐릭터를 선택해야 한다.
● 게임 서버
: 게임을 진행하는 서버다. 가장 복잡하고 최고의 성능과 견고함으로 무장해야 한다.
2. 인증 서버에 따른 게임 서버군 디자인
: 각 서버는 기능에 따라 물리적으로 나눌 수 있지만, 상황에 따라 통합될 수도 있다. 즉, 인증, 로비, 게임 서버가 모두 합쳐져 서버 프로그램 하나에 실행될 수도 있다. 보통 확장성을 고려하여 서버군을 디자인하기 때문에 모두 합치는 일은 드물다. 하지만 상황에 따라 인증 서버와 로비 서버를 합쳐서 사용할 수도 있다. 왜냐하면 인증 서버나 로비 서버의 경우 유저가 사용하는 시간이 짧기 때문에 프로그램 하나로 두 가지 기능을 수행하도록 하는 경우도 있다.(추후 확장성을 고려한다면 기능별로 분리하는 것이 바람직하다.)
〓> 서버군을 디자인할 때는 항상 확장성을 고려하여 추후에 발생할 수 있는 상황에 유연하게 대처할 수 있어야 한다.
■ 기본 서버군 디자인
가. 중앙 집중식 인증 구조 디자인
: 여러 개의 서버군에서 하나의 인증/로비 서버를 사용하는 것을 뜻한다. 하나의 인증 서버가 월드 전체의 인증 작업을 처리하는 방식.
〓 > 인증 서버에 부하가 집중될 경우, 원하는 시점에서 서버를 추가할 수 있다. 하지만 로드 밸런싱을 위해 장비나 프로그램으로 해결할 수 있는 방법은 있어야 한다.
[중앙 집중식 인증 구조]
※ 로드밸런싱(기술)
: 초고속 통신의 확산과 함께 기존의 사용자 시스템 공격 위주의 바이러스, 해킹 등이 웜이나 트래픽 폭주형태로 발전하면서 시스템 침해 뿐만 아니라 네트워크 전체를 마비 시키는 형태로 발전하고 있다. 인터넷의 폭발적 성장과 함께 다양한 콘텐츠 및 어플리케이션 서비스가 증가되면서, 기존과 같이 단일 서버를 통하여 서비스를 수행하기에 정확하고 신속한 서비스가 불가능하게 되었다. 이의 개선책으로 로드 밸런싱 기술이 등장하여, L4~L7레벨의 어플리케이션 서비스를 제어하여 트래픽을 분산시켜 빠르고 원활한 처리가 가능하게 되고, 무정지 서비스가 가능하게 됐다.
■ 로드밸런싱의 다양한 활용
① 서버 로드밸런싱
- 동일 HTTP, POP3, FTP등과 같은 서비스를 수행하는 서버들을 하나의 가상 서버로 동작하게 하여 서버들간의 트래픽의 분산 처리가 가능하게 한다.
② 캐쉬 서버 로드밸런싱
- 인터넷 응답 시간을 개선하고, WAN 액세스 비용은 줄이는 동시에 복원력을 증진시키기 위해 TCS(Transparent Cashe Switching)기능을 이용한다. 이 기능은 최종 사용자들로부터의 모든 웹 질의(Query)를 사용자의 별도 설정 캐쉬서버가 직접 처리할 수 있도록 해 주며, 다수의 캐쉬서버를 이용하여 분산처리가 가능하게 한다.
③ 방화벽 로드밸런싱
- 다수의 방화벽으로 향하는 트래픽을 분산처리 함으로써 성능을 향상시키고, 장애 발생시에도 안정적인 네트워크 운용이 가능하게 한다.
④ VPN 로드밸런싱
- FWLB에 SLB의 VIP를 접목시키며, VIP를 통해 접속된 세션을 Ipsec Port(U에 500)를 이용하여 트래픽을 분산시켜줌으로써 VPN의 부하를 줄여주며, 장애 발생시에도 안정적인 네트워크 운용이 가능하게 한다.
나. 분산식 인증 구조 디자인
: 각 서버군마다 고유의 인증 서버를 갖는 경우. 각 서버군마다 인증 서버가 있기 때문에 게임이 실행되면 서버군을 먼저 선택하고 나서 인증을 한다. 인증 서버의 경우 인증 관련 작업만 처리하기 때문에 게임 서버와 달리 부하가 적은 편이다. 따라서 보통 인증 서버의 경우 서버 하나에서 처리하는 경우가 많으나, 최근에는 처음부터 인증 서버를 분리하는 방식을 많이 사용한다. 처음부터 로드밸런싱을 염두해 둘 필요는 없지만 늘어나는 인증서버의 관리도 생각해 볼 문제다.
서버군을 선택할 때는 서버군 정보 리스트만 따로 보내주는 서버를 통해 서버를 선택하는 방법과 클라이언트에서 직접 서버군을 선택함으로써 클라이언트가 처음 구동 될 때마다 패치 서버에 접속하기 때문에 서버군 정보 리스트를 항상 최신정보로 유지할 수 있다.
[분산식 인증 구조]
Ⅱ. 게임 서버 구조
게임 서버는 실질적인 게임을 진행하는 역할을 담당. 유저의 동기화, NPC의 인공지능, 아이템 시스템 등 게임 시스템의 총집합. 게임 진행에 필요한 모든 게임 요소를 총괄하여 진행하기 때문에 가장 많은 일을 한다.
※ NPC(Non-Player Characters)
: 게임에서 유저 캐릭터가 아닌 서버에 의해 조종되는 캐릭터를 총칭. ex) 상점 주인, 경비병, 몬스터.
1. 일반적인 게임 서버 구조
가. NPC의 분리
: 구성에 따라 게임 서버에 많은 부하를 줄 수 있는 것이 NPC의 인공지능 부분이다. 게임에서 사용하는 NPC의 인공지능은 상당히 단순해 보이지만, 수많은 NPC의 인공지능을 구성하는 코드는 상당히 복잡하며, 처리량도 만만치 않다. 따라서 NPC의 인공지능 부분을 따로 분리하여 게임 서버에서 부하를 줄이게 된다.
① 게임 서버: 객체만 생성.
② NPC 서버: NPC 객체의 인공지능 처리.
〓> NPC 서버에서는 인공지능 부분만 처리하여 게임 서버에 있는 NPC 객체에게 소켓 통신등을 이용하여 명령한다. 게임 서버 입장에서는 소켓 통신 비용을 지불하는 대신 서버 리소스를 절약할 수 있다. NPC 서버에서는 인공지능 부분을 전담하기 때문에 더욱 복잡하고 똑똑한 인공지능을 만들어 낼 수 있다.
ex) 온라인 게임을 하다보면 서버가 다운되어 다시 접속하면, 이상하게도 필드에 NPC가 하나도 없는 경우를 발견할 수 있다. 이는 NPC 서버와 게임 서버간에 동기화가 이루어지지
● 인증 서버
: 유저의 인증(아이디, 비밀번호 체크)을 수행한다. 유효성을 검사하고, 중복 유저를 체크한다.
● 로비 서버
: 게임 서버에 쓰이는 유저의 캐릭터를 생성, 삭제, 선택할 수 있게 해준다.
〓> 보통 MMORPG에서는 계정 하나에 여러 개의 캐릭터를 생성하고 플레이할 수 있게 해준다. 그러므로 유저는 게임 서버에 접속하기 전에 사용할 캐릭터를 선택해야 한다.
● 게임 서버
: 게임을 진행하는 서버다. 가장 복잡하고 최고의 성능과 견고함으로 무장해야 한다.
2. 인증 서버에 따른 게임 서버군 디자인
: 각 서버는 기능에 따라 물리적으로 나눌 수 있지만, 상황에 따라 통합될 수도 있다. 즉, 인증, 로비, 게임 서버가 모두 합쳐져 서버 프로그램 하나에 실행될 수도 있다. 보통 확장성을 고려하여 서버군을 디자인하기 때문에 모두 합치는 일은 드물다. 하지만 상황에 따라 인증 서버와 로비 서버를 합쳐서 사용할 수도 있다. 왜냐하면 인증 서버나 로비 서버의 경우 유저가 사용하는 시간이 짧기 때문에 프로그램 하나로 두 가지 기능을 수행하도록 하는 경우도 있다.(추후 확장성을 고려한다면 기능별로 분리하는 것이 바람직하다.)
〓> 서버군을 디자인할 때는 항상 확장성을 고려하여 추후에 발생할 수 있는 상황에 유연하게 대처할 수 있어야 한다.
■ 기본 서버군 디자인
가. 중앙 집중식 인증 구조 디자인
: 여러 개의 서버군에서 하나의 인증/로비 서버를 사용하는 것을 뜻한다. 하나의 인증 서버가 월드 전체의 인증 작업을 처리하는 방식.
〓 > 인증 서버에 부하가 집중될 경우, 원하는 시점에서 서버를 추가할 수 있다. 하지만 로드 밸런싱을 위해 장비나 프로그램으로 해결할 수 있는 방법은 있어야 한다.
[중앙 집중식 인증 구조]
※ 로드밸런싱(기술)
: 초고속 통신의 확산과 함께 기존의 사용자 시스템 공격 위주의 바이러스, 해킹 등이 웜이나 트래픽 폭주형태로 발전하면서 시스템 침해 뿐만 아니라 네트워크 전체를 마비 시키는 형태로 발전하고 있다. 인터넷의 폭발적 성장과 함께 다양한 콘텐츠 및 어플리케이션 서비스가 증가되면서, 기존과 같이 단일 서버를 통하여 서비스를 수행하기에 정확하고 신속한 서비스가 불가능하게 되었다. 이의 개선책으로 로드 밸런싱 기술이 등장하여, L4~L7레벨의 어플리케이션 서비스를 제어하여 트래픽을 분산시켜 빠르고 원활한 처리가 가능하게 되고, 무정지 서비스가 가능하게 됐다.
■ 로드밸런싱의 다양한 활용
① 서버 로드밸런싱
- 동일 HTTP, POP3, FTP등과 같은 서비스를 수행하는 서버들을 하나의 가상 서버로 동작하게 하여 서버들간의 트래픽의 분산 처리가 가능하게 한다.
② 캐쉬 서버 로드밸런싱
- 인터넷 응답 시간을 개선하고, WAN 액세스 비용은 줄이는 동시에 복원력을 증진시키기 위해 TCS(Transparent Cashe Switching)기능을 이용한다. 이 기능은 최종 사용자들로부터의 모든 웹 질의(Query)를 사용자의 별도 설정 캐쉬서버가 직접 처리할 수 있도록 해 주며, 다수의 캐쉬서버를 이용하여 분산처리가 가능하게 한다.
③ 방화벽 로드밸런싱
- 다수의 방화벽으로 향하는 트래픽을 분산처리 함으로써 성능을 향상시키고, 장애 발생시에도 안정적인 네트워크 운용이 가능하게 한다.
④ VPN 로드밸런싱
- FWLB에 SLB의 VIP를 접목시키며, VIP를 통해 접속된 세션을 Ipsec Port(U에 500)를 이용하여 트래픽을 분산시켜줌으로써 VPN의 부하를 줄여주며, 장애 발생시에도 안정적인 네트워크 운용이 가능하게 한다.
나. 분산식 인증 구조 디자인
: 각 서버군마다 고유의 인증 서버를 갖는 경우. 각 서버군마다 인증 서버가 있기 때문에 게임이 실행되면 서버군을 먼저 선택하고 나서 인증을 한다. 인증 서버의 경우 인증 관련 작업만 처리하기 때문에 게임 서버와 달리 부하가 적은 편이다. 따라서 보통 인증 서버의 경우 서버 하나에서 처리하는 경우가 많으나, 최근에는 처음부터 인증 서버를 분리하는 방식을 많이 사용한다. 처음부터 로드밸런싱을 염두해 둘 필요는 없지만 늘어나는 인증서버의 관리도 생각해 볼 문제다.
서버군을 선택할 때는 서버군 정보 리스트만 따로 보내주는 서버를 통해 서버를 선택하는 방법과 클라이언트에서 직접 서버군을 선택함으로써 클라이언트가 처음 구동 될 때마다 패치 서버에 접속하기 때문에 서버군 정보 리스트를 항상 최신정보로 유지할 수 있다.
[분산식 인증 구조]
Ⅱ. 게임 서버 구조
게임 서버는 실질적인 게임을 진행하는 역할을 담당. 유저의 동기화, NPC의 인공지능, 아이템 시스템 등 게임 시스템의 총집합. 게임 진행에 필요한 모든 게임 요소를 총괄하여 진행하기 때문에 가장 많은 일을 한다.
※ NPC(Non-Player Characters)
: 게임에서 유저 캐릭터가 아닌 서버에 의해 조종되는 캐릭터를 총칭. ex) 상점 주인, 경비병, 몬스터.
1. 일반적인 게임 서버 구조
가. NPC의 분리
: 구성에 따라 게임 서버에 많은 부하를 줄 수 있는 것이 NPC의 인공지능 부분이다. 게임에서 사용하는 NPC의 인공지능은 상당히 단순해 보이지만, 수많은 NPC의 인공지능을 구성하는 코드는 상당히 복잡하며, 처리량도 만만치 않다. 따라서 NPC의 인공지능 부분을 따로 분리하여 게임 서버에서 부하를 줄이게 된다.
① 게임 서버: 객체만 생성.
② NPC 서버: NPC 객체의 인공지능 처리.
〓> NPC 서버에서는 인공지능 부분만 처리하여 게임 서버에 있는 NPC 객체에게 소켓 통신등을 이용하여 명령한다. 게임 서버 입장에서는 소켓 통신 비용을 지불하는 대신 서버 리소스를 절약할 수 있다. NPC 서버에서는 인공지능 부분을 전담하기 때문에 더욱 복잡하고 똑똑한 인공지능을 만들어 낼 수 있다.
ex) 온라인 게임을 하다보면 서버가 다운되어 다시 접속하면, 이상하게도 필드에 NPC가 하나도 없는 경우를 발견할 수 있다. 이는 NPC 서버와 게임 서버간에 동기화가 이루어지지
추천자료
국내 온라인 게임 기업소개및 성공요인 (넥슨의 성공요인)
국내외 온라인 게임산업의 현황과 발전 방향
On-line Game Industry (온라인 게임 산업)
대학생 온라인 게임중독
Nc Soft - 온라인 게임시장 기업 사례조사
[마케팅] 엔씨 소프트 - 온라인 게임 성공요인 분석(NC Soft)
[마케팅] 라그나로크 온라인 게임 마케팅 분석
엔씨소프트의 성공사례 및 온라인 게임의 발전 방향
[비지니스] 국내 온라인 게임의 현금거래
세계 반도체산업, 온라인 게임, 외식산업 현황
AHP를 이용한 온라인 게임 성공요인에 관한 연구
한국 온라인 게임 시장의 현실
[문화 산업법] 온라인 게임 산업과 이에 관련한 법
국내 온라인 게임산업 및 아이템시장의 현황 분석과 아이템베이의 사업방식 및 성공요인과 문...
소개글