게임 서버 관련된 책들을 보면

모든 책이 그런 것은 아마 아니겠지만 (사실 아닐꺼라고 믿고 싶다) 대부분 기초적인 네트웍 프로그래밍 – 소켓 사용, Win 32 혹은 소수지만 버클리 소켓 사용 – 이나 단순한 수준의 멀티스레드 프로그래밍에 그 내용 중 상당량을 소진한다. 그리고 정작 중요한 modern한 I/O 모델을 이용한 서버 프로그래밍에 관한 설명은 정말이지 미흡하기 그지없다.

사실 게임 서버, 특히나 애들 장난감이 아니라 MMOG, MMORPG의 서버를 만드는 법을 맛보게라도 해주려면 이런 내용들을 다뤄야 할 것이다.

  • 대용량 네트웍  I/O를 다루는 법.  게임 서버 프로그래밍 책이라고 써놓고는 책 내용 절반 ~ 2/3을 할애해가면서 select, EventSelect 같은 것만 설명해주는 것은 좀 문제가 있다†. Win32의 I/O completion port; IOCP나 linux의 /dev/epoll 같은 것을 사용해서 어떻게 네트웍 I/O를 처리할지 설명해줘야 한다. 단순히 API 사용법 뿐만 아니라 소켓 버퍼 관리 문제, 패킷 생성 / 메시지 해석 문제 등 많은 부분이 있는데 이에 대한 최소한의 설명이라도 있어야 하겠다.
  • 멀티스레딩을 사용할 때의 동기화/타이밍 문제. 사실 시스템 프로그래밍에 가까운 것이지만 서버 프로그래머들이 하는 거의 모든 코드의 바닥에는 멀티스레딩 문제가 깔려 있다. 물론 OS나 시스템 프로그래밍 적인 지식이 깔려있어야하지만 그래도 몇 가지 시스템 프로그램 모델들은 설명해줘야 할 것이다.
  • 서버 사이드 스크립팅. 서버에서 모든 것을 다 C/C++ …요즘이라면 C#도 가능할지도 모르지만 여튼 이런 류의 주류 언어로 하는 것은 힘들다. 많은 부분은 데이터기반;data-driven하게 짜야하며 그런 부분에서 동적으로 사용하기 쉬운 스크립트 언어들 – lua, GameMonkey, … – 이 빛을 발한다. 게임 좀 개발했다는 회사들치고 내부 스크립트 언어나 잘 커스터마이징된 기존 스크립트언어가 없는 곳은 아마 없을걸?
  • 게임 로직의 동기화문제. 여러 개의 게임 객체들이 하나의 상태를 공유하게 되는데, 이를 동기화하면서도 클라이언트 쪽에서 예쁘게 보이게 하기 위한 방법들은 상당한 다양성과 장단점들을 가지고 있다. 이런 것에 대한 이해가 게임 월드 자체를 시뮬레이트하는 쪽에서는 필수적으로 알아야 한다.
  • 각 네트웍/시스템 프로그래밍 API의 코너 케이스에 해당하는 부분들에 대한 간략한 리스팅. 게임 서버 프로그래밍을 할 때에는 네트웍/멀티스레딩 등등에서 정말 수많은 함정들이 기다리고 있다(…).
  • 인증 / 보안 관련 이슈들. 클라이언트는 적의 손에 란 말이 있다(물론 서버도 약간은 적의 손에 있다 ). 클라이언트가 사실 상 해킹당한 상태에서도 서버에서 이를 인지하고, 대응하기 위한 방법들을 설명해줄 필요가 있다.

자 이정도의 내용을 다루는 책이 있으면 누가 좀 소개시켜줘 봅시다. 후배들이 책 좋은거 말해달랠 때 추천이라도 해줄 수 있게 -_-a

Author: rein

나는 ...

12 thoughts on “게임 서버 관련된 책들을 보면”

  1. 그 정도의 전문 서적은 수요가 매우 작기 때문 아닐까? 아무래도 진지한 프로그래머들보다는 워너비들을 겨냥하는 게 더 많이 팔린다고 판단한 거 아닐까?

  2. deisys, Azyu / 님들하 맨허껨

    Rica / 책이 나오는 걸 보면 수요가 없는것은 아닌거 같은걸; 근데 제대로 된 책은 본 적 없지? -_-;

  3. Pingback: East Agent's Blog
  4. 참 필요한내용을 잘 정리해두셧네요

    저도 이런책을 원하는데 다 기초이야기박에 없고 기초도 시스템적으로 파고든이야기도아니고

    동기화객체 설명이나 잇고 서버 리뉴얼을 해야하는데 도움을 받을만한게 없네요

    잘 보고 갑니다

    혹 그런책을 보신다면 메일점주세요 ^^

Leave a Reply