Top

[멀티플레이 게임 제작을 위한]
유니티 네트워크 게임 만들기

  • 원서명Unity Multiplayer Games (ISBN 9781849692328)
  • 지은이앨런 스태그너(Alan R. Stagner)
  • 옮긴이박지유
  • ISBN : 9788960777392
  • 28,000원
  • 2015년 07월 24일 펴냄
  • 페이퍼백 | 288쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 게임 개발 프로그래밍

책 소개

요약

이제는 유니티 게임에서도 멀티플레이 네트워크 기능은 필요불가결한 요소가 됐다. 이 책은 플레이어 호스팅 게임에서부터 독립적인 전용 서버와 클라우드 멀티플레이어 기술에 이르기까지, 다양한 네트워킹 미들웨어를 활용해서 유니티 게임 엔진으로 멀티플레이 네트워크 게임을 제작하는 방법에 대한 실용적 안내서다. 이 책은 복잡한 멀티플레이 게임의 구현 기법을 기본적인 구성요소로 나눠서 알기 쉽게 설명한다.

이 책에서 다루는 내용

■ 유니티 네트워킹을 이용해서 게임 내에서 플레이어가 게임을 호스팅하는 방법
■ 포톤 클라우드를 이용한 클라우드 기반 게임 개발
■ 대규모 멀티 플레이어 환경 구현을 위한 전용 서버의 활용
■ 서버 권한 집중형 게임 로직 개발
■ 지연 및 신뢰성 없는 네트워크에 대한 대처 방법
■ HTTP 기반의 푸시 메시징을 위한 펍넙 활용
■ 게임 데이터를 클라우드에 보존하기 위한 Player.IO 활용
■ 네트워크 개체 보간을 위한 다양한 기법 활용

이 책의 대상 독자

이 책은 유니티 게임 엔진으로 멀티플레이어 게임 개발의 첫걸음을 내딛으려는 개발자들을 대상으로 한다. 독자는 프로그래밍에 대해서는 기초적인 경험을 가지고 있어야 하며, 유니티 IDE에 대한 사전 지식이 꼭 필요하지는 않다.

이 책의 구성

1장, ‘유니티 네트워킹: 퐁 게임’에서는 신뢰성 있는 UDP 통신의 개념과 게임에서 채용되는 다양한 유형의 서버를 소개한다. 유니티 네트워킹을 살펴보고 퐁과 유사한 2인용 네트워크 게임을 제작해 본다.

2장, ‘포톤 유니티 네트워킹: 채팅 클라이언트’에서는 유니티 네트워킹의 서드파티 대안을 다루면서, 클라우드에서 호스팅되는 게임 서버, 간단한 매치메이킹, 친구 목록의 개념을 소개한다. 추가로 간단한 채팅 클라이언트 개발까지 다룬다.

3장, ‘포톤 서버: 별 수집 게임’에서는 게임을 위한 전용 서버를 소개한다. 그리고 포톤 서버 애플리케이션 개발, 서버 접속, 요청/응답/이벤트 시스템을 이용한 통신 및 간단한 별 수집 게임을 제작해 본다.

4장, ‘Player.IO: 봇 전쟁’에서는 또 다른 전용 서버 시스템을 다룬다. Player.IO의 데이터베이스 기능, Player.IO 서버를 생성하는 방법, 유니티에서 접속하는 방법 그리고 사용자 스탯이 보존되는 간단한 RTS 스타일의 게임 제작을 다룬다.

5장, ‘펍넙: 통합 채팅 상자’에서는 HTTP 메시징 서비스를 이용한 통신을 소개한다. 통신용으로서 HTTP의 장점과 유의사항, WWW 클래스를 이용한 펍넙 통신 개발 및 채팅방 애플리케이션 제작을 다룬다.

6장, ‘개체 보간과 예측’에서는 서버 사이드 이동 물리 처리, 그에 따른 잠재적인 이슈와 해결책을 소개한다. 클라이언트 사이드 이동 예측과 원격 개체의 움직임을 부드럽게 처리하는 방법을 살펴본다.

7장, ‘서버 사이드 명중 탐지’에서는 총격 스타일 게임을 위한 서버 사이드 명중 탐지 개념을 소개한다. 많은 온라인 게임에서 일어나는 표적 예측 문제의 배경 논리와 게임 상태를 되감아서 이 문제를 해결하는 방법을 설명한다.

저자/역자 소개

지은이의 말

이 책에서는 유니티 게임 엔진으로 멀티플레이어 네트워크 게임을 개발하는 데 관련된 개념과 미들웨어들을 단계적으로 안내하고자 한다. 나는 한동안 멀티플레이어 게임의 열광적인 팬이었다. 멀티플레이어 게임은 우리들의 원초적 욕망에 호소할 수 있는 수단을 갖추고 있다. 또한, 경쟁 욕구, 협력 욕구 그리고 그 무엇보다 사람들과 함께 어울리고 싶어하는 욕구를 충족시켜주며, 이런 욕구의 충족은 싱글플레이어 게임에서는 제공될 수 없는 것이다.
나는 유니티에서 광범위한 네트워킹 플러그인과 애플리케이션을 경험해 봤다. 새로운 네트워킹 시스템을 배울 때면 언제나 난관과 문제들이 존재했다. 같은 길을 걷고 있는 다른 이들을 돕고, 그들이 내가 겪었던 문제들을 극복하는 데 도움을 주고 싶은 마음에 이 책을 쓰게 됐다.

지은이 소개

앨런 스태그너(Alan R. Stagner)

유니티3D 게임 개발에 대한 열정을 지닌 독립 개발자다. 아버지의 영향으로 프로그래밍에 입문한 이래, 그는 다양한 언어를 통해 창조적으로 게임을 개발하는 방법을 탐구해왔다. 최근 유니티 게임 엔진을 접하자마자 바로 빠져든 앨런은 곧바로 멀티플레이어 게임 개발에 매료되었다. 가끔씩 데이터베이스와 서버 프로그래밍에도 손을 대보고 있으며, 주로 PHP와 MySQL부터 최근에는 ASP.NET까지 범위를 넓혔다.

옮긴이의 말

PC 온라인 게임에서뿐만 아니라 최근에는 모바일 게임에서도 멀티플레이가 빠질 수 없는 요소가 됐다. 실시간 PVP나 파티플레이가 핵심적인 게임 모드로 등장하기 시작했으며, 실시간 멀티플레이를 지원하지 않더라도 비동기적인 방식으로 다른 유저와의 경쟁 또는 협력 플레이를 지원하지 않는 상용 게임은 찾아보기 어렵다. 아무리 뛰어난 AI라도 실제 사람을 상대하는 것만큼 지속적인 흥미를 불러일으킬 수는 없기 때문이다. 이와 같은 다른 유저와의 상호작용이라는 게임의 핵심 재미 요소 외에도 부분 유료화 게임에서는 해킹 방지 때문에 서버 사이드 구현이 부각될 수밖에 없는 상황이다. 클라이언트만으로 끊임없이 발전하는 해킹 기법에 대응하기는 원천적으로 불가능하기 때문에, 게임의 핵심 로직을 서버 사이드로 옮기는 것이 개발사들에는 매우 중요한 과제가 되고 있다.
이렇듯 모바일 게임에서도 네트워크와 서버 사이드 구현이 필수적인 기술로 부각된 지가 꽤 됐음에도 불구하고, 국내에서는 유니티나 모바일 환경에서 네트워크 게임 구현 기술을 전문적으로 다룬 서적은 전무한 실정이다.
이 책은 멀티플레이 모드와 해킹 방지를 위한 서버 사이드 구현에 어려움을 겪고 있는 일선의 유니티 개발자들에게 좋은 참고서적이 될 수 있으리라 생각한다.
이 책에서는 기본적인 네트워킹 구현 외에 개발 현장에서 응용할 수 있는 중요하고도 흥미로운 기법까지 다룬다. 우선, 유니티에 내장된 네트워킹 기능뿐만 아니라 포톤 네트워킹 같은 서드파티 네트워킹 미들웨어에 대해서도 다룬다. TCP/UDP 기술 외에도 펍넙 기반의 HTTP 기술을 이용하여 최근 거의 모든 게임에서 빠짐없이 등장하는 채팅 기능의 구현 기법을 보여준다.
또한 개체 보간과 클라이언트 사이드 예측을 통해 랙에 좀 더 매끄럽게 대처할 수 있는 게임을 구현하는 기법을 알려주고, 클라이언트 해킹에 대응하기 위한 서버 사이드 명중 탐지 기법을 알려준다.
이와 같은 기법들을 퐁 게임이나 간단한 RTS 게임과 같은 실전적 예제들을 통해 설명하기 때문에, 실전 프로젝트에 손쉽게 응용할 수 있다. 이 책이 독자들의 유니티 네트워크 게임에 실질적 도움이 되기를 기대한다.

옮긴이 소개

박지유

1990년대부터 IT 업계에 종사해온 실무자이자 기획자로서, IT 산업 전반과 게임 분야에 특히 관심이 많다. 다양한 기사와 도서 등의 번역가로도 활동 중이다. 에이콘출판사에서 출간한 『코코스2d-x 모바일 2D 게임 개발』(2013)과 『오픈소스와 소프트웨어 산업, 상생의 경제학』(2013)을 번역했다.

목차

목차
  • 1장 유니티 네트워킹: 퐁 게임
    • 멀티플레이어 게임 소개
    • UDP 통신 소개
    • 마스터 서버 설정
    • NetworkView와 상태 직렬화
    • 커스텀 상태 직렬자 작성
    • RPC 사용
    • 서버 초기화
    • 서버 접속
    • 마스터 서버 접속
    • 마스터 서버를 이용한 서버 등록
    • 이용 가능한 서버 살펴보기
    • 전용 서버 모델 구축
      • 유니티에서의 서버
      • 컴파일러 지시자
        • 프로 버전이 아닌 경우의 서버 콘솔 구축
    • 네트워크에 접속된 레벨의 로딩
    • 멀티플레이어 퐁 게임 제작
      • 필드 준비
      • Ball 스크립트
      • Paddle 스크립트
      • 점수 기록
      • 플레이어의 점수 표시
      • 게임 네트워킹 작업
      • 막대 등장시키기
      • 공의 네트워크 연결
      • 점수 기록의 네트워크 연결
      • 접속 화면
    • 요약

  • 2장 포톤 유니티 네트워킹: 채팅 클라이언트
    • PUN과 유니티 네트워킹의 차이점
    • 포톤 클라우드를 이용한 PUN 구축
    • Photonview 이용
    • 포톤에 접속하고 방 목록 얻기
    • 방 생성과 참여
      • 방 생성
      • 방 참여
    • 사용자 기호에 따른 결과 필터링
      • 필터링 배열
      • 방 목록의 필터링과 캐싱
    • 자동 매치메이킹
    • 친구 찾기
    • 플레이어 사이의 레벨 동기화
    • 채팅 클라이언트 개발
      • 접속 화면
      • 로비 화면
      • 채팅방
        • 친구 목록 추가
    • 요약

  • 3장 포톤 서버: 별 수집 게임
    • 전용 서버
    • 포톤 서버를 구하는 방법
    • 서버 애플리케이션 개발
      • 클래스 라이브러리 개발
      • 오퍼레이션 요청에 대한 응답
      • 서버 코드의 배포
    • 유니티에서 접속하고 메시지 전달하기
    • 게임 로직 클래스 개발
    • 플레이어 ID 할당
    • 별 수집 게임 제작
      • 클래스 라이브러리 준비
      • Actor 클래스
      • 플레이어에게 ID 전송
      • 게임 상태 추적
      • 별의 등장과 획득
      • 이벤트 브로드캐스트
      • 유니티에서 접속하기
      • 액터의 생성과 소멸
      • 플레이어 제어
    • 요약

  • 4장 Player.IO: 봇 전쟁
    • Player.IO vs 포톤 서버
    • 개발 서버 준비
    • 유니티 클라이언트 SDK 준비
    • Player.IO 접속
    • 방 목록 얻기
      • 방 접속
    • 방 생성
    • 랜덤 매치메이킹
    • 메시지 송수신
      • 서버 사이드 코드
    • BigDB 이용
    • 간단한 RTS 프로토타입 제작
      • 서버 사이드 코드
      • 클라이언트 사이드 코드
    • 요약

  • 5장 펍넙: 통합 채팅 상자
    • 펍넙의 개요
    • 시작하기
    • 펍넙의 작동
    • 펍넙에서 보낸 JSON 파싱
    • 펍넙 인터페이스 개발
    • 통합 채팅 애플리케이션 개발
      • 채팅 메시지 게시
      • 채팅 로그의 표시
    • 요약

  • 6장 개체 보간과 예측
    • 개체 보간
    • 클라이언트 사이드 예측
    • 리지드바디 시뮬레이션
    • 네트워크 접속 오브젝트 생성
    • 기초적 보간의 추가
    • 보간의 개선
    • 서버 권한 집중형 이동의 준비
    • 서버 권한 집중형 이동의 구현
    • 해킹에 대한 참고사항
    • 요약

  • 7장 서버 사이드 명중 탐지
    • 클라이언트 사이드 vs 서버 사이드 명중 탐지
    • 테스트베드 제작
    • 명중 탐지를 서버로 이전하기
    • 개체 되감기
    • 요약

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안