
언리얼 엔진 5로 개발하는 멀티플레이어 게임 [C++, 블루프린트, 언리얼 엔진의 네트워킹 기능을 사용한 매력적인 멀티플레이어 게임 개발]
- 원서명Multiplayer Game Development with Unreal Engine 5: Create compelling multiplayer games with C++, Blueprints, and Unreal Engine's networking features (ISBN 9781803232874)
- 지은이마르코 세치(Marco Secchi)
- 옮긴이이지성, 송정은
- ISBN : 9791161759685
- 40,000원
- 2025년 02월 27일 펴냄
- 페이퍼백 | 492쪽 | 188*235mm
- 시리즈 : 게임 개발 프로그래밍
책 소개
요약
언리얼 엔진 5를 사용해서 멀티플레이어 게임을 개발하려는 초중급 개발자를 대상으로 한 책이다. 네트워킹의 기초부터 시작해 복제, RPC, 연관성, AI 시스템, 세션 관리 등 중요 개념을 배울 뿐만 아니라 네트워크 디버깅과 프로파일러를 활용한 최적화 방법도 살펴본다. 후반부에서는 언리얼 엔진 컴파일, 전용 서버 설정, 에픽 온라인 서비스와 같은 고급 주제도 다룬다.
이 책에서 다루는 내용
◆ 멀티플레이어 게임 개발에 필요한 기본 지식
◆ 네트워크 레벨의 주요 요소 이해
◆ 복제, RPC, 연관성, 역할과 같은 언리얼 멀티플레이어 기능 탐구
◆ 게임 성능 향상을 위한 코드 디버깅 및 최적화
◆ LAN 또는 온라인 플랫폼에서의 게임 배포
◆ 에픽 온라인 서비스를 사용한 플레이어 경험 향상
이 책의 대상 독자
비디오 게임 네트워킹 시스템에 대한 지식이 부족한 게임 프로그래머, 특히 언리얼 엔진 개발자가 이 주제를 깊이 탐구하고 싶다면 이 책이 도움이 될 것이다.
다른 게임 엔진에 능숙하면서 언리얼 멀티플레이어 시스템의 원리를 이해하고자 하는 개발자들도 이 책에서 많은 도움을 받을 수 있다. 그러나 언리얼 엔진과 C++에 대한 기본적인 지식은 꼭 필요하다.
이 책의 구성
1장, ‘멀티플레이어 게임 개발 시작’에서는 멀티플레이어 게임 개발의 세계를 개발자 관점에서 친절하게 소개한다.
2장, ‘네트워킹의 기초’에서는 언리얼 엔진에서 멀티플레이어 개발을 시작하기 위한 네트워크 프로그래밍의 기본 개념을 탐구한다.
3장, ‘프로젝트 프로토타입으로 멀티플레이어 시스템 테스트’에서는 프로젝트 템플릿 설정을 시작으로, 기본적인 멀티플레이어 기능을 테스트할 수 있는 간단한 멀티플레이어 프로토타입을 만드는 과정을 안내한다.
4장, ‘첫 번째 멀티플레이어 환경 설정’에서는 언리얼 엔진에서 멀티플레이어 C++ 프로젝트를 개발하기 위한 기초를 다진다.
5장, ‘멀티플레이어 환경에서 액터 관리’에서는 멀티플레이어 캐릭터를 생성하고, 이 캐릭터를 멀티플레이어 환경에서 다루는 기본적인 방법을 배운다.
6장, ‘네트워크를 통한 프로퍼티 복제’에서는 멀티플레이어 환경에서 프로퍼티를 처리하고 클라이언트 간에 동기화하는 방법을 알아본다.
7장, ‘원격 프로시저 호출 사용’에서는 서버에서 클라이언트로 또는 클라이언트에서 서버로, 네트워크 환경에서 함수를 호출하는 방법을 살펴본다.
8장, ‘멀티플레이어 환경에 AI 도입’에서는 적 캐릭터를 만들고 간단한 AI를 추가해 멀티플레이어 시스템에서 작동하도록 한다.
9장, ‘AI 행동 확장’에서는 AI에 더 많은 기능을 추가해 게임을 더욱 몰입감 있게 만든다.
10장, ‘플레이어 경험 향상시키기’에서는 애니메이션과 NPC 같은 더 많은 기능을 게임에 추가한다.
11장, ‘멀티플레이어 게임 디버깅’에서는 네트워크 게임을 디버깅하고 프로파일링하는 기본 원리를 배운다.
12장, ‘멀티플레이어 세션 관리’에서는 게임 세션과 그 특성을 소개한다.
13장, ‘세션 중 데이터 처리’에서는 멀티플레이어 세션 중 데이터를 처리하는 방법을 알아본다.
14장, ‘멀티플레이어 게임 배포’에서는 멀티플레이어 게임을 위한 전용 서버를 빌드하는 기본 사항을 살펴본다.
15장, ‘에픽 온라인 서비스 추가’에서는 에픽게임즈 데브 포털(Epic Games Developer Portal)을 소개하고, 가장 몰입감 있는 온라인 경험을 제공할 수 있도록 설계된 강력한 서비스 모음인 에픽 온라인 서비스(Epic Online Services)를 전반적으로 다룬다.
목차
목차
- 1장. 멀티플레이어 게임 개발 시작
- 기술적인 요구 사항
- 사전 지식
- 하드웨어 사양
- 소프트웨어 사양
- 멀티플레이어 게임 소개
- 비디오 게임 분야의 네트워크 프로그래머 되기
- 멀티플레이어 게임 카테고리 이해
- 1인칭 슈팅
- 3인칭 슈팅
- 실시간 전략
- 대규모 멀티플레이어 온라인 롤플레잉 게임
- 멀티 유저 던전
- 멀티플레이어 온라인 배틀 아레나
- 게임플레이 변형 요소 검토
- 비대칭 게임플레이
- 숨바꼭질 게임플레이
- 비동기 게임플레이
- 멀티플레이어 기술은 게임에만 사용되는가?
- 시네마토그래피
- 건축
- 교육
- 언리얼의 콜라보 뷰어 템플릿
- 요약
- 기술적인 요구 사항
- 2장. 네트워킹의 기초
- 기술적인 요구 사항
- 컴퓨터 네트워킹이란 무엇인가?
- 컴퓨터 네트워크의 종류
- 근거리 통신망
- 원거리 통신망
- 가상 사설망
- 네트워크 프로토콜 소개
- 패킷 교환
- TCP/IP 스위트
- 네트워크 문제 이해
- 보안
- 패킷 손실
- 지연 시간
- 언리얼 엔진 멀티플레이어 시스템 소개
- 네트워크 모드와 서버 유형
- 복제 시스템
- 네트워크 역할
- 폰과 플레이어 컨트롤러
- 연관성과 우선순위
- 원격 프로시저 호출
- 요약
- 크레디트
- 3장. 프로젝트 프로토타입으로 멀티플레이어 시스템 테스트
- 기술적인 요구 사항
- 멀티플레이어 게임 프로토타입 생성
- 템플릿에서 프로젝트 설정
- 퀵셀 메가스캔 추가
- 플레이어 컨트롤러 수정
- 로컬에서 멀티플레이어 게임 테스트
- 리슨 서버로 플레이
- 네트워크를 통한 업데이트
- 추가적인 캐릭터 스폰 지점 추가
- 네트워크를 통한 프로퍼티 업데이트
- 픽업 아이템의 블루프린트 생성
- 변형된 픽업 아이템 추가
- 캐릭터에 포인트 계산 추가
- 네트워크를 통한 함수 실행
- 액터 스폰
- 캐릭터 스킨 변경
- 게임 테스트
- 요약
- 2부 ― 언리얼 엔진의 네트워킹과 멀티플레이어 게임
- 4장. 첫 번째 멀티플레이어 환경 설정
- 기술적인 요구 사항
- 『Unreal Shadows - 리치 왕의 유산』 소개
- 프로젝트 개요 설명
- 프로젝트 시작
- 언리얼 엔진의 C++ 이해
- 블루프린트와 C++
- C++ 클래스의 이해
- 언리얼 엔진 C++ 헤더 분석
- 언리얼 엔진 리플렉션 시스템
- 메모리 관리와 가비지 컬렉션
- 언리얼 멀티플레이어 프로젝트 시작
- 프로젝트 파일 생성
- 프로젝트 게임 인스턴스 생성
- 게임 모드와 게임 스테이트 생성
- 플레이어 클래스 추가
- 소스 코드 컴파일
- 캐릭터 블루프린트 클래스 생성
- 게임 모드에 플레이어 클래스 추가
- 요약
- 5장. 멀티플레이어 환경에서 액터 관리
- 기술적인 요구 사항
- 캐릭터 설정
- 캐릭터에 기본 설정 추가
- 캐릭터에 상호작용 추가
- 향상된 입력 모듈 가져오기
- 캐릭터에 사용자 상호작용 추가
- 캐릭터의 이동 테스트
- 액터의 연결 제어
- 액터 연관성 이해
- 연관성 이해
- 연관성 테스트
- 연관성 설정 테스트
- 권한 소개
- 액터의 롤과 원격 롤 프로퍼티를 사용해 권한 제어
- 자율 및 시뮬레이티드 프록시
- 요약
- 6장. 네트워크를 통한 프로퍼티 복제
- 기술적인 요구 사항
- 캐릭터 스탯 추가
- 스탯 구조체 생성
- 스탯 데이터 테이블 생성
- 캐릭터에서 데이터 테이블 읽기
- 캐릭터에 데이터 테이블 추가
- 프로퍼티 복제 이해
- 프로퍼티 복제 활성화
- 네트워크를 통한 액터 및 컴포넌트 참조
- 캐릭터 레벨업 처리하기
- 계획 세우기
- PlayerState 프로퍼티와 멤버 함수 선언
- PlayerState 로직 구현
- 레벨에 코인 아이템 추가
- 게임에 HUD 추가하기
- 위젯 블루프린트 생성
- 위젯 블루프린트에 코드 로직 추가
- 캐릭터에 HUD 추가하기
- 게임 테스트
- 요약
- 7장. 원격 프로시저 호출 사용
- 기술적인 요구 사항
- RPC 이해
- RPC의 신뢰성
- RPC 인증
- 네트워크를 통해 RPC 실행
- 서버에서 함수 호출
- 도어 시스템 구현
- 상호작용 가능한 인터페이스 생성
- 상호작용 액션 구현
- 도어 블루프린트 생성
- 상호작용 액션 테스트하기
- 요약
- 3부 ― 게임 개선
- 8장. 멀티플레이어 환경에 AI 도입
- 기술적인 요구 사항
- AI 시스템 설정
- AI 적 생성
- 내비게이션 모듈 추가
- 미니언 클래스 생성
- 미니언의 행동 구현
- 레벨에 적 추가
- 스포너 클래스 생성
- 스포너 로직 구현
- 스포너 테스트
- 요약
- 9장. AI 행동 확장
- 기술적인 요구 사항
- AI 적을 더 어렵게 만들기
- 소음 만들기
- 청각 활성화하기
- 청각 테스트하기
- 경보 시스템 구현
- 게임 모드 함수 선언
- AI가 경보 메시지 보내기
- AI에 체력 추가
- 캐릭터에 무기 시스템 추가
- 단검 투사체 생성
- 무기 컴포넌트 구현
- 캐릭터에 WeaponProjectile 컴포넌트 연결
- 무기를 위한 입력 시스템 추가
- 무기 시스템 테스트
- AI 변형 생성
- AI 경계병 생성
- AI 중간 보스 생성
- 미니언 스포너 업데이트
- 요약
- 10장. 플레이어 경험 향상시키기
- 기술적인 요구 사항
- 캐릭터 애니메이션
- 애니메이션 에셋 생성
- 캐릭터에 애니메이션 시스템 추가
- 던지기 애니메이션 추가
- NPC 액터 추가
- NPC 캐릭터 생성
- NPC 액터 테스트
- 게임의 추가 개선
- 소음을 내보자!
- 열쇠가 필요해!
- 영웅들이여, 무기를 강화하자!
- 플레이어는 기관총이 아니다
- 지체할 시간이 없다
- 데이터 테이블의 다양한 활용
- 도움이 필요한가?
- 요약
- 11장. 멀티플레이어 게임 디버깅
- 기술적인 요구 사항
- 네트워크 디버깅 소개
- 게임 디버깅 설명
- 멀티플레이어 옵션 소개
- 네트워크 환경에서 로깅
- LogNet 카테고리 필터링하기
- 사용자 정의 로그 카테고리 생성
- 네트워크 환경 에뮬레이션
- 네트워크 에뮬레이션 활성화
- 네트워크 에뮬레이션으로 게임 테스트
- 네트워크 프로파일러 사용
- 프로파일링 세션 기록하기
- 프로파일링 세션 분석하기
- 성능 및 대역폭 사용 개선
- 필요할 때만 복제 활성화하기
- 불필요하거나 중요하지 않은 RPC 호출 피하기
- 신뢰할 수 있는 RPC와 신뢰할 수 없는 RPC 구분하기
- 데이터 검증하기
- 게임 모드는 서버에만 존재한다
- RPC에 대한 네이밍 규칙 사용하기
- 요약
- 4부 ― 온라인에 게임 배포
- 12장. 멀티플레이어 세션 관리
- 기술적인 요구 사항
- 게임 세션 이해
- 온라인 서브시스템 소개
- 세션 명령 이해
- 연결 오류 이해하기
- 프로젝트 게임 세션 준비
- 세션 생성
- 시각적 요소 추가
- 비주얼 스크립팅 로직 구현
- 세션 참가
- SessionItemRenderer 위젯 생성
- FindSessions 위젯 생성
- Main Menu 위젯 생성
- 요약
- 13장. 세션 중 데이터 처리
- 기술적인 요구 사항
- 메인 메뉴 레벨 생성
- 폰 생성
- 게임 모드 생성
- 레벨 생성
- 세션 시스템 테스트
- 세션 중 데이터 처리
- US_GameInstance 클래스 업데이트
- 캐릭터 스킨 데이터 추가
- US_MainMenuPawn 클래스 업데이트
- BP_MainMenuPawn 블루프린트 업데이트
- US_Character 클래스 업데이트
- BP_Character 블루프린트 업데이트
- 추가 개선 작업
- 세션 나가기 및 소멸
- 플레이어 사망 처리
- 플레이어 스킨 선택
- 요약
- 14장. 멀티플레이어 게임 배포
- 기술적인 요구 사항
- 온라인 환경 준비
- 언리얼 엔진 컴파일
- 언리얼 엔진 소스 프로젝트 다운로드
- 소스 코드에서 컴파일하기
- 전용 서버 설정
- 프로젝트 생성
- 프로젝트 솔루션 빌드
- 전용 서버 빌드
- 프로젝트 테스트
- 요약
- 15장. 에픽 온라인 서비스 추가
- 기술적인 요구 사항
- EOS 소개
- 데브 포털 접근하기
- 에픽게임즈 데브 포털 접근하기
- 제품 생성
- 제품 서비스 구성
- EOS SDK 시작하기
- EOS SDK 다운로드
- 게임에 시스템 통합하기
- 요약
- 한국어판 부록