간편결제, 신용카드 청구할인
카카오페이 3,000원
(카카오페이 5만원 이상 결제시, 5/1~5/31 기간 중 1회)
우리카드 3천원/7천원/1만 5천원 즉시할인
3만원/5만원/10만원 이상 결제시
삼성카드 6% (25,380원)
(삼성카드 6% 청구할인)
인터파크 롯데카드 5% (25,650원)
(최대할인 10만원 / 전월실적 40만원)
북피니언 롯데카드 30% (18,900원)
(최대할인 3만원 / 3만원 이상 결제)
NH쇼핑&인터파크카드 20% (21,600원)
(최대할인 4만원 / 2만원 이상 결제)
Close

온라인 게임을 지탱하는 기술

소득공제

2013년 9월 9일 이후 누적수치입니다.

판매지수 46
?
판매지수란?
사이트의 판매량에 기반하여 판매량 추이를 반영한 인터파크 도서에서의 독립적인 판매 지수입니다. 현재 가장 잘 팔리는 상품에 가중치를 두었기 때문에 실제 누적 판매량과는 다소 차이가 있을 수 있습니다. 판매량 외에도 다양한 가중치로 구성되어 최근의 이슈도서 확인시 유용할 수 있습니다. 해당 지수는 매일 갱신됩니다.
Close
공유하기
정가

30,000원

  • 27,000 (10%할인)

    1,500P (5%적립)

할인혜택
적립혜택
  • I-Point 적립은 출고완료 후 14일 이내 마이페이지에서 적립받기한 경우만 적립됩니다.
추가혜택
배송정보
주문수량
감소 증가
  • 이벤트/기획전

  • 연관도서(11)

  • 사은품(3)

이상품의 분류

출판사 서평

현업 게임 개발자가 쓴 온라인 게임 개발 종합 해설서!

온라인 게임 프로그래밍은 게임 개발 기술뿐 아니라 네트워크에 대한 고급 지식도 필요하다는 점에서 고도의 기술을 요하는 프로그래밍 가운데 하나다. 또한 운영 측면에서 많은 사용자의 접속을 원활하게 처리해야 하는 대표적인 초대형 서비스다. 이 책에서는 상용 수준의 기술 예제를 바탕으로 이러한 온라인 게임 개발 및 운용 기술을 상세하게 설명한다.

온라인 게임 개발 기초 지식, 아키텍처, C / S MMO 및 P2P MO 게임 실전 개발, 서버 / 인프라 구축 등 온라인 게임을 뒷받침하는 모든 기술을 알기 쉽게 설명하고 있어 게임 업계에 관심 있는 학생이나 초보 개발자, 그리고 게임은 아니지만 서버 관리 등 IT 서비스 분야에서 일하는 사람들에게 많은 도움이 될 것이다.

이 책은 리얼타임 통신을 하고 대량의 통신량을 동반하는 멀티플레이어 타입의 게임 개발에 중점을 두고 설명하고 있으며, 일반 프로그래머가 고가의 미들웨어나 특수한 개발환경을 이용하지 않고도 온라인 게임을 제작할 수 있게 철저히 기초 지식을 설명합니다. 책에서 예로 드는 일반적인 코드에 대해서도 C/S MMO 게임과 P2P MO 게임의 두 가지 패턴을 기술합니다. 아울러 게임의 운영이나 인프라에 관한 주제도 소개함으로써 온라인 게임 개발 기술의 전체적인 면모를 살펴볼 수 있습니다. 이 책의 내용은 프로그래머를 대상으로 하지만 온라인 게임을 둘러싼 기술의 전체적인 개요를 살펴볼 수 있다는 점에서 온라인 게임 비즈니스에 뛰어들고자 하는 게임 프로듀서나 기업 경영자, 혹은 온라인 게임에 관심이 있는 여러분들께 도움될 것입니다.

이 책에서 다루는 내용

제0장 [속성] 온라인 게임 프로그래밍
- 네트워크 × 게임 프로그래밍 기술 기초
제1장 온라인 게임의 역사와 진화
- 게임이 「네트워크」를 도입하다!
제2장 온라인 게임이란 무엇인가?
- 다양한 각도에서 보는 「온라인 게임」
제3장 온라인 게임의 아키텍처
- 게임의 재미와 기술적인 제약과의 싸움
제4장 [실전] C/S MMO 게임 개발
- 상시 가동하는 서버
제5장 [실전] P2P MO 게임 개발
- 전용 서버 없이 액션 게임을 구현한다
제6장 온라인 게임의 보조 시스템
- 서비스 강화를 위해 빠질 수 없는 장치들
제7장 온라인 게임 운영을 뒷받침하는 인프라
- 구축, 부하 테스트, 운영 개시
제8장 온라인 게임의 개발 체제
- 팀 운영의 과제

목차

제0장 [속성] 온라인 게임 프로그래밍

0.1 [온라인 게임 프로그래밍을 위한] 네트워크 프로그래밍의 기초
네트워크 프로그래밍은 필수(!)
네트워크 프로그래밍, 인터넷 프로그래밍
인터넷 프로그래밍의 역사와 사상
OSI 참조 모델
온라인 게임 시스템과 레이어
레이어4는 대부분의 경우 TCP를 사용하고, 레이어3 이하는 직접적인 조정이 필요 없음
레이어5 이상은 게임단에서 구현한다
소켓 API의 기초 지식
온라인 게임과 소켓 API
커넥션 지향(스트림형), 커넥션리스 지향(데이터그램형)
0.2 [소켓 프로그래밍 입문] 복수의 동시 접속을 처리, 성능을 추구한다
통신로의 특정
소켓 API의 기본
TCP 통신로의 상태 전이와 소켓 API
복수의 동시 접속을 처리한다
동기적 호출(블로킹)과 스레드
스레드 방식의 처리 부하 문제
싱글 스레드, 논블록킹, 이벤트 구동
온라인 게임에서의 입출력 구현의 특징
온라인 게임과 구현 언어
성능의 최대화 & 개발 효율 향상
온라인 게임 고유의 특성에 의한 언어별 성능 차이
멀티코어 서버의 성능을 끌어낸다
컨텍스트 스위치 CPU의 설정 상태를 일시적으로 보관해 둔다
멀티코어 머신이며 서버 프로세스 수를 너무 늘리지만 않으면 OK
멀티코어 머신과 네트워크의 스루풋
이더넷 프레임
네트워크 계층별 헤더
멀티코어 머신의 송신 능력
서버 구현의 간소화
libevent의 특징
0.3 [RPC 공략] 최소 기능의 통신 미들웨어
통신 라이브러리의 필요성
포맷을 결정하고 송수신한다
온라인 게임에서 사용하는 RPC의 전체적인 모습
RPC 스터브 코드를 자동 생성하는 RPC 툴
온라인 게임과 바이너리 데이터 교환 포맷/라이브러리
[보충] UDP의 이용
0.4 게임 프로그래밍의 기초
게임 프로그래밍의 역사
[점만 찍을 수 있다면 게임은 만들 수 있다] 인베이더 게임
가상의 코드로 알 수 있다! 게임 프로그램의 기본 해부
초기화
무한 루프
각 스프라이트의 동작 게임 로직의 본체
화면 표시
서브루틴
게임 프로그래밍의 비결
두 가지 프로그래밍 기법의 유사성
0.5 요약

제1장 온라인 게임의 역사와 진화

1.1 온라인 게임의 기술사
온라인 게임의 역사는 아직 50년
1950년 이전 : 계산기의 등장
1950년대: 초기 비디오 게임
1960년대 : 영향력을 가진 각종 머신의 등장
1970년대: 온라인 게임 기본 요소가 갖추어짐
1980년대: 네트워크 대전 게임의 등장
1990년대: 게임 시장의 확대
2000년대 전반 : 온라인 게임의 상업적 성립
2000년대 후반: 웹 브라우저 기반 MMOG의 상업적 성공
2010년대 이후 : 과연 어떤 일이 일어날 것인가?
1.2 [기술의 변천에서 알 수 있는] 게임 문화/경제권
기술의 변천도를 읽자
3개의 영역(카테고리)
해커 문화권
콘솔/아케이드 게임 비즈니스권
마이크로소프트권
두 가지의 게임 경제/문화권
문화, 경제, 기술의 관계
1.3 요약

제2장 온라인 게임이란 무엇인가?

2.1 [온라인 게임]이라는 용어의 정의
온라인 게임의 4개의 측면
2.2 온라인 게임의 물리적 측면
물리적 구성요소
컴퓨터 네트워크
물리 모델/ 물리적인 네트워크 구성
이 책이 대상으로 하는 회선은 [인터넷] 기반
2.3 온라인 게임의 개념적인 측면
온라인 게임과 기본구조
게임 플레이의 기본 [인지], [판단], [조작]의 반복
비디오 게임의 구조
게임 플레이 공간
게임의 진행
하나의 게임의 진행을 공유한다
공유가 [가능하다]
2.4 온라인 게임의 비즈니스적 측면
비즈니스적 관점의 요구
테스트 플레이어를 효과적으로 모으고 싶다
클로즈 베타 테스트(CBT)
오픈 베타 테스트(OBT)
자주 갱신하고 싶다
(1) 정기적 패치
(2) 대규모 패치(확장 디스크, 추가 패키지)
(3) 긴급 메인터넌스
머신의 대수와 회선 대역을 절약하고 싶다
(1) 인건비& (2) 설비 코스트 운영, 개발 후에 소요되는 코스트가 큼
머신 코스트의 견적 서버가 고장 날 확률을 포함해 둔다
회선 코스트의 견적 대역은 가능한 절약한다
작게 시작하고 싶다. 스케일러빌러티를 지니게 하고 싶다
다양한 과금 옵션을 제공하고 싶다
게임 포인트의 등장 과금의 세분화, 리얼타임화의 실현
공격자를 저렴한 비용으로, 빨리, 확실히 배제하고 싶다
상업적 의도의 어뷰즈
상업적 의도가 없는 어뷰즈 여러 가지의 공격, 3D 온라인 게임 전용 게임 클라이언트
서비스 정지 시간과 횟수를 줄이고 싶다
(1) 계획적인 메인터넌스로 인한 정지
(2) 결함이나 공격에 의한 서비스 정지
게임 플레이 결과를 피드백하고 싶다
게임 플레이의 메타 정보
(1) 하이스코어 랭킹
(2) 플레이 실적
(3) 그 외의 통계
한층 더 고도의 기술이 요구되는 플레이 실적
더욱 간단하게 다른 플레이어와 만날 수 있게 하고 싶다
(1) 자동 선택식
(2) 전용 로비
(3) 가상 세계(비쥬얼 로비, 버추얼 로비)
전용 로비 형식과 가상 세계의 차이점
플레이어 매칭의 향후
2.5 온라인 게임의 사람과 조직적 측면
온라인 게임 서비스의 운영에 관한 사람들
세 가지 기능과 분담 패턴
온라인 게임 서비스 운영의 3가지 전문 기능
만드는 사람들
반드시 필요한 4가지 직종
소규모 팀
대규모 팀
직종의 밸런스에서 엿볼 수 있는 게임 개발의 특유한 점 데이터 작성 스텝의 비율
운용하는 사람들
서버 설비
2.6 온라인 게임 프로그래머에 요구되는 지식군
온라인 게임 프로그래머에 필요한 능력과 경험
프로그래밍 기초 스킬
게임 프로그래밍의 기초 지식(온라인 게임 개발에서도 필요)
게임 클라이언트 개발 지식
DB 지식
시스템 운용 지식S
여러 방면에서 필요한 온라인 게임의 개발 지식
2.7 온라인 게임을 뒷받침하는 기술의 대구분
온라인 게임을 뒷받침하는 기술의 4가지 형식
C/S형과 P2P형 물리적인 구조의 두 가지 전형적 패턴
MMO형과 MO형 논리적인 구조의 두 가지 전형적 패턴
온라인 게임의 4가지 형식 물리적 구조×논리적 구조
2.8 개발 코스트를 좌우하는 기술적 포인트
온라인 게임과 개발 기법의 현재
온라인 게임의 게임 본체를 뒷받침하는 3가지 축
게임 데이터 형식
게임 통신 형식
게임 반응속도
2.9 요약

제3장 온라인 게임의 아키텍처

3.1 [게임 프로그램의 특성] 좋은 리스폰스를 계속해서 유지한다
리스폰스의 중요성
온 메모리가 필요한 이유
(1) 16밀리초마다 변화
게임 진행을 표현하는 데 필요한 정보와 그 사이즈
RDBMS를 이용해 구현할 수 있을까? 온 메모리와의 비교
(2) 대량의 오브젝트 표시
패밀리컴퓨터와 CPU 사이클
플레이스테이션 3(PS3)과 CPU 사이클 RDBMS 방식으로 개발할 수 있을까?
(3) 플레이어의 조작을 예상할 수 없다
RDBMS 방식으로는 실현할 수 없는 정보량, 처리 속도
CPU와 동일 머신에 게임 진행 데이터를 배치해야 한다
3.2 온라인 게임 특유의 요소
통신 레이턴시
통신 시간의 내역
피할 수 없는 지연 지연과 게임 장르
대역
서버 머신
보안
치트 최대의 보안 이슈
치트는 왜 행해지는가?
치트 행위의 수단
치트의 조작 대상
노이먼형 컴퓨터의 숙명 치트 행위에 대한 방지 서비스
무서운 치트 행위의 파급 효과
보조 시스템(주변 시스템)
3.3 물리 아키텍처의 상세 해부 C/S형, P2P형
기본적 네트워크 토폴로지
실제로 사용되는 것은 스타와 버스, 풀 메시 통신 레이턴시의 최소화
물리 아키텍처의 종류
C/S형
리플렉터형
P2P형
NAT 트래버설
C/S+P2P 혼합형
adhoc 모드
3.4 논리 아키텍처의 상세 해부 MO형
MO, MMO란?
MMO와 MO의 하이브리드(혼합)
MO형, MOG
동기식
동기식/풀 메시형의 구현
각 단말(플레이어)이 송수신하는 정보의 내용
동기식/풀 메시형에 필요한 조건과 메리트
동기식/풀 메시형의 3가지 문제점 통신망과 송수신의 완전성의 취약점, 게임의 중도 참가
통신로의 신뢰성
[가장 느린 단말의 속도에 맞춰진다]는 문제
동기식/스타형
스타형이 가지고 있는 4가지 문제
동기식 전반의 큰 문제 게임 도중에 참가할 수 없다
동기식의 메리트와 문제 해결 방법
비동기식
비동기식의 구현 방침의 세우는 방법 게임 내용의 상세한 분석이 필수
3가지 기본 요소 [자신], [상대], [환경]
3가지 요소의 관계
(1) 자신과 상대
격투 게임의 예
공격, 방어, 타격 판정
격투 게임의 시퀀스 그림
추상도가 낮은, 원인을 알 수 있는 데이터를 송신할 필요가 있다 결과의 납득
결과가 어긋나는 문제 발생!
결과의 정합성을 유지하는 방법
데미지를 발생시킨 쪽의 결과를 사용한다
데미지를 받은 쪽의 결과를 사용한다
방식 선택의 원칙 플레이어의 만족감 향상을 위해
(2) 자신과 환경
배타 제어가 필요한 타입의 환경 요소 경합하는 자원 [폭탄]
배타 제어가 필요 없는 타입의 환경 요소 줄지 않는 자원 [물]
게임의 환경 요소는 의외로 다루기 어렵다 일단 게임 내용을 상세하게 이해한다
배타 제어의 구현
아이템 듀프 문제
아이템에 고유한 ID를 부여한다 듀프가 일어났는지를 판정, 발생하는 문제
아이템 듀프의 대책 중재 역할의 소프트웨어를 배치한다.
중재역의 기본 기능과 사용법
폭탄 이외의 환경 요소의 경우
자동적으로 상태가 변화하는 환경
동적인 환경에서 일어나는 문제 완전하게 병행 관리하는 방법으로는 어렵다
동적 환경에서 일어나는 문제의 대처법 선택
(1) 상대와 환경의 관계
3.5 논리 아키텍처 상세 해부 MMO형
MMO형, MMOG
영속적이란? 게임 플레이 소요 시간과 축적성
영속적인 데이터, 대량으로 축적되는 데이터의 일관성 유지의 어려움
클라이언트와 서버의 완전 분리
MMOG의 구조
MMO형의 구현 방침 브라우저식, 순수한 C/S모델
브라우저식과 동기식 및 비동기식의 차이
MMO형에 있어서 서버, 클라이언트의 기능
서버의 처리 서버 측의 게임은 계속 진행된다.
MMO형만의 과제
3.6 정리

제4장 [실전] C/S MMO 게임 개발

4.1 온라인 게임 개발의 기본적인 흐름
프로젝트 자료/성과물
준비와 초기 구현은 동시에 병행한다
개발의 진행과 자료 준비의 순서
기술자의 자료/성과물
4.2 C/S MMO 게임의 경향과 대책
C/S MMO 게임의 특징
C/S MMO형(MMO형) 게임의 특성
C/S MMO형의 제약
4.3 [기획 자료와 5개의 설계 자료] 가공의 게임 [K Online]의 개발에서 배운다
샘플 게임의 소재 찾기
기획 상세 자료
기획 상세 자료의 필요성
MMOG의 방대한 게임 설정
5가지 설계 자료
설계상의 중요한 판단
4.4 [1]시스템 기본 구조도의 작성
시스템 기본 구조도의 기본
확장성을 가진 서버 시스템이 필요
다양한 보틀넥 스케일업 방식의 선택에 대해서
게임 서버/DB의 보틀넥을 해소한다
아무것도 고려하지 않는 경우
공간 분할법
공간 카피
인스턴스법
패러렐 월드 방식
가장 보틀넥이 되기 쉬운 것은 DB의 쓰기 처리
패러렐 월드 방식의 DB 분할
패러렐 월드 방식의 문제
복수의 방법을 병용
각 방식의 도입 난이도
각 월드의 DB(게임 DB) 서버의 절대 성능 향상
애플리케이션단의 개선점 연구
K Online의 설계 사이징
보틀넥의 확인
설계 사이징에 대한 판단 원칙
게임 로직의 처리 부하로부터 사이징
게임 DB의 처리 부하로부터 사이징
규모에 대한 최소한의 검토 결과, 보다 나은 유저 체험을 위하여…
서버의 기본 구조, [1]시스템 기본 구조도의 작성
4.5 [2]프로세스 관계도 작성
[2] 프로세스 관계도 준비
서버 접속 구성
서버의 접속 구성
패러렐 월드 방식을 사용하여 확장하는 경우
4.6 [3] 대역/머신 리소스 계산 자료의 작성
프로세스 리스트를 토대로 머신 리소스를 사이징
CPU 센트릭(중심적, 의존적) 머신, 스토리지 센트릭 머신
머신 리소스의 코스트 견적
머신 리소스 유지 코스트
대역 코스트의 견적
트래픽의 98%가 플레이어/NPC의 이동 통지이다
대역 반감을 위한 지침
기획의 조정 대역 삭감 작전 [1]
프로그램을 연구 대역 삭감 작전 [2]
대역 삭감에는 기획 내용의 재검토가 효과적
4.7 [4] 프로토콜 정의 자료의 작성 프로토콜의 기본적인 성질
[4] 프로토콜 정의 자료의 기본
[프로토콜의 기본적인 성질]의 핵심요소
프로토콜의 종류와 프로세스 관계의 종류
8 종류의 프로토콜
C/S MMO에서는 TCP를 이용한다
[프로토콜의 기본적인 성질]과 그 대응 일람표
프로토콜 설계의 기본 전략
4.8 프로토콜 정의 자료 프로토콜의 API 사양(개관)
프로토콜 구현의 원칙
백엔드에 기본/범용 기능을, 프론트엔드에 전용 기능을 구현한다
백엔드에 프론트엔드가 의존하는 구조
프로토콜은 스테이트리스&단순한 기능으로 한다
외부로부터 오는 예외적 현상은 한 곳에 집중시킨다
우수한 API의 호출 시퀀스 호출하지 않는 것이 우수!?
8가지 프로토콜의 기능/형태 개요
gmsv 프로토콜
loginsv 프로토콜
msgsv 프로토콜
dbsv 프로토콜
worldsv 프로토콜
commondbsv 프로토콜
authsv 프로토콜
logsv 프로토콜
4.9 [4] 프로토콜 정의 자료 프로토콜의 API 사양(상세)
프로토콜의 API 사양(상세) 작업
API의 함수 정의
gmsv 프로토콜
API 타입과 메시지의 특성
loginsv 프로토콜
msgsv 프로토콜
dbsv 프로토콜
worldsv 프로토콜
commondbsv 프로토콜
authsv 프로토콜
logsv 프로토콜
정수 정의
API의 호출 시퀀스
필요한 시퀀스도 복수의 프로세스가 관계하는 일반적인 처리란 무엇인가?
(1) 인증
(2) gmsv의 캐릭터 작성
(3) gmsv, msgsv에 로그인
(4) gmsv로부터 로그아웃
(5) gmsv의 캐릭터 이동
(6) gmsv의 캐릭터 인벤토리 조작(숍, 트레이드)
(7) msgsv의 친구 목록에 친구를 추가, 삭제
(8) 온라인 친구에게 메시지를 송신한다.
시퀀스도의 작성 포인트
4.10 [4] 프로토콜 정의 자료 패킷의 포맷
C/S MMO에서는 주로 TCP를 이용한다
C/S MMO는 전용 바이트 배열을 가지는
바이너리 프로토콜을 사용한다
바이너리 프로토콜의 구현
레코드의 크기
헤더
데이터 부분의 압축과 암호화
구현상의 요령
4.11 DB 설계도
중요한 테이블의 설계는 프로그래밍을 시작하기 전에
C/S MMO에서의 DB 구현의 역사적 변천
70~80년대:데이터의 영속화 없음. 부활의 주문
90년대:파일로 저장
2000년대 전반~:RDBMS
K Online에 필요한 테이블 추려내기
영속화가 필요한 정보와 데이터의 포함 관계
데이터의 특성과 개별 테이블의 준비
DB의 성능 예측
DB의 처리 성능과 사이즈
테이블의 특성, 주의해야 할 테이블
발행하는 쿼리의 내용 read편
발행하는 쿼리의 내용 write편
4.12 서버/클라이언트 소프트웨어+미들웨어 실전에 빠뜨릴 수 없는 개발 기반
온라인 게임의 미들웨어
C/S MMO용의 미들웨어
풀 장비형 미들웨어
소규모형 MMOG 미들웨어
통신 미들웨어만을 이용
개발 기반 소프트웨어 즉시 시험해 볼 수 있는 C/S MMO 개발 체험
서버 관련 소프트웨어
클라이언트 관련 소프트웨어
4.13 프로그램을 작성할 때 기본 원칙
프로그래밍을 시작하는 방법, 이어가는 방법
데이터 구조 우선의 원칙
비디오 게임에서의 데이터 분류
데이터 구조를 구현하기 전의 검토
적 캐릭터와 팝 설정
플레이 가능 상태 유지의 원칙
백엔드는 나중에 만든다는 원칙
계속적 측정의 원칙
클라이언트 개발에서의 계속적 측정의 예
서버 개발에서의 계속적 측정
4.14 C/S MMO 게임 [K Online]의 구현 프로그래밍 작업 스타트!
개발의 순서
K Onilne의 분담 계획
K Online에서의 [스켈레톤]과 [프로토타입] 단계 나누기
[스텝 1~2]스켈레톤~프로토타입 단계
스켈레톤 코드의 준비
[1] autocli
[2] cli
[3] 프로토콜
[4] ID
[5] gmsv
[6] dbsv
[작동해 보지 않으면 알 수 없다!]
게임 개발의 난항 기업에 의한 온라인 게임 개발
스켈레톤의 전체 모습
cli의 내용
gmsb, dbsv, proto의 내용
어떤 순서로 무엇을 작성할 것인가
먼저 프로토콜 정의 파일 k.xml를 작성한다
프로토콜 정의 포인트
통신 소통 확인:ping 함수
어카운트 등록&어카운트 인증:
캐릭터 작성:createCharacter 함수
로그인:login 함수
지상 이동:move함수, moveNotify
매스 단위
경로 탐색과 실제 이동 처리
이동 경로를 송신하는 방법 최종 결과를 우선하여 송신한다
이동 결과의 통지 범위
moveNotify 함수
attack 함수, attackNotify 함수
gmsv/Makefile를 작성한다
gmsv/climain.cpp와 gmsvmain.cpp를 샘플에서 카피
sv.cpp에 signup 함수를 구현
[dbsv 1회 왕복]형의 요구와 스레드
자동 테스트 클라이언트 autocli의 구현
테스트 상태 변화
autocli의 main() 함수
signup() 함수
그래피컬 클라이언트 cli의 작성과 동작 확인
SDL
그림을 그린다
동작 확인
폰트 처리의 구현
적을 등장시킨다, 적을 뒤쫓는다
적을 쓰러뜨린다, 경험치가 쌓인다
다음에도 플레이 가능하게 한다 플레이 상태의 저장
스켈레톤 이후의 개발
4.15 정리

제5장 [실전] P2P MO 게임 개발

5.1 P2P MO 게임의 경향과 대책
P2P MO와 액션 게임 게임 상태가 높은 빈도로 변화한다
RPC형의 구현과 공유 메모리형의 구현
P2P MO 게임의 특징
P2P MO 게임의 이점
기획 초기부터 [멀티 플레이]를 의식한다.
5.2 가공의 게임 [J Multiplayer]의 개발에서 배운다
J Multiplayer K Online과 비교
P2P MO 게임 개발의 기본적 흐름
P2P MO 게임 개발의 성과물 개발의 단계와 각종 자료
기획 상세 자료
C/S MMO와의 데이터량/규모의 차이
5.3 P2P MO 게임의 설계 자료
시스템 기본 구조도
프로세스 관계도
스타형인가, 풀 메시형인가
우선은 스타형을 검토한다
게임 도중에 참가하는 구현
대역/머신 리소스 계산 자료
프로토콜 정의 자료, API 사양
프로토콜의 시퀀스도
함수나 정수의 정의
대역 소비량의 사이징
[600분의 1] 게임 기획 내용을 정밀 조사하여 해결책을 찾는다.
그 외의 자료
5.4 서버/클라이언트 소프트웨어+미들웨어, 기본 원칙
P2P MO 개발 성과물의 실제의 모습
P2P MO용 미들웨어
프로그램 작성 시의 기본 원칙
5.5 P2P MO 게임 [J Multiplayer]의 구현
J Multiplayer의 작업 분담 계획
구현 작업의 흐름 K Online의 복습
J Multiplayer의 개발 요령
제1단계에 필요한 요소
클라이언트 프로그램의 구현 예
[공유 메모리형]으로 구현 구현 개시
경합상태 공유 메모리형에서의 주의점
락(Lock)
P2P MO와 경합상태
P2P MO의 구현에서 어떤 방식으로 경합을 방지하는 것이 좋은지에 대한 판단
동기화 관련 구현 예
가동물 열거와 클래스 설계
기본 동작의 취급을 매트릭스화
게임 진행 상태를 변경하는 조작에 대한 사양 정의
PlayerCharacter 처리의 사양 정의
Enemy 처리의 사양 정의 Enemy/Create
Bullet 처리의 사양 정의
공유 메모리를 어떻게 코드화할까
RPC형 C/S MMO의 경우
공유 메모리형 P2P MO의 경우
RPC형의 코딩량 move(5,5)
공유 메모리형의 코딩량 move(5,5)
공유 메모리형의 강점, 약점
[보충]코드를 간략하게 할 수 있을까?
SyncValue 클래스
5.6 C/S MO 게임을 뒷받침하는 기술 [보충]
C/S MO와 NAT 문제
NAT, NAT 문제란?
NAT 트래버셜 접속 통신로를 확립하는 기술
NAT 트래버셜 기술의 한계
NAT 트래버셜 기술을 사용하는 경우의 또 다른 단점
NAT 문제의 현실적 대처
릴레이 서버
릴레이 서버의 트레이드오프
(1) 지연이 커지는 문제
(2) 서버 대역 코스트가 발생하는 문제
5.7 정리

제6장 온라인 게임의 보조 시스템

6.1 보조 시스템에 요구되는 각종 기능
기존 서비스로 알아보는 보조 시스템의 기능
범용
게임기용
웹 브라우저 베이스 게임 전용
기존 미들웨어
기존 서비스의 기능 일람
Web 베이스 개발 방법과 C/S형의 개발 방법
6.2 커뮤니케이션/ 통신 보조 시스템
플레이어 매칭
P2P MO 게임에서 멀티 플레이가 가능한 조건
매칭 서버
멀티 플레이를 실현하는 두 가지 조건의 구체화─J Multiplayer의 경우
멀티 플레이를 실현하는 두 가지 조건의 실현─J Multiplayer의 경우
매칭 결과 화면
로비
로비와 매칭
스타크래프트 II의 예
구현 포인트
릴레이 서버
릴레이 서버에 요구되는 성능
채팅
자작 채팅의 구현
자작 채팅의 기본 동작
메시지 전달의 규모
메일
친구 목록
프레젠스
게임 서비스의 프레젠스 특징
프레젠스의 구현
락 서버
락 서버의 구현
블랙 리스트
블랙 리스트의 구현
보이스 채팅
6.3 게임 클라이언트 구현의 보조 시스템
플레이 실적 관리
플레이 실적 관리의 구현에 대해
스토리지 기능
(게임 클라이언트) 업데이트
업데이트의 기본 기능
업데이트와 액세스 패턴
업데이트 기능을 자작하는 방법
랭킹
랭킹 기능의 구현─온라인 게임 특유의 요구 사항
잠정 랭킹법
6.4 운영 보조 시스템
뉴스 배포
뉴스 전달 방법
6.5 과금 결제 관련 보조 시스템
과금 인증
온라인 게임의 과금
결제 처리의 구조
결제 시퀀스
결제 회사를 사용하는 이점
버추얼 포인트 관리
P2P MO의 경우, C/S MMO의 경우
버추얼 포인트 관리 서버의 구현
버추얼 포인트 관리의 주의점
6.6 그 외의 보조 기능
게임 데이터 열람/검색 툴
플레이 데이터의 저장 상태
깔끔하지 않은 저장 상태
기계도 인간도 읽을 수 있는 형식으로 해 둔다
키워드 검색을 위한 방법 연구
게임 설정 데이터와 DB
워드 필터
6.7 정리

제7장 온라인 게임 운영을 뒷받침하는 인프라

7.1 인프라 구축의 기초지식
C/S MMO와 P2P MO의 인프라[복습]
인프라 구축에 필요한 작업
인프라에 소요되는 코스트와 견적
코스트의 감각, 단위
온라인 게임 서버에서 어느 정도 허용되는 조건
하드웨어, 정보 기기
서버 머신
스토리지
네트워크 스위치
라우터/방화벽
소프트웨어
서버 OS
DBMS
바이러스 스캔 소프트웨어
가상화 소프트
데이터 센터 관련
데이터 센터 이용료
데이터 센터 구축 비용
서비스(데이터 센터 관련 제외)
서버 감시 서비스
도메인 사용료, 전자서명 서비스료
회선 이용료
전기세
7.2 개발자를 위한 인프라 구축 노하우
서비스 스케일의 확대/축소
일반적인 환경
사이징이 어려운 조건
부하 곡선
최초에 피크가 온다는 전제로 설계한다
K Online의 경우
J Multiplayer의 경우
개발자를 위한 인프라 구축의 포인트
서버 디플로이먼트
메인터넌스 시간과 디폴로이먼트의 자동화
스테이징
온라인 게임 고유의 주의점
서버 모니터링, 생사 감시
로그 출력/관리
로그 방침 [가능한 모두], [원인과 결과 양쪽 모두]
로그 출력 방법 추천하는 방법, syslog의 문제점
로그 서버
7.3 K Online, J Multiplayer의 인프라 구축
K Online의 인프라
알파 테스트
클로즈 베타 테스트
오픈 베타 테스트
J Multiplayer의 인프라
일부 보조 시스템은 자작한다
먼저 부하 검증을 실시하여 인프라를 사이징한다
동시 플레이수, 등록 유저수 랭킹의 경우의 일반적인 부하 검증 절차[1]
플레이 스타일을 예측한다 랭킹의 경우의 일반적인 부하 검증 절차[2]
부하 검증 결과를 설계에 반영시킨다.
7.4 부하 테스트
부하 테스트의 준비
K Online의 상용 환경 부하 테스트
K Online의 테스트 시나리오
테스트의 분할
부하 테스트에 필요한 환경
부하 테스트에서 사용하는 서버 감시 커맨드
vmstat, /proc/interrupts
ps
top
netstat
J Multiplayer의 상용 환경 부하 테스트
J Multiplayer의 테스트 시나리오
부하 테스트에 필요한 환경
7.5 운용 개시
운용 개시 직전 시큐리티 설정의 확인부터
시스템 외부로부터의 공격에 대한 시큐리티
시스템 내부의 관리 수단에 관한 시큐리티
운용 개시 직후 시스템 감시
수십 대의 서버를 그룹화
트러블이 발생했을 때의 대응
7.6 요약

제8장 온라인 게임의 개발 체제

8.1 게임의 기획 내용과 개발 팀 온라인 게임 특유의 과제
[게임의 기획 내용]이 팀 운영의 열쇠를 쥐고 있다
게임 데이터의 영속화 정도
운영 개시 후 3개월이 가장 힘들다. 운영은 5~10년 계속한다
게임의 운영과 기술자
실제의 프로젝트 관리에 있어서의 과제
게임에 있어서의 플레이어들 간의 관계
플레이 결과의 공유 범위
채팅 시스템의 내용
메인터넌스와 업데이트의 스케줄
소스 코드의 규모
빌드 시간
프로그램의 기동에 걸리는 시간
평가를 위한 스텝 수
서버 프로그램의 기동 절차
데이터의 밸리데이션
8.2 온라인 게임 개발 팀의 실제 일반 소프트웨어 개발에도 공통되는 화제
작업 분담
온라인 게임 프로그래머의 지속적인 스킬 업 방법
무예의 스텝 업 지침 [수·파·리]에서 배운다
[수]의 단계 흉내부터 시작할 것
[파]의 단계 세미나, 컨퍼런스, 그리고 경계 영역으로 뛰어들 것
[리]의 단계 엔지니어의 스텝 업, 그 다음에 놓여 있는 것은...
프로젝트 관리방법
개발 환경의 선정
프로젝트 이관
테스트 준비
개발 환경의 구축 시간은 짧다
정보 시큐리티의 조절
8.3 요약

본문중에서

지금으로부터 약 20년 전인 고등학교 시절, 밤마다 나는 구세주 아바타가 되어 브리타니아를 여행했다. 활과 석궁의 명수인 음유시인 이올로, 언제나 믿음을 주는 강직한 기사 듀프레, 술과 여자를 좋아하는 레인저 샤미노. 이들은 브리타니아라는 세계에서 둘도 없는 나의 벗이었다.

환상의 세계에서 벗어나 다음날 지친 몸을 이끌고 학교에 가면 이 울티마 6라는 게임을 하는 다른 현실 세계의 친구들과 어젯밤 겪었던 서로의 무용담을 이야기했다.

"야, 어디어디 좌표에 가니까 보물이 숨겨져 있더라",
"아마겟돈 마법을 쓰면 로드 브리티쉬만 남기고 브리타니아의 모든 사람들이 죽는대."
"정말? 해봤어?"
"아니 아직 레벨이 안 돼서 아마겟돈 못써"

이렇게 서로의 정보를 다음 날이 돼서야 조각 맞추듯 공유할 수밖에 없던 우리는 어느 날 놀라운 생각을 해내게 된다.

"우리가 이렇게 따로 떨어져서 게임을 하는 게 아니라 동시에 같이 플레이할 수 있다면 정말 재미있지 않을까?"
"모뎀으로 연결해서 말이지!!"
"맞아, 맞아. 이 브리타니아의 모든 사람이 실제로 살아있는 플레이어이고 게임 안에서의 사람들과의 대화가 곧 실제 사람과의 채팅이 되는 거지"
"그거 괜찮겠다!!"

이 시절의 PC통신이란 2400bps급 모뎀을 이용한 것이었으며, PC통신의 가장 큰 즐거움은 모르는 사람과의 대화, 즉 채팅 정도에 지나지 않았다. 모든 게임은 아니었지만 모뎀을 이용해 1:1대전을 지원하는 게임이 간간히 있었던 것으로 기억한다. 하지만 RPG 장르의 게임에서 모뎀 플레이나 2인용 플레이를 지원하는 게임은 아직 없었다.

그중 조금 똑똑한 친구(공부도 잘했다)가 말을 꺼냈다.

"게임이란 한 사람이 주인공이고 그 사람을 중심으로 하는 스토리가 있고 거기에는 기승전결, 즉 엔딩이 있게 마련이야. 근데 만약 이런 방식이라면 누가 주인공이 되는 거지? 네가 이 게임을 클리어 해버리면 같이 하던 나머지 사람들은 중도에 끝나버리게 돼. 모두가 주인공이라면 그 세계의 스토리는 누구에게 맞춰야 하지? 따라서 이러한 방식은 성립될 수 없어. "

그 친구의 말에 우리는 이렇다 할 해결책을 내놓지 못했다. 인터넷이 존재하지도 않던 그 시절, 우리가 얼마나 대단한 발상을 해낸 것인지도 모르는 채 으레 그러한 대화는 흐지부지 끝나게 마련이었다.

하지만 세월은 흐르고 인터넷이 일반에 보급되기 시작했으며, 그 후 얼마 지나지 않아 그 시절 우리가 꿈꿨던 바로 그러한 방식의 게임이 세상에 나타난다. 그것도 우리가 해결하지 못했던 공부 잘했던 친구가 던졌던 물음을 보란 듯이 해결한 채.

"함께 플레이하는 것의 즐거움"이란 그 어떤 장르의 게임이라도 감히 부정할 수 없는 것이다. 아무리 재미있는 내용과 콘텐츠를 준비한 게임이라도 이 "함께 플레이하는 것의 즐거움"을 뛰어 넘을 수는 없다. 일본의 게임 시장도 이러한 사실을 모르는 것은 아니었다. 하지만 콘솔이 가진 하드웨어의 특성, 또 그동안 이뤄낸 시장에 대한 폐쇄적 자존심, 또 일본 내 PC게임 유저는 극히 드물다는 세 가지 이유로 게임에 네트워크를 접목시키는 작업을 소홀히 하고 만다. 그 사이 한국은 리니지, 라그나로크 등의 타이틀이 흥행에 성공을 거두며 온라인 게임에 관한 한 세계 어느 게임업계보다 앞서 나가게 됐다.
이러한 상황을 고려해 볼 때 이러한 내용의 책이 온라인 게임 강국인 대한민국에서 먼저 출간되지 못했다는 사실이 조금은 안타깝긴 하지만 일본에서 출간됐다는 사실 자체는 무척이나 고무적인 일이다.

이 책의 저자인 나카지마 켄고는 메탈기어 솔리드의 제작자인 코지마 히데오나, 그란투리스모 시리즈의 야마우치 카즈노리와 같은 콘솔 계열에서 활동하는 스타 제작자는 아니다. 어디까지나 매일 매일 코드와 싸워야 하며, 고객과 부딪혀야만 하는 평범한 IT 업계의 프로그래머다. 하지만 오히려 그렇기 때문인지 콘솔 계열의 게임 기획자가 가질 수 없는 서버/인프라에 대한 식견, 프로젝트 운영 노하우, 소프트웨어 개발론 등에 대해 곧바로 현장에서 적용할 수 있는 "자신의 경험에서 비롯된 살아있는 지식"을 독자에게 전해준다.

이 책의 원서 부제가 "장엄한 플레이 공간의 뒷무대"이듯 게임의 가상세계라는 무대의 뒷편에서 벌어지는 일들에 대해 저자는 단순히 코드 위주의 설명을 넘어서는 기획, 기술, 노력, 설비, 관리 등의 폭넓은 관점을 가지고 쫓아나간다.

따라서 이 책은 온라인 게임 업계에 종사하는 사람들을 위한 바이블이 될 수 있을 것이다. 단순히 코드가 궁금한 사람들을 위한 책이 아닌, 이 업계가 업무가 흘러가는 모습은 이러이러하다, 라는 종합적인 식견을 쌓고 싶은 독자가 있다면 반드시 이 책을 읽어보길 권한다. 훗날 게임 업계에 뛰어들 준비를 하고 있는 학생들은 물론이거니와 게임은 아니지만 서버 관리 등 IT서비스 분야에 종사한다면 큰 도움이 될 것이다. 더 나아가 IT 관련 종사자가 아닌, 단지 게임을 좋아하는 사람들에게도 본문의 코드를 이해해야 한다는 의무감만 던져버린다면 부담 없이 읽을 수 있는 흥미로운 내용으로 가득하다.
(/ 옮긴이 서문 중에서)

저자소개

나카지마 켄고(Kengo Nakajima) [저] 신작알림 SMS신청 작가DB보기
생년월일 -
출생지 -
출간도서 0종
판매수 0권

초등학교 시절부터 게임프로그래밍을 시작해 대학에 입학한 후 게임 제작을 시작했다. 1996년 세계 최초로 자바 애플릿을 이용한 mmorpg를 제작했으며, 1998년에는 후속작인 lifestorm을 발매해 히트시켰다. 2001년에는 온라인게임용 미들웨어인 vce를 개발했고, gunmonji를 포함한 독자적으로 개발한 다수의 미들웨어가 50개 사 이상에서 사용 중이다. 현재 두 아이의 아버지로서 일과 육아에 바쁜 나날을 보내고 있다.

생년월일 -
출생지 -
출간도서 0종
판매수 0권

동국대학교 졸업 후, IT 엔지니어 생활을 시작했다. 2000년대 중반부터 일본에서 통신회사 KDDI의 기간시스템을 설계, 구축, 개선했다. 시스템 엔지니어이며, 게임 업계에 몸담고 있지는 않으나 자타가 공인하는 게임마니아이며, 언젠간 자신이 직접 기획한 게임을 만드는 것이 꿈이다. 현재 국내 모 대기업에서 테크니컬 아키텍처로서 일본 관련 프로젝트를 수행 중이다.

이 상품의 시리즈

(총 25권 / 현재구매 가능도서 12권)

펼쳐보기

컴퓨터/인터넷 분야에서 많은 회원이 구매한 책

    리뷰

    0.0 (총 0건)

    구매 후 리뷰 작성 시, 북피니언 지수 최대 600점

    리뷰쓰기

    기대평

    작성시 유의사항

    평점
    0/200자
    등록하기

    기대평

    10.0

    교환/환불

    교환/환불 방법

    ‘마이페이지 > 취소/반품/교환/환불’ 에서 신청함, 1:1 문의 게시판 또는 고객센터(1577-2555) 이용 가능

    교환/환불 가능 기간

    고객변심은 출고완료 다음날부터 14일 까지만 교환/환불이 가능함

    교환/환불 비용

    고객변심 또는 구매착오의 경우에만 2,500원 택배비를 고객님이 부담함

    교환/환불 불가사유

    반품접수 없이 반송하거나, 우편으로 보낼 경우 상품 확인이 어려워 환불이 불가할 수 있음
    배송된 상품의 분실, 상품포장이 훼손된 경우, 비닐랩핑된 상품의 비닐 개봉시 교환/반품이 불가능함

    소비자 피해보상

    소비자 피해보상의 분쟁처리 등에 관한 사항은 소비자분쟁해결기준(공정거래위원회 고시)에 따라 비해 보상 받을 수 있음
    교환/반품/보증조건 및 품질보증 기준은 소비자기본법에 따른 소비자 분쟁 해결 기준에 따라 피해를 보상 받을 수 있음

    기타

    도매상 및 제작사 사정에 따라 품절/절판 등의 사유로 주문이 취소될 수 있음(이 경우 인터파크도서에서 고객님께 별도로 연락하여 고지함)

    배송안내

    • 인터파크 도서 상품은 택배로 배송되며, 출고완료 1~2일내 상품을 받아 보실 수 있습니다

    • 출고가능 시간이 서로 다른 상품을 함께 주문할 경우 출고가능 시간이 가장 긴 상품을 기준으로 배송됩니다.

    • 군부대, 교도소 등 특정기관은 우체국 택배만 배송가능하여, 인터파크 외 타업체 배송상품인 경우 발송되지 않을 수 있습니다.

    • 배송비

    도서(중고도서 포함) 구매

    2,000원 (1만원이상 구매 시 무료배송)

    음반/DVD/잡지/만화 구매

    2,000원 (2만원이상 구매 시 무료배송)

    도서와 음반/DVD/잡지/만화/
    중고직배송상품을 함께 구매

    2,000원 (1만원이상 구매 시 무료배송)

    업체직접배송상품 구매

    업체별 상이한 배송비 적용