C++ 스크립트를 활용한 언리얼 엔진 5 게임 개발 (C++ 기초부터 실제 게임 개발까지, 언리얼 게임 개발의 모든 것)

C++ 스크립트를 활용한 언리얼 엔진 5 게임 개발 (C++ 기초부터 실제 게임 개발까지, 언리얼 게임 개발의 모든 것)

$40.85
Description
C++와 객체지향의 기본적인 개념을 배우는 것부터 시작해 C++ 스크립트와 언리얼 블루프린트를 활용해 실제 게임을 개발하는 과정을 차근차근 설명하는 책이다. 게임 액터와 캐릭터를 만들고 이를 제어하는 법, 다양한 오브젝트의 충돌을 처리하는 법, 코드가 완성된 다음 리팩터링을 통해 코드 전체의 품질을 향상하는 법 등 게임 개발 실전에서 다양하게 활용할 수 있는 내용을 상세하게 다루고 있다.
저자

젠유조지리

(ZeheyuGeorgeLi)
20년이넘는현장경력을가진열성적인게임개발자다.노련한소프트웨어엔지니어로서경력내내다양한게임개발에서중요한공헌을해왔으며,현재는유니티의시니어개발컨설턴트로일하고있다.
대학시절부터비디오게임에매료되기시작했고,이로써자신의직업여정을결정하는데
필요한기반을마련했다.게임개발경력초기에비주얼베이직,C/C++,다이렉트X(DirectX),OpenGL,윈도우GUI(WindowsGUI)와같은기술에몰두했고,이러한기초적인경험은이후업계에서성공할수있는토대가됐다.
경력을이어오는동안다양한상용게임에공헌해왔다.포트폴리오중에서도특히〈헤일로
인피니트〉,〈매직더개더링아레나〉,〈스텔라〉,〈데드라이징2〉,〈빅스2〉와같은게임들
이눈에띈다.이들프로젝트에참여하면서프로그래밍,게임엔진,게임플레이및AI,그래픽,애니메이션,멀티플레이어게임,멀티플랫폼게임,게임물리등의다양한영역에걸쳐폭넓은지식과실무경험을쌓을수있었다.실제게임프로젝트개발에서는언리얼엔진과유니티엔진을모두사용했다.
게임개발자로서의업적외에8년동안대학에서학생들을가르치면서강의능력도연마했다.밴쿠버필름스쿨(VFS,VancouverFilmSchool),인터랙티브아트대학(CollegeofInteractiveArts),허페이유니온대학교(HefeiUnionUniversity)에서강사로활동하며자신의지식과전문기술을개발자를꿈꾸는학생들에게공유해왔다.VFS에서강의하는동안학생들에게언리얼엔진의복잡한기능을가르치기도했다.

목차

1부-언리얼C++스크립트시작하기


1장.첫언리얼C++게임만들기
__기술적인요구사항
__언리얼C++스크립팅살펴보기
____C++와블루프린트의차이
____언제C++를사용하는가?
____C++프로그래밍과C++스크립팅의차이
__템플릿을활용해C++슈팅게임프로젝트생성하기
____비주얼스튜디오2022설치하기
____언리얼엔진에소스코드가설치됐는지확인하기
____에픽게임즈런처를통해언리얼엔진5에디터실행하기
____MyShooterC++프로젝트생성하기
____기본소스코드에디터로언리얼엔진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++코드살펴보기
__기술적인요구사항
__MyShooterC++프로젝트구조이해하기
__게임프로그램구조이해하기
__소스코드에익숙해지기
____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++에서콘솔명령어실행하기
__게임패키징하기
____패키징에필요한프로젝

출판사 서평

◈이책에서다루는내용◈
◆마이크로소프트비주얼스튜디오와언리얼엔진에디터의코딩스킬
◆언리얼엔진C++스크립트를위한C++프로그래밍기본지식
◆C++문법과객체지향프로그래밍의기본개념
◆NPC제어,충돌,상호작용,내비게이션,UI,멀티플레이어메커니즘에대한이해
◆사전정의된언리얼엔진클래스와프로그래밍메커니즘활용
◆현실적인문제를해결하고업무를완성하기위해필요한코드작성
◆게임개발에서활용되는문제해결방법과도구의구현


◈이책의대상독자◈

언리얼을처음접하는초보자를대상으로하지않는책이다.책의내용을둘러보기에앞서언리얼엔진과블루프린트에대한기초적인이해가필요하며이들을다뤄본경험이있어야한다.즉,기초지식과경험이있어야이책의내용을지렛대삼아기존지식을충실히다지고학습효과를극대화할수있을것이다.

◆게임디자이너,아티스트와같이엔지니어가아닌게임개발자들중언리얼엔진을활용한게임개발이라는측면에서C++를공부하려는사람들
◆언리얼엔진C++프로그래밍에대한경험이부족하지만다음프로젝트나구직을위해필요한스킬을빠르게습득해야하는소프트웨어엔지니어들
◆학습이나개인프로젝트를위해언리얼C++프로그래밍을배우고습득하려는학생들
◆언리얼엔진을사용한게임개발에흥미를느끼면서책을통해포괄적인지식을얻으려는사람들


◈이책의구성◈

1장,‘첫언리얼C++게임만들기’에서는언리얼이제공하는일인칭템플릿을사용해새로운C++게임프로젝트를생성하는법을빠르게살펴본다.이장에서는현존하는블루프린트게임프로젝트를C++게임프로젝트로변환하는방법도알아볼것이다.
2장,‘비주얼스튜디오에서C++코드편집하기’에서는강력한IDE인마이크로소프트비주얼스튜디오에서C++코드를편집하는법에대해배워본다.기본적인스킬뿐만아니라C++를사용해간단한계산기애플리케이션도만들어볼것이다.
3장,‘C++와객체지향프로그래밍배우기’에서는작성한계산기프로젝트를기반으로C++프로그래밍을좀더심도있게살펴본다.C++기본문법,데이터유형,흐름제어flowcontrol도함께살펴볼것이다.아울러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++스크립트를활용해언리얼게임을만드는방법을소개합니다.새로입문하는초보자들이어려움을느끼는툴의설치부터시작해기본적인프로그래밍의문법과객체지향프로그래밍의개념등,게임입문에필요한다양한지식을실무적인관점에서자세히설명해주고있습니다.게임개발에필요한모든부분을책한권으로소개하기에는어려움이있지만,이책의내용을따라가다보면언리얼블루프린트와같이자세히소개하지않는분야에대해서도자연스럽게배울수있을것입니다.
번역을진행하면서최대한책의내용이정상적으로실행될수있도록필요한내용을추가하고본문을수정했습니다.모쪼록책에서전달하고자하는게임개발에필요한기술적인내용들이독자여러분에게효과적으로전달될수있길바랍니다.