cpp 5

Unreal Live Coding 실전: 에디터 재시작 없이 고쳐도 되는 코드와 안 되는 코드 구분하기

Unreal Engine의 Live Coding은 C++ 작업 속도를 크게 올려준다. 에디터를 끄지 않고 함수 구현을 바꾸고, 바로 플레이해서 확인할 수 있기 때문이다. 작은 전투 로직이나 UI 계산식을 조정할 때는 컴파일 대기 시간이 확 줄어든다.문제는 Live Coding이 모든 C++ 변경을 안전하게 반영해 주는 기능은 아니라는 점이다. 특히 UCLASS, UPROPERTY, 생성자 기본값, 컴포넌트 구성처럼 에디터와 리플렉션 시스템에 깊게 묶인 코드는 “컴파일은 됐는데 에디터 상태는 이상한” 상황을 만들 수 있다. 오늘은 실전에서 어디까지 Live Coding으로 처리하고, 어디서 에디터 재시작을 해야 하는지 기준을 잡아본다.1. Live Coding으로 안전한 변경대체로 함수 내부 구현만 바꾸는..

Unreal Engine C++ Data Validation: UEditorValidator로 에셋 오류와 빌드 크래시 사전 방지하기

게임 프로젝트가 커질수록 다루는 에셋의 양은 빠르게 불어납니다. 기획자, 아티스트, 프로그래머가 매일 수많은 캐릭터 모델, 텍스처, 사운드, 데이터 에셋을 에디터로 임포트하고 수정하죠. 이 과정에서 밉맵(Mipmap) 설정이 빠진 큰 텍스처가 들어오거나, LOD(Level of Detail)가 하나도 없는 무거운 스태틱 메시가 배치되는 실수가 자주 생깁니다.이런 작은 세팅 실수는 단순히 빌드 용량을 키우는 데 그치지 않습니다. 밉맵이 없어 텍스처 메모리가 폭증하거나, 잘못 구성된 데이터 에셋이 런타임에서 널 포인터 참조 크래시로 이어지기도 합니다. 최악의 경우 패키징 단계의 쿡(Cook) 과정에서 에러가 나면서 전체 빌드 파이프라인이 멈춰 서기도 합니다.에셋 임포트 가이드를 문서로 배포하는 것만으로는 이..

C++ std::pmr로 게임 프레임 아레나 만들기: 한 프레임 메모리를 통째로 잡고 통째로 버리기

게임 루프는 매 프레임 똑같은 일을 반복한다. 시야에 들어온 엔티티 목록을 모으고, 충돌 후보를 추리고, 경로탐색 노드를 펼치고, UI 레이아웃을 다시 계산한다. 이 임시 데이터의 대부분은 딱 한 프레임만 살고, 다음 프레임이 시작되면 아무 의미가 없다. 그런데도 std::vector나 std::unordered_map을 그냥 쓰면 컨테이너가 내부에서 매 프레임 malloc과 free를 호출한다.이 반복 할당은 세 가지 비용을 만든다. 첫째, malloc 자체의 호출 오버헤드와 멀티스레드 락 경합. 둘째, 힙이 잘게 쪼개지며 생기는 캐시 미스. 셋째, 해제 시점이 사방에 흩어져 메모리 접근 패턴이 예측 불가능해진다. 60fps를 지키려면 한 프레임 예산이 16.6ms인데, 할당자가 여기서 몇 밀리초를 갉..

C#·C++ 모던 2026.06.21

Unreal Fest 2025 핵심: Mass Entity + ZoneGraph으로 오픈월드 NPC 수천 명을 ECS로 돌리기

오픈월드 게임에서 수백~수천 명의 NPC를 동시에 움직이게 하는 건 오랫동안 게임 개발자들의 숙제였다. 언리얼 엔진의 전통적인 접근은 각 NPC를 AActor 서브클래스로 만들고 UCharacterMovementComponent와 AIController를 붙이는 방식이다. NPC 20명이라면 무리가 없다. 2000명이 되면 CPU 틱 연산과 메모리 할당이 폭발적으로 늘어난다.Unreal Fest 2025에서 에픽게임즈는 Mass Entity와 ZoneGraph를 결합한 대규모 군중 시뮬레이션 사례를 여러 세션에 걸쳐 공개했다. The Matrix Awakens 데모에서 처음 모습을 드러낸 이 아키텍처는 UE 5.2 이후 프로덕션 레디 수준에 도달했고, 실제 상업 타이틀 도입 사례도 등장하고 있다.이 글에..

.cursor/rules 파일 하나로 Unity·Unreal AI 코드 제안 품질 올리기

Cursor를 써본 게임 개발자라면 한 번쯤 이런 경험이 있을 것이다. Update() 안에서 LINQ를 쓰라고 제안하거나, Unreal 프로젝트에서 raw pointer로 Actor를 관리하라고 안내하는 상황. 일반 C# · C++ 코드로는 맞는 말이지만 게임 개발 맥락에서는 성능 지옥 혹은 크래시의 입구다.Cursor는 기본적으로 프로젝트가 Unity인지, Unreal인지, 아니면 그냥 콘솔 앱인지 구분하지 않는다. 이 공백을 메워주는 것이 .cursor/rules 파일이다. 프로젝트 루트에 이 파일을 두면 Cursor의 AI 에이전트가 응답을 생성하기 전에 해당 규칙을 참조한다. 엔진 버전, 금지 패턴, 선호 패턴을 한 곳에 명시해두면 AI가 "이 프로젝트는 Unity 2023 URP 기반"이라는 ..