UE5 부트캠프(TIL) 30

[TIL] 언리얼 엔진 – 인터페이스와 상속, 아이템 시스템

1. 인터페이스와 베이스(추상) 클래스의 차이점구분인터페이스베이스(추상) 클래스목적“이 기능 있음” 약속만 함“공통 동작/데이터”까지 구현구현/데이터함수 선언만, 구현/멤버 변수 없음함수 구현/멤버 변수 가능상속여러 개 동시 상속 가능한 번에 하나만 상속코드 재사용XO언리얼 예시IInteractableAItemBase2. 아이템 인터페이스와 베이스 클래스 구현 방법아이템 인터페이스 생성:UINTERFACE(Blueprintable)class UMyItemInterface : public UInterface{ GENERATED_BODY()};class IMyItemInterface{ GENERATED_BODY()public: virtual void OnPickup(AActor* Picker..

[TIL]언리얼 C++에서 SpringArm과 카메라 생성 & 부착

SpringArmComponent 생성 및 부착 SpringArmComp = CreateDefaultSubobject(TEXT("SpringArm"));SpringArmComp->SetupAttachment(RootComponent);SpringArmComp->TargetArmLength = 300.0f; // 원하는 길이SpringArmComp->bUsePawnControlRotation = true; // 회전 연동 CameraComponent 생성 및 SpringArm에 부착 CameraComp = CreateDefaultSubobject(TEXT("Camera"));CameraComp->SetupAttachment(SpringArmComp, USpringArmComponen..

TIL: C/C++ 기초 문법 복습

1. printf 포맷 옵션 실습 %d: 정수 출력 printf("%d", 12); → 12 %5d: 5자리 확보, 오른쪽 정렬 printf("[%5d]", 12); → [ 12] %-5d: 5자리 확보, 왼쪽 정렬 printf("[%-5d]", 12); → [12 ] %05d: 5자리 확보, 0으로 채움 printf("[%05d]", 12); → [00012] 2. printf에서 실수 출력 %f: float, double 출력 가능 (C에서는 차이 없음) %lf: double 용도이지만 C에선 %f와 동일 결론: 실수 출력엔 %f 쓰면 됨3. 포맷 문자열과 변수 연결 printf는 반드시 포맷 문자열(예: "%d")과 변수를 짝지어 사용해야 함 ..

[TIL]언리얼 엔진 폴리지 & 레벨 구조 문제 해결기

1. 폴리지 브러시가 동작하지 않는 문제기본 레벨(템플릿)에서는 폴리지 브러시(나무/풀 페인트)가 나타나지 않음.폴리지로 StaticMesh, Landscape 등 어떤 곳에도 페인팅이 불가.오픈 월드 템플릿으로 새 레벨 생성시 폴리지 정상 동작.원인: 기본 레벨에는 월드 파티션/데이터 레이어 구조가 없음!TIP: 폴리지 브러시를 쓸 계획이면 오픈 월드 레벨이나 월드 파티션이 활성화된 맵을 사용할 것.2. 월드 파티션/데이터 레이어와 폴리지폴리지, 대형 맵 작업 시 월드 파티션 + 데이터 레이어는 사실상 필수.기본 레벨은 전통적인 레벨 구조라 대규모 작업/폴리지 작업엔 부적합.데이터 레이어 패널이 비어 있으면, 폴리지 브러시가 나타나지 않음!3. 하늘 배경 변경 (스카이 쉐이프 활용)StaticMesh(..

[TIL]Unreal C++ 퍼즐 스테이지 기획 & Blender 모델링

1. 스테이지/오브젝트 기획테마: 이상한 나라의 앨리스낡아서 거의 망가진 식탁 위에서 티팟, 티컵, 스푼 등이 공중에 날아다니고플레이어 캐릭터가 이 오브젝트들을 발판 삼아 건너가는 몽환적 플랫폼 스테이지 구상.주요 오브젝트: 식탁, 찻주전자, 찻잔+받침, 스푼, 냅킨, 테이블 매트, 카드 병정 등각 오브젝트의 연출 방향 및 배치 아이디어 정리.2. Blender 모델링 작업직접 제작: 찻주전자, 찻잔+받침, 스푼, 냅킨, 테이블 매트 등게임 내 퍼즐 기믹을 고려하여 비율, 크기, 형태까지 신경 써서 모델링.각 오브젝트별로 머티리얼/컬러를 분리하여 추후 언리얼에서 색상 조정 및 머티리얼 적용이 쉽게 준비.FBX로 내보낼 준비까지 마침.3. 느낀 점 & 내일 할 일오늘은 컨셉 기획과 모델링 리소스 준비에 집..

[TIL] RPG 기획 구조 논의 및 Figma 시각화

오늘 한 일텍스트 기반 RPG의 전반적인 게임 흐름 및 시스템 구조에 대해 기획 회의를 진행함Figma를 활용하여 전체 게임 플로우 및 시스템 간의 관계를 시각적으로 구성함게임의 기본 스토리 방향과 플레이 흐름을 토의하고, 주요 시스템에 대한 분담을 정리함주요 기획 포인트게임 전체 흐름 구조 정의인트로 → 탐험/전투 → 보상/회복 → 상점 → 다음 진행 구간핵심 루프 구조를 기반으로 각 기능의 위치와 동작 타이밍을 구체화상점 시스템 및 아이템 구성 논의장비 상점 / 소비 아이템 상점 분리 운영아이템 분류 기준, 이름 체계, 구매/장착 처리 방식 개념 정리캐릭터 시스템 정리플레이어 캐릭터의 기본 능력치, 슬롯 기반 장비 구조 구상상태 이상, 스탯, 장착 효과 등 기능 확장 가능성 고려스토리 구성 방향 논의..

[TIL] 분할 컴파일과 헤더 파일의 필요성

분할 컴파일 (Modular Compilation)C++에서 하나의 파일에 모든 코드를 작성하면 규모가 커질수록 유지보수가 어렵고, 컴파일 시간도 길어진다. 이를 해결하기 위해 여러 개의 소스 파일(.cpp)로 분리해서 작성하고, 필요한 선언만 헤더 파일(.h)에 담아 관리하는 것이 분할 컴파일이다. 분할 컴파일의 이점컴파일 속도 개선 (변경된 파일만 재컴파일)파일 간 기능 분리 및 코드 관리 용이재사용성 향상 (여러 프로젝트에서 동일한 모듈 사용 가능)// math.hint add(int a, int b);// math.cpp#include "math.h"int add(int a, int b) { return a + b;}// main.cpp#include #include "math.h"int m..

[TIL] Unreal C++ - 이동, 거리, 이벤트 시스템

오늘 한 일10회 랜덤 이동 시스템 구현거리 계산 함수 직접 작성이벤트 발생 함수 설계 및 확률 기반 호출배운 것삼항 연산자 ? : 사용법과 자료형 일치의 중요성UE_LOG에서 포맷 코드 실수로 로그 누락 가능성 경험TriggerCount를 지역 변수로 선언하면 누적 안 됨 → 멤버 변수로 선언 필요느낀 점로그 하나로 흐름을 추적하며, 문제 원인을 빠르게 찾는 능력이 중요함을 느꼈다.거리 계산 수식 하나 구현했을 뿐인데 수학적 사고와 최적화까지 고려하게 되었다.C++에서는 "변수를 어디에 선언했는가"가 곧 코드의 생명주기를 결정한다는 걸 다시 체감했다.

[TIL] 템플릿과 STL 개념 정리 및 Vector Lib 구현해보기

템플릿 (Template)템플릿은 자료형에 관계없이 동작하는 일반화된 함수나 클래스를 작성할 수 있도록 해주는 기능이다.용도:버전을 다른 타입에 따라 복잡한 컨설 필요 없이 하나의 컨설로 차례 사용장점:타입 사용 자유로워지는 코드자료형에 의외된 도메인 함수/클래스에서 복장 사용 없음예제 (직접 구현한 라이브러리 vector의 함수 일부):#include //#include using namespace std;template class SimpleVector {private: T* data; int size; int capacity;public: SimpleVector(T s = 10){ size = 0; capacity = s; data..