close
더북(TheBook)
search
게임 서버 프로그래밍 교과서
더북(TheBook)
home
Home
1장 멀티스레딩
1.1 프로그램과 프로세스
1.2 스레드
1.3 멀티스레드 프로그래밍은 언제 해야 할까?
1.3.1 오래 걸리는 일 하나와 빨리 끝나는 일 여럿을 같이 해야 할 때
1.3.2 어떤 긴 처리를 진행하는 동안 다른 짧은 일을 처리해야 할 때
1.3.3 기기에 있는 CPU를 모두 활용해야 할 때
1.4 스레드 정체
1.5 스레드를 다룰 때 주의 사항
1.6 임계 영역과 뮤텍스
1.7 교착 상태
1.8 잠금 순서의 규칙
1.9 병렬성과 시리얼 병목
1.10 싱글스레드 게임 서버
1.11 멀티스레드 게임 서버
1.12 스레드 풀링
1.13 이벤트
1.14 세마포어
1.14.1 세마포어의 또 다른 용도
1.15 원자 조작
1.16 멀티스레드 프로그래밍의 흔한 실수들
1.16.1 읽기와 쓰기 모두에 잠금하지 않기
1.16.2 잠금 순서 꼬임
1.16.3 너무 좁은 잠금 범위
1.16.4 디바이스 타임이 섞인 잠금
1.16.5 잠금의 전염성으로 발생한 실수
1.16.6 잠금된 뮤텍스나 임계 영역 삭제
1.16.7 일관성 규칙 깨기
1.17 심화 내용 및 더 읽을거리
2장 컴퓨터 네트워크
2.1 컴퓨터 네트워크를 구성하는 기기
2.1.1 OSI 모델
2.1.2 OSI 모델의 계층 2
2.1.3 OSI 모델의 계층 3
2.2 인터넷
2.3 컴퓨터 네트워크 데이터
2.3.1 스트림 형식
2.3.2 메시지 형식
2.4 컴퓨터 네트워크 식별자
2.5 컴퓨터 네트워크의 품질과 특성
2.5.1 네트워크의 품질을 저해하는 것들
2.5.2 전송 속도와 전송 지연 시간
2.5.3 네트워크 품질 기준 세 가지
2.5.4 무선 네트워크의 품질
2.6 컴퓨터 네트워크에서 데이터 보내기와 받기
2.6.1 UDP 네트워킹
2.6.2 TCP 네트워킹
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.6.1 안정성
4.6.2 확장성
4.6.3 성능
4.6.4 관리 편의성
4.7 플레이어 정보의 저장
4.8 서버 구동 환경
4.9 서버 개발 지침
4.10 더 읽을거리
5장 게임 네트워킹
5.1 UML
5.1.1 UML 시퀀스 다이어그램
5.2 게임 플레이 네트워킹
5.2.1 모든 역할을 서버에서 하기
5.2.2 렌더링은 클라이언트에서 하기
5.2.3 추측항법
5.3 레이턴시 마스킹
5.4 넓은 월드, 많은 캐릭터 처리
5.5 실시간 전략 시뮬레이션 게임에서 네트워크 동기화
5.6 실제 레이턴시 줄이기
5.7 게임 플레이 이외의 네트워킹
5.8 해킹과 보안
5.8.1 네트워크 해킹
5.8.2 클라이언트 컴퓨터 해킹
5.8.3 서버 컴퓨터 해킹
5.8.4 게임 치트
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.9.1 트랜잭션
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.6.1 생성(create)
8.6.2 읽기(read)
8.6.3 업데이트(update)
8.6.4 지우기(delete)
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.6.1 동기 분산 처리
9.6.2 비동기 분산 처리
9.6.3 데이터 복제에 기반을 둔 로컬 처리
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 요약 및 결론
그림 5-21은 여기까지 내용을 시퀀스 다이어그램으로 표현한 것입니다.
▲ 그림 5-21
두 플레이어가 방을 만들고 들어가는 과정의 시퀀스도
Prev
BUY
Next
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.
Email address