GameDevelop 36

Gemini CLI vs Codex CLI 간단 후기 / Unreal Engine 에서 Gemini CLI와 Codex CLI 사용 후기

게임 개발을 하며 AI를 적극적으로 도입해보고 있다.요즘은 거의 바이브 코딩에 가까울 정도로 많은 작업을 AI에게 맡기고 있다. 그러다 보니 어떤 AI가 나와 잘 맞는지, 실제 작업 효율은 어떤지 직접 체험해보고 싶어 여러 회사의 AI 도구를 하나씩 사용해보는 중이다.가장 유명한 것은 아무래도 Claude Code인 것 같지만, 어쩌다 보니 Claude Code가 아닌 다른 AI 도구들을 먼저 사용해보게 되었다. Claude Code도 추후에 사용해보고 후기를 추가해볼 예정이다.이번 글은 Google의 Gemini CLI와 OpenAI의 Codex CLI를 직접 사용해본 간단한 후기다.사용한 요금제이번에 사용해본 요금제는 다음과 같다.Gemini CLI: Google AI ProCodex CLI: Cha..

GameDevelop/AI 2026.05.15

UnrealEngine 5.4 - 몬스터가 버벅이는 현상 / 길찾기 버벅이는 현상 / 네비메쉬 간섭 문제

몬스터 이동 버벅임 현상 해결하기: 네비메쉬 간섭 문제 언리얼 엔진으로 몬스터 AI를 구현하고 테스트하던 중, 몬스터가 이동할 때 버벅이는 현상을 겪었다. 처음에는 뭔가가 충돌해서 몬스터를 밀치는건가 싶었는데 아니었다.범인은 네비메쉬(NavMesh)였다. 언리얼 엔진에서는 콜리전(Collision)이 있는 오브젝트가 월드에 스폰되면, 기본적으로 네비메쉬에 영향을 주어 AI가 그 위를 걷지 못하도록 장애물 처리를 한다. 결과적으로 몬스터는 발밑에 떨어지는 작은 골드나 시체들을 '피해야 할 벽'으로 인식하고 계속해서 경로를 재계산 하느라 버벅였던 것이다. 내 경우에는 '골드'가 범인이었는데, 몬스터 처치 시 골드가 팝콘처럼 튀어나오는 방식이다.이 때, 골드가 공중에 떠있을 때는 벽으로 인식하면서 피하려고 ..

UnrealEngine 5.4 - 랙돌 적용, 랙돌 적용 시 바닥 뚫음 현상

랙돌 적용몬스터가 죽을 때 랙돌 기능을 적용하여 타격감을 살리고자 한다.랙돌 적용 자체는 아주 간단했다. 적용하고 싶은 시점에 아래 코드를 호출하면 된다.GetMesh()->SetCollisionProfileName(TEXT("Ragdoll"));GetMesh()->SetSimulatePhysics(true)콜리전 프로필을 언리얼에서 제공하는 Ragdoll 프로필로 변경 후피직스를 켜주면 바로 흐느적거린다. 단, 아래와 같은 조건이 적용되어 있어야 동작을 할 것이다.스켈레탈 메시에 피직스 애셋이 적용되어 있어야 한다.피직스 애셋의 PhysicsType이 Kinematic이 아니어야 한다. 잘 적용되어있다면 피직스 애셋에서 시뮬레이트를 눌러 잘 흐느적거리는지 확인해보자. 랙돌 적용 시 바닥 뚫음 현상나는 ..

UnrealEngine 5.4 - 마우스로 뷰포트를 클릭해야 키 입력 이벤트가 발생 / 뷰포트 포커스 / 키 입력 이벤트 발생 안함

언리얼엔진으로 마우스 이동 및 WASD 이동을 구현하고 있는데,WASD 이동을 하려면 Play후에 뷰포트를 한 번 클릭해줘야 키 입력 이벤트가 발생을 하는 현상이 있었다. EnhancedInputComponent->BindAction(SetWASDMoveAction, ETriggerEvent::Triggered, this, &AMyHackSlashPlayerController::OnSetWASDMove);사용했던 키 입력 이벤트. 처음에는 코드 문제인가 했는데 그건 아니고에디터에서 플레이할 때에만 발생하는 문제이다. 이걸 해결하려면 편집 - 에디터 개인설정 - Play in Editor - 게임이 마우스 컨트롤 획득 을 켜주면 된다. 다만 이럴 경우 마우스가 뷰포트를 빠져나오려면 Shift + F1 ..

언리얼엔진의 애셋매니저(AssetManager)

언리얼엔진의 애셋매니저에 대해 정리. 언리얼 엔진의 AssetManager는 프로젝트 내의 애셋을 탐색, 로드, 관리하는 싱글톤 오브젝트이다.특히 런타임 중에 필요한 시점에 애셋을 동적으로 로드(비동기 로드)하는 데 핵심적인 역할을 한다. 아래와 같은 역할을 한다. 1. 애셋 검색 및 식별프로젝트 설정에 등록된 Primary Asset 들을 자동으로 검색하고, 이를 PrimaryAssetID를 통해 고유하게 식별한다. 2. 비동기 로딩FStreamableManager를 내장하고 있어, 비동기 로딩(Async Loading)을 통해 애셋을 백그라운드에서 로드할 수 있도록 한다. 3. 메모리 관리어떤 애셋이 로드되어 있는지 추적 및 더 이상 필요하지 않은 애셋을 메모리에서 해제하는 시점을 제어할 수 있다. ..

퀵 정렬 (Quick Sort)

1. 한 줄 정의퀵 정렬은 기준 원소(Pivot)를 기준으로 분할을 반복하는 분할 정복 정렬 알고리즘이다.2. 핵심 아이디어기준값(Pivot)을 하나 선택Pivot보다 작은 값은 왼쪽Pivot보다 큰 값은 오른쪽좌·우 부분 배열에 대해 재귀 반복3. 동작 과정 예시예시 배열[8, 3, 1, 7, 0, 10, 2]Pivot = 7[3, 1, 0, 2] 7 [8, 10]이후 각 부분 배열에 대해 동일한 과정 반복4. 분할(Partition) 과정이 핵심대표적인 Partition 방식1) Lomuto Partition (로무토 분할)마지막 원소를 Pivot구현 간단성능은 상대적으로 떨어짐2) Hoare Partition (호어 분할)양쪽에서 포인터 이동교환 횟수 적음실무에서 더 자주 사용5. 시간 복잡도평균O..

GameDevelop/Notes 2026.01.26

함수 포인터, 함수 객체, 람다

한 줄 요약함수 포인터는 주소,함수 객체는 객체,람다는 익명 함수 객체다. 함수 포인터 (Function Pointer)함수의 주소를 저장하는 포인터int Add(int a, int b) { return a + b;}int (*FuncPtr)(int, int) = Add;int result = FuncPtr(1, 2); 함수의 이름이 곧 주소이기 때문에, 함수의 이름을 포인터로 저장하거나 매개변수로 넘겨줄 때 함수 포인터를 사용하게 된다. 간편하지만 상태(누적값, 이전 호출 결과 등)를 가질 수 없기 때문에 주로 전역 함수나 static 함수가 사용된다. STL 알고리즘은 Callable을 요구하며, 함수 포인터도 사용할 수 있지만함수 객체나 람다가 더 일반적이다. STL에서 조건자로서 사용할 수..

GameDevelop/Notes 2026.01.20

렌더링 파이프라인

렌더링 파이프라인(Rendering Pipeline)1. 한 줄 정의렌더링 파이프라인은3D 공간의 정점 데이터를최종적으로 화면의 픽셀로 변환하는 전체 과정이다. 2. 전체 흐름 한눈에 보기로컬 스페이스 ↓월드 스페이스 ↓뷰 스페이스 ↓백페이스 컬링 ↓조명 ↓클리핑 ↓투영 ↓뷰포트 변환 ↓레스터라이즈 로컬 스페이스 (Local / Model Space)물체를 기준으로 한 좌표메시가 자기 자신을 원점으로 가짐월드 스페이스 (World Space)월드를 기준으로 한 좌표모든 오브젝트가 공통 기준 공간에 위치뷰 스페이스 (View / Camera Space)카메라 기준 좌표계카메라가 원점가상카메라를 기준으로 물체들을 보여주는데, 이 가상카메라에 회전값이 있거나 하면 투영할 때 등 번..

GameDevelop/Notes 2026.01.20

UBT (Unreal Build Tool)

UBT (Unreal Build Tool)1. 한 줄 정의UBT는 Unreal Engine 프로젝트의 빌드 과정을 총괄하는빌드 시스템이자 자동화 도구다.2. UBT는 왜 필요한가?Unreal은 다음과 같은 특성이 있다.멀티 플랫폼 (Windows, Console, Mobile)수많은 모듈 구조엔진 + 게임 코드 혼합 빌드에디터 / 클라이언트 / 서버 분리 빌드👉 일반 C++ 빌드 시스템으로는 관리가 어렵다.3. UBT의 핵심 역할UBT는 다음을 담당한다.전체 빌드 파이프라인 관리UHT 실행 제어C++ 컴파일러 호출링크 단계 관리플랫폼별 설정 적용4. UBT와 UHT의 관계[ UBT ] ├─ UHT 실행 ├─ C++ 컴파일 ├─ 링크 └─ 패키징 연계👉 UHT는 UBT가 호출한다👉 UH..

UHT (Unreal Header Tool)

UHT (Unreal Header Tool)1. 한 줄 정의UHT는 Unreal Engine의 리플렉션 시스템을 위해C++ 헤더를 분석하고 자동 코드를 생성하는 도구다. 2. UHT는 왜 필요한가?C++ 자체에는 다음 기능이 없다.런타임 타입 정보 확장에디터 노출 메타데이터Garbage Collection 추적Blueprint 연동👉 Unreal은 이를 코드 생성 방식으로 해결한다. 3. UHT의 핵심 역할UHT는 다음을 담당한다.UCLASS, USTRUCT, UENUM, UFUNCTION, UPROPERTY메타데이터 파싱.generated.h 파일 생성리플렉션 데이터 구축4. 동작 흐름 (빌드 파이프라인)[ C++ Header (.h) ] ↓[ Unreal Header Tool ] ..