GameDevelop 36

쿼터니언(Quaternion) vs 오일러 각(Euler Angle)

쿼터니언과 오일러 각도를 정리해보았습니다.구글링 및 ChatGPT의 도움을 받아 작성했습니다. 1. 오일러 각 (Euler Angle)1.1 정의오일러 각은 물체의 회전을 세 개의 축 회전 값으로 표현하는 방식이다.Pitch (X축 회전)Yaw (Y축 회전)Roll (Z축 회전)보통 (Pitch, Yaw, Roll) 또는 (X, Y, Z) 형태로 저장된다. 1.2 장점사람이 이해하기 쉽다디버깅이 직관적이다UI 입력(슬라이더, 각도 입력)에 적합하다👉 그래서 에디터 상의 회전 값은 대부분 오일러 각이다. 1.3 치명적인 문제: 짐벌 락 (Gimbal Lock)짐벌 락이란?세 축 중 두 축이 겹쳐져 자유도가 하나 사라지는 현상이다.예를 들어:Pitch가 ±90°에 가까워질 경우Yaw와 Roll 축이 같은 ..

GameDevelop/Notes 2026.01.01

벡터의 내적과 외적

내적과 외적에 대해 정리해보았습니다.구글링 및 ChatGPT의 도움을 받아 작성했습니다. 1. 벡터 내적 (Dot Product)1.1 정의두 벡터 A, B 가 있을 때, 내적은 다음과 같이 정의된다.A · B = |A||B|cosθ여기서 θ는 두 벡터 사이의 각도다. 벡터 A와 B의 내적은 A와 B의 길이를 곱한 후 그에 코사인 각도를 곱한 값이다. 성분 기준으로 보면:2D: A·B = AxBx + AyBy3D: A·B = AxBx + AyBy + AzBz내적의 결과는 스칼라 값이다. 내적은 한 벡터가 다른 벡터 방향으로 얼마나 투영(projection)되어 있는지를 나타낸다.cosθ > 0 → 두 벡터가 같은 방향 계열cosθ = 0 → 두 벡터가 수직cosθ → 두 벡터가 반대 방향 계열특히, ..

GameDevelop/Notes 2026.01.01

UnrealEngine - 언리얼엔진의 UI 렌더링 과정

언리얼 엔진의 UI 렌더링 과정에 대해 정리해보았습니다.구글링 및 ChatGPT, Gemini를 참고했습니다. -> 무조건 신뢰하지 마시고 참고만 해주시길 바랍니다.흐름 요약[Game Thread] ├─ Input & State Update │ - 마우스 / 키보드 / 터치 입력 처리 │ - Focus, Hover, Capture 상태 갱신 │ - Widget Tick (NativeTick) │ - UI 애니메이션 상태 업데이트 │ ├─ Slate Tick │ ├─ Layout Pass │ │ ├─ Prepass │ │ │ - SlatePrepass() │ │ │ - Widget Tree 순회 (..

UnrealEngine - UObject와 AActor

언리얼 엔진의 UObject와 AActor에 대해 정리해보았습니다.구글링 및 Gemini를 참고했습니다. 1. UObject언리얼 엔진에서 관리되는 최상위 기본 클래스입니다.특징: 월드에 존재(배치)할 수 없으며, 형체가 없습니다.제공 기능:리플렉션 시스템 : UObject는 UCASS, UPROPERTY, UFUNCTION 매크로를 통해 언리얼 엔진의 리플렉션 시스템을 사용할 수 있습니다. 덕분에 에디터에서 속성을 조작하거나 블루프린트 연동, 저장 및 로드 될 수 있습니다.가비지 컬렉션 : UObject를 상속받은 객체는 언리얼엔진의 GC에 의해 자동으로 메모리 수명주기가 관리됩니다.직렬화 : 자신의 속성을 저장하고 불러올 수 있습니다. 게임상태를 저장하거나 네트워크를 통해 객체 데이터를 전송할 때 유..

UnrealEngine - Garbage Collection(GC)

언리얼 엔진에서 구현된 가비지 컬렉션에 대해 정리해보았습니다.구글링 및 Gemini를 참고했습니다. 언리얼 엔진의 Garbage Collection(GC)C#과 달리 C++은 가비지 컬렉션을 제공하지 않습니다.그래서 언리얼 엔진에서는 가비지 컬렉션을 직접 구현하여 제공하고 있습니다. GC란 '더 이상 사용하지 않게된 객체 (= 다른 객체에서 참조하지 않는 객체) '를시스템에서 자동으로 해제해주는 기능을 말합니다. 언리얼은 리플렉션 시스템을 사용하여 GC를 수행합니다.리플렉션이란 런타임 중에 객체가 자기 자신 정보를 파악할 수 있게 해주는 시스템입니다.리플렉션 시스템이 있기 때문에 엔진이 객체의 속성을 알 수 있고, 사용되지 않는 객체를 구분할 수 있습니다. 언리얼 엔진에서 UObject를 상속받은 객체..

Unity - 시네머신 (Cinemachine) / 플레이어를 따라다니는 카메라

2D 탑뷰에서 플레이어를 따라다니는 카메라를 만들어보려고 합니다.  설치PackageManager에서 Cinemachine을 검색하여 Install 해줍니다.  설치가 되면, GameObject - Cinemachine 메뉴가 보이게 됩니다.   사용하이어라키 우클릭하여 시네머신 카메라를 추가해줍니다.저는 2D 탑뷰로 할거라서 아래와 같이 추가했습니다.  Tracking Target에 플레이어를 넣어줍니다. 바로 부드럽게 잘 따라다니네요.   Damping옵션 조절해보면서 기능 확인해보았습니다. Damping 값은 카메라가 얼마나 여유있게 따라다닐지 조절이 되는 것 같습니다.X 값만 크게 줘봤는데 아래와 같이 좌우 이동은 카메라가 여유있게 따라가고, 상하 이동은 빠릿하게 따라다닙니다.  Hard Limi..

GameDevelop/Unity 2025.03.16

UnrealEngine - 변수 UI에 붙이기 (블루 프린트 사용)

오늘은 언리얼 엔진에서 UI를 만들어서 붙여보려고 합니다.(ChatGPT의 도움을 받으며 진행했습니다.) 내가 보유한 총알 갯수를 띄워보겠습니다.   언리얼 엔진에서 UI(사용자 인터페이스)를 만들기 위해서는 UMG (Unreal Motion Graphics)라는 언리얼 엔진의 UI 툴킷을 사용합니다. 우측 하단의 '콘텐츠 드로어' 버튼으로 컨텐츠 브라우저를 열어줍니다.  이제 '콘텐츠 브라우저'에서 우클릭을 한 뒤, '유저 인터페이스' -> '위젯 블루프린트'를 클릭해줍니다.  '사용자 위젯' 클릭하여 '새 위젯 블루프린트'를 만들어줍니다.  저는 총알 남은 갯수를 표시해줄 거라서 AmmoWidget으로 이름을 지었습니다.  이제 더블 클릭하여 UMG 에디터를 열어줍니다.  Text 위젯을 드래그 앤 ..

UnrealEngine - UPROPERTY / 코드 변경사항 에디터에 즉시 적용 / 라이브 코딩

템플릿 프로젝트를 이것저것 수정해보면서 공부해보려고 했는데...UPROPERTY로 변수 선언한 내용이 에디터에 반영되지 않아서 잠깐 헤맸습니다.UPROPERTY더보기UPROPERTY() 매크로가 사용된 멤버변수는 언리얼 리플렉션 시스템 (= 프로퍼티 시스템)에 등록됩니다.이로 인해서...- 에디터의 디테일 패널에서 확인 할 수 있게 됩니다.- 지정자를 추가하여 다양한 기능을 적용할 수 있습니다. (EditAnywhere, BlueprintReadWrite 등)- 런타임 중에 이 변수의 값을 알 수 있게 됩니다.- 가비지 콜렉션에 의해 생명주기가 관리됩니다. WeaponType 이 에디터에 노출이 되지 않고 있는데요. 라이브 코딩 쓰면 된다고 하길래... 요걸 시도해봤습니다.라이브 코딩 옵션은 이미 켜져..

RAII - Resource acquisition is initialization

RAII 라는 키워드에 대해 정리해봅니다.한창 면접 준비할 때 기억해뒀던 내용인데, 키워드만 다시 보니 기억이 잘 안나서 정리할 필요를 느끼네요. Resource acquisition is initialization= 리소스 획득은 초기화 직역하니 좀 어색합니다.  리소스를 할당한 뒤 해제하지 않으면 메모리 누수가 발생합니다. 개체 (Object) 가 생성될 때 리소스를 할당하고,                           파괴될 때 리소스를 해제하도록 하면 누수될 일이 없습니다. 즉 개체가 리소스를 소유하게 한다는 원칙이 RAII입니다.   아래는 MS 문서에서 가져온 코드입니다.class widget{private: int* data;public: widget(const int size..

GameDevelop/Notes 2024.09.10

UnrealEngine 5.4 - unsupported architecture... 에러 해결방법

언리얼 엔진 공부 좀 해보려고 일인칭 템플릿을 열어보았는데...VS에서 아래와 같이 에러 문구가 뜨는 문제가 있었습니다. unsupported architecture, please declare which address bit distinguish user space from kernel space   검색해보니 해결 방법이 바로 나와서 따라해보았습니다.  1. 편집 - 에디터 개인설정 클릭  2. 소스코드 - 소스 코드 에디터 - Visual Studio 2022 클릭요거는 아마 본인이 쓰는거 고르시면 될 듯합니다.기본값이 Visual Studio로 되어있었는데 Visual Studio 2022 로 변경하니 해결되었습니다.