일지
-
언리얼...9일지 2022. 9. 20. 21:52
Character와 Pawn의 차이 기본적으로 이 둘은 큰 차이가 없다. Character가 조금 더 플레이어를 위해 특수화된 클래스라고 보면 맞을 것 같다. Character는 Pawn을 상속받아 Pawn의 기본 기능을 모두 지원하고 거기에 더해 CapsuleComponent, CharacterMovement, Skeletal Mesh 등을 기본으로 가지고 있다. 모든 기능을 처음부터 구현할 게 아니라면 필요에 따라 잘 구분해서 사용해야 한다. Character와 Pawn의 컨트롤 방식도 차이가 있는데, Pawn의 경우 기본적으로 게임 물리, AI에 조종을 받기 때문에 속도를 관리한다. 반면에 Character는 플레이어의 입력을 반영해야 하기 때문에 Rotation을 관리한다. 입력 디버깅을 위한 콘..
-
언리얼...8일지 2022. 9. 19. 21:41
전방 선언의 중요성 언리얼은 기본적으로 C++로 만들어졌기 때문에 C++의 최적화를 그대로 사용할 수 있다. 그렇기 때문에 클래스의 경우 가능하다면 전방 선언을 통해 헤더에는 선언만 존재하게 하고 소스 파일에서 실제로 사용하는 클래스를 포함하여 사용해야 빌드 속도 저하를 줄일 수 있다. 입력 매핑 게임 엔진의 장점 중 하나는 입력을 자신이 원하는 대로 커스텀해서 받을 수 있다는 것이다. 이 커스텀은 프로젝트 세팅의 입력 탭을 통해 설정이 가능하다. 입력 방식에는 특정 행동에 대한 매핑에 사용하는 액션 매핑, 이동이나 회전에 사용하는 축 매핑이 존재한다. 각각의 매핑에 함수를 다는 것은 다음과 같이 진행한다.
-
언리얼...6일지 2022. 9. 15. 21:25
움직이는 액터 설계 언리얼 변수의 캡슐화 언리얼 에디터에서는 확인할 수 있어야 하는 변수지만 다른 클래스에서는 숨기고 싶은 경우에 사용할 수 있는 방법으로 UPROPERTY의 Meta영역에 AllowPrivateAccess 키워드를 추가하고 이를 true로 설정해주면 된다. 경과 시간 사용 기본적으로 Tick 함수에 들어오는 DeltaTime을 사용할 수 있으나 이외의 함수에서 DeltaTime이 필요한 경우 GetWorld()->GetDeltaSeconds()를 사용하면 된다. 이외에도 여러 종류의 시간 값이 존재하며 대표적으로 다음의 종류가 있다. Tick 시간 GetWorld()->GetDeltaSeconds() 게임 시작 후 경과된 시간 GetWorld()->GetTimeSeconds() 게임을 ..
-
언리얼...5일지 2022. 9. 14. 21:12
로그 찍기 언리얼 5에서는 따로 출력 창을 열지 않아도 아래 도구상자에 도킹이 되어있다. 이 출력 로그 버튼을 누르면 로그 창이 팝업 형태로 보이게 되고 화면의 다른 곳을 클릭하면 다시 숨겨지게 된다. 그런데 일반적인 용도에서는 디버깅을 위해 로그를 사용하는 경우가 많기 때문에 이렇게 되면 조금 불편할 수 있다. 따라서 우측 상단의 레이아웃에 고정을 눌러 고정해두면 편하게 사용할 수 있다. 로그는 UE_LOG 매크로로 로그창에 출력이 가능한데, 순서대로 로그 카테고리, 로그 필터, 형식 문자열, 추가 정보가 들어가게 된다. 추가 정보는 필수 항목이 아니다. 이때 형식 문자열은 C의 입출력에 사용하는 그걸 말하는 것이다. 형식 문자열은 FString을 넣어줘야 하는데 이를 편하게 사용할 수 있도록 TEXT..
-
언리얼...4일지 2022. 9. 13. 14:43
언리얼 C++의 최소 사항 c++ 헤더를 최소화하기 위해 4.15부터 언리얼 빌드가 가능한 최소 정보만 담고 있는 CoreMinial.h을 사용하도록 변경되었다. 기존에는 언리얼의 다양한 기본 기능을 포함하는 EngineMinimal.h을 사용했었다. 자동 메모리 관리 기본적으로 언리얼에서는 UPROPERTY로 선언된 변수는 GC에서 정보를 가지고 있다가 더 이상 사용이 되지 않으면 자동으로 메모리를 제거하도록 되어있다. 따라서 언리얼 관련 포인터를 사용하는 경우에는 UPROPERTY를 붙여서 관리가 되도록 해줘야 한다. 언리얼 클래스 조건 C++ 클래스가 언리얼 오브젝트 클래스가 되기 위해서는 다음의 조건이 만족해야 한다. UCLASS 매크로를 클래스 선언 위에 적용해야 한다. 클래스 이름의 접두사를 ..
-
JUNGOL...198일지 2022. 9. 11. 15:37
Intermediate_Coder/그래프탐색-BFS/화염에서탈출(SLIKAR) 문제 재우는 중간계(middle-earth)에서 유명한 용사이다. 어느날 사람들에게 부탁 받은 마물 퇴치를 신속히 해결하고 집으로 돌아가려고 하는데, 마법의 숲에서 재우를 추적하고 있던 불의 마법사 무길이와 마주치게 되었다. 무길이는 재우를 잡기 위해서 화염 마법을 시전하였고 어느덧 숲은 화염으로 가득차고 있었다. 재우는 무길이가 화염을 풀어 놓은 숲에서 신속히 요새로 귀환하고자 한다! 숲의 지도는 R행과 C열로 이루어져있다. 비어있는 칸은 '.'로 표시되고, 불은 '*'로, 바위는 'X'로 표시되어있다. 용사의 집은 'D'로 표현되고, 재우가 처음에 서있는 위치는 'S'로 표시된다. 매 분마다 재우는 인접한 4개의 칸(상, ..
-
JUNGOL...197일지 2022. 9. 10. 21:41
Intermediate_Coder/그래프탐색-BFS/화염에서탈출(SLIKAR) 문제 재우는 중간계(middle-earth)에서 유명한 용사이다. 어느날 사람들에게 부탁 받은 마물 퇴치를 신속히 해결하고 집으로 돌아가려고 하는데, 마법의 숲에서 재우를 추적하고 있던 불의 마법사 무길이와 마주치게 되었다. 무길이는 재우를 잡기 위해서 화염 마법을 시전하였고 어느덧 숲은 화염으로 가득차고 있었다. 재우는 무길이가 화염을 풀어 놓은 숲에서 신속히 요새로 귀환하고자 한다! 숲의 지도는 R행과 C열로 이루어져있다. 비어있는 칸은 '.'로 표시되고, 불은 '*'로, 바위는 'X'로 표시되어있다. 용사의 집은 'D'로 표현되고, 재우가 처음에 서있는 위치는 'S'로 표시된다. 매 분마다 재우는 인접한 4개의 칸(상, ..