전체 글 56

Unreal Engine C++ 삽질 일지: UE_LOG, BeginPlay, 로그카테고리, 링커에러

1. UE_LOG와 로그 카테고리 선언Unreal에서 커스텀 로그 카테고리를 사용할 때는 DECLARE_LOG_CATEGORY_EXTERN과 DEFINE_LOG_CATEGORY를 반드시 헤더/소스에 분리해서 작성해야 한다.헤더 파일 (.h)DECLARE_LOG_CATEGORY_EXTERN(LogSparta, Warning, All);소스 파일 (.cpp)DEFINE_LOG_CATEGORY(LogSparta);2. UE_LOG 매크로 사용법UE_LOG에서 문자열은 TEXT("문자열")로 반드시 감싸야 한다. (오타로 Text("문자열")로 쓰면 오류남)UE_LOG(LogSparta, Error, TEXT("my Sparta!"));3. BeginPlay 함수 구현 위치클래스 선언부(.h)에서는 선언만 하고..

카테고리 없음 2025.07.02

[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..

[TIL] 상속 익숙해지기 (1)

#include using namespace std;// TODO: Phone 클래스 구현// - displayBrand()와 showFeature() 순수 가상 함수를 포함하도록 구현하세요// - 소멸자를 반드시 virtual로 선언하세요class Phone {public: virtual void displayBrand() = 0; virtual void showFeature() = 0; virtual ~Phone() {};};// Samsung 클래스 작성 (Phone 클래스를 상속받음)class Samsung : public Phone {public: void displayBrand() { cout displayBrand(); phones[i]->sho..

[TIL] C++ 간단한 프로그래밍 구현

#include using namespace std;// 점수를 입력받아 배열에 저장하고 유효한 점수의 합계를 구하는 함수double solution(int scores[], int scoresSize) { int sum = 0; int i = 0; // scoresSize만큼 유효한 점수를 입력받음 while (i > scores[i]; // 입력값이 0 이상 100 이하일 경우만 유효 if (0 (sum) / scoresSize;}int main() { int scores[5]; // 점수 배열 int* p = scores; // 포인터로 전달 int scoresSize = sizeof(scores) / sizeof(scores[0]); ..