◈ 이 책에서 다루는 내용 ◈
◆ 마이크로소프트 비주얼 스튜디오와 언리얼 엔진 에디터의 코딩 스킬
◆ 언리얼 엔진 C++ 스크립트를 위한 C++ 프로그래밍 기본 지식
◆ C++ 문법과 객체지향 프로그래밍의 기본 개념
◆ NPC 제어, 충돌, 상호작용, 내비게이션, UI, 멀티플레이어 메커니즘에 대한 이해
◆ 사전 정의된 언리얼 엔진 클래스와 프로그래밍 메커니즘 활용
◆ 현실적인 문제를 해결하고 업무를 완성하기 위해 필요한 코드 작성
◆ 게임 개발에서 활용되는 문제 해결 방법과 도구의 구현
◈ 이 책의 대상 독자 ◈
언리얼을 처음 접하는 초보자를 대상으로 하지 않는 책이다. 책의 내용을 둘러보기에 앞서 언리얼 엔진과 블루프린트에 대한 기초적인 이해가 필요하며 이들을 다뤄본 경험이 있어야 한다. 즉, 기초 지식과 경험이 있어야 이 책의 내용을 지렛대 삼아 기존 지식을 충실히 다지고 학습 효과를 극대화할 수 있을 것이다.
◆ 게임 디자이너, 아티스트와 같이 엔지니어가 아닌 게임 개발자들 중 언리얼 엔진을 활용한 게임 개발이라는 측면에서 C++를 공부하려는 사람들
◆ 언리얼 엔진 C++ 프로그래밍에 대한 경험이 부족하지만 다음 프로젝트나 구직을 위해 필요한 스킬을 빠르게 습득해야 하는 소프트웨어 엔지니어들
◆ 학습이나 개인 프로젝트를 위해 언리얼 C++ 프로그래밍을 배우고 습득하려는 학생들
◆ 언리얼 엔진을 사용한 게임 개발에 흥미를 느끼면서 책을 통해 포괄적인 지식을 얻으려는 사람들
◈ 이 책의 구성 ◈
1장, ‘첫 언리얼 C++ 게임 만들기’에서는 언리얼이 제공하는 일인칭 템플릿을 사용해 새로운 C++ 게임 프로젝트를 생성하는 법을 빠르게 살펴본다. 이 장에서는 현존하는 블루프린트 게임 프로젝트를 C++ 게임 프로젝트로 변환하는 방법도 알아볼 것이다.
2장, ‘비주얼 스튜디오에서 C++ 코드 편집하기’에서는 강력한 IDE인 마이크로소프트 비주얼 스튜디오에서 C++ 코드를 편집하는 법에 대해 배워본다. 기본적인 스킬뿐만 아니라 C++를 사용해 간단한 계산기 애플리케이션도 만들어볼 것이다.
3장, ‘C++와 객체지향 프로그래밍 배우기’에서는 작성한 계산기 프로젝트를 기반으로 C++ 프로그래밍을 좀 더 심도 있게 살펴본다. C++ 기본 문법, 데이터 유형, 흐름 제어 flow control도 함께 살펴볼 것이다. 아울러 C++ 객체지향 프로그래밍도 간단하게 소개한다.
4장, ‘FPS 게임 프로젝트와 C++ 코드 살펴보기’는 파일의 구조와 소스 파일을 포함해 생성된 일인칭 게임 프로젝트를 좀 더 자세히 다룬다. C++ 코드를 각 줄별로 간단히 설명하면서 C++ 코드가 동작하는 법을 더 잘 이해하도록 도와줄 것이다.
5장, ‘언리얼 엔진 게임플레이 프레임워크 기본 클래스 활용하기’에서는 새로운 탑다운 형식의 게임 프로젝트인 Pangaea1를 생성하는 법을 배워본다. 게임 액터인 DefenseTower를 만드는 법, 게임 캐릭터인 PlayerAvatar 클래스를 만드는 법, C++에서 액터 프로퍼티와 함수를 정의하는 법도 함께 살펴본다.
6장, ‘게임 액터 생성하기’에서는 게임 Pangaea의 메인 캐릭터를 만들고 설정하는 법을 설명한다. 이 장에는 캐릭터 설정, 애니메이션 인스턴스 만들기, 스테이트 머신 정의, 애니메이션과의 동기화 같은 내용도 포함된다.
7장, ‘캐릭터 제어하기’에서는 게임 캐릭터를 제어하는 법을 알아본다. 여기에는 입력 맵, 플레이어 입력 처리, 플레이어 캐릭터의 리액션을 효과적으로 프로세싱하기 등이 포함된다. 여기에 더해 NPC를 제어하는 AI 컨트롤러와 내비게이션 시스템에 대해서도 배워볼 것이다.
8장, ‘충돌 처리하기’에서는 엔진의 충돌 시스템과 게임 상호작용을 설정하는 법을 배워본다. 타격을 수행하거나 탄환에 맞는 것과 같은 충돌 이벤트를 처리하기 위해 액터 콜라이더와 트리거를 설정하는 법을 배우게 될 것이다.
9장, ‘C++ 코드 품질 향상하기’에서는 코드 리팩터링과 리파이닝을 통해 소프트웨어 엔지니어링을 직접 체험해보고, 아울러 게임 코드의 품질과 성능을 높이기 위해 클래스 일반화, 캐싱, 풀링 등의 방법도 함께 알아볼 것이다.
10장, ‘네트워크 멀티플레이어 게임 만들기’에서는 서버, 클라이언트, 멀티플레이어 모드를 포함한 기본적인 멀티플레이어 게임의 개념을 소개하는 것부터 시작한다. 이후 단계별로 싱글플레이어 게임을 멀티플레이어 게임으로 변환하는 작업을 수행해볼 것이다.
11장, ‘게임 플로 제어하기’에서는 게임 Pangaea를 완전한 멀티플레이어 게임으로 바꿔본다. 메인 메뉴와 로비를 만들고, 플레이어가 호스트로 게임을 시작하거나 혹은 클라이언트로 게임 세션에 조인하도록 만들어준다. 아울러 C++와 블루프린트 스크립트 스킬을 사용해 사용자 인터페이스 동작을 제어하는 것도 함께 살펴본다.
12장, ‘게임 폴리싱과 패키징’에서는 시각적인 사용자 경험과 제품의 성능을 높이는 측면에서 게임을 폴리싱하는 법을 알아본다. 새로운 리소스와 메서드 그리고 저자의 경험에 기반한 제안 등이 소개될 것이다. 또한 실행 가능한 스탠드얼론 형태로 배포할 수 있는 Pangaea 프로젝트를 설정하고 패키징하는 방법도 단계별로 알아본다.
◈ 옮긴이의 말 ◈
게임 개발의 트렌드는 빠르게 변화하고 있습니다. 최근에는 언리얼과 유니티 같은 게임 엔진을 활용해 다양한 플랫폼에서 구동되는 게임을 개발하는 것이 업계의 표준으로 자리잡고 있습니다. 그중에서도 언리얼 엔진은 탁월한 성능을 기반으로 좀 더 현실에 가까운 산출물을 제공하면서 게임 시장에서의 명성을 확고하게 유지하고 있습니다.
이 책은 C++ 스크립트를 활용해 언리얼 게임을 만드는 방법을 소개합니다. 새로 입문하는 초보자들이 어려움을 느끼는 툴의 설치부터 시작해 기본적인 프로그래밍의 문법과 객체지향 프로그래밍의 개념 등, 게임 입문에 필요한 다양한 지식을 실무적인 관점에서 자세히 설명해주고 있습니다. 게임 개발에 필요한 모든 부분을 책 한 권으로 소개하기에는 어려움이 있지만, 이 책의 내용을 따라가다 보면 언리얼 블루프린트와 같이 자세히 소개하지 않는 분야에 대해서도 자연스럽게 배울 수 있을 것입니다.
번역을 진행하면서 최대한 책의 내용이 정상적으로 실행될 수 있도록 필요한 내용을 추가하고 본문을 수정했습니다. 모쪼록 책에서 전달하고자 하는 게임 개발에 필요한 기술적인 내용들이 독자 여러분에게 효과적으로 전달될 수 있길 바랍니다.