🟩 학습 목표FGameplayTag의 계층 구조를 네이티브 시스템으로 구축하여 하드코딩된 문자열 의존성을 제거하고 데이터 무결성을 확보한다.퀵슬롯 무기 스왑 및 자동 장착 인터락 로직을 구현하여 인터랙션의 예외 처리를 정밀화한다.GameplayTagContainer 기반의 상태 제어 시스템을 구축하여 멀티플레이 환경에서의 동시 접근 제어 및 네트워크 파이프라인을 정립한다.🟧 1. 인벤토리 구조 최적화: 네이티브 GameplayTags 도입🟦 문자열 파편화 방지 및 계층 구조 정립기존에 하드코딩된 문자열(예: "ItemType.Weapon")에 의존하던 방식은 오타 발생 위험이 크고, 아이템 계층 구조가 파편화되어 유지보수가 어려웠다. 이를 해결하기 위해 NCGameplayTags.h/cpp에 네이티..
🟩 학습 목표에디터 디테일 패널의 변수 리셋 버그를 해결하기 위해 OnConstruction 내부에서 단일 진실 공급원(SSOT) 구조를 확립한다.기존 무기 액터가 소켓에 잔상으로 남는 고아 액터(Orphan Actor) 문제를 인터락(Interlock) 설계를 통해 해결한다.네트워크 지연 환경(Ping)에서 상태 불일치로 인한 패킷 증발을 막기 위해 클라이언트 단 가드 조건문을 최적화한다.🟧 1. OnConstruction 구조 개선: 단일 진실 공급원(Single Source of Truth)🟦 디테일 패널 데이터 롤백 현상과 원인레벨에 배치된 액터 인스턴스의 변수 값을 에디터 디테일 패널에서 수정해도, 엔터를 누르는 순간 원래 값으로 리셋되는 현상이 발생하였다. 이는 에디터 타임 빌드 함수인 ..
🟩 학습 목표의존성을 제거한 FNCLootDropData 모듈화 구조를 확립하고, 가중치 기반 랜덤 스폰 로직을 정립한다.언리얼 헤더 툴(UHT)의 인터페이스 가상 함수 처리 및 BlueprintNativeEvent 구현 규칙을 준수하여 컴파일 에러를 해결한다.세션 유지 및 멀티플레이 동기화 무결성을 위해 인벤토리 컴포넌트의 소유권을 Character에서 PlayerState로 리팩토링한다.아키텍처 개편에 따른 UI 위젯의 데이터 참조 포인터를 교정하고 드래그 오퍼레이션 분기 처리를 고도화한다.🟧 1. 파밍 상자(Loot Box) 확률형 스폰 시스템 구현🟦 드랍 테이블 구조체 분리 (FNCLootDropData)아이템 ID, 드랍 가중치(Weight), 최소/최대 수량, 속성 태그를 관리하는 전용 ..
🟩 학습 목표UMG 드래그 앤 드롭 시스템의 리턴 값(True/False)에 따른 엔진 내부 마우스 이벤트 처리 메커니즘을 파악한다.상이한 인벤토리 컴포넌트 인스턴스 간 데이터 이관을 위한 TransferItemTo 파이프라인 및 멀티 캐스팅 UI 동기화를 구현한다.USaveGame 시스템을 아키텍처에 통합하여 레벨 전이 시 데이터 영속성(Persistence)을 보장하는 저장/로드 프레임워크를 수립한다.🟧 1. UMG Drag & Drop 이벤트의 Return Value (True vs False)의 함정🟦 마우스 드롭 이벤트 취소 시 액터 유실 버그 분석UI 인벤토리 슬롯 간에 아이템 스왑(Swap) 조건이 맞지 않아 백엔드 C++ 로직이 false를 반환했을 때, 이를 위젯 블루프린트 On D..
🟩 학습 목표인벤토리 슬롯 데이터에 데이터 테이블 Key 값을 연동하여 런타임 동적 에셋 복원 및 데이터 주도형 아키텍처를 수립한다.FDataTableRowHandle 및 리플렉션 한정자를 활용하여 레벨 디자이너의 휴먼 에러를 원천 차단하는 방어적 C++ 클래스를 설계한다.OnConstruction 라이프사이클 함수를 오버라이드하여 에디터 뷰포트 내 실시간 위지윅(WYSIWYG) 데이터 동기화 시스템을 구현한다.🟧 1. Data-Driven 인벤토리 아키텍처 개편🟦 추상 데이터 기반 에셋 복원의 한계점 분석기존 시스템은 FGameplayTag만을 기반으로 아이템의 카테고리를 분류하였다. 이로 인해 아이템을 필드에 재드롭(Server_DropItem)하는 시점에 해당 아이템이 본래 소유하고 있던 고유..
🟩 학습 목표UI 위젯의 드래그 오퍼레이션 파이프라인을 구축하여 아이템 드래그 앤 드롭(Drag & Drop) 기능을 구현한다.HasAuthority 가드 클로즈의 제약을 파악하고, Server RPC 구조로 전환하여 멀티플레이어 환경의 액터 스폰 권한을 제어한다. 인벤토리 시스템의 본질인 '데이터와 실물 액터의 분리 구조'를 이해하고 이를 기반으로 한 아키텍처를 분석한다.MVP 완성 이후의 구조적 확장성을 위해 슬롯 데이터 내 원본 클래스 정보를 복원하는 리팩터링 방향을 수립한다.🟧 1. C++ 함수 블루프린트 리플렉션 노출🟦 리플렉션 지정자 누락 이슈C++ 내부에서 정상적으로 구현한 슬롯 데이터 반영 함수인 SetSlotData가 블루프린트 위젯 에디터의 노드 검색 창에서 식별되지 않는 현상이 ..
🟩 학습 목표장르적 UX 특성을 고려하여 상호작용 검출 방식을 Sphere Overlap 기반 최단 거리 타겟팅 구조 구현언리얼 엔진 5의 IWYU 정책에 따른 컴파일 에러를 해결하고, 데이터 불일치 및 변수 초기화 누락으로 인한 런타임 버그 방지해상도 독립적인 포스트 프로세스 외곽선 머티리얼을 설계하고, 데이터 타입 불일치 에러를 해결하여 렌더링 파이프라인 최적화🟧 1. 상호작용 스캔 방식 구현: Sphere Overlap 기반 타겟팅🟦 크로스헤어 조준 방식의 한계 및 UX 피로도 분석기존 카메라 에임(Crosshair) 기반의 레이캐스트(LineTrace/Sweep) 방식은 플레이어에게 매번 정밀한 조준을 요구한다. 이는 아이템 파밍이 빈번하게 일어나는 액션 RPG나 서바이벌 장르 특성상 유저의..
🟩 학습 목표HasAuthority 가드 클로즈 및 OnRep_ 콜백의 네트워크 특성을 이해하고 Server RPC 데이터 흐름 정립FGameplayTag 문자열 기반 데이터 테이블 탐색 로직의 데이터 무결성 검증FindStackableSlot 자동 병합 알고리즘의 방어 코드와 예외 처리 시퀀스 실증단일 책임 원칙(SRP)에 따라 데이터 차감은 인벤토리에 캡슐화하고, 시각적 처리는 멀티캐스트 델리게이트로 위임하는 확장형 API 설계🟧 1. 멀티플레이어 네트워크 리플리케이션(Replication)의 함정과 해결🟦 클라이언트 데이터 갱신 누락 현상클라이언트 환경에서 아이템 획득(Add) 키 입력 이벤트를 트리거했으나, 관련 로그가 출력되지 않고 인벤토리 컨테이너 데이터가 전혀 갱신되지 않는 현상이 발생..
🟩 학습 목표ReplicatedUsing(OnRep) 콜백과 델리게이트를 연동하여 멀티플레이 환경에서 인벤토리 UI의 불필요한 전체 갱신을 막고 데이터 변화에만 반응하는 최적화 구조 구축단일 책임 원칙(SRP)에 근거하여 입력 처리(Character)와 데이터 처리(Inventory) 역할을 엄격히 분리(Decoupling)함으로써 객체지향 협업 아키텍처 수립백엔드 및 네트워크 동기화가 완료된 C++ 부모 클래스(ANCItemActor)를 설계하여 기획/디자인 파트와의 효율적인 작업 파이프라인 구축프로젝트 초기 단계에서 복잡한 시스템 참조 대신 빠르고 확실한 테스트가 가능한 MVP(최소 기능 제품) 마인드셋 기반의 토글 및 필터링 로직 구현🟧 1. UI 갱신 최적화와 리플리케이트 콜백(Replicat..
🟩 학습 목표다형성(Polymorphism)을 활용하여 컨테이너와 플레이어 모두 대응 가능한 상속 기반 인벤토리 컴포넌트 설계FGameplayTag 및 데이터 테이블을 연동하여 하드코딩 없는 데이터 주도형 아이템 시스템 구축멀티플레이어 환경에서 아이템 복사 부정행위를 방지하는 스택(Stack) 제어 로직 및 Server RPC 보안 파이프라인 구현🟧 1. 상속(Inheritance) 기반의 인벤토리 아키텍처 설계🟦 다형성을 통한 코드 중복 및 메모리 낭비 방지플레이어의 퀵슬롯 기능과 필드 상자의 파밍 기능을 하나의 컴포넌트에 통합할 경우, 불필요한 메모리 점유와 스파게티 코드가 양산되는 문제가 발생한다. 이를 해결하기 위해 객체 지향 프로그래밍의 상속 구조를 도입하였다.NCInventoryBaseC..

