이득우의 언리얼 C++ 게임 개발의 정석 총 쪽수: 640p 공부 기간: 2023.02.25 - 2023.03.20 (24일) 평점: ★★★★★ 책 이름에 걸맞게 언리얼 C++ 개발 입문서의 정석 같은 책이었다고 생각한다. 책에서 언리얼 C++을 활용한 다음과 같은 내용들을 익혔다. 생성자와 액터의 수명 주기 함수들 주 게임 모듈과 추가 모듈 제작 액터 컴포넌트 제작 게임 모드를 통한 게임 관리 폰과 플레이어 컨트롤러 사용자 입력 처리 애니메이션 몽타주와 애니메이션 노티파이 델리게이트를 통한 디커플링과 바인딩 상태 머신 콜리전 처리 데이터 테이블로 게임 정보 관리 위젯 컴포넌트와 HUD 위젯 행동 트리를 활용한 AI 제작 INI 파일로 게임 설정 관리 게임 데이터 저장과 로딩 이 책은 애니메이션, 파티클..
이득우의 언리얼 C++ 게임 개발의 정석 언리얼 엔진은 텍스트 기반 로그의 한계를 극복하기 위해 비주얼 로거(Visual Logger) 기능을 제공한다. 이전 플레이의 진행 상황을 시작적으로 확인할 수 있다. 디버그 드로잉 기능과 유사하지만 결과를 저장해 차후에 확인할 수 있다는 장점이 있다. 캐릭터 클래스에서 공격 판정을 수행하는 AttakCheck() 함수에 비주얼 로그를 남기는 코드를 추가해본다. 비주얼 로거를 사용하기 위해서는 "VisualLogger'/VisualLogger.h" 헤더를 포함해야 한다. 공격 위치는 반지름 50cm의 파란 구를 그려 표시한다. 공격 판정은 DrawDebugCapsule() 함수에서와 동일한 크기와 색상의 캡슐을 그려 표시한다. DrawDebugCapsule() 함..
이득우의 언리얼 C++ 게임 개발의 정석 VS 2017 기준이다. 코드 작업 관련 Ctrl + L 한 라인 지우기 Ctrl + G 입력한 라인으로 이동 Ctrl + ] 짝이 맞는 괄호의 위치로 이동 코드 분석 관련 F12 혹은 Ctrl + 좌클릭 정의로 이동 Ctrl + K 입력 후 Ctrl + O 헤더(.h)와 소스 코드(.cpp) 파일 간 전환 Ctrl + - 이전 작업 위치로 이동 Ctrl + Shift + - 다음 작업 위치로 이동 Ctrl + F 파일에서 찾기 Ctrl + Shift + F 지정한 범위에서 찾기 Shift + F12 선택한 변수 혹은 함수를 참조하는 모든 목록 Ctrl + T 혹은 Ctrl + , 입력한 키워드를 사용하는 모든 구문 목록 코드 정리 관련 Ctrl + . 입력 후 ..
이득우의 언리얼 C++ 게임 개발의 정석 이 내용은 책에는 없고 필자가 직접 작성한 내용이다. 마지막으로 플레이어가 맵을 벗어나는 문제를 수정해본다. 실제 게임에서도 플레이어의 이동 가능 영역을 제한하는 것은 중요하다. 섹션 스태틱 메시인 SM_SQUARE를 선택한 후 Ctrl + W 키를 눌러 에셋을 복제한다. 이름은 SM_SQUARE_BLOCKED로 지정한다. 간단하게 생각해볼 수 있는 방법은 두 가지다. Section 클래스의 생성자에서 Box Component를 배치해 막는다. Static Mesh 에셋 자체에 Box Collision을 추가해 막는다. 여기서는 책에 없는 2번째 방법을 이용해보겠다. 스태틱 메시 편집창에서 Show Pivot 버튼을 누르면 피벗을 표시할 수 있다. Collisio..
이득우의 언리얼 C++ 게임 개발의 정석 예제 폴더에서 UI_Result 위젯 블루프린트를 프로젝트 폴더에 복사한다. UI_Result 위젯 블루프린트도 UI_Menu와 비슷한 구성을 가진다. UI_Menu와 UI_Result는 btnReturnToTitle 버튼이 겹치고 여러 기능이 비슷하기 때문에, UI_Menu에서 부모로 지정했던 ABGameplayWidget을 상속한 클래스를 생성해 기존 기능을 이용하면서 남은 기능을 구현할 것이다. 지금부터 해야할 것은 결과를 띄우기 위한 점수 표시와 각 버튼의 기능들을 구현해 바인딩하는 것이다. btnReturnToTitle: 타이틀 화면 btnRetryGame: 재도전 상속 받은 클래스를 생성하기 전에 버튼 이벤트 처리는 그냥 부모 클래스에서 모두 처리하도록..
이득우의 언리얼 C++ 게임 개발의 정석 예제 폴더에서 UI_Menu 위젯 블루프린트를 프로젝트 폴더에 복사한다. UI_Menu 위젯 블루프린트는 대략 다음과 같은 구성이다. 배경 블러가 설정되어 있다. Size Box를 통해 크기를 설정한다. Vertical Box를 안에 배치해 스택처럼 하위 위젯들을 쌓는다. 디자이너의 Hierarchy에서 Is Variable이 체크되어 변수로 사용할 수 있는 하위 위젯은 굵은 글씨로 표시된다. 지금부터 해야할 것은 메뉴를 띄우기 위한 일시 정지 기능 구현과 각 버튼의 기능들을 구현해 바인딩하는 것이다. btnResume: 게임으로 돌아가기 btnReturnToTitle: 타이틀 화면 Project Settings에서 M 키를 GamePause 액션에 매핑한다. 현..