쾌락없는 책임 (공부)/Unreal
-
[Unreal] 언리얼 ListView 간단하게 알아보기쾌락없는 책임 (공부)/Unreal 2023. 3. 23. 13:35
개요 아이템을 파밍 할 때 아이템에 픽업이 뜨는가, 사용자에게 근처에 있는 아이템 목록을 알려 주는가 등 여러 가지 방법이 있습니다. 저는 프로젝트에서 '플레이어 근처에 있는 아이템들의 목록을 보여주자' 라고 결정을 했고 이에 따라 이 목록을 위한 List View 가 필요했습니다. 다만 역시 알아보면 C++로 처리한 래퍼런스를 찾기 어려워 제가 만든 걸 공유하고자 이렇게 글을 쓰게 됩니다. - 간단 요약만 알고 싶다면 맨 아래로 C++ 코드로 보는 ListView class UListView; UCLASS() class PROJECTFA_API UPickupItemList : public UUserWidget { GENERATED_BODY() public: UPROPERTY(meta=(BindWidge..
-
[Unreal] Unreal Engine IK solver - IK는 어떤 원리로 동작할까?쾌락없는 책임 (공부)/Unreal 2023. 3. 20. 13:23
개요 엔진에서 IK 관련한 기능들을 많이 사용하게 됩니다. 발을 땅에 자연스럽게 옮긴다던가, 손 한쪽을 무기를 받치게 수정해 준다던가. 이런 기능들을 사용하면서 대충 본을 이 위치로 옮겨준다는 생각만 했지 원리에 대해서는 크게 생각해 본 적이 없습니다. 그래서 이번에 FK, IK의 차이점을 알아보고 IK solver들은 어떤 것들이 있는지 알아볼 예정입니다. IK와 FK FK가 IK에 비해서 조금 더 쉬운 느낌입니다. 간단하게 본이 있으면 본에 회전을 적용해 움직이는 방식입니다. 팔을 예시로 들면 '팔 관절을 움직여 팔을 움직인다'라는 조금 이두운동에 가까운 느낌을 줍니다. 단순히 회전을 적용하면 되는 것이기에 큰 비용이 발생하지는 않으나 직관적이지 못한 문제가 발생하게 됩니다. 예를 들어 '컵을 주워야..
-
[Unreal] Additive Animation - 애디티브 애니메이션쾌락없는 책임 (공부)/Unreal 2023. 3. 13. 22:43
개요 스마일게이트 UNSEEN 프로그램을 진행하기 위해 간단한 3인칭 움직임을 구현하던 도중 점프 착지에서 플레이어가 땅으로 가라앉는 거 같은 문제가 생기게 되었습니다. 다름 아닌 기본 애니메이션이 Addtive로 설정되어 있어서 이런 문제가 발생하게 된 것인데요. 일단은 그 설정을 끔으로써 원하는 애니메이션 작업을 할 수 있었지만 왜 이런 식으로 재생되었는지는 잘 모르는 상태입니다. 그래서 이번 글을 쓰면서 한번 정리해보려고 합니다. Additive Animation은 기본 애니메이션에 Add 하는것 말 그대로입니다. Additive Animation(애디티브 애니메이션)은 기존의 애니메이션과 재생하는 애니메이션의 차이를 통해 애니메이션을 만드는 것입니다. 만일 걷고 있는 상황에서 점프 애니메이션을 더..
-
[Unreal] 언리얼 블루프린트 vs C++, 왜 프로그래머는 C++을 써야 하는가?쾌락없는 책임 (공부)/Unreal 2023. 3. 10. 22:53
개요 언리얼을 처음 맛보면 대부분 블루프린트로 시작하게 됩니다. 저 또한 첫 접근은 블루프린트였습니다. 그런데 조금 더 심화된 과정에서는 C++을 위주로 코딩을 하게 됩니다. 이유를 들어보면 C++ 이 속도가 더 좋아서 라는 대답이 주를 이루게 되는데요. 이번에 왜 블루프린트가 C++보다 느린지에 대해서 여러 자료들을 알아봤습니다. 일단 Blueprint는 더 많은 명령을 거치게 된다 위 이유가 속도와 관련된 주된 이유였습니다. 블루프린트 함수들은 C++과 달리 객체로 유지가 됩니다. 어떤 C++ 함수들을 호출할지에 대한 정보를 가지고 있어야 한다고 합니다. 때문에 더 많은 명령을 거치고 cpu, 램 등을 많이 사용하게 된다고 합니다. 이러한 이유로 인해서 컴파일을 한다 해도 C++의 컴파일러처럼 인라인..
-
[Unreal] 언리얼 인터페이스 이야기 - Unreal C++ Interface쾌락없는 책임 (공부)/Unreal 2022. 11. 28. 21:28
개요 일단 기존의 C++에서는 '인터페이스'와 관련한 이야기가 없습니다. 이 글을 쓰는 시점에서는 __interface라는 키워드가 있지만 이는 vs의. Net 플랫폼에서만 되는 것으로 알고 있어 현재 표준은 없는 걸로 판단이 됩니다. 하지만 다양한 디자인 패턴들을 적용해 유지보수를 하기 위해서는 이런 '인터페이스'와 관련한 개념이 꼭 필요하게 되며 이로 인해서 언리얼에서는 이를 위한 UInterface를 제공해주게 됩니다. 이번에는 언리얼을 공부하면서 간단하게 알아낸 이 인터페이스와 사용 방법에 대해서 알아보겠습니다. Unreal Interface 생성법 일단 Blueprint와 C++ 클래스를 만드는 2가지 방법이 있지만 이번 글은 C++을 기준으로 설명하겠습니다. C++에서 생성하면 일단 C++, ..
-
[Unreal] 언리얼의 GC에 대해서 알아보자. 아주 간략히쾌락없는 책임 (공부)/Unreal 2022. 11. 7. 18:07
개요 언리얼을 처음 접했을 때 스크립팅 언어로 C++을 사용하니 메모리 관리에 있어서 스마트 포인터를 적극 활용하는 등 여러 조치를 취해야 할 거라고 생각했습니다. 뭐 프로그래머가 직접 다 관리하는 줄 알았죠. 그런데 알고 보면 언리얼은 리플렉션 시스템을 통해서 GC를 관리한다는 사실에 생각보다 메모리 관리를 안 하게 됩니다. 다만 '정말 이대로 괜찮을까?' 하는 생각에 여러 자료들을 찾아본 바, 관련 내용들을 정리하기 위해서 이 글을 작성해 봅니다. 앞으로 제작하는 데 있어서 이런 부분에서의 최적화를 생각해서 나쁠 건 없으니깐요. 그냥 쓰던 UPROPERTY, 리플렉션 시스템으로 사용되었다 리플렉션(Reflection)은 프로그램이 실행시간에 자기 자신을 조사하는 기능입니다. - Unreal Engin..
-
[Unreal] 언리얼 Anim Montage가 재생되지 않을 때 - Unreal Anim Montage not playing쾌락없는 책임 (공부)/Unreal 2022. 11. 5. 20:21
개요 이 망할 엔진에 대한 지식 부족으로 공격 모션을 Montage_Play로 변경하고 나서 Montage의 애니메이션이 나오지 않는 일이 있었습니다. 혹시나 비슷한 오류를 가질 분들을 위해서 체크리스트 몇가지를 준비해 봤습니다. 확인해볼 것들 1. UAnimMontage 가 잘 초기화 되어 있는지 에디터에서 확인 이 경우로 고생하는 사람들이 많이 있다고 합니다. UPROPERTY에서 VisibleAnywhere 옵션을 넣어버려 에디터에서 넣지 못했다는 등 여러 이유가 있으니 이를 한번 확인해 봅시다. 2. Mesh 에서 Pause Anim 확인 위 사진과 같은 형태로 있어야 합니다. 체크되어 있으면 애니메이션이 전혀 재생되지 않게 됩니다. 3. AnimGraph 에서 Slot 넣어주기 (본인 해당 문제..