2026/06/04 6

언리얼 C++) 엔진 최적화: 오브젝트 풀링 (Object Pooling)

언리얼 엔진 최적화: 오브젝트 풀링 (Object Pooling)1. 오브젝트 풀링(Object Pooling)이란?개념: 오브젝트가 필요할 때마다 새로 만들고(생성), 다 쓰면 파괴(삭제)하는 대신, 게임 시작 시 미리 왕창 만들어 두고(Pool) 필요할 때 꺼내 쓰고 다 쓰면 다시 보관함에 반납하는 기법입니다.왜 사용하는가? (도입 이유)동적 생성(메모리 할당)과 삭제(가비지 컬렉션)는 CPU를 많이 쓰고 느린 작업입니다.총알 난사처럼 짧은 순간에 생성/삭제가 미친 듯이 반복되면 치명적인 프레임 드랍(렉)이 발생합니다.작동 방식 (총알 예시):게임 시작 전, 보관함(Pool)에 총알 100개를 미리 만들어 둡니다. (비활성화/숨김 상태)플레이어가 총을 쏘면, 보관함에서 총알 하나를 꺼내 총구 위치로 ..

카테고리 없음 2026.06.04

언리얼 C++) 언리얼 서브시스템(Subsystem) 완벽 이해 및 실전 아이템 매니저 구현

1. 서브시스템 (Subsystem) 이란?내가 직접 만들고 NewObject나 Destroy로 관리하지 않아도, 엔진이 알아서 수명(생성/파괴)을 관리해 주는 매우 편리한 매니저 클래스입니다.서브시스템의 3대 장점코드의 모듈화 (깔끔함): 과거처럼 GameInstance 하나에 모든 매니저(UI, 사운드, 통계 등)를 때려 박지 않아도 됩니다.자동 메모리 관리: 엔진이 생명주기를 책임지기 때문에 생성과 가비지 컬렉션(GC)을 직접 신경 쓸 필요가 없습니다.플러그인 친화적: 사용자가 따로 세팅할 필요 없이 코드를 넣기만 해도 알아서 엔진 라이프사이클에 맞춰 돌아갑니다.⏳ 서브시스템 생명주기 (Lifecycle) 종류종류상속 받는 클래스태어나는 시점 (Initialize)사라지는 시점 (Deinitiali..

카테고리 없음 2026.06.04

언리얼 C++) 언리얼 에셋 로딩 최적화 및 데이터 관리 (Soft Reference & DataAsset)

1. 에셋 참조 방식: 하드(Hard) vs 소프트(Soft)① 하드 래퍼런스 (Hard Reference)특징: UPROPERTY(EditAnywhere)로 블루프린트에서 직접 할당하거나 생성자에서 ConstructorHelpers로 찾는 방식.장단점: 참조된 에셋을 즉시 사용할 수 있어 편리하지만, 캐릭터가 스폰될 때 들고 있는 무기 수십 개가 메모리에 한꺼번에 로드되므로 메모리 부하 및 로딩 지연이 발생할 수 있습니다.② 소프트 래퍼런스 (Soft Reference)특징: 에셋의 경로 정보만 딱 가지고 있다가, 개발자가 '지금 당장 필요해!'라고 부를 때(동기/비동기) 비로소 메모리에 로드하는 방식.장점: 초기 로딩 속도 개선, 메모리 점유율 최소화, 비동기 로딩을 통한 프레임 드롭(렉) 방지.사용..

카테고리 없음 2026.06.04

언리얼 C++) 언리얼 인터페이스 & 델리게이트

언리얼 인터페이스 (Interface)서로 전혀 다른 클래스들(나무, 천, 강철)에게 공통된 행동 지침(불에 타는가?)을 부여할 때 사용하는 강력한 무기입니다. (느슨한 결합)다중 상속의 대안: 언리얼 UObject는 다중 상속이 불가능하지만, 인터페이스는 여러 개를 동시에 상속받을 수 있습니다.U타입과 I타입: 언리얼에서 인터페이스 생성 시 두 개가 만들어집니다.UInterface: 언리얼 엔진(리플렉션)에 "나 이런 인터페이스 있어요" 하고 등록하는 껍데기.IInterface: 실제 함수를 선언하고, 우리가 클래스에 상속받아 구현하는 진짜 본체.인터페이스 선언 및 구현 (코드 예시)C++ // 1. 인터페이스 선언 (ITestMyInterface)class TESTCPP55_API ITestMyInt..

카테고리 없음 2026.06.04

언리얼 C++) 무기 시스템 디자인 패턴 구현

언리얼 무기 시스템 설계: 디자인 패턴 적용동일한 '총 쏘기' 기능이라도 협업 방식과 확장성에 따라 다른 디자인 패턴을 적용할 수 있습니다.① 템플릿 패턴 (Template Method Pattern)전체적인 알고리즘의 흐름(순서)은 부모 클래스에서 미리 뼈대를 잡아두고, 세부적인 구현은 자식 클래스(또는 블루프린트)에서 완성하는 방식입니다.구조: WeaponBase (기본 변수/함수) ➔ WeaponTemplateBase (뼈대 로직) ➔ 블루프린트 (세부 구현)언리얼 적용 팁: BlueprintNativeEvent(C++ 기본 구현 + BP 덮어쓰기 가능), BlueprintImplementableEvent(C++ 구현 없이 BP에서만 구현)를 활용합니다.C++ 핵심 코드:C++ // 뼈대가 되는 F..

카테고리 없음 2026.06.04

언리얼 C++) 언리얼 콜리전 (Collision) 시스템 & 트레이스

콜리전은 단순히 눈에 보이는 모델링이 부딪히는 것이 아니라, 내부 질서와 규칙에 따라 작동하는 충돌 처리 전용 시스템.충돌 반응 규칙: - Block + Block = Block (막힘)Overlap + Overlap (또는 Block) = Overlap (겹침/통과)Ignore + (무엇이든) = Ignore (무시)오브젝트 채널과 프리셋: 오브젝트 채널은 '내가 어떤 부류(결계, 몬스터 등)인지'를 정의하고, 프리셋은 '내가 앞으로 다른 채널들을 어떻게 대할 것인지(막을지, 겹칠지)'를 미리 세팅해 두는 곳.단순 vs 복합 콜리전: - 단순 콜리전: 폴리곤 수가 적은 박스, 캡슐 등의 형태. 캐릭터 이동이나 기본 충돌 시 성능을 위해 사용.복합 콜리전: 스태틱 메시의 실제 형태를 그대로 따라간 정밀한..

카테고리 없음 2026.06.04