Top

예제로 배우는 언리얼 엔진 4 게임 개발 [C++와 블루프린트로 머티리얼 제작부터 네트워킹까지]

  • 원서명Unreal Engine 4.X By Example: An example-based practical guide to get you up and running with Unreal Engine 4.X (ISBN 9781785885532)
  • 지은이벤자민 카날(Benjamin Carnall)
  • 옮긴이구진수
  • ISBN : 9791161752167
  • 45,000원
  • 2018년 10월 23일 펴냄
  • 페이퍼백 | 612쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 게임 개발 프로그래밍

책 소개

소스 코드 파일은 여기에서 내려 받으실 수 있습니다.

본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약

C++를 위주로 언리얼 엔진의 다양하고 막강한 기능들을 둘러본다. 몇 가지 예제를 만들면서 블루프린트부터 시작해 캐릭터, 모듈, HUD, AI 관련 기능, 네트워크까지 여러 개발에 필요하고 중요한 내용을 쉽고 자세하게 배워나갈 수 있다.

이 책에서 다루는 내용

■ 언리얼 엔진과 C++를 사용해 언리얼 엔진 프로젝트의 개발 포텐셜 상승
■ 비주얼 스크립팅 시스템 블루프린트로 워크플로우와 콘텐츠 생성 향상
■ 언리얼 엔진의 내장된 에디터를 사용해 게임 월드를 디자인, 테스트하고 재미있게 구현하기
■ 다른 사람과 랜으로 플레이할 수 있는 네트워크 기능이 있고 다양한 기능을 가진 1인칭 슈팅 게임 제작
■ 게임 아이디어의 필요에 맞게 플레이하는 디자인 중심의 게임 월드 제작
■ 머티리얼이라는 비주얼 셰이더의 생성과 수정을 통해 게임 월드에 색 입히기

이 책의 대상 독자

언리얼 엔진 4를 최대한 활용해 멋지고 재미있는 게임을 만드는 방법을 배우고 싶은 개발자를 위한 책이다. 게임 개발을 처음 접하든 숙련됐든 상관없이 C++로 엔진을 사용할 수 있을 것이다. 본 여행을 시작하기 전에 C++와 다른 게임 엔진을 경험할 것을 권장한다. 이 책을 보기 전에 C++ 프로그래밍의 기초를 배운다면 이 책은 게임 개발 초보자를 완전한 언리얼 엔진 개발자가 되게 해줄 것이다.

이 책의 구성

1장, ‘언리얼 엔진 4 소개’에서는 UE4의 설치, 새로운 UE4 프로젝트 생성, 메인 엔진 에디터의 개요 설명을 다룬다.
2장, ‘블루프린트와 배럴-첫 번째 게임’에서는 블루프린트 비주얼 스크립팅의 세계를 소개할 것이다. 배럴 호퍼라고 하는 첫 번째 UE4 게임 프로젝트를 만들기 위해 UE4의 블루프린트 시스템을 활용할 것이다.
3장, ‘고급 블루프린트와 애니메이션, 사운드’에서는 조금 더 고급의 블루프린트 콘셉트를 다루고 프로젝트에 애니메이션과 사운드를 포함시키는 방법을 보여주기 위해 배럴 호퍼 프로젝트 개발을 준비해뒀다.
4장, ‘언리얼 엔진, C++’에서는 C++로 언리얼 엔진 4를 다룰 때 마주치는 개념과 구문을 소개한다.
5장, ‘업그레이드 활성화 C++로 바운티 대시 만들기’에서는 순수한 C++로 구현하는 게임 프로젝트 개발을 통해 UE4와 C++의 지식을 넓힐 것이다.
6장, ‘캐릭터 파워 업, 유저 파워 업’에서는 UE4 C++ 플러그인 제작에 대해 알려주고 몇몇 고급의 UE4 C++ 콘셉트를 소개한다. 바운티 대시의 개발 역시 포함한다.
7장, ‘보스 모드 활성화-언리얼 로봇’에서는 보스 모드 게임 프로젝트의 생성을 통해 UE4의 포괄적인 AI 툴셋을 소개한다.
8장, ‘고급 AI와 언리얼 렌더링’에서는 UE4의 AI 시스템의 고급 콘셉트를 소개한다. UE4의 머티리얼 에디터와 렌더링 시스템도 살펴본다.
9장, ‘네트워크 슈터 만들기’에서는 UE4에 포함된 네트워킹 시스템의 모든 것을 다룬다. 친구와 랜으로 플레이할 수 있는 네트워크 기반의 1인칭 슈터를 만들 것이다.
10장, ‘작별 인사와 감사’에서는 배포 및 테스트를 위해 프로젝트를 패키지하는 방법을 보여주고, 결론짓기 전에 배운 것들에 대한 간략한 요약을 제공한다.

상세 이미지

저자/역자 소개

지은이의 말

언리얼 엔진 4(UE4)는 개발자가 엔진 라이선스 지불 방식을 혁신적으로 변화시킨 최첨단 게임 개발 엔진이다. 이 최고 등급 엔진에 접근하기 위해 개발자는 몇백만 달러를 내는 대신 수익이 되는 제품을 손에 쥐기 전까지 완전히 무료로 사용할 수 있다.
언리얼 엔진 4는 굉장한 게임을 개발하려는 열정적인 사람들에게 최신 기술 기능을 가진 풍부한 AAA 개발 툴셋을 제공한다. 엔진은 C++로 개발됐으며 프로젝트를 위해 C++의 힘을 이용할 수 있을 뿐만 아니라 전체 엔진 소스에 접근할 수도 있다. 이 책을 통해 언리얼 엔진 4의 툴셋을 마스터하고 뛰어난 C++ UE4 개발자가 되는 여행을 시작할 수 있을 것이다.

지은이 소개

벤자민 카날(Benjamin Carnall)

열정적이고 헌신적인 프로그래머다. 문제를 풀기 좋아해서 게임 개발의 세계에 발을 들였다. 다른 사람을 위해 게임플레이 경험을 만드는, 새롭고 다양한 방법을 배울 기회를 제공하는 것을 즐긴다. 미디어 디자인 스쿨에서 인터렉티브 게이밍 학위를 받은 후, 2012년 게임 개발을 시작했다. 소프트웨어 엔지니어링 학사로 졸업한 후, 뉴질랜드에서 게임 개발자 일에 몰두했다. 계약직 프로그래머로 시작해 오클랜드 주변에서 다양한 타이틀을 작업했다. 미디어 디자인 스쿨에서 일하며 게임용 그래픽 프로그래밍과 게임용 물리 프로그래밍 및 학사 수준의 소니 플레이스테이션 개발을 가르쳤다. 최근에는 스튜디오 Aroura44에서 프로그래머로 일하고 있으며 아센(Ashen)이라는 이름의 타이틀을 개발 중이다.

옮긴이의 말

날이 갈수록 언리얼 엔진의 인기가 늘어나고 있습니다. AAA급 초대형 프로젝트부터 인디 프로젝트까지 많은 게임들이 언리얼 엔진으로 개발됐고 지금도 개발되고 있습니다. 그만큼 많은 언리얼 학습 서적들이 나와 있습니다. 많은 책들이 각자의 매력과 포인트를 갖고 있으니 자신과 맞는 서적으로 시작하는 게 좋다고 생각합니다.
이 책은 많은 부분에서 C++를 사용합니다. 블루프린트를 사용하긴 하나 주로 C++를 활용해 예제를 작성합니다. 개인적으로는 이 방식을 선호합니다. 결국 세세한 부분에서 직접 조정해야 하는 것이 결과적으로 프로그래머가 하게 되는 일이라고 봅니다.
배우는 길은 쉽지 않고, 무언가를 만드는 길 역시 쉽지 않습니다. 수많은 땀과 인내가 완성된 결과물 뒤에 숨겨져 있습니다. 이 책을 읽고 무언가를 시작하려는 모든 분들이 좋은 결과를 얻게 되길 바랍니다.

옮긴이 소개

구진수

자유롭게 내일을 향하고픈 프로그래머다. 여러 가지 다양한 것에 관심을 갖고 있다. 요즘은 게임과 모바일 앱을 살펴보고 있다.

목차

목차
  • 1장. 언리얼 엔진 4 소개
    • 책 둘러보기
      • 어떤 게임 프로젝트인가?
    • 언리얼 엔진 4 설치하기
    • 첫 번째 프로젝트 생성하기
    • 언리얼 엔진 UI 탐험하기
    • 기본 액터 생성하기
      • 오브젝트, 액터, 폰과 캐릭터
      • 액터에 컴포넌트 추가하기
    • 학습 리소스로 프로젝트 프리 빌드하기
    • 요약

  • 2장. 블루프린트와 배럴-첫 번째 게임
    • 첫 번째 블루프린트 만들기
      • 블루프린트 윈도우
      • 블루프린트 작업하기
      • 블루프린트 요소
    • Hello Sphere 블루프린트 수정하기
      • 블루프린트 그래프 작업하기
      • 블루프린트 컴파일하기
      • 블루프린트 변수 사용하기
      • 블루프린트 팔레트 사용하기
      • 블루프린트 메타 데이터 및 스트링 조작
    • 배럴 호퍼 프로젝트 만들기
    • 캐릭터 생성하기
      • 캐릭터에게 생명 불어넣기
    • 게임 모드와 생성 방법
    • 입력 이벤트 생성 및 받아들이기
      • 입력 이벤트 생성하기
      • 입력 이벤트 받기
      • 캐릭터 이동 컴포넌트 조정
    • 레벨 빌드하기
      • 카메라 팁
      • 레벨 생성하기
      • 블로킹 지오메트리
    • 배럴이 구르게 하기
      • 배럴 생성기와 블루프린트 타이머
      • 트리거 볼륨과 액터 없애기
    • 블루프린트 디버깅
    • 파티클로 파괴 마스킹하기
    • 플레이어 리스폰하기
      • 노드 딜레이
      • 플레이어 컨트롤러
      • 충돌 이벤트
    • 요약

  • 3장. 고급 블루프린트, 애니메이션, 사운드
    • 가게 깨끗이 하기
      • 로직 흐름
      • 시퀀스 사용하기
      • 커스텀 카메라 생성하기
      • 블루프린트 함수로 플레이어 리스폰하기
      • 블루프린트 함수 생성하기
    • UE4 애니메이션
      • 애니메이션 규칙
      • 애니메이션 블루프린트
      • 애니메이션 에셋 임포팅/익스포팅
      • 첫 번째 애니메이션 블루프린트 작성하기
      • 애니메이션 블루프린트 돌아보기
      • 새로운 애니메이션 그래프 구성하기
      • 상태 머신으로 작업하기
      • 상태 머신 완료하기
      • 애니메이션 블루프린트 이벤트 그래프
      • 캐릭터를 달리게 하기
      • 블렌드스페이스로 작업하기
    • 첫 번째 사운드 스케이프 만들기
      • 사운드와 사운드 큐 임포트하기
      • 사운드 큐 작업하기
      • 애니메이션 노티파이를 통해 사운드 재생하기
      • 애니메이션 에셋 작업하기
      • 애니메이션 노티파이 배치하기
      • 사운드스페이프 완료하기
    • 종료 터치를 배럴 호퍼에 추가하기
      • 래그돌과 이벤트 디스패처
      • 기본 HUD 만들기
    • 요약

  • 4장. 언리얼 엔진과 C++
    • UE와 C++
      • 왜 C++를 사용하는가
      • 다형성, 가상 상속 및 템플릿
    • C++용 Hello World
      • 첫 번째 코드 클래스 탐험하기
      • 언리얼 빌드 툴 준비하기
      • 헤더 나머지 살펴보기
      • 컴포넌트와 오브젝트 생성자 추가하기
      • 코드 빌드하기
      • 파이어 파티클 추가와 핫 컴파일
      • Hello world 텍스트와 델리게이트를 통해 이벤트 받기
      • 구체 다듬기
    • 블루프린트에서 C++ 확장하기
      • 매크로 지정자 서포트 없이 클래스 확장하기
      • 매크로 지정자 서포트와 함께 클래스 확장하기
    • 블루프린트 네이티브 이벤트와 당신
    • 요약

  • 5장. 업그레이드 활성화-C++로 바운티 대시 만들기
    • C++ 캐릭터 생성하기
      • C++ 프로젝트 만들기
      • UE4 오브젝트 계층
    • 캐릭터 만들기
      • 우리에게 주어진 것
      • 필요해질 것
      • 캐릭터 생성하기
      • Begin Play 함수 작성하기
      • C++에서 입력 설정하기
      • 캐릭터가 틱을 실행하는 법
      • 컴파일 시간
    • C++ 월드 오브젝트 만들기
      • BSP 브러시를 스태틱 메시로 변환하기
      • C++ 오브젝트로 스모크와 미러
      • BountyDashGameMode 수정하기
      • 바닥 코딩하기
      • AFloor::Tick()
      • 장애물 만들기
      • C++에서 액터 스폰하기
      • 장애물 스포너가 동작하도록 하기
      • 동전 오브젝트 던지기
      • 동전 비가 내리도록 코인 스포너 만들기
      • 지금까지 한 것을 테스트하기
    • 월드 오브젝트와의 상호작용 만들기
      • 캐릭터 밀어내기
      • 코인 수집하기
    • 요약

  • 6장. 캐릭터 파워 업, 유저 파워 업
    • 상점 및 오브젝트 계층 정리하기
      • BountyDashObject
      • 기존 오브젝트 수정
    • C++로 플러그인 만들기
      • 모듈과 코드 파일
      • 플러그인 구조
    • 첫 번째 플러그인 모듈 작업하기
      • PowerUpPlugin.Build.cs
      • PowerUpPlugin 코어 모듈 선언하기
      • PowerUp 오브젝트 추가하기
      • 엔진에서 플러그인 사용하기
    • 바운티 대시에 파워 업 통합하기
      • 코인 스포너 수정하기
      • 빌드하고 실행하고 테스트하기
      • 파워 업의 충돌
      • 캐릭터 파워 업하기
    • C++를 사용한 HUD 제작하기
      • ABountyDashHUD
      • 오브젝트로부터 정보 얻기
      • 게임 모드에서 HUD 설정하기
      • 커스텀 DrawHUD 함수 구현
    • 바운티 대시 게임 루트 완료하기
      • 끝의 시작과 게임 일시 중지하기
      • 게임 재시작하기
      • 게임 오버 텍스트 그리기
    • 죽음의 벽을 완료하고 프로젝트를 다듬기
      • 죽음의 벽 만들기
      • 벨, 호루라기 및 폭발
      • 캐릭터가 달리게 하기
      • concealer의 마지막 비트
    • 요약

  • 7장. 보스 모드 활성화-언리얼 로봇
    • 프로젝트 설정
    • 1인칭 캐릭터
      • 필요한 것을 임포트하기
      • FPC 시작하기
      • BM 캐릭터를 블루프린트로 추상화하기
      • C++ 게임 모드에서 블루프린트 오브젝트를 기본 폰으로 설정하기
      • 지금까지 한 것 테스트하기
    • 커스텀 HUD 추가와 크로스 헤어 그리기
      • BMHUD 클래스 정의
      • BMHUD 정의하기
    • 발사체 만들기
      • 발사체 정의
      • 발사체 초기화
      • 발사체의 충돌
      • 서브클래스 템플릿과 발사체 발사하기
      • FPProjectile 블루프린트 생성하기
      • FPCharacter 수정하기
    • 언리얼 로봇
      • AI 분석하기
      • AI 통합을 위한 프로젝트 준비하기
      • AI 캐릭터 베이스 클래스 만들기
      • 첫 번째 AI 컨트롤러 만들기
      • 비헤이비어 트리 구성과 논리 흐름
      • 블랙보드란 무엇인가?
    • 기본적인 비헤이비어 트리와 블랙보드 만들기
    • 블랙보드 설정하기
    • 비헤이비어 트리 에디터
    • 비헤이비어 트리 설정하기
    • 블루프린트를 통해 커스텀 태스크 생성하기
    • 블루프린트를 사용해 커스텀 데코레이터 만들기
    • C++를 사용해 커스텀 서비스 만들기
      • BMArgoCheck 클래스 정의하기
    • UE의 심화 콜리전
      • 서비스 틱 정의하기
      • BossBT에 C++ 서비스 추가하기
    • AI 캐릭터 통합하기
    • 커스텀 오브젝트 콜리전 채널 만들기
    • AI 지원을 위한 레벨 수정하기
      • 내비게이션 메시는 무엇인가
      • NavMesh 생성 설정 조절하기
      • 신에 NavMesh 배치하기
    • AI를 레벨에 배치하고 테스트하기
    • 요약

  • 8장. 고급 AI와 언리얼 렌더링
    • AI 확장과 발사체 추적
    • 발사체와 플레이어 추적하기
      • 라인 트레이스 만들기
      • 발사체 준비하기
      • 커스텀 채널 생성 및 트래킹 테스트
    • AI 확장하기
      • UE4의 데미지
      • 보스 상태와 블랙보드의 enum
      • 보스 상태를 지원하기 위해 BossBT 수정하기
      • ABMIController 업그레이드하기
      • 지금까지 한 것들 테스트하기
      • 보스 무장시키기
      • 마지막 행동 상태
      • AI 완성
    • UE4의 렌더링
    • UE4 머티리얼
      • 머티리얼은 무엇인가
      • 물리 기반 렌더링
      • 머티리얼 에디터
      • 보스 외부 머티리얼 시작하기
      • 디테일 추과 및 고급 머티리얼 사용
      • 보스 내부 머티리얼 만들기
      • 머티리얼을 보스에게 적용하기
    • 요약

  • 9장. 네트워크 슈터 만들기
    • 프로젝트 생성하기
      • 마켓플레이스 패키지 추가
    • 네트워크 멀티플레이어 이론
      • 네트워킹 패턴
    • UE4 네트워킹
      • 데디케이트와 리슨 서버
      • UE4 복제
      • 네트워크 역할
      • 원격 프로시저 호출
      • 넷 소유권, 플레이어 컨트롤러와 게임 모드
    • 네트워크 1인칭 슈터 시작하기
      • NS 프로젝트 준비하기
      • 네트워크 플레이어 캐릭터 만들기
      • 플레이어 상태 및 네트워킹
      • 플레이어 클래스 정의 마치기
      • ANSCharacter RPC 작성하기
      • ANSCharacter 함수 정의하기
    • ANSCharacter 블루프린트 준비하기
      • 3인칭 메시 준비하기
      • 포스 피드백 에셋 만들기
      • 커스텀 콜리전 채널
      • 팀 컬러를 구동하는 VectorParameter 강조하기
      • 발사 몽타주 에셋 만들기
      • 모두 묶기
      • PIE 세션으로 멀티플레이어 테스트하기
    • 스폰 포인트와 플레이어 스폰하기
      • ANSSpawnPoint 클래스 정의하기
      • ANSSpawnPoint 함수 정의
    • 게임 모드와 서버
      • 게임 모드 클래스 정의
      • 게임 모드 구성 및 스폰 포인트 찾기
      • 게임 종료 및 게임 모드 틱
      • 플레이어 연결
      • 플레이어 스폰하기
      • 플레이어 리스폰하기
    • 게임 맵 준비하기
      • 게임 기능 테스트하기
    • HUD 그리기 및 로비 준비하기
      • GameState 만들기
      • HUD에서 그리기
    • 게임 테스트하기
    • 요약

  • 10장. 작별 인사와 감사
    • 프로젝트 패키징하기
      • 타깃 빌드하기
      • 빌드 설정
      • NS 패키징하기
    • NS 패키지 테스트하기
      • 리슨 서버 인스턴스 만들기
    • 콘솔 커맨드
      • 로컬 호스트에 연결하기
      • 콘솔 커맨드를 사용한 프로파일링
      • 콘솔 시각화
    • 지금까지 배워온 것
      • 에디터
      • 언리얼 애니메이션
      • C++
      • 인공지능
      • 언리얼 렌더링
      • 언리얼 네트워킹
    • 요약

도서 오류 신고

도서 오류 신고

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

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

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

정오표

정오표

[p.70p : 아래서 3행]
에디터 윈도우의 오른쪽
->
에디터 윈도우의 왼쪽

[p.74 : 3-4행]
InputAxis Mode
->
InputAxis Move

[p.85 5행]
Lights 섹션 아래의 Place 탭에 있는 Modes 패널에서 Skylight를
->
Modes 패널에서 Place 탭에 있는 Lights 섹션 아래의 Skylight를

[p.87 : 2행]
floot
->
floor

[p.107 : 아래서 5행]
연습에서는
->
실전에서는

[p.123 : 3-4행]
프레인
->
프레임

[p.142 : 3, 4, 5행]
달콤한 자리
->
최적의 위치

[p. 246 : 코드 아래에서 1, 2행]
OnActorBeginOverlap
->
OnActorEndOverlap

[p. 417 : 코드 3, 4/9, 10행]
if (ThisTree == nullptr >> ThisController == nullptr >> ThisAICharacter== nullptr)
->
if (ThisTree == nullptr || ThisController == nullptr || ThisAICharacter == nullptr)

[p. 427 : 아래에서 8행]
기송maneuvering
->
기동maneuvering

[p. 457 : 코드 아래에서 2, 3행]
} // <--if(Target) 닫기
} // <-- for(int i = 1; i < 5; ++i) 닫기

->

} // <-- for(int i = 1; i < 5; ++i) 닫기
} // <-- if(Target) 닫기

[p. 471 : 아래에서 2행]
이런 설정을 변경하려면
->
이런 설정을 변경하면

[p. 481 : 1, 2행]
오른쪽은 베이스 컬러가 하양, 왼쪽은 검정이다.
->
왼쪽은 베이스 컬러가 하양, 오른쪽은 검정이다.

[p. 481 : 3행]
디테일 추과
->
디테일 추가

[p. 536 : 본문 아래에서 2, 4행]
MultiCastShootEffect()
->
MultiCastShootEffects()

[p. 551 : 본문 1행]
가리킨다.
->
가린다.

[p. 590 : 1행]
그런 다음 패키지의 모슨
->
그런 다음 패키지의 모든