Activate에서 SubSystem에 있는 PushSoftWidgeToStackAsync 비동기 위젯 생성 및 스택 추가 함수를 호출한다. 주요 클래스 정리하기 1. UCommonActivatableWidgetContainerBaseUCommonActivatableWidget 위젯을 담고 관리하는 기본 컨테이너 클래스2. UDeveloperSettings자신만의 세팅(설정값/옵션) "ProjectSetting", "Editor Settings"를 생성하고 관리할 수 있는 클래스3. UGameInstanceSubsystem게임 인스턴스 생명주기(게임 전반에 걸친 공유 기능 구현에 적합)특정 기능을 모듈 단위로 분리하여 관리하는 "자동 인스턴싱 및 수명 관리 클래스" 프로그래머가 직접 객체를 생성하거나..
아 이제 ui만하면 만들고 있는 프로젝트가 끝이난다... 이번 달 안에 꼭 끝낼 수 있으면 좋겠다 할 수 있드아 ~!!!!!! 게임 로직 인강은 정리하면서 할 수 없었는데 이번에는 한 번 정리하면서 UI 프로젝트를 마쳐보려고 한다 1. SubSystem이 뭔지? 언리얼에는 UWorldSubsystem, UGameInstanceSubsystem, UEngineSubsystem 같은 서브시스템 개념이 있다. 특정 라이프사이클(월드 단위, 게임 인스턴스 단위, 엔진 전체 단위)에 따라 자동으로 생성/초기화되는 매니저 객체.전역 싱글톤 대신 “월드나 인스턴스 스코프 안에서만” 살아 있는 싱글톤 느낌이라고 보면 된다. 게임 전반에 걸쳐 공통적으로 쓰이는 UI(특히 프론트엔드 화면) 관련 매니저라고 이해하면 됨. ..
🔹 1. Cast(Obj)안전 캐스팅 (safe cast)Obj가 T 타입으로 변환 가능하면 → 해당 포인터 반환불가능하면 → nullptr 반환그래서 반드시 if (Result) 같은 null 체크 필요 UGameInstance* GI = Cast(Outer); if (GI) { // 성공했을 때만 실행 } 🔹 2. CastChecked(Obj)“무조건 이 타입일 거다” 라고 가정할 때 쓰는 캐스팅Obj가 T로 변환 불가능하면→ 에디터에서는 check( ) 매크로 터짐 (Assert) → 크래시 발생즉, 런타임에서 안전망 대신 강제 보장(assert) 을 사용 UGameInstance* GI = CastChecked(Outer); // 여기서 실패하면 에디터에서 바로 크래시! 🔹 When ? Ca..
Pawn은 움직이는 오브젝트, Controller는 그걸 조종하는 논리1. PawnPawn은 플레이어나 AI가 직접 조종할 수 있는 게임 오브젝트다. 단순히 Actor를 상속받은 객체로, 입력에 따라 움직이거나 상호작용할 수 있다이동, 충돌, 중력 등 기본 기능은 직접 구현해야 하므로, 특수한 움직임(비행기, 드론, 카메라 등)에 적합하다사람 캐릭터처럼 보행이 필요한 경우에는 Character 클래스를 사용하는 게 더 효율적이다.2. ControllerController는 Pawn을 실제로 제어하는 논리를 담당한다. PlayerController(플레이어 입력 처리)와 AIController(AI 로직 처리)로 나뉜다Controller가 Pawn을 Possess(빙의)하면, 해당 Pawn을 자유롭게 조종..
1. 정의IK 리타게팅(Inverse Kinematics Retargeting)은 언리얼 엔진에서 제공하는 애니메이션 변환 기능으로, 서로 다른 스켈레탈 메시 간에 애니메이션 데이터를 자연스럽게 이전할 수 있도록 지원한다. IK(역운동학) 알고리즘을 활용하여 손, 발 등 주요 신체 부위의 위치 정밀도를 유지한다. 2. 주요 특징본 구조 차이 대응: 본 개수, 명칭, 방향 등이 상이한 캐릭터 간에도 애니메이션 재사용이 가능하다. 정확한 컨택 포인트 보정: 손, 발 등 주요 부위가 바닥 또는 오브젝트에 정확히 닿는 동작을 실시간으로 보정한다. 엔진 내 통합 워크플로우: 외부 툴 없이 언리얼 엔진 내에서 직접 세팅 및 적용이 가능하다. 3. 사용 절차소스 및 타깃 스켈레탈 메시 준비 각 메시에 IK Rig 에..
"⚠️warning : Can't clobber writable file"clobber : "덮어쓰다" , '강제로 교체하다' 기본적으로 Perforce에서 받은 작업 공간의 파일을 수정하기 위해서는 [Check out...] 과정을 거쳐야 한다. 이 과정 [Check out...]에서 읽기 모드이었던 작업 파일이 쓰기 모드로 바뀌게 되고 수정이 가능하게 된다.Perforce는 [Check out...] 과정을 생략하고 직접 읽기모드를 변경하거나 파일을 덮어 씌운 파일이 존재할 때 업데이트를 받게 되면 사용자가 작업 중인 내용을 실수로 잃는 것을 방지하기 위해 덮어쓰기를 하지 않고 warning을 뱉어낸다. 근데 만약 .. 덮어쓰고 싶다? 할 때 아래 방법을 따라 하자! P4V -> Connectio..
가끔 레퍼런스랑 포인터랑 사용을 혼돈 할 때가 있다. 이터레이터(iter) 경우도 있고 막 &(*) 여러 시도하다가 빌드 오류 안나면 그냥 넘어가는 경우가 있었다. 그럴 때 마다 한 번 제대로 정리 해야겠다. 생각하면서도 넘어가는 경우가 많았다. 오늘은 진짜 .. 정리 한 번 해보려고 한다. 내용은 [전문가를 위한 C++(개정 4판)]이다. 1.레퍼런스 초기화레퍼런스는 처음 초기화 할 때 지정한 변수만 가리킨다. 한 번 생성되고 나면 가리키는 대상을 바꿀 수 없다. 레퍼런스를 선언 할 때 어떤 변수를 '대입'하면 레퍼런스는 그 변수를 가리킨다. 하지만 이렇게 선언된 레퍼런스에 다른 변수를 대입하면 레퍼런스가 가리키는 대상이 바뀌는 것이 아니라 레퍼런스가 원래 가리키던 변수의 값이 새로 대입한 변수의 값으..
공성전 중 길드 마크와 이름이 사라지는 현상 분석 최근 공성전 콘텐츠에서 유저들로부터 버그 제보가 들어왔다."공성전 중 사람이 많아지면 화면이 깨진다.""컴퓨터 성능 문제는 아니다. 채팅창을 보면 나만 그런 게 아니다.""캐릭터와 배경은 멀쩡한데, 길드 마크와 유저 이름이 네모난 투명 형태로 깨지듯 사라진다."게임이 치열하게 돌아가는 상황이라, 빠르게 영상 자료를 받아 분석을 시작했다. 1. UI 렌더링 구조 의심해당 게임은 DirectX9 기반으로 동작하며, UI와 이름표는 ID3DXSprite와 ID3DXFont를 이용해 렌더링하고 있다.처음엔 Sprite 내부 버퍼 초과 문제를 의심했다.예를 들어:m_pSprite->Begin();m_pSprite->Draw(...);m_pSprite->End();..
1. 게임모드 기본적으로 레벨에 들어가서 게임 규칙을 관리하는 엑터누가 어디에 스폰해야 하는지와 플레이어에게 어떤 클래스를 사용하고 그 밖에 게임 작동 방식을 정의하는 수많은 클래스를 사용하는 방법을 알려준다. 멀티 플레이어 게임에서는 해당 게임에 허용되는 플레이어 수 등을 제어할 수 있고 바람 조건, 깃발 뺏기 같은 게임 모드가 있는가 하면 배틀로얄 같은 다른 유형도 있을 수 특정게임 특정 유형을 말한다. 액터 클래스의 기반이 될 베이스를 선택할 거다. 게임모드베이스가 제일 전반적으로 사용한다. 불필요한 것을 제외한 최소한의 설정과 항목만 포함되어있다. 보통 엑터 블루프린트와 비슷한 창을 볼수 있다. 오른쪽 Classes는 클래스 디폴트로 가서 해당 액터의 프로퍼티와 설정을 보면 클래스라는 섹션이 ..
현상: 움직일때는 충돌처리 ok, 움직이지 않을 때는 충돌처리 no 캐릭터 코드는 움직이지 않는 한 콜리전을 확인 하지 않는다. 해결 : udemy - 【한글자막】 Unreal Engine 5 C++ 개발자: C++ 학습하고 비디오 게임 제작하기 이렇게만 했을 때 문제점: 플레이어 캐릭터의 움직임을 잃어버린다. 엑터의 방향도 적용해준다. 야매인지 모르지만..? 일단 강의 들으면서 꿀팁 같아서 메모..해둔다.
게임수학 기본적인 거 진짜 제대로 알자... 제대로 모르면 쪽팔린지 알고 열심히 하자... 좀 열심히 살아 나란 놈!!😒 파이팅!! 😊1. 용어 정리지름 (Diameter) 반지름 (Radius)둘레 (Circumference / Perimeter) = 원주 중심 (Center / Origin) 호 (Arc) 부채꼴 (Sector) 각도 (Degree)원주를 지름으로 나누면 항상 일정한 값이 나온다. 이를 원주율이라고 하며 원의 지름에 대한 원주의 비율( π )이다. 파이(π)는 원주를 지름으로 나눈 값이다. 타우(τ)는 원주를 반지름으로 나눈 값이며, ( 2π )와 같다. 2. 각도 (Degree/ θ)와 라디안 (Radian / Rad) 라디안 (Radian / Rad) : 어느 한 원 위의..
1. pch(pre compile header)?컴파일러가 더 빠르게 처리할 수 있는 중간 형태로 컴파일된 (c 또는 c++) 헤더 파일.stdafx.h --> 내가 적용하고 싶은 미리 컴파일된 헤더 이름으로 변경 pch.cpp 파일 속성에서 사용이 아니라 만들기로 변경 2. 다른 프로젝트 연결하기 예를 들어, ServerCore프로젝트를 GameServer와 DummyClient가 참조하고 싶을 때 속성 설정 방법이다.GameServer와 DummyClient 모두 동일하게 속성창에 들어간다. 포함디렉터리와 라이브러리 디렉터리에 포함디렉터리: $(SolutionDir) 포함하고 싶은 프로젝트 이름 \라이브러리: $(SolutionDir) 포함하고 싶은 라이브러리 이름 \ 3. 실행파일 저장위치 변경..