C++ 스크립트를 활용한 언리얼 엔진 5 게임 개발

C++ 기초부터 실제 게임 개발까지, 언리얼 게임 개발의 모든 것
$43.09
SKU
9791161759289
+ Wish
[Free shipping over $100]

Standard Shipping estimated by Mon 01/6 - Fri 01/10 (주문일로부 10-14 영업일)

Express Shipping estimated by Wed 01/1 - Fri 01/3 (주문일로부 7-9 영업일)

* 안내되는 배송 완료 예상일은 유통사/배송사의 상황에 따라 예고 없이 변동될 수 있습니다.
Publication Date 2024/11/29
Pages/Weight/Size 188*235*21mm
ISBN 9791161759289
Categories IT 모바일 > 게임
Description
C++와 객체지향의 기본적인 개념을 배우는 것부터 시작해 C++ 스크립트와 언리얼 블루프린트를 활용해 실제 게임을 개발하는 과정을 차근차근 설명하는 책이다. 게임 액터와 캐릭터를 만들고 이를 제어하는 법, 다양한 오브젝트의 충돌을 처리하는 법, 코드가 완성된 다음 리팩터링을 통해 코드 전체의 품질을 향상하는 법 등 게임 개발 실전에서 다양하게 활용할 수 있는 내용을 상세하게 다루고 있다.
Contents
1부 ― 언리얼 C++ 스크립트 시작하기

1장. 첫 언리얼 C++ 게임 만들기


__기술적인 요구 사항
__언리얼 C++ 스크립팅 살펴보기
____C++와 블루프린트의 차이
____언제 C++를 사용하는가?
____C++ 프로그래밍과 C++ 스크립팅의 차이
__템플릿을 활용해 C++ 슈팅 게임 프로젝트 생성하기
____비주얼 스튜디오 2022 설치하기
____언리얼 엔진에 소스 코드가 설치됐는지 확인하기
____에픽게임즈 런처를 통해 언리얼 엔진 5 에디터 실행하기
____MyShooter C++ 프로젝트 생성하기
____기본 소스 코드 에디터로 언리얼 엔진 5에 비주얼 스튜디오 연결하기
____비주얼 스튜디오에서 C++ 소스 코드 열어보기
__블루프린트 프로젝트를 C++ 프로젝트로 변환하기
__요약

2장. 비주얼 스튜디오에서 C++ 코드 편집하기

__기술적인 요구 사항
__비주얼 스튜디오 시작하기
__비주얼 스튜디오 IDE의 UI 살펴보기
____코드 에디터
____메뉴
____검색 상자
____툴바
____솔루션 탐색기
____출력 창
____오류 목록 창
__비주얼 스튜디오에서 코드 편집하기
____입력 커서 제어하기
____텍스트 편집 키
____코드 선택
____인텔리센스
____유용한 단축키
__C++ 코딩 연습
____비주얼 스튜디오에서 새로운 C++ 솔루션 생성하기
____main.cpp 파일 생성하기
____에디터 테마 변경하기
____main.cpp에 초기 코드 작성하기
____Calculator 클래스 추가하기
__요약

3장. C++와 객체지향 프로그래밍 배우기

__기술적인 요구 사항
__C++ 알아보기
__C++ 프로그램 구조 살펴보기
__C++ 함수 정의하기
____매개변수와 함수 정의
____함수 호출하기
____main( ) 함수 작성하기
__기본적인 계산기 프로그램 작성해보기
__C++ 문법 배우기
____C++ 데이터 유형 사용하기
____변수 정의하기
____C++ 배열 사용하기
____C++ 연산자 사용하기
____사용자 입력 받기
____C++ 주석 추가하기
____C++ 흐름 제어
__개선된 계산기 프로그램 작성해보기
__레퍼런스와 포인터 생성하기
____레퍼런스
____포인터
__객체지향 프로그래밍 이해하기
____객체지향 프로그래밍이란 무엇인가?
____클래스와 객체는 무엇인가?
____C++에서 클래스 생성하기
____C++에서 객체 생성하기
__객체지향 프로그래밍 계산기 프로그램 작성해보기
____calculator 클래스에 생성자와 게터 함수 추가하기
____Calculator 클래스를 상속하는 CalculatorEx 클래스 생성하기
__요약

4장. FPS 게임 프로젝트와 C++ 코드 살펴보기

__기술적인 요구 사항
__MyShooter C++ 프로젝트 구조 이해하기
__게임 프로그램 구조 이해하기
__소스 코드에 익숙해지기
____MyShooterCharacter.h
____MyShooterCharacter.cpp
____MyShooterProjectile.h와 MyShooterProjectile.cpp
____TP_PickUpComponent.h와 TP_PickUpComponent.cpp
____TP_WeaponComponent.h와 TP_WeaponComponent.cpp
____MyShooter.h와 MyShooter.cpp
____MyShooterGameMode.h와 MyShooterGameMode.cpp
____MyShooter.Build.cs, MyShooter.Target.cs, MyShooterEditor.target.cs
__비주얼 스튜디오에서 언리얼 에디터 시작하고 게임 프로젝트 열기
__요약

2부 ― 언리얼 엔진 C++ 스크립팅

5장. 언리얼 엔진 게임플레이 프레임워크 기본 클래스 활용하기


__기술적인 요구 사항
__내려보기 프로젝트 Pangaea 생성하기
__게임플레이 프레임워크 기본 클래스 이해하기
__게임 액터 클래스 생성하기
____ADefenseTower 클래스 생성하기
____AProjectile 클래스 생성하기
____APlayerAvatar 클래스 생성하기
__C++ 프로젝트 리컴파일하기
__UPROPERTY 매크로 사용하기
____UPROPERTY 문법
____UPROPERTY 지정자와 메타데이터
____ADefenseTower, AProjectile, APlayerAvatar 속성을 언리얼 엔진 프로퍼티로 마킹하기
__UFUNCTION 매크로 사용하기
____UFUNCTION 문법
____UFUNCTION 지정자와 메타데이터
____ADefenseTower, APlayerAvatar 멤버 함수를 UFUNCTION 매크로로 태깅하기
__새로운 액터에 컴포넌트 추가하기
____컴포넌트 헤더 파일 추가하기
____두 컴포넌트에 프라이빗 프로퍼티 정의하기
____컴포넌트에 퍼블릭 게터 함수 추가하기
____클래스 생성자에 컴포넌트 생성하기
__새로운 액터 클래스에서 블루프린트 생성하기
__언리얼 게임플레이 프레임워크 클래스 학습하기
____Pangaea 게임에서 게임플레이 프레임워크 클래스 생성하기
____PlayerController 클래스 살펴보기
____GameModeBase 클래스 살펴보기
____GameState 살펴보기
____GameInstance 살펴보기
____클래스 인스턴스 획득하기
__Cast 템플릿 함수 사용하기
__요약

6장. 게임 액터 생성하기

__기술적인 요구 사항
__플레이어 아바타 설정하기
____플레이어 아바타에 SpringArmComponent와 CameraComponent 추가하기
____플레이어 아바타 초기화하기
__캐릭터의 SkeletalMeshComponent 설정하기
____캐릭터 모델 임포트하기
____BP_PlayerAvatar에서 Hero 스켈레탈 메시 사용하기
____게임의 플레이어 폰 대체하기
__플레이어 아바타의 애니메이션 블루프린트 생성하기
____PlayerAvatarAnimInstance 클래스 생성하기
____ABP_PlayerAvatar 블루프린트 생성하기
____ABP_PlayerAvatar에 스테이트 머신 생성하기
____애니메이션 인스턴스와 이동 속도 싱크 맞추기
__요약

7장. 캐릭터 제어하기

__기술적인 요구 사항
__플레이어 캐릭터를 제어해 공격 수행하기
____액션 맵에 공격 액션 추가하기
____공격 액션에 핸들러 함수 추가하기
____OnAttackPressed( ) 액션 핸들러 함수 구현하기
____CanAttack( )과 Attack( ) 함수 구현하기
____애니메이션 루프를 수행하지 않도록 처리하기
____OnStateAnimationEnds 함수 구현하기
__액터 파괴하기
__적 캐릭터 생성하기
____Enemy 클래스 생성하기
____EnemyController 클래스 생성하기
____ABP_Enemy 애니메이션 블루프린트 생성하기
____BP_Enemy 블루프린트 생성하기
__게임 테스트하기
__노트
__요약

8장. 충돌 처리하기

__기술적인 요구 사항
__충돌 감지의 이해
__충돌 감지 프리셋 설정
__충돌을 사용해 게임 상호작용 수행하기
____무기, 디펜스 타워, 파이어볼 액터 다운로드하고 생성하기
____무기 습득하기
____적 무기 생성하기
____디펜스 타워에서 파이어볼 발사하기
____파이어볼 이동과 목표 충돌 체크하기
____디펜스 타워 피격 처리하기
__요약

9장. C++ 코드 품질 향상하기

__기술적인 요구 사항
__코드 리팩터링
____PlayerAvatarAnimInstance와 EnemyAnimInstance 클래스 통합하기
____PangaeaCharacer 클래스를 APlayerAvatar와 AEnemy 클래스의 부모 클래스로 만들기
__코드 리파이닝
____캐시 변수 사용하기
____파이어볼 풀 만들기
__디버그 메시지 출력하기
____UE_LOG 매크로 사용하기
____디버그 메시지 화면에 출력하기
__액터 인스턴스의 실제 클래스 타입 확인하기
__요약

3부 ― 멀티플레이어 게임 만들기

10장. 네트워크 멀티플레이어 게임 만들기


__기술적인 요구 사항
__싱글플레이어 게임과 멀티플레이어 게임 비교해보기
__에디터에서 멀티플레이어 게임 실행하기
__멀티플레이어 게임 네트워크 모드 살펴보기
__네트워크 동기화 처리하기
____RPC로 플레이어 공격 알려주기
____복제를 통해 클라이언트와 액터 변수 동기화하기
____RepNotify를 통해 캐릭터의 체력 바 업데이트하기
____서버에서 타격 처리하기
____서버에서 파이어볼 생성하기
__요약

11장. 게임 플로 제어하기

__기술적인 요구 사항
__Pangaea 게임 플로 디자인하기
__UI 위젯 만들기
____BP_LobbyWidget 만들기
____BP_HUDWidget 만들기
____BP_GameOverWidget 만들기
__PangaeaGameInstance에 네트워크 기능 추가하기
__게임 레벨에 UI 위젯 추가하기
__게임 타이머 추가하기
____APangaeaGameState 클래스에 타이머 변수 추가하기
____타이머 변수 리플리케이트하기
____OnTimeChangedDelegate 정의하기
____커스텀 이벤트를 생성하고 OnTimeChangedDelegate에 바인딩하기
____타이머 카운트다운하기
____APangaeaGameState를 프로젝트의 게임 스테이트 클래스로 할당하기
__디펜스 타워를 파괴해 게임 승리하기
__요약

12장. 게임 폴리싱과 패키징

__기술적인 요구 사항
__게임 폴리싱하기
____고품질 게임 에셋 임포트해 사용하기
____버그 수정하기
____프로파일링과 최적화
__언리얼 엔진 콘솔 명령어 사용하기
____모드와 콘솔 명령어 살펴보기
____C++에서 콘솔 명령어 실행하기
__게임 패키징하기
____패키징에 필요한 프로젝트 설정
____창으로 실행되는 게임 만들기
____콘텐츠를 검색할 때 하드코딩된 경로를 사용하지 않는 법
____프로젝트 패키징
__패키징 이후에 할 일들
__요약
Author
젠유 조지 리,진석준
20년이 넘는 현장 경력을 가진 열성적인 게임 개발자다. 노련한 소프트웨어 엔지니어로서 경력 내내 다양한 게임 개발에서 중요한 공헌을 해왔으며, 현재는 유니티의 시니어 개발 컨설턴트로 일하고 있다. 대학 시절부터 비디오 게임에 매료되기 시작했고, 이로써 자신의 직업 여정을 결정하는 데 필요한 기반을 마련했다. 게임 개발 경력 초기에 비주얼 베이직, C/C++, 다이렉트X(DirectX), OpenGL, 윈도우 GUI(Windows GUI)와 같은 기술에 몰두했고, 이러한 기초적인 경험은 이후 업계에서 성공할 수 있는 토대가 됐다.

경력을 이어오는 동안 다양한 상용 게임에 공헌해왔다. 포트폴리오 중에서도 특히 [헤일로 인피니트], [매직 더 개더링 아레나], [스텔라], [데드 라이징 2], [빅스 2]와 같은 게임들이 눈에 띈다. 이들 프로젝트에 참여하면서 프로그래밍, 게임 엔진, 게임플레이 및 AI, 그래픽, 애니메이션, 멀티플레이어 게임, 멀티플랫폼 게임, 게임 물리 등의 다양한 영역에 걸쳐 폭넓은 지식과 실무 경험을 쌓을 수 있었다. 실제 게임 프로젝트 개발에서는 언리얼 엔진과 유니티 엔진을 모두 사용했다.

게임 개발자로서의 업적 외에 8년 동안 대학에서 학생들을 가르치면서 강의 능력도 연마했다. 밴쿠버 필름 스쿨(VFS, Vancouver Film School), 인터랙티브 아트 대학(College of Interactive Arts), 허페이 유니온 대학교(Hefei Union University)에서 강사로 활동하며 자신의 지식과 전문 기술을 개발자를 꿈꾸는 학생들에게 공유해왔다. VFS에서 강의하는 동안 학생들에게 언리얼 엔진의 복잡한 기능을 가르치기도 했다.
20년이 넘는 현장 경력을 가진 열성적인 게임 개발자다. 노련한 소프트웨어 엔지니어로서 경력 내내 다양한 게임 개발에서 중요한 공헌을 해왔으며, 현재는 유니티의 시니어 개발 컨설턴트로 일하고 있다. 대학 시절부터 비디오 게임에 매료되기 시작했고, 이로써 자신의 직업 여정을 결정하는 데 필요한 기반을 마련했다. 게임 개발 경력 초기에 비주얼 베이직, C/C++, 다이렉트X(DirectX), OpenGL, 윈도우 GUI(Windows GUI)와 같은 기술에 몰두했고, 이러한 기초적인 경험은 이후 업계에서 성공할 수 있는 토대가 됐다.

경력을 이어오는 동안 다양한 상용 게임에 공헌해왔다. 포트폴리오 중에서도 특히 [헤일로 인피니트], [매직 더 개더링 아레나], [스텔라], [데드 라이징 2], [빅스 2]와 같은 게임들이 눈에 띈다. 이들 프로젝트에 참여하면서 프로그래밍, 게임 엔진, 게임플레이 및 AI, 그래픽, 애니메이션, 멀티플레이어 게임, 멀티플랫폼 게임, 게임 물리 등의 다양한 영역에 걸쳐 폭넓은 지식과 실무 경험을 쌓을 수 있었다. 실제 게임 프로젝트 개발에서는 언리얼 엔진과 유니티 엔진을 모두 사용했다.

게임 개발자로서의 업적 외에 8년 동안 대학에서 학생들을 가르치면서 강의 능력도 연마했다. 밴쿠버 필름 스쿨(VFS, Vancouver Film School), 인터랙티브 아트 대학(College of Interactive Arts), 허페이 유니온 대학교(Hefei Union University)에서 강사로 활동하며 자신의 지식과 전문 기술을 개발자를 꿈꾸는 학생들에게 공유해왔다. VFS에서 강의하는 동안 학생들에게 언리얼 엔진의 복잡한 기능을 가르치기도 했다.