네트워크 기초부터 고성능 서버 제작 기술까지 프라우드넷 개발자의 경험을 고스란히 담았다!
<세븐나이츠>, <마블 퓨처 파이트>, <마비노기 영웅전>, <스트라이트 파이터5> 등 전세계 13개국, 190개 이상의 다양한 게임에서 사용 중인 서버 네트워크 엔진 프라우드넷(ProudNet)을 개발한 저자의 지식과 실전 경험을 여러분의 것으로 만드십시오! 게임 서버 프로그래머로서의 입지가 단단해질 것입니다.
게임 서버 개발자는 무슨 책으로 공부하나요?
수십만 명의 유저가 함께 게임을 즐기는 온라인 멀티플레이 게임에서 서버는 중요한 위치를 차지하지만, 클라이언트 측 관련 서적이 많은 것에 비해 게임 서버/백엔드 분야를 다루는 책은 드뭅니다. 이 책은 게임 서버를 공부하고 싶은데 어떻게 해야 할지 몰라서 막막했던 초보자부터, 현재 게임 서버 개발과 관련된 일을 하고 있으나 기본기를 다지고 싶은 중급자까지 볼 수 있는 책입니다. 멀티스레딩, 컴퓨터 네트워크, 소켓 프로그래밍, 동기화, 데이터베이스 기초, 서버 아키텍처까지 서버 개발자가 알아야 할 방대한 내용을 A부터 Z까지 구체적으로, 이해하기 쉽게 풀어서 설명합니다.
국내 최초 게임 서버 엔진을 개발하고 상용화한 프라우드넷 개발자의 노하우를 담았습니다!
국내 최초로 게임 서버 엔진인 프라우드넷을 개발하고 상용화한 저자의 실전 경험과 노하우를 책 한 권에 담았습니다. 네트워크 기초 지식은 물론, 온라인 멀티플레이 게임에서 안정적인 서비스를 제공하는 서버 엔진을 구축, 개발, 관리할 때 필요한 노하우를 고스란히 얻을 수 있을 것입니다.
1장 멀티스레딩
1.1 프로그램과 프로세스
1.2 스레드
1.3 멀티스레드 프로그래밍은 언제 해야 할까?
1.4 스레드 정체
1.5 스레드를 다룰 때 주의 사항
1.6 임계 영역과 뮤텍스
1.7 교착 상태
1.8 잠금 순서의 규칙
1.9 병렬성과 시리얼 병목
1.10 싱글스레드 게임 서버
1.11 멀티스레드 게임 서버
1.12 스레드 풀링
1.13 이벤트
1.14 세마포어
1.15 원자 조작
1.16 멀티스레드 프로그래밍의 흔한 실수들
1.17 심화 내용 및 더 읽을거리
2장 컴퓨터 네트워크
2.1 컴퓨터 네트워크를 구성하는 기기
2.2 인터넷
2.3 컴퓨터 네트워크 데이터
2.4 컴퓨터 네트워크 식별자
2.5 컴퓨터 네트워크의 품질과 특성
2.6 컴퓨터 네트워크에서 데이터 보내기와 받기
2.7 패킷 유실시 UDP와 TCP에서 현상
2.8 주로 사용하는 메시지 형식
2.9 네트워크 주소 변환
2.10 요약
2.11 더 읽을거리
3장 소켓 프로그래밍
3.1 블로킹 소켓
3.2 네트워크 연결 및 송신
3.3 블로킹과 소켓 버퍼
3.4 네트워크 연결받기 및 수신
3.5 수신 버퍼가 가득 차면 발생하는 현상
3.6 논블록 소켓
3.7 Overlapped I/O 혹은 비동기 I/O
3.8 epoll
3.9 IOCP
3.10 더 읽을거리
4장 게임 서버와 클라이언트
4.1 패키지 게임에서 게임 서버
4.2 온라인 게임에서 게임 서버
4.3 서버의 역할
4.4 게임 클라이언트와 서버의 상호 작용
4.5 게임 서버가 하는 일
4.6 게임 서버의 품질
4.7 플레이어 정보의 저장
4.8 서버 구동 환경
4.9 서버 개발 지침
4.10 더 읽을거리
5장 게임 네트워킹
5.1 UML
5.2 게임 플레이 네트워킹
5.3 레이턴시 마스킹
5.4 넓은 월드, 많은 캐릭터 처리
5.5 실시간 전략 시뮬레이션 게임에서 네트워크 동기화
5.6 실제 레이턴시 줄이기
5.7 게임 플레이 이외의 네트워킹
5.8 해킹과 보안
5.9 요약
6장 게임 네트워크 엔진 프라우드넷
6.1 게임 서버, 네트워크 엔진
6.2 개발 환경과 기본 모듈
6.3 게임 클라이언트-서버 간 통신
6.4 메시지 주고받기
6.5 와이파이 셀룰러 연결 핸드오버 기능
6.6 원격 메서드 호출
6.7 클라이언트끼리 P2P 통신
6.8 예시: 채팅 처리
6.9 스레드 모델
6.10 더 읽을거리
7장 데이터베이스 기초
7.1 플레이어의 정보 저장
7.2 데이터베이스 사용
7.3 데이터베이스의 데이터 구성
7.4 데이터베이스 시작
7.5 SQL 질의 구문
7.6 인덱스와 키
7.7 플레이어 정보를 데이터베이스에 저장하는 방법 1
7.8 플레이어 정보를 데이터베이스에 저장하는 방법 2
7.9 질의 구문 실행
7.10 게임 서버에서 질의 구문 실행
7.11 보안을 위한 주의 사항
7.12 더 읽을거리
8장 NoSQL 기초
8.1 관계형 데이터베이스와 NoSQL
8.2 관계형 데이터베이스에서 확장성
8.3 관계형 데이터베이스에서 고가용성
8.4 MongoDB를 위한 JSON 이해
8.5 MongoDB 시작
8.6 MongoDB에 데이터 액세스
8.7 성능 분석 기능
8.8 MongoDB 수평 확장
8.9 게임 서버에서 MongoDB 명령 실행
8.10 요약 및 더 알아보기
9장 분산 서버 구조
9.1 수직 확장과 수평 확장
9.2 서버 분산이 없다면?
9.3 고전적인 서버 분산 방법
9.4 논리적 단일 서버 분산
9.5 데이터 분산 vs 기능적 분산
9.6 로직 처리의 분산 방식들
9.7 데이터 응집도
9.8 기능적 분산 처리
9.9 분산 처리를 엄선해야 하는 이유
9.10 분산 처리 전략
9.11 분산 서버의 또 다른 장점
9.12 고가용성
9.13 데이터베이스의 분산
9.14 요약
10장 분산 서버 구조 사례
10.1 로그온 처리의 분산
10.2 데이터베이스의 수평 확장
10.3 매치메이킹의 분산 처리
10.4 몬스터 NPC 처리의 분산 처리
10.5 플레이어 간 상호 작용 분산 처리
10.6 로그 및 통계 분석의 분산 처리
10.7 게임 장르별 분산 서버 형태
10.8 요약 및 결론
독자의견 남기기