What is Game Server ?이름           : 최흥배E-mail        : jacking75@gmail.comHomePage: jacking75.cafe24.comBlog: http://blog.naver.com/jacking75
1. 온라인 게임서버의 OS 플랫폼Windows한국에서 게임서버를 만드는 경우 가장 일반적으로 선택하는 OS 이다.게임 개발자들에게 가장 익숙한 OS.
Linux비 Windows OS 중에서 가장 대중성을 가지고 있는 OS 이다.Windows  보다는 덜 익숙하지만 점점 대중성 및 관련 자료를 늘리고 있다.
FreeBSDUnix 계열의 OS 로서 Linux와 거의 비슷함.Linux에 비해 대중성은 약하지만 Unix를 사용하였던 사람들로부터 지지를 받음.온라인 게임서버가 실행되는 OS 플랫폼은 거의 대부분이 Windows, Linux, FreeBSD 이 셋 중의 하나이다.이중 Windows 플랫폼용이 가장 많다.
게임 서버 프로그래머가 보는 각 OS의 장단점
2. 게임 장르에 따른 게임서버의 특징2. 1 . 온라인 보드 게임 일반적으로 높지 않은 성능을 요구하며, 게임의 규모가 크지 않다.
 C/S 방식으로 통신을 하며 기능별로 서버를 분산하기 보다는 하나의 서버에서 모든 것을 다하는 경우가 많다.
보드 게임 특성상 기본 틀은 비슷하지만 게임 룰만 다른 경우가 일반적이므로 프레임워크 식으로 서버를 만들면 좋다.
개발 툴 및 프레임 워크가 잘 갖추어져 있으면 한 명의 프로그래머가 서버, 클라이언트 모두를 할 수 있다.2. 2 . 캐주얼 게임 보드 게임 서버에 비해 게임의 규모가 더 크며, 액션 성이 높은 게임이 많다.
 게임 플레이에서는 주로 P2P 방식을 이용하여 그 외 부분에서는 C/S 방식 사용( P2P에서는 UDP, C/S에서는 TCP 사용 ).
 보드 게임 서버와 MMORPG 게임서버의 중간 정도의 규모 급이다.
요즘에는 ‘캐주얼’이라는 이름에 걸맞지 않게 개발 기간이 MMORPG와 비슷.2. 3 . MMORPG 게임 게임의 규모가 크고 그에 따라서 개발 인원도 많다.
 거의 C/S 방식의 TCP 프로토콜을 사용한다.
 많은 기능과  높은 성능을 필요로 하므로 큰 기능별로 서버가 분산된다.
 3D 환경의 경우 지형 처리 및 NPC의 길 찾기가 중요 해진다.3. 온라인 게임서버 제작을 위한 기술 및 개발 환경3. 1. 각 OS의 비 동기 IO 방식Windows IOCP.Windows 2000 이상부터  지원.참고 자료 : MSDN
Linuxepoll.2.5.x 커널에 추가 되기 시작하였으며 2.6.x 커널 대에서는 기본으로 탑재.참고 자료 : http://www.xevious7.com/tag/epoll
FreeBSDKqueue.Windows, Linux에 비해 일찍부터 비동기 I/O 지원.참고 자료 : http://jacking75.cafe24.com/Network/FreeBSD_Index.htm3. 2. Multi-Thread  일반 PC와 달리 서버 PC는 이전부터 단일 CPU 보다는 듀얼 CPU 이상의 CPU를 사용 했으므로 Thread를 도입한 경우가 많으며 서버 프로그래머들이 많은 관심을 가지고 있는 분야이다.
 현재 출시되는 CPU는 듀얼코어 이상의 CPU가 출시되고 있으므로 이전보다 더욱 더 Thread 기술이 중요해지고 있음.
 Windows의 경우 Windows OS의 Thread 라이브러리를 사용하고, 유닉스계열(Linux, FreeBSD 등)에서는 Pthread라이브러리를 사용한다.
 Boost의 Thread 라이브러리를 사용하면 OS 독립적인 Thread 기술 사용 가능. Intel에서 스레딩 빌딩 블록(TBB) 라는 Thread 관련 라이브러리 공개( 단 유료로 구입한 경우에만 기술 지원을 받을 수 있음).http://blog.naver.com/jacking75/140040961225
 Thread 사용 시에는 동기화와 성능 분산이 중요하다.일반적으로 과도한 동기화는 Thread 컨텍스트스위칭에 따른 비용 증가로 오히려 성능이 더 내려 갈 수도 있다.
 Thread 관련 툴을 사용하면 좋다.인텔에서 제공하는 Thread Checker, Thread Profiler 등이 있다.
Thread 사용은 이익과 위험이 따른다. 보수적인 관점에서 접근을 해야 된다.특히 서버의 로직 처리 부분을 Multi-Thread로 할 때에는 트랜잭션 처리에 아주 조심해야 된다.3. 3. Database(DB)  온라인 게임 서버에서 중요한 것 중의 하나가 DB 이다.
 일반적으로 규모가 큰 회사 등은 DBA가 있어서 이들을 통해서 DB 작업을 하지만 아직까지는 대다수가 서버 프로그래머가 DBA의 역할까지 한다.
 일반적으로 많이 사용되는 DB는 MS SQL, MySQL, Oracle 등이다.보통 게임서버가 운용되는 OS에 따라가는 편이므로 MS SQL을 많이 사용한다.
 DB 프로그래밍 시 MS SQL의 경우는 ODBC, DO, OLE DB 중에서 하나를 사용,My SQL 및 Oracle은 네이티브 라이브러리를 주로 사용한다.

What is Game Server ?

  • 1.
    What is GameServer ?이름 : 최흥배E-mail : jacking75@gmail.comHomePage: jacking75.cafe24.comBlog: http://blog.naver.com/jacking75
  • 2.
    1. 온라인 게임서버의OS 플랫폼Windows한국에서 게임서버를 만드는 경우 가장 일반적으로 선택하는 OS 이다.게임 개발자들에게 가장 익숙한 OS.
  • 3.
    Linux비 Windows OS중에서 가장 대중성을 가지고 있는 OS 이다.Windows 보다는 덜 익숙하지만 점점 대중성 및 관련 자료를 늘리고 있다.
  • 4.
    FreeBSDUnix 계열의 OS로서 Linux와 거의 비슷함.Linux에 비해 대중성은 약하지만 Unix를 사용하였던 사람들로부터 지지를 받음.온라인 게임서버가 실행되는 OS 플랫폼은 거의 대부분이 Windows, Linux, FreeBSD 이 셋 중의 하나이다.이중 Windows 플랫폼용이 가장 많다.
  • 5.
    게임 서버 프로그래머가보는 각 OS의 장단점
  • 6.
    2. 게임 장르에따른 게임서버의 특징2. 1 . 온라인 보드 게임 일반적으로 높지 않은 성능을 요구하며, 게임의 규모가 크지 않다.
  • 7.
    C/S 방식으로통신을 하며 기능별로 서버를 분산하기 보다는 하나의 서버에서 모든 것을 다하는 경우가 많다.
  • 8.
    보드 게임 특성상기본 틀은 비슷하지만 게임 룰만 다른 경우가 일반적이므로 프레임워크 식으로 서버를 만들면 좋다.
  • 9.
    개발 툴 및프레임 워크가 잘 갖추어져 있으면 한 명의 프로그래머가 서버, 클라이언트 모두를 할 수 있다.2. 2 . 캐주얼 게임 보드 게임 서버에 비해 게임의 규모가 더 크며, 액션 성이 높은 게임이 많다.
  • 10.
    게임 플레이에서는주로 P2P 방식을 이용하여 그 외 부분에서는 C/S 방식 사용( P2P에서는 UDP, C/S에서는 TCP 사용 ).
  • 11.
    보드 게임서버와 MMORPG 게임서버의 중간 정도의 규모 급이다.
  • 12.
    요즘에는 ‘캐주얼’이라는 이름에걸맞지 않게 개발 기간이 MMORPG와 비슷.2. 3 . MMORPG 게임 게임의 규모가 크고 그에 따라서 개발 인원도 많다.
  • 13.
    거의 C/S방식의 TCP 프로토콜을 사용한다.
  • 14.
    많은 기능과 높은 성능을 필요로 하므로 큰 기능별로 서버가 분산된다.
  • 15.
    3D 환경의경우 지형 처리 및 NPC의 길 찾기가 중요 해진다.3. 온라인 게임서버 제작을 위한 기술 및 개발 환경3. 1. 각 OS의 비 동기 IO 방식Windows IOCP.Windows 2000 이상부터 지원.참고 자료 : MSDN
  • 16.
    Linuxepoll.2.5.x 커널에 추가되기 시작하였으며 2.6.x 커널 대에서는 기본으로 탑재.참고 자료 : http://www.xevious7.com/tag/epoll
  • 17.
    FreeBSDKqueue.Windows, Linux에 비해일찍부터 비동기 I/O 지원.참고 자료 : http://jacking75.cafe24.com/Network/FreeBSD_Index.htm3. 2. Multi-Thread 일반 PC와 달리 서버 PC는 이전부터 단일 CPU 보다는 듀얼 CPU 이상의 CPU를 사용 했으므로 Thread를 도입한 경우가 많으며 서버 프로그래머들이 많은 관심을 가지고 있는 분야이다.
  • 18.
    현재 출시되는CPU는 듀얼코어 이상의 CPU가 출시되고 있으므로 이전보다 더욱 더 Thread 기술이 중요해지고 있음.
  • 19.
    Windows의 경우Windows OS의 Thread 라이브러리를 사용하고, 유닉스계열(Linux, FreeBSD 등)에서는 Pthread라이브러리를 사용한다.
  • 20.
    Boost의 Thread라이브러리를 사용하면 OS 독립적인 Thread 기술 사용 가능. Intel에서 스레딩 빌딩 블록(TBB) 라는 Thread 관련 라이브러리 공개( 단 유료로 구입한 경우에만 기술 지원을 받을 수 있음).http://blog.naver.com/jacking75/140040961225
  • 21.
    Thread 사용시에는 동기화와 성능 분산이 중요하다.일반적으로 과도한 동기화는 Thread 컨텍스트스위칭에 따른 비용 증가로 오히려 성능이 더 내려 갈 수도 있다.
  • 22.
    Thread 관련툴을 사용하면 좋다.인텔에서 제공하는 Thread Checker, Thread Profiler 등이 있다.
  • 23.
    Thread 사용은 이익과위험이 따른다. 보수적인 관점에서 접근을 해야 된다.특히 서버의 로직 처리 부분을 Multi-Thread로 할 때에는 트랜잭션 처리에 아주 조심해야 된다.3. 3. Database(DB) 온라인 게임 서버에서 중요한 것 중의 하나가 DB 이다.
  • 24.
    일반적으로 규모가큰 회사 등은 DBA가 있어서 이들을 통해서 DB 작업을 하지만 아직까지는 대다수가 서버 프로그래머가 DBA의 역할까지 한다.
  • 25.
    일반적으로 많이사용되는 DB는 MS SQL, MySQL, Oracle 등이다.보통 게임서버가 운용되는 OS에 따라가는 편이므로 MS SQL을 많이 사용한다.
  • 26.
    DB 프로그래밍시 MS SQL의 경우는 ODBC, DO, OLE DB 중에서 하나를 사용,My SQL 및 Oracle은 네이티브 라이브러리를 주로 사용한다.