아주 오래된 Perforce를 쓰는 사람들(2012년 전 퍼포스)... workspace에 파일 받지 않아도 대용량 파일 지우는 방법 공유 일단 우리 회사 퍼포스는 아주 오래된 구석기시대의 퍼포스를 사용한다. 구석기라고 말하기도 그렇고... 빙하기 정도? 퍼포스 모든 커밋이 중앙서버(Depot)로 되어 있다. 퍼포스의 가장 큰 장점 중 하나가 빅데이터, 바이너리 파일들을 빠르게 처리할 수 있다. 때문에 큰 프로젝트를 하는 곳에서 리소스용으로 가지고 있는 경우가 많다. 해본 사람은 알겠지만 게임회사에서 게임 리소스는 아주아주 대용량이다. 받는데 얼마나 오래 걸리겠어 ~ 하지만 한 사람이 받으면 중앙서버를 사용하기 때문에 다른 사람의 접근이 아주 느려진다. 장난 빼고 모든 팀원이 받는다고 하면 하루 종일 걸..
프로그래밍 용어인 델리게이트는 넓은 의미로 본다면 특정 객체가 해야 할 로직을 다른 객체가 대신 처리할 수 있도록 만드는 보편적인 설계의 개념으로 의미한다.언리얼 엔진의 델리게이트는 A객체가 B객체에 작업 명령을 내릴 때 B 객체에 자신을 등록하고 B의 작업이 끝나면 이때 A에게 알려주는 방식을 의미한다 .A가 B가 요구하는 형식으로 멤버 함수를 만들면 이를 B에 등록할 수 있고, B가 특정 상황이 될 때 B는 미리 등록해둔 A의 멤버 함수를 호출해주는 방식으로 동작한다. 매크로 (MACRO)Blueprint바인딩 개수반환값특징DECLARE_DELEGATE❌1개 ⭕가장 빠름DECLARE_MULTICAST_DELEGATE❌여러 개 ❌호출 순서 보장 안됨.DECLARE_DYNAMIC_DELEGATE⭕1개 ..
📒 1. TObjectPtr (UE5) " 이미 만들어진 객체를 가리키는 UObject 포인터 "UE5 : TObjectPtr Item;UE4 : UInv_InventoryItem* Item; 이미 생성된 UObject를 가리키는 포인터 UE5에서 권장하는 UObject 포인터사용법은 UObject*와 거의 동일하다.GC가 객체를 추적하기 쉽다.에디터에서 참조 관리가 향상된다.지역 변수나 함수 인자는 Raw Pointer(UE4 버전)를 많이 쓴다. 📒 2. TSubclassOf " 앞으로 만들 클래스 " TSubclassOf WeaponClass;특정 클래스의 자식 클래스만 담을 수 있는 클래스 타입실제 객체가 아니라 클래스(설계도)를 저장한다SpawnActor(), NewObject() 에서 많..
세상을 일 그러 뜨리는 능력이 있던 개찐따 안경 30년 만에 벗어내다. ✅ 서울|부산 밝은 세상안과를 선택한 이유압도적인 수술경험압도적인 리뷰 수 (네이버 리뷰 1만 건 넘고, 구글 리뷰도 5000건이 넘는다. 압도적이다..)GPT가 추천해 준 병원 중 하나오래된 병원 (나랑 한 살 밖에 차이 안남..!)전문의 의사 많음 장비 많음 병원 아주 큼회사에서 제휴업체 안과가 있어 한 100만 원 정도는 싸게 수술할 수 있지만 굳이...? 내 눈을 저렴하게 하고 싶은 생각은 없다. https://www.iloveeye.com/index.do?utm_source=naver_pc&utm_medium=bs_seoul&utm_campaign=%EC%84%9C%EC%9A%B8%EB%B0%9D%EC%9D%80%EC%..
Enhanced Input 키 리맵 UI 구현 흐름 정리이번 글에서는 키 변경 UI가 실제로 어떤 흐름으로 동작하는지 정리해보겠습니다.예시는 UWidget_ListEntry_KeyRemap, UWidget_KeyRemapScreen, 그리고 IInputProcessor를 사용한 구조입니다.전체 흐름은 아래처럼 보면 이해하기 쉽습니다.리스트 엔트리에서 변경 / 리셋 버튼 클릭키 입력을 받을 전용 화면 표시화면 활성화 시 Input Preprocessor 등록사용자 입력을 먼저 감지유효한 입력이면 실제 키 매핑 변경설정 저장 후 화면 종료비활성화 시점에 Input Preprocessor 해제즉, 단순히 버튼을 눌러 키를 바꾸는 구조가 아니라 입력을 기다리는 전용 화면을 띄우고, 그 안에서 입력을 먼저 받아 ..
비주얼 스튜디오의 런타임 형식 정보 사용은 C++의 RTTI(Run-Time-TypeInformation)의 옵션입니다. 이 옵션은 보통 dynamic_cast나 typeid, std::type_info를 쓸 때 필요합니다.예(/GR): 실행 중에 “이 객체의 실제 타입이 뭐지?”를 확인할 수 있음dynamic_cast, typeid, std::type_info 기반 동작 사용 가능다형성 기반 코드, 상속 구조, 플러그인/프레임워크 코드에 안전타입 정보가 추가돼서 .rdata 섹션 크기가 늘어난다.(약간)아니요(/GR-): 그런 타입 정보 생성을 끔런타임 타입 판별 기능을 사실상 못 쓴다고 보면 됨성능·용량을 조금 더 아끼고 싶은 프로젝트에서, RTTI를 전혀 안 쓴다는 확신이 있을 때만 고려dynami..
https://terribilisstudio.fr/?section=MCAnimations generated by Adobe's Mixamo.com are not fully compatible with Unreal Engine 4 and 5, most notably when it comes to IK or root motion extraction. Mixamo Converter software is a mini-app that processes FBX files downloaded from Mixamo and adapt" data-og-host="terribilisstudio.fr" data-og-source-url="https://terribilisstudio.fr/?section=MC" data-og-..
[Game Ability System]으로 키보드/마우스 눌렀을 때 바운딩하기 또는 어빌리티 부르는 방법, 어빌리티 시스템과 함께 쓰는 모듈들을 함께 정리해보려고 합니다. 1. GAS의 핵심 구성 요소GAS는 여러 시스템이 유기적으로 연결된 구조입니다. (1). Gameplay Ability / (GA) " 행동을 정의하는 클래스 "🔹핵심 함수 ActivateAbility()EndAbility()CommitAbility() (2). AttributesSet(AS) / Curve Data " 체력. 마나, 공격력 같은 수치를 담당하는 클래스 "Attribute변경은 직접 하지 않고 GameplayEffect를 통해서만 변경하는 것이 정석 구조입니다. (3). ASC (UAbilitySystemComp..
동영상1 1. 블랙보드 세팅에 대하여... 블랙보드(Blackboard) 에셋은 AI의 두뇌로 생각할 수 있으며, 비헤이비어 트리가 결정 내리는 데 사용하는 키(Key) 값을 저장한다. 블랙보드는 필요에 따라 c++ 또는 블루프린트 안에서 Set, Get 할 수 있다. 여기서 최상단에 SelfActor값과 TargetActor값의 거리를 service 하는데 이 두 값을 어디서 세팅하는지 알아보자. 1.1. SelfActor블랙보드 처음 생성하면 SelfActor가 나온다. 이 SelfActor는 그냥 현재 이 블랙보드를 사용하는 주체라고 생각하면 된다. C++ AAIController 클래스 내부에서 GetPawn()을 SelfActor에 세팅해주고 있다.1.2. TargetActorTargetAct..
# UI 프레임 워크 구조 및 세부 구조 # 1. Frontend Developer SettingsUDeveloperSettings을 한다.Config 파일 기반으로 UI Screen을 태그로 매핑함“Frontend.Widget.OptionScreen” 같은 Tag → 위젯 Blueprint Class 매핑이것이 실제 UI Screen Factory 역할을 함어떤 Screen Tag가 어떤 위젯 BP를 가리키는지 저장게임 시작 시 / 화면 전환 시 UI Subsystem이 이것을 참고하여 로딩함 2. List Data Object 실제 옵션 값 저장값 변경 시 Delegate BroadcastTryResetBackToDefaultValue() 등 다양한 함수 제공3. ListEntry Widget각 옵션..
Activate에서 SubSystem에 있는 PushSoftWidgeToStackAsync 비동기 위젯 생성 및 스택 추가 함수를 호출한다. 주요 클래스 정리하기 1. UCommonActivatableWidgetContainerBaseUCommonActivatableWidget 위젯을 담고 관리하는 기본 컨테이너 클래스2. UDeveloperSettings자신만의 세팅(설정값/옵션) "ProjectSetting", "Editor Settings"를 생성하고 관리할 수 있는 클래스3. UGameInstanceSubsystem게임 인스턴스 생명주기(게임 전반에 걸친 공유 기능 구현에 적합)특정 기능을 모듈 단위로 분리하여 관리하는 "자동 인스턴싱 및 수명 관리 클래스" 프로그래머가 직접 객체를 생성하거나..
아 이제 ui만하면 만들고 있는 프로젝트가 끝이난다... 이번 달 안에 꼭 끝낼 수 있으면 좋겠다 할 수 있드아 ~!!!!!! 게임 로직 인강은 정리하면서 할 수 없었는데 이번에는 한 번 정리하면서 UI 프로젝트를 마쳐보려고 한다 1. SubSystem이 뭔지? 언리얼에는 UWorldSubsystem, UGameInstanceSubsystem, UEngineSubsystem 같은 서브시스템 개념이 있다. 특정 라이프사이클(월드 단위, 게임 인스턴스 단위, 엔진 전체 단위)에 따라 자동으로 생성/초기화되는 매니저 객체.전역 싱글톤 대신 “월드나 인스턴스 스코프 안에서만” 살아 있는 싱글톤 느낌이라고 보면 된다. 게임 전반에 걸쳐 공통적으로 쓰이는 UI(특히 프론트엔드 화면) 관련 매니저라고 이해하면 됨. ..