책소개
전문가에게 배우는 실전적인 언리얼 5 C++ 디자인 패턴 디자인 패턴은 코드를 더 빠르고 관리하기 쉽게 작성할 수 있게 해준다. 이 책은 다양한 디자인 패턴을 설명하고 그것들을 언리얼 엔진 5 프로젝트에 적용하는 방법을 알려준다. 디자인 패턴은 물론, 엔진의 작동 방식도 더욱 깊이 이해하게 됨으로써 언리얼 개발 실무에서 느꼈던 한계를 돌파할 수 있게 해준다. 언리얼 C++ 코딩과 블루프린트의 기초 원리로 시작하여, 코드에 패턴을 적용할 때 알아야 할 개념 및 이점에 대한 탄탄한 이해를 쌓게 된다. 먼저 1부에서는 더블 버퍼, 플라이웨이트, 공간 분할, 컴포넌트, 업데이트 메서드, 비헤이비어 트리 등 언리얼 엔진 5의 핵심에 내장된 패턴들에 대해 살펴본다. 2부에서는 ‘틱’을 대체하는 방법, 그리고 인터페이스 및 이벤트 관찰자 패턴, 나아가 참조 연결을 분리하기 위한 UML을 설명하며 게임플레이 예제를 C++로 작성해본다. 3부는 싱글턴, 커맨드, 상태 패턴과 함께 행동 패턴, 코드 구조화를 위한 템플릿 패턴, 서브클래스 샌드박스, 타입 오브젝트를 구현하고, 끝으로 더티 플래그, 데이터 지역성, 오브젝트 풀링까지 출시 전 성능 최적화를 위한 디자인 패턴 활용에 초점을 맞춘다.
저자소개
13년 이상 고등 교육기관에서 게임 개발을 가르친 언리얼 전문가. 테크니컬 디자인, 아트, 애니메이션 등 다양한 분야에서 프로젝트를 출시했다. 스태퍼드셔 대학교에서 게임 기술 전공의 디렉터를 맡고 있으며, 영국에서 가장 큰 게임 교육 학부의 프로그래밍 팀을 책임지고 있다. 언리얼 공인 강사로도 활동하고 있으며, 교육 콘텐츠 크리에이터로서 에픽게임즈와 함께 언리얼 엔진 5 학습 자료를 제작하고 있다.
목차
지은이 소개 ix옮긴이 소개 x기술 감수자 소개 xi옮긴이 머리말 xii베타리더 후기 xv추천 서문 xvi감사의 글 xviii이 책에 대하여 xixPART I 언리얼 엔진 5에서 배우기CHAPTER 1 언리얼 엔진 5와 레이어 이해하기 31.1 기술적 요구 사항 41.2 언리얼 엔진 5 소개 41.3 언리얼 엔진 5 설치 및 개발 환경 준비 61.4 퍼지 레이어: C++와 블루프린트의 간극을 메우는 다리 9__1.4.1 프로퍼티 지정자 10 / 1.4.2 함수 지정자 11 / 1.4.3 상속의 유용성 121.5 블루프린트에서 C++로 다시 변환하기 13__1.5.1 작업 예제 161.6 요약 191.7 연습 문제 19__1.7.1 정답 20CHAPTER 2 헬로, 패턴 212.1 기술적 요구 사항 212.2 SOLID 원칙 23__2.2.1 단일 책임 23 / 2.2.2 개방-폐쇄 24 / 2.2.3 리스코프 치환 26__2.2.4 인터페이스 분리 27 / 2.2.5 의존관계 반전 302.3 흔한 문제에 대한 해결책 탐색 31__2.3.1 움직이는 박스 문제 32 / 2.3.2 회전하는 박스 문제 40__2.3.3 캐스케이딩 캐스트 체인 문제 432.4 트레이드오프 482.5 요약 49CHAPTER 3 UE5 패턴 실습: 더블 버퍼, 플라이웨이트, 공간 분할 513.1 기술적 요구 사항 523.2 더블 버퍼 523.3 플라이웨이트 563.4 공간 분할 58__3.4.1 월드 파티션 소개 61__3.4.2 오브젝트가 언제 로드되는지 이해하기 64__3.4.3 필요한 액터를 확실히 로드하는 방법 67__3.4.4 기존 레벨에서 월드 파티션 활성화하기 693.5 요약 69CHAPTER 4 UE5 내장 패턴: 컴포넌트, 업데이트 메서드, 비헤이비어 트리 714.1 기술적 요구 사항 724.2 컴포넌트 이해 및 생성 724.3 게임플레이 프로토타이핑에 업데이트 메서드 적용 794.4 비헤이비어 트리로 작업하기 81__4.4.1 AI 컨트롤러 만들기 84__4.4.2 블랙보드 에셋 만들기 85__4.4.3 비헤이비어 트리 구축하기 864.5 요약 101PART II 익명 모듈식 디자인CHAPTER 5 틱 버리기 1055.1 기술적 요구 사항 1065.2 시작하기 전에 1065.3 틱으로 돌아가는 월드 1065.4 멈추는 시계 1105.5 이벤트 기반 시스템 1155.6 요약 119CHAPTER 6 깔끔한 통신: 인터페이스 및 이벤트 관찰자 패턴 1216.1 기술적 요구 사항 1216.2 UE5의 클래스 간 인터페이스 통신 122__6.2.1 블루프린트 인터페이스 122__6.2.3 인터페이스 이벤트와 함수의 차이점 126__6.2.4 C++에서의 인터페이스 129__6.2.5 인터페이스 통신 예제 구현 1306.3 UE5에서 이벤트 델리게이트 통신 구현하기 132__6.3.1 블루프린트의 이벤트 델리게이트 132__6.3.2 C++의 이벤트 델리게이트 136__6.3.3 유용한 델리게이트 툴 만들기 1386.4 요약 142CHAPTER 7 완벽하게 분리된 시스템 1437.1 기술적 요구 사항 1447.2 UML을 사용하여 샘플 계층구조 계획하기 144__7.2.1 클래스 관계의 형태 144__7.2.2 시퀀스 다이어그램 1467.3 참조 연결의 분리 147__7.3.1 모듈화와 분리 147__7.3.2 인프라 구축 151__7.3.3 분리 설계를 예제에 적용하기 152__7.3.4 분리하기의 장점 1637.4 요약 164PART III 언리얼 위에서 작업하기CHAPTER 8 디자인 패턴 구축하기: 싱글턴, 커맨드, 상태 1678.1 기술적 요구 사항 1678.2 싱글턴 패턴 구현: 왜 이것이 판도라의 상자인지 이해하기 1688.3 다양한 사용 사례를 위한 커맨드 패턴 구현하기 170__8.3.1 에디터 유틸리티에서의 실행 취소 기능을 위한 커맨드 패턴 172__8.3.2 C++에서의 게임플레이를 위한 커맨드 패턴 1778.4 스테이트 머신의 다층 구조 만들기 180__8.4.1 애니메이션 스테이트 머신 알아보기 181__8.4.2 열거형/스위치 구현 183__8.4.3 정적 스테이트와 인스턴스화된 스테이트 185__8.4.4 동시 스테이트 머신 187__8.4.5 계층적 스테이트 머신 189__8.4.6 푸시다운 오토마타 1908.5 요약 191CHAPTER 9 행동 패턴을 이용한 코드 구조화: 템플릿, 서브클래스 샌드박스, 타입 오브젝트 1939.1 기술적 요구 사항 1949.2 템플릿 패턴 살펴보기 194__9.2.1 템플릿 만들기(부모 클래스) 196__9.2.2 자식 클래스 만들기 198__9.2.3 템플릿 권총 200__9.2.4 템플릿 산탄총 2059.3 서브클래스 샌드박스 패턴 이해하기 207__9.3.1 샌드박스 만들기(부모 클래스) 208__9.3.2 자식 클래스 생성 211__9.3.3 샌드박스 권총 211__9.3.4 샌드박스 산탄총 2139.4 타입 오브젝트 패턴 215__9.4.1 배리언트 216 / 9.4.2 데이터 테이블 217 / 9.4.3 데이터 에셋 2189.5 요약 222CHAPTER 10 패턴을 통한 최적화 22310.1 기술적 요구 사항 22410.2 불필요한 처리를 줄이기 위해 더티 플래그 사용하기 224__10.2.1 더티 플래그의 적용 22510.3 데이터 지역성이 코드 효율에 미치는 영향 226__10.3.1 핫/콜드 분할 227__10.3.2 연속적인 배열 22810.4 오브젝트 풀링: 시간을 절약하기 위한 리소스 관리 229__10.4.1 오브젝트 풀링 구현하기 229__10.4.2 오브젝트 풀 만들기 23110.5 요약 241찾아보기 244