Steady Seller

이득우의 언리얼 C++ 게임 개발의 정석

  • 지은이이득우
  • ISBN : 9791161752204
  • 50,000원
  • 2018년 10월 26일 펴냄
  • 페이퍼백 | 640쪽 | 188*235mm
  • 시리즈 : 게임 개발 프로그래밍

책 소개

버전별 소스 코드는 여기에서 내려받을 수 있습니다(최신 업데이트는 Unreal Engine v4.22 기준입니다).

요약

언리얼 엔진 학습에 목말라하는 게임 개발자에게 단비 같은 언리얼 엔진 프로그래밍 책이다. 에픽게임즈 본사의 개발자 프로그램 ‘언리얼 데브 그랜트’를 수상한 저자의 책으로, 언리얼 엔진의 프로그래밍을 체계적으로 학습하기 위해 처음부터 끝까지 언리얼 C++만 사용해 게임을 제작하는 것이 특징이다.

이 책에서 다루는 내용

■ 입문자를 고려해 언리얼 엔진의 구성 요소를 처음부터 하나씩 단계별로 설명
■ 언리얼 C++ 프로그래밍 문법에 대한 분석과 가이드 제시
■ 언리얼 프로그래밍 능력 향상을 위한 100% 언리얼 C++ 예제 제공
■ 효과적인 언리얼 프로그래밍을 위한 방법 제시
■ 언리얼 엔진 게임 프레임워크의 체계적인 분석과 활용
■ 애니메이션 시스템, 물리 엔진, UI 시스템, 비헤이비어 트리 인공지능의 활용

이 책의 대상 독자

■ 언리얼 프로그래밍에 입문하고 싶은 게임 개발자
■ 언리얼 엔진으로 콘텐츠를 제작하고 싶은 게임 개발자
■ 게임 개발에 입문하고 싶은 프로그래머
■ 언리얼 엔진의 구조를 이해하고 싶은 프로그래머

상세 이미지

저자/역자 소개

지은이의 말

언리얼 엔진 프로그래밍 책을 저술하는 것은 상당한 자신감을 필요로 한다. 20년간 최고의 게임 엔진이라는 찬사를 받아온 언리얼 엔진이라는 이름의 무게 때문이다. 언리얼 엔진 프로그래밍을 이해한다는 것은 게임 엔진 기술의 최고봉을 정복한다는 상징성을 지니므로 프로그래밍 이상의 큰 의미를 가진다.
그래서 나는 언리얼 엔진을 몇 년 동안 공부해왔고, 이제서야 언리얼 엔진을 잘 모르는 사람들에게 소개할 정도가 됐다고 생각해 책을 집필하기로 마음먹었다. 이 책은 언리얼 엔진을 공부하고 싶은 학생과 아직 언리얼 엔진을 경험하지 못한 프로그래머를 대상으로 한다.
에픽게임즈 홈페이지에는 많은 문서와 튜토리얼 영상이 있으며, 이를 통해 언리얼 엔진의 다양한 기능을 학습할 수 있다. 하지만 들여다볼수록 언리얼 엔진은 엔진이 제공하는 각각의 훌륭한 기능보다 게임 개발을 어떻게 설계해야 하는지 전체적인 가이드를 제시하는 엔진이라는 점에서 더 매력적이라는 느낌을 강하게 받았다.
비유하자면 언리얼 엔진은 개발자가 숲과 나무를 모두 바라보고 개발할 수 있도록 설계한 엔진이고, 여기에는 에픽게임즈의 개발 철학이 담겨 있다. 아쉽게도 에픽게임즈 홈페이지에서는 이러한 철학을 찾아볼 수 없다. 그렇기 때문에 언리얼 엔진 소스 코드를 분석하고, 그것들이 왜 만들어졌는지를 개인적으로 유추할 수밖에 없었다. 이 책은 내 나름대로 언리얼 엔진을 분석해 정리한 것이다.
프로그래머 관점에서 언리얼 엔진 프로그래밍을 본격적으로 시작하려면, 다음과 같은 시스템을 이해하고 사용할 수 있어야 한다. 이 모든 것을 한 번에 익히기에는 학습할 분량이 많으므로, 쉬운 내용부터 단계별로 예제를 구성했다.

■ 언리얼 엔진의 빌드 시스템
■ 언리얼 엔진의 모듈 시스템
■ 언리얼 엔진 실행 환경(런타임)
■ 언리얼 오브젝트의 선언과 관리
■ 언리얼 엔진 C++의 유용한 기능

콘텐츠 제작자 입장에서 언리얼 엔진으로 게임 콘텐츠를 제작할 때는 다음에 제시한 각 요소를 설정하고 설계하는 능력을 갖춰야 한다. 이 또한 프로그래밍 난이도에 맞춰 단계별로 학습할 수 있도록 예제를 구성했다.

■ 게임 콘텐츠를 수용하는 환경인 월드(World)
■ 게임 콘텐츠의 기본 단위 액터(Actor)
■ 게임플레이가 진행되는 배경 레벨(Level)
■ 게임에 입장한 플레이어(Player)에게 부여되는 액터
■ 게임의 승패를 결정하는 룰, 게임 모드(GameMode)와 관련 액터
■ 게임 제작에 필요한 각종 보조 기능

이 책을 읽고 위에 언급한 모든 요소를 이해하길 바란다. 언리얼 엔진을 충분히 이해한다면, 그 지식은 앞으로 다른 엔진을 사용하거나 스스로 엔진을 만드는 경우에도 게임 콘텐츠를 어떻게 설계하고 만들어가야 하는지 알려주는 유용한 나침반이 될 것이다.

지은이 소개

이득우

1998년부터 2013년까지 국내의 굵직한 게임 회사, 포털 회사, 게임 엔진 회사에 근무했다. 2013년에 독립해 언리얼 엔진 4를 접한 후로 엔씨소프트, 넥슨 등 다양한 회사에서 언리얼 엔진 교육을 진행해왔고, 2017년에는 미국 에픽게임즈 본사로부터 언리얼 데브 그랜트(Unreal Dev Grant)를 수상했다. 현재 청강문화산업대학교 게임콘텐츠 스쿨에 교수로 재직 중이며, 국제 인디 게임 행사인 부산인디커넥트(BIC) 페스티벌을 기획해 4년째 운영하고 있다.

목차

목차
  • Chapter 1. 개발 환경 설정
    • 기본 프로그램의 설치
    • 언리얼 프로젝트의 생성
    • 언리얼 C++ 개발 환경 설정
    • 예제 프로젝트의 준비

  • Chapter 2. 액터의 설계
    • 언리얼 콘텐츠의 구성 요소
    • 액터의 설계
    • 액터와 에디터 연동
    • 액터 기능의 확장
    • 객체 유형과 값 유형
    • 애셋의 지정

  • Chapter 3. 움직이는 액터의 제작
    • 로깅 환경의 설정
    • 어설션
    • 액터의 주요 이벤트 함수
    • 움직이는 액터의 설계
    • 무브먼트 컴포넌트의 활용
    • 프로젝트의 재구성

  • Chapter 4. 게임플레이 프레임워크
    • 게임 모드
    • 플레이어의 입장

  • Chapter 5. 폰의 제작과 조작
    • 폰의 구성 요소
    • 폰의 조작
    • 애니메이션의 설정

  • Chapter 6. 캐릭터의 제작과 컨트롤
    • 캐릭터 모델
    • 컨트롤 회전의 활용
    • 삼인칭 컨트롤 구현(GTA 방식)
    • 삼인칭 컨트롤 구현(디아블로 방식)
    • 컨트롤 설정의 변경

  • Chapter 7. 애니메이션 시스템의 설계
    • 애니메이션 블루프린트
    • 폰과 데이터 연동
    • 스테이트 머신의 제작
    • 점프 기능의 구현
    • 애니메이션 리타겟팅
    • 점프의 구현

  • Chapter 8. 애니메이션 시스템 활용
    • 애니메이션 몽타주
    • 델리게이트
    • 애니메이션 노티파이
    • 콤보 공격의 구현

  • Chapter 9. 충돌 설정과 대미지 전달
    • 콜리전 설정
    • 트레이스 채널의 활용
    • 디버그 드로잉
    • 대미지 프레임워크

  • Chapter 10. 아이템 상자와 무기 제작
    • 캐릭터 소켓 설정
    • 무기 액터의 제작
    • 아이템 상자의 제작
    • 아이템의 습득

  • Chapter 11. 게임 데이터와 UI 위젯
    • 엑셀 데이터의 활용
    • 액터 컴포넌트의 제작
    • 캐릭터 위젯 UI 제작
    • 모듈과 빌드 설정
    • UI와 데이터의 연동

  • Chapter 12. AI 컨트롤러와 비헤이비어 트리
    • AIController와 내비게이션 시스템
    • 비헤이비어 트리 시스템
    • NPC의 추격 기능 구현
    • NPC의 공격

  • Chapter 13. 프로젝트의 설정과 무한 맵의 제작
    • 프로젝트의 정리와 모듈의 추가
    • INI 설정과 애셋의 지연 로딩
    • 무한 맵의 생성
    • 네비게이션 메시 시스템 설정

  • Chapter 14. 게임플레이의 제작
    • 캐릭터의 스테이트 설정
    • 플레이어 데이터와 UI 연동
    • 게임 데이터의 관리

  • Chapter 15. 게임의 완성
    • 게임 데이터의 저장과 로딩
    • 전투 시스템의 설계
    • 타이틀 화면의 제작
    • 게임의 중지와 결과 화면
  • Appendix A. 유용한 비주얼 스튜디오 2017 단축키 모음
  • Appendix B. 비주얼 로거의 활용

도서 오류 신고

도서 오류 신고

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

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

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

정오표

정오표

언리얼 엔진 4.21 버전 관련 내용은 소스코드를 참고해주세요.

[p.68 : 코드 2-4 Fountain.cpp]
아래 이미지의 코드 6줄 제거.


[p.72 : 아래에서 1행]
UPROPERY 매크로
->
UPROPERTY 매크로

[p.195 : 7행]

[p.195 : 20행]

[p.204]

[p.207]
애니메이션 시스템 저작
->
애니메이션 시스템 제작

[p.210]
클래스 정보
->
클래스 세팅

[p.215 : 위에서 12행]
NativeAnimationUpdate 함수를
->
NativeUpdateAnimation 함수를

[p.300]
"DebugDrawHelpers.h"
->
"DrawDebugHelpers.h"

[p.311]
SetActorCollisionEnabled
->
SetActorEnableCollision

[p.358 코드 11-5]
ABCHECK(ABCharacterTable->RowMap.Num() > 0);
->
ABCHECK(ABCharacterTable->GetRowMap().Num() > 0);

[p.415 : 2행]
다음의 셋 중 하나의 값을 반환해야 한다.
->
다음의 넷 중 하나의 값을 반환해야 한다.

[p.417]

[p.429 3행 내용 추가]
for (auto const& OverlapResult : OverlapResults)

[p.441]
BTTask를 부모로 하는
->
BTTaskNode를 부모로 하는

[p.504 : 1행]

[p.520 코드]
auto ABPlayerState = Cast(PlayerState);
->
auto ABPlayerState = Cast(GetPlayerState());

[p.539]
파일-현재를 다른 이름으로 저장
->
파일-현재 레벨을 다른 이름으로 저장

[p.547]

[p.556]
코드 15-5 PlayerState.h
->
코드 15-5 ABPlayerState.h

[p.557]
코드 15-5 PlayerState.cpp
->
코드 15-5 PlayerState.h

[p.582]
그림 15-18 프로젝트 세팅
->
월드 세팅

[p.636: 찾아보기 N]
NativeAnimationUpdate
->
NativeUpdateAnimation