목록Game Dev (267)
KoreanFoodie's Study
이득우님의 "이득우의 언리얼 C++ 게임 개발의 정석" 책을 따라가며 실습한 내용을 정리한 포스팅입니다. 실습에 필요한 자료들은 이 링크에서, 제가 작업한 예제 소스 완성본은 여기에서 찾아보실 수 있습니다. (저는 언리얼 4.27.2 버전 기준으로 작업하였습니다) 몽타주(Montage) 애님 그래프에 스테이트 머신을 삽입해 모든 캐릭터의 애니메이션을 처리할 수도 있지만, 경우의 수가 많아지면 스테이트 머신으로 이를 관리하는 것은 매우 어렵다. 따라서 언리얼은 특정 상황에서 원하는 애니메이션을 발동시키는 애니메이션 몽타주라는 기능을 제공한다. 먼저, 애니메이션 블루프린트에서 몽타주를 생성한다. 몽타주는 섹션(Section) 단위로 애니메이션을 관리한다. 위에서 본 것처럼, Attack1, Attack2, ..
이득우님의 "이득우의 언리얼 C++ 게임 개발의 정석" 책을 따라가며 실습한 내용을 정리한 포스팅입니다. 실습에 필요한 자료들은 이 링크에서, 제가 작업한 예제 소스 완성본은 여기에서 찾아보실 수 있습니다. (저는 언리얼 4.27.2 버전 기준으로 작업하였습니다) 애니메이션 블루프린트 : 애니메이션 블루프린트를 이용해 애니메이션 시스템을 제작하기 전에, 먼저 두 가지 구성 요소를 알아보자. 애님 인스턴스 : 스켈레탈 메시를 소유하는 폰의 정보를 받아 애님 그래프가 참조할 데이터를 제공한다. 블루프린트와 C++ 로 제작할 수 있다. 애님 그래프 : 애님 인스턴스의 변수 값에 따라 변화하는 애니메이션 시스템을 설계하는 공간이다. 블루프린트로만 제작할 수 있다. 엔진에서 "새로운 C++ 클래스 (모든 클래스 ..
이득우님의 "이득우의 언리얼 C++ 게임 개발의 정석" 책을 따라가며 실습한 내용을 정리한 포스팅입니다. 실습에 필요한 자료들은 이 링크에서, 제가 작업한 예제 소스 완성본은 여기에서 찾아보실 수 있습니다. (저는 언리얼 4.27.2 버전 기준으로 작업하였습니다) 캐릭터 모델 Pawn 대신 Character 액터를 만들어 조작해보자. Character 액터는 Pawn 액터를 상속받는데, Pawn 과 다른 점은 CharacterMovement 컴포넌트를 사용해 움직임을 관리한다는 것이다(Actor>>Pawn>>Character). 이 컴포넌트가 FloatingMovement 에 비해 가지는 장점은 다음과 같다. 점프와 같은 중력을 반영한 움직임을 제공 다양한 움직임 설정 가능(기어가기, 날아가기, 수영하기..
이득우님의 "이득우의 언리얼 C++ 게임 개발의 정석" 책을 따라가며 실습한 내용을 정리한 포스팅입니다. 실습에 필요한 자료들은 이 링크에서, 제가 작업한 예제 소스 완성본은 여기에서 찾아보실 수 있습니다. (저는 언리얼 4.27.2 버전 기준으로 작업하였습니다) 폰의 구성 요소 폰은 플레이어가 조작할 수 있는 액터이다. 인간형 폰을 제작할 때는 다음과 같은 요소를 고려해야 한다. 시각적 요소 : 인간형 폰이 되려면 애니메이션 기능이 필요하다. 애니메이션을 재생하도록 리깅(Rigging) 데이터를 추가한 메시를 스켈레탈 메시라고 한다(스켈레탈 메시 컴포넌트가 관리). 충돌 요소 : 인간형의 경우 캡슐 컴포넌트를 사용한다. 움직임 요소 : 폰 무브먼트 컴포넌트(FloatingPawnMovement 또는 C..
이득우님의 "이득우의 언리얼 C++ 게임 개발의 정석" 책을 따라가며 실습한 내용을 정리한 포스팅입니다. 실습에 필요한 자료들은 이 링크에서, 제가 작업한 예제 소스 완성본은 여기에서 찾아보실 수 있습니다. (저는 언리얼 4.27.2 버전 기준으로 작업하였습니다) 게임플레이 프레임워크 게임의 규칙을 관리하는 게임 모드와 플레이어가 조종하는 액터인 폰에 대해 알아보자. 프로젝트 세팅의 Selected GameMode 를 보면, Default Pawn Class 항목에서 게임에 입장한 플레이어에게 주어질 조종할 수 있는 액터, 폰의 타입을 지정할 수 있다. 언리얼 에디터에서 각각 GameMode, Pawn 을 상속받은 ABGameMode, ABPawn 을 생성하자. 그 후, 월드 세팅에서 GameMode O..
이득우님의 "이득우의 언리얼 C++ 게임 개발의 정석" 책을 따라가며 실습한 내용을 정리한 포스팅입니다. 실습에 필요한 자료들은 이 링크에서, 제가 작업한 예제 소스 완성본은 여기에서 찾아보실 수 있습니다. (저는 언리얼 4.27.2 버전 기준으로 작업하였습니다) 로깅 환경 설정 언리얼은 로깅 환경을 위해 UE_LOG 라는 매크로를 제공한다. UE_LOG(카테고리, 로깅 수준, 형식 문자열, 인자.. ) 로깅 수준은 크게 메시지(Log), 경고(Warning), 에러(Error) 이렇게 세 가지로 나뉜다. 언리얼 형식 문자열은 FString 을 이용해서 처리하는데, 다음과 같은 형식을 띤다. FString::Printf(TEXT("Actor Name : %s, ID : %d, Location X : %...
이득우님의 "이득우의 언리얼 C++ 게임 개발의 정석" 책을 따라가며 실습한 내용을 정리한 포스팅입니다. 실습에 필요한 자료들은 이 링크에서, 제가 작업한 예제 소스 완성본은 여기에서 찾아보실 수 있습니다. (저는 언리얼 4.27.2 버전 기준으로 작업하였습니다) 월드의 개념 월드는 다음과 같은 기초 요소를 제공한다. 공간(Space) : 가상세계를 구성하는 3차원의 영역 (Transform) 이라는 구조체 제공. 단위는 cm 시간(Time) : 가상 공간에서 흐르는 시간 물리(Physics) : 월드 공간에 배치된 물체에 작용하는 물리적인 환경(중력 등). 물체가 월드로부터 물리적인 영향을 받으려면 콜리전(Collision) 정보가 있어야 한다. 렌더링(Rendering) : 엔진이 제공하는 시각적인 ..
이득우님의 "이득우의 언리얼 C++ 게임 개발의 정석" 책을 따라가며 실습한 내용을 정리한 포스팅입니다. 실습에 필요한 자료들은 이 링크에서, 제가 작업한 예제 소스 완성본은 여기에서 찾아보실 수 있습니다. (저는 언리얼 4.27.2 버전 기준으로 작업하였습니다) C++ 클래스 만들기 먼저, 가장 기본적인 C++ 클래스를 만들어 보자. 파일->New C++ Class를 선택하고, 모든 클래스를 표시한 뒤 Object를 선택한다. Object는 대화상자에 만들지만, C++ 코드에서 생성할 C++클래스는 UObject이며 대문자 U가 선행된다는 점을 참고로 알아두자. C++ 프로젝트를 열면, 다음과 같은 다섯지가 프로젝트의 빌드 구성을 볼 수 있다. 각 특징은 다음과 같다. DebugGame : 자세한 디버..
먼저 Get Control Rotation을 구한 후, Make Rotator로 degree로 변환된 값을 만든다. 방향 벡터를 추출하고, Normalize를 해 준 뒤, Add MovementInput과 연결시키면 끝. 추후 달리기 기능을 구현할 텐데, 속력으로 동작을 구분지으면 된다. Character Movement: Walking에서 Max Walk Speed를 조정해 속력을 결정하자. 뛰기의 경우, 위의 Max Walk Speed 를 조정해 주기만 하면 된다. 액션 매핑에서 Run을 추가하고, 다음과 같이 만들어준다.
언리얼 엔진 - 시점 변환 및 카메라 설정 위와 같이 Blueprint class -> Character class를 만든 다음, Capsule Component를 이용해 Collision을 만들어 주자. Mesh는 이미 만들어둔 Skeleton mesh를 적용하고, SpringArm과 Camera를 만들어준다. 축 매핑에 위와 같이 VerticalLook과 HorizontalLook을 만들어 준 다음, Player를 컨트롤하는 BP_Player를 열어 이벤트 그래프를 다음과 같이 구성한다. 그후, BP_Player(셀프, 플레이어의 블루프린트 클래스이다)의 속성에서 Pawn -> Use Controller Rotation Yaw 체크박스 해제, Auto Possess Player에 Player0을 지정..
