이미 소장하고 있다면 판매해 보세요.
|
배송비 안내: 3,300원, [편의점 To 편의점] gsgames에서 15,000원 이상 구매 시 무료배송
배송 안내
① 편의점 To 편의점: 3,300원
15,000원 이상 구매 시 무료배송 (gsgames)
② 배송받을 지역에서 가까운 편의점을
"배송요청사항"에 편의점명(CU / GS25)으로 기입해 주시오.
|
|
|
1장 온라인 게임을 만들자
__1.1 온라인 게임 제작의 실제 ____온라인 게임은 쉽게 만들 수 있다 ____비극은 현장에서 일어난다 ____오프라인 모드와 온라인 모드는 다르다 ____데이터는 곧바로 전달되지 않는다 ____오프라인 게임과 온라인 게임의 게임 디자인 차이 ____비극에서 벗어나려면 __1.2 온라인 게임 제작의 기초 ____온라인 게임의 통신 방식 ____온라인 게임의 게임 디자인 ____데이터의 흐름을 경과 시간으로 생각하자 ____일대일 대전은 네 명이 싸운다? ____오류도 사양의 하나 ____정답은 하나가 아니다 __1.3 이 책에 대해서 ____이 책의 구성 ____예제 게임 ____용어 설명 ____캐릭터 소개 2장 통신 프로그램의 기초 지식 __2.1 피해갈 수 없는 통신의 구조 ____데이터는 어떻게 전달되는가 ____데이터가 사라진다? __2.2 프로토콜 이해하기 ____안심할 수 있는 TCP ____TCP의 장점과 단점 ____속도가 빠른 UDP ____UDP의 장점과 단점 ____온라인 게임에서 사용하는 프로토콜 __2.3 알아두면 좋은 기초 지식 ____지연은 반드시 발생한다 ____통신량을 생각해보자 3장 통신 프로그램을 만들자 __3.1 소켓 프로그래밍을 시작하자 ____소켓이란? ____TCP 소켓 프로그래밍 ____UDP 소켓 프로그래밍 __3.2 네트워크 바이트 오더 ____네트워크 바이트 오더란? ____네트워크 바이트 오더를 고려한 데이터 송수신 __3.3 간단한 통신 라이브러리를 만들어보자 ____왜 라이브러리를 만드는가? ____API를 검토하자 ____이벤트 처리 ____스레드를 사용해보자 ____실제 라이브러리 작성 __3.4 정리 4장 채팅 프로그램을 만들자 __4.1 채팅 프로그램의 프로세스 ____채팅이 진행되는 과정을 생각해보자 ____대화 과정을 생각해보자 __4.2 채팅 프로그램을 만들자 ____시작부터 접속까지 ____채팅 메시지 통신 프로그램 __4.3 정리 5장 턴 방식 게임: 온라인 틱택토 __5.1 어떻게 플레이할지 생각해보자 ____단말 한 대에서 플레이하는 경우 ____단말 두 대에서 플레이하는 경우 __5.2 무엇을 언제 통신할지 생각해보자 ____무엇을 통신할 것인가? ____언제 통신할 것인가 __5.3 프로그램으로 동작시켜보자 ____처리 프로세스를 정리하자 ____프로그램을 작성하자 __5.4 게임 디자인을 생각해보자 ____타임아웃 프로그래밍 방법 __5.5 오류 처리 __5.6 정리 6장 깜찍한 액션 게임: 액션 가위바위보! __6.1 게임 디자인을 생각해보자 ____개요부터 세부 사항까지 ____가위바위보의 규칙을 정하자 ____액션의 규칙을 결정하자 ____오프라인에서 온라인으로 __6.2 무엇을 언제 통신할 것인지 생각해보자 ____가위바위보 부분에서 무엇을 보낼지 생각해보자 ____액션 부분에서 무엇을 보낼지 생각해보자 __6.3 액션 게임의 동작을 생각해보자 ____액션 게임에서 발생하는 문제 ____자연스러운 문제 해결 방법 __6.4 프로그램을 만들어보자 ____전체 프로세스를 생각해보자 ____가위바위보 부분의 통신 ____액션 부분의 통신 __6.5 정리 7장 키 입력 동기 통신 게임: 블록 깨기 __7.1 키 입력을 동기화하자 ____키 입력 동기 구조 ____키 입력 동기의 상태 관리 ____컨트롤러 정보의 추상화와 송신 정보 __7.2 통신 지연을 고려한 키 입력 동기 구조 ____키 입력 지연 ____키 입력 지연을 고려한 상태 관리 ____오류 대책을 생각하자 __7.3 통신 방식을 생각해보자 ____UDP로 통신해보자 ____중복 데이터 재송신으로 패킷 유실도 문제없다 __7.4 프로그램을 동작시켜보자 ____패킷과 시리얼라이저 ____엔디언 판정 ____키 입력 동기 구조를 만들자 ____키 입력 정보 가져오기 ____키 입력 정보의 송수신 ____게임이 끝나도 종료되지 않는다? ____키 입력 정보와 시리얼라이저 __7.5 통신 프로그램의 동작 확인과 디버깅 방법 ____입력 지연과 지연 에뮬레이터 ____통신 디버깅 방법 __7.6 정리 8장 모형 정원 커뮤니케이션 게임 __8.1 게임 디자인을 생각해보자 ____전체 프로세스를 생각해보자 ____접속에 관한 게임 디자인 ____출현에 관한 게임 디자인 ____캐릭터 이동에 관한 게임 디자인 ____아이템에 관한 게임 디자인 ____오류에 관한 게임 디자인 __8.2 통신할 것을 검토해보자 ____무엇을 통신할지 생각해보자 ____캐릭터 이동에서 통신할 정보 ____아이템 획득에서 통신할 정보 ____채팅에서 통신할 정보 ____언제 정보를 반영할지 생각해보자 __8.3 모듈 구성을 생각해보자 ____캐릭터 모듈 ____아이템 모듈 __8.4 정보를 어떻게 통신할지 생각해보자 ____친구가 플레이하러 왔을 때의 동기화 ____캐릭터 좌표의 동기화 ____프레임 추출과 보간 ____스플라인 보간에 따른 캐릭터 이동 ____아이템 획득 ____아이템 폐기 __8.5 프로그램을 만들어보자 ____통신 모듈을 만들자 ____패킷을 간단히 송신하자 ____전체 프로세스를 확인해보자 ____서버 시작과 접속 대기 ____게임 시작 전 동기 통신 ____캐릭터 매니저를 만들자 ____캐릭터 제어와 동작 ____캐릭터 좌표의 통신 ____캐릭터 좌표 보간 ____캐릭터 이사 ____아이템 매니저를 만들자 ____게임 서버의 아이템 조정 ____아이템 획득 ____채팅 ____게임 서버와 게임 애플리케이션의 공존 __8.6 정리 9장 멀티 플레이어 액션 게임 __9.1 전체 프로세스를 생각해보자 ____게임 전체의 프로세스 ____게임 전체의 프로세스 + 통신 __9.2 매칭 서버를 만들자 ____매칭 서버란? ____매칭 과정 ____서버와 클라이언트가 통신할 정보 ____클라이언트의 처리 ____매칭 서버의 처리 ____매칭 오류 대응 __9.3 네트워크 토폴로지를 검토하자 ____네트워크 토폴로지란? ____예제 게임의 네트워크 토폴로지 __9.4 매칭 완료부터 게임 시작까지 ____매칭 완료와 플레이어에게 알리기 ____게임 서버 시작 ____플레이어 ID와 세션 관리 ID ____캐릭터에 표시를 하자 ____난수 생성과 인스턴스화 ____게임 시작에 필요한 정보를 보내자 __9.5 게임을 시작하자 ____캐릭터가 나타날 위치 ____리모트 캐릭터 이동 ____몬스터 이동 ____캐릭터의 공격과 몬스터의 대미지 ____몬스터의 공격과 캐릭터의 대미지 ____방 이동 ____제너레이터의 동기화 __9.6 던전에 있는 편리한 아이템을 활용하자 ____여러 가지 아이템 장치 ____아이템 사용 ____소다 아이스바는 당첨되면 하나 더 ____장비의 동기화 ____소환수를 불러보자 __9.7 보스와 싸우자 ____보스의 이동 ____보스의 공격과 대미지 __9.8 마지막 즐거움 ____보너스 게임: 케이크 쟁탈전 ____오류 대책을 생각하자 __9.9 프로그램을 만들어보자 ____매칭 서버를 만들자 ____매칭 클라이언트를 만들자 ____세션을 관리하자 ____게임 시작 전 동기화 ____캐릭터가 나타나는 위치 ____캐릭터 충돌 ____방 이동 방법 ____아이템 사용과 무기 변경 ____소환수 부르기 ____보스의 이동과 공격 ____보너스 게임 __9.10 정리 샘플 게임 데이터 제작 스태프 찾아보기 |
|
나도 온라인 게임을 만들 수 있을까?
온라인 게임은 누구나 쉽게 만들 수 있다. 단, 오프라인 게임과 온라인 게임의 게임 디자인 차이를 이해해야 한다. ‘오프라인 게임을 만들고 네트워크 기능만 추가하면 온라인 게임’이라는 생각은 망하는 지름길이다. 각 장에서는 ‘만들고자 하는 게임의 게임 디자인을 어떻게 할 것인가’부터 시작한다. 그리고 프로그램을 차례대로 만들어가며 게임 제작 과정을 설명한다. 설명을 따라가면 온라인 게임 고유의 게임 디자인 방법과 게임 디자인을 ‘왜 그렇게 해야만 하는지’를 배울 수 있다. 네트워크 프로그래밍은 처음? 기초부터 활용하는 방법까지! 온라인 게임을 만들 때 데이터 통신의 기초 지식은 필수이므로 피해갈 수 없다. ‘통신=어렵다’는 선입관을 버릴 수 있도록 패킷, IP 주소, TCP, UDP, 지연, 대역 등 기본 사항을 차근차근 단계별로 살펴본다. 데이터를 주고받는 과정을 이해한 다음에는 이와 같은 기초 지식이 게임 디자인에 따라 어떤 방식으로 활용되는지 설명한다. 게임 디자인에 따라 통신 방식이 달라진다. 게임을 제작할 때는 게임 디자인을 가장 먼저 결정해야 한다. 게임 디자인을 결정할 때는 전체 프로세스는 어떻게 되는가? 플레이는 어떻게 진행되는가? 무엇을 언제 통신해야 하는가? 와 같은 큰 그림을 생각한 뒤, 캐릭터는 어떻게 이동하는가? 액션의 규칙은 어떻게 정할 것인가? 아이템은 어떻게 관리할 것인가? 와 같이 작은 그림을 완성해간다. 결정한 게임 디자인에 맞게 통신 방식을 적용한다. 온라인 틱택토(턴 대전 방식), 액션 가위바위보(통신 지연 해결), 블록 깨기(키 입력 동기화), 모형 정원 커뮤니케이션 게임(비동기 통신), 멀티 플레이어 액션 게임(매칭 서버)이라는 5가지 게임 디자인을 통해 다양한 통신 방식을 설명한다. [이 책의 대상 독자] 신입/초보 서버 개발자, 온라인 게임 개발의 기초를 배우고 싶은 학생 신입/초보 온라인 게임 기획자(게임 디자인 및 게임 운영 방식에 대한 기초 학습 가능) [예제소스 다운로드] https://github.com/gilbutITbook/006772 [지은이 서문] 지은이 : 가와다 마사토시 1993년 세가(SEGA) 사에서 '버추얼 파이터'가 발매되었습니다. 그때 텔레비전으로 이 게임을 처음 봤을 때, “어떻게 이런 게임을 만들 수 있을까!”라고 감탄했습니다. 그리고 그 기술을 배우기 위해 게임 업계에 발을 들여놓게 되었습니다. 당시에는 3D 폴리곤 게임을 만드는 기술이 기업에만 있었고, 지금처럼 참고할 책이 많은 환경도 아니었기 때문입니다. 그로부터 20년쯤 지난 오늘날 3D 게임은 게임 프로그래머에게 당연한 기술이 되었습니다. 2000년에 DirectX가 버전 8로 올라가면서, 3D 표현을 향상시키는 셰이더(shader)가 등장했습니다. 당시 셰이더 프로그래밍을 할 수 있는 사람은 몇 안 되는 기술자뿐이었습니다. 관련 서적도 외국어 책이 몇 권 있는 정도라서 예제 프로그램으로 학습하는 수밖에 없었습니다. 하지만 지금은 셰이더를 다룰 수 있는 프로그래머가 많아졌고, 셰이더를 사용할 수 없는 프로그래머는 시대에 뒤처지고 있습니다. 요즘은 네트워크 인프라가 갖추어져 게임에서도 온라인을 지원합니다. PC, 스마트폰, 가정용 게임기, 휴대용 게임기 등 거의 모든 게임 환경에 네트워크 기능이 있습니다. 환경이 변하면서 온라인이 지원되는 게임을 이제는 당연하게 여기게 되었습니다. 언제 어디서나 온라인 게임을 즐길 수 있게 된 것입니다. 가정용 게임기에서는 초고속 인터넷을 이용한 대규모 온라인 게임도 가능해졌습니다. 이처럼 최근 게임에서는 온라인이 반드시 지원돼야 하지만, 프로그래머 관점에서 보면 기초적인 네트워크 프로그램을 다룰 수 있는 프로그래머는 있어도 온라인 게임 자체를 제작할 수 있는 프로그래머는 극히 적습니다. 비디오 게임이 3D로 전환하기 시작한 무렵이나 셰이더가 등장하기 시작한 무렵처럼 현재 온라인 게임을 만들 수 있는 프로그래머는 여전히 모자란 상황입니다. 3D 그래픽과 셰이더가 걸어온 역사는 네트워크에서도 다시 반복될 것입니다. 온라인 게임을 제작하는 능력이 당연한 시대가 옵니다. 현재는 아직 온라인 게임을 다룬 책이 많지 않습니다. 이 책이 그 부족함을 채우는 데 도움이 되면 좋겠습니다. [옮긴이 서문] 옮긴이 : 김성재 지은이가 책에서 지적한 것처럼 저 역시 이 책을 읽기 전까지는 오프라인 게임에 통신 기능을 더 하고 조금만 수정하면 온라인 게임이 만들어지는지 알고 있었습니다. 통신에 관해서는 프로그래 밍을 배울 때 한 번씩 만들어보는 채팅 애플리케이션 정도의 네트워크 지식밖에 없었기에 떠올릴 수 있는 무지한 발상이었지요. 온라인 게임을 만들려면 여러 사람, 아니 단둘이 플레이하는 게임 에서조차 얼마나 많은 것을 고려해야 하는지 이 책을 통해서 이제 조금 알게 된 느낌입니다. 이 책의 큰 특징은 책 제목에서도 알 수 있듯이 네트워크 게임 개발에 꼭 필요한 지식을 기초부터 튼튼하게 쌓아 올릴 수 있다는 점입니다. 당연히 유니티를 기반으로 설명되어 있지만, 꼭 유니티 에만 적용되는 내용이 아니라 온라인 게임을 개발하고자 하는 모든 분에게 도움이 될 만한 내용입 니다. 온라인 게임이 가진 근본적인 문제들을 이야기하면서 왜 온라인 게임은 게임 디자인 단계부터 달 라야 하는지, 어떤 정보를 주고받아야 하는지, 어떻게 주고받아야 하는지를 비교적 통신 사양이 간단한 게임에서 시작하여 꽤 복잡한 게임까지 예를 들어 자세히 설명하고 있습니다. 먼저 학습해 본 학습자의 입장에서 볼 때 내용이 쉽지는 않지만, 반복해서 본다면 분명히 본격적인 온라인 게 임을 개발하는 데 든든한 기반이 되어 줄 것이라고 생각합니다. 드디어 연이어 작업한 세 권의 유니티 게임 프로그래밍 책 중 마지막 권이 끝났습니다. 한동안 이 책과 함께 했던 탓인지 요즘은 게임을 할 때 “여기서는 이런 정보를 주고받고 있겠지?” “어떤 정보 가 동기화되고 있을까?”라고 상상하는 버릇이 생겼습니다. 이 책을 통해 독자 여러분이 하나라도 필요한 지식을 얻으실 수 있다면 옮긴이로서 가장 큰 기쁨이 될 것입니다. 마지막으로 번역 작업 내내 제 길벗이 되어주신 이원휘 편집자님께 깊이 감사드립니다. 함께 일하면서 많이 배울 수 있 었습니다! |