전체 글 17

[UE 5] GAS - Instancing Policy

GAS에선 Gameplay Ability를 통해 캐릭터가 할 수 있는 행동을 관리한다.https://dev.epicgames.com/documentation/ko-kr/unreal-engine/using-gameplay-abilities-in-unreal-engine 언리얼 엔진의 게임플레이 어빌리티 사용하기 | 언리얼 엔진 5.7 문서 | Epic Developer Community게임플레이 어빌리티 클래스의 개요입니다.dev.epicgames.com관련 공식 문서해당 Ability가 Instancing되는 방식은 3가지다. 이를 Instancing Policy라고 한다. 1. 실행 당 인스턴스화활성화할 때마다 결과로 월드에 어빌리티 오브젝트의 인스턴스를 스폰한다.변수를 시작할 때마다 리셋해야하는 경우..

[UE5] 언리얼 엔진 문자열 - FName, FString, FText

언리얼 엔진 내부에서 사용하는 문자열에는 FName, FString, FText가 있다. 1. FName엔진 내부에서 무언가를 찾거나 식별할 때 사용한다. (본과 소켓 이름, 태그 등)특징1. 대소문자를 구별하지 않는다.2. 비교 연산이 가장 빠르다.문자열을 전역 문자열 테이블에 등록한 뒤 그 인덱스 값만 가지는 방식3. 한번 생성하면 수정할 수 없고 문자열을 조작할 수 없음 2. FStringFCString의 래퍼 클래스. C++ 의 std::string과 가장 유사. 데이터를 가공하거나 출력할 때 쓴다. 특징1. 내부적으로 TArray - TCHAR 타입의 동적배열로 구성2. 한 글자가 2바이트를 차지3. 조작이 가능한 유일한 스트링 클래스 주요 메서드- 문자열 생성 및 변환PrintfSanitiz..

[UE 5]Assert - check, ,ensure, verify

Assert코드가 정상 여부를 검증하는 매크로.포인터의 NULL 여부를 검증하는 간단한 것부터 특정 함수에 재진입했는지와 같은 복잡한 검증도 가능하다.출시 코드에는 존재하지 않는다.assert되는 것은 무엇이든 true여야하며, 그렇지 않으면 프로그램이 멈춘다고 생각하고 고려assert의 종류는 'check' 'verify', 'ensure'가 있다. checkcheck 계열은 파라미터가 false일 때 실행을 정지(크래시)하고 강제 종료한다.Shipping 빌드에서는 코드 자체가 삭제되며 메모리 부족, 필수 포인터 누락 등 이후 로직을 실행하는 것이 무의미하거나 위험할 때 사용한다.ensure조건이 false여도 게임을 종료하지 않으며 콘솔에 콜 스택과 함께 메세지를 출력한다. 성능 저하를 막기 위..

[UE5] Stylize한 렌더링의 구현법과 기초지식

https://dev.epicgames.com/community/learning/talks-and-demos/7evy/unreal-engine-stylized-rendering-insights-from-japan https://www.youtube.com/watch?v=3FBCeEtHoRE발키리 엘리시움 그래픽스 실현 및 비용/성능의 공부 https://www.youtube.com/watch?v=re56DDIQRiM아이돌마스터 스탈릿 시즌 그래픽 구현 및 최적화 사례 언리얼 페스타 2022 서머 https://www.youtube.com/watch?v=3FBCeEtHoRE UE Festa 22 발키리 엘리시움 https://www.youtube.com/watch?v=re56DDIQRiM UE Fes..

2025년 끝나기 전까지 목표

최근 개발자로서 느낀 내 문제점과 이를 해결할 방안을 정리해볼 예정이다.1. Native C++코딩 테스트를 자바 기반으로 공부했었고 일 시작하고 나서는 Unreal C++를 주로 사용했다보니 Native C++에 대해서는 이론적으로만 보고 실제로 다룰 기회가 거의 없었다. 그러다보니 이직하려던 곳 코테를 말아먹었다. 물론 코테 자체를 오랜만에 본 것도 있고, 1번 문제에 매몰돼서 시간을 너무 쓸데없이 썼다든가 하는 사소한 문제점도 있긴 했지만 아무래도 C++ 사용이 능숙하지 못했던 영향이 가장 컸다고 생각한다.알고리즘 오랜만에 조금 풀어보고 백준 플레 정도까지 200점 정도 남겼었는데 이거 찍는걸 목표로 공부 좀 해야겠다. 2. 게임 플레이와 관련된 포트폴리오포트폴리오를 준비하면서 느꼈던건 너무 특정 ..

개발 2025.09.26

[UE 5]언리얼 엔진 스마트 포인터 정리

언리얼 엔진은 스마트 포인터와 가비지 컬렉터(GC)를 모두 사용하여 메모리를 관리한다.1. 가비지 컬렉션(GC): UObject 파생된 객체는 가비지 컬렉터가 관리한다. UPROPERTY() 매크로를 통해서 객체 간 참조를 주적하며 더 이상 참조되지 않으면 자동으로 메모리에서 해제한다. 2. 스마트 포인터: UObject가 아닌 순수 C++ 클래스의 메모리는 스마트 포인터를 통해 관리한다. 소유권 개념을 명확히 해 메모리 누수나 이중 해제 같은 실수를 방지하고 코드 안정성과 가독성을 높여주는 기능을 한다.순수 C++ 기반에서는 스마트 포인터를 사용하고 UObject와 관련된 부분은 리플렉션 시스템을 통해서 가비지 컬렉터로 관리한다.기본적으로 C++ 표준 스마트 포인터(std::unique_ptr, std..

[UE 5]내가 UE 생 초보였을 때 공부한 방법

원래 소프트웨어가 복수 전공이기도 했고 개발 쪽엔 관심은 있었지만 UE 관련 스택은 전혀 없었는데 어쩌다 언리얼 개발자로 입사하면서 엔진 학습하려고 했던 방법에 대해 적어보려고 한다지금도 전문가 급이냐하면 입사 1년도 못 채운 신입이라 그런건 절대 아니지만 노베이스 생초보는 탈출한 상태에서 도움이 됐던 내용들 메모라고 생각해주면 될 것 같다 1. 공식 문서개발자들의 교과서. 아무래도 UE는 노베이스였지만 개발 자체는 노베이스가 아니었다보니 개발 문서 보는게 생소하지 않아서 여기서 가장 큰 도움을 받은 것 같다.처음에는 핵심 용어(액터, 폰, 캐릭터, 컨트롤러 등) 정의 위주로, 이후엔 하나하나 어떻게 쓰는건지 대해서 배웠었다. 2. 샘플 프로젝트 살펴보기 언리얼 엔진에서는 엔진 키고 나면 나오는 1인칭..

[UE 5]Postprocess를 통한 2D 배경 구현

오늘은 Postprocess를 통해서 캐릭터를 제외한 부분을 2D 배경으로 처리해주는 방법에 대해서 알아볼 것이다. Postprocess와 Custom Depth를 이용해서 '캐릭터를 제외한 부분을 선택한 배경으로 덧씌우고, 캐릭터 부분은 온전하게 보이도록' 할 예정이다.목표 - '캐릭터를 제외한 부분을 선택한 배경으로 덧씌우고, 캐릭터 부분은 온전하게 보이도록'하기(해당 프로젝트에선 초록색 배경을 택했다.) 해당 기능을 사용하려면 프로젝트 세팅을 바꿔야한다Enable with Stencil로 변경한다. 그리고 노출시킬 대상의 Render CustomDepth Pass를 true로 체크, CustomDepth Stencil Value를 1로 변경한다. Postprocess Volume을 생성한다프로젝트 ..

[백준] c++ 1234 - 크리스마스 트리(12ms)

전형적인 경우의 수 나눠서 DP로 푸는 문제다특정 층을 한 색으로만 칠할 때, 두 색으로 칠할 때, 세 색으로 칠할 때로 나눠서 그에 맞게 경우의 수 넣어주고 계산시켜주면 되는 문제최적화하겠답시고 넣어둔 캐싱용 f2, f3(팩토리얼)에 오타 생겨서(1680을 1080으로 집어넣음) 2번이나 틀려놓고 애꿎은 로직만 갈궜던 문제#include #include using namespace std;int N, R, G, B;long f2[6] = {1, 2, 6, 20, 70, 252};long f3[4] = {1, 6, 90, 1680};vector>>> memo;long dfs(int m, int r, int g, int b) { if (r > N >> R >> G >> B; //초기화 me..

개발/C++ 2025.07.01

[백준] c++ 15998 - 카카오 머니 (124ms)

일 시작한 뒤로 한동안 놓고 있던 알고리즘 문제 취미로 교육 기관 들어가 있을 때 들어갔던 스터디 다시 들어가서 풀기로 했다.마냥 전처럼하지는 못하겠지만 그래도 열심히 해보려고 한다.이전까지는 자바로 문제 풀어왔었는데, 언리얼 개발하다보니 cpp로 언어 바꿔서 풀어보려다보니까 좀 익숙하지 못한 점도 있는 것 같다. gcd, 최대공약수를 이용하는 문제numeric include하면 std::gcd 메서드 이용할 수 있다고 들었는데 왜인지 모르겠지만 제대로 안돼서 직접 구현했다.(Rider 쓰던거 썼고 17.0이었는데 안된다 ;ㅅ;)더 최적화하려면 반복문 써서 시간 더 줄일 수도 있을 것 같은데 구현이 간단하고 직관적이여서 구현은 재귀로 했다. 돈을 빼낼 때 경우의 수를 나눠서 생각해서 각각의 경우에 따라 ..

개발/C++ 2025.06.30