본문 바로가기

분류 전체보기 (43)

언리얼 공부노트 : Fab과 월드 파티션 활용법

언리얼 공부노트 : Fab과 월드 파티션 활용법

1. 언리얼 팹과 통합 콘텐츠 관리언리얼 엔진 5에서는 팹이라는 통합 마켓플레이스를 통해 에셋을 관리한다. 팹은 기존의 퀵셀 메가스캔과 스케치팹 그리고 언리얼 엔진 마켓플레이스를 하나로 통합한 서비스이다. 개발자는 엔진 내부의 팹 창을 열어 수많은 고품질 3D 모델과 재질을 프로젝트로 즉시 가져올 수 있다. 팹에서 제공하는 메가스캔 에셋들은 현실의 오브젝트를 정밀하게 스캔한 데이터이므로 실사 수준의 배경을 구축하는 데 핵심적인 역할을 수행한다. 2. 오픈 월드 시스템과 월드 파티션대규모 레벨 디자인을 위해 월드 파티션 기능을 활성화한다. 이는 거대한 맵을 그리드 단위의 셀로 나누어 관리하는 시스템이다. 플레이어의 위치에 따라 필요한 구역만 동적으로 로드하므로 메모리 점유율을 효과적으로 제어할 수 있다. ..

2026. 4. 23.
언리얼 공부노트 : C++ 기반 탱크 슈팅 게임 시스템 설계 및 구현

언리얼 공부노트 : C++ 기반 탱크 슈팅 게임 시스템 설계 및 구현

1. 발사체 클래스 구조 및 생성 로직1.1 발사체 기본 클래스 구축발사체 시스템을 구현하기 위해 Projectile C++ 클래스를 생성한다. 발사체는 별도의 사용자 입력 처리가 필요하지 않으므로, 폰(Pawn)이 아닌 기본 액터(Actor) 클래스를 상속받아 구현하는 것이 적합하다. 이후 블루프린트 에디터에서 직접 편집할 수 있도록 스태틱 메시 변수를 선언하여 객체의 외형을 설정한다. private: UPROPERTY(EditDefaultsOnly) UStaticMeshComponent* ProjectileMesh;생성자 내부에서 기본 하위 객체를 생성한 뒤 이를 루트 컴포넌트로 지정한다. 발사체는 매 프레임 틱(Tick) 연산이 필요하지 않으므로 해당 속성을 비활성화하여 성능을 최적화한다..

2026. 4. 15.
[백준] 2239 - 스도쿠

[백준] 2239 - 스도쿠

2239. 스도쿠 풀이난이도: Gold IV문제 주소: https://www.acmicpc.net/problem/2239문제 풀이이 문제는 9x9 보드에서 빈칸(0)으로 주어진 부분을 1부터 9까지의 숫자로 규칙에 맞게 채워넣어야 하는 문제이다.일단 1부터 9까지 하나하나 다 넣어보는 백트래킹 방식을 사용해야지라고는 마음 먹었는데문제는 0에 지금 이숫자를 넣을수 있는지 를 체크하는거보다 일단 다 채우고 수도쿠가 성립하는지 체크하는 방식으로 갔더니 코드가 끝나질 않아서 풀이 방식을 지금 이 칸에 이 숫자를 넣어도 되는지 체크하는 방식으로 갔다 bool solve(int seq){ if (seq == 81) return true; int r = seq / 9; int c = seq % 9; ..

2026. 4. 14.
[백준] 5525 - IOIOI

[백준] 5525 - IOIOI

5525. IOIOI 풀이난이도: Silver I문제 주소: https://www.acmicpc.net/problem/5525문제 풀이이 문제는 I와 O로만 이루어진 문자열 S와 정수 N이 주어졌을 때, S안에 PN이 몇 군데 포함되어 있는지 구하는 프로그램을 작성해야 하는 문제이다.문제를 처음 봤을때는 생각보다 어려워 보여서 풀이를 고민하는데 시간이 걸렸다뭔가 DP를 써야할거 같이 생긴거 같아서 이쪽을 고민해보다가 바로 아닌거같아서 넘기고 다음에는 n에 해당하는 길이의 문자열이 존재하는지 문자열 전체를 순회하는 식으로 가야할까 했지만 시간복잡도 때문에 넘기고 떠올린게 투포인터였다 while (ed = m) break; if (str[ed + 1] == 'O' && str[ed + 2] ..

2026. 4. 12.
[백준] 12015 - 가장 긴 증가하는 부분 수열2

[백준] 12015 - 가장 긴 증가하는 부분 수열2

12015. 가장 긴 증가하는 부분 수열 2 풀이난이도: Gold II문제 주소: https://www.acmicpc.net/problem/12015문제 풀이이 문제는 수열이 주어졌을 때, 가장 긴 증가하는 부분 수열(LIS)의 길이를 구해야 하는 문제이다.처음에는 이전 LIS문제처럼 이중 반복문을 사용한 동적 계획법(DP) 을 생각했지만 배열의 크기가 최대 1,000,000까지 주어지기 때문에 일반적인 O(N^2) 방식으로 코드를 작성하면 안돼겠다 싶었다대충 배열 크기상 이분탐색을 사용해야겠다고는 싶었는데 이분탐색을 어떻게 활용해야할지 처음에는 도저히 감이 잡히지 않았다한시간쯤 고민이 넘어가닌까 이건 힌트가 필요하다 싶어서 ai를 이용해 힌트만을 받아봤다그렇게 얻은 힌트는 최장 길이 수열의 원소는 찾을..

2026. 4. 8.
언리얼 공부노트 : 탱크 이동 및 포탑 회전 시스템 구현

언리얼 공부노트 : 탱크 이동 및 포탑 회전 시스템 구현

1. 언리얼 엔진 이동 시스템의 이해1.1 좌표계와 오프셋의 기초언리얼 엔진에서 액터를 정밀하게 제어하려면 로컬 스페이스와 월드 스페이스의 차이를 명확히 이해해야 하며 에디터 뷰포트에서 객체를 선택할 때 나타나는 기즈모의 화살표 색상은 각각의 축 방향을 상징한다모든 액터는 월드 전체를 기준으로 하는 절대 좌표와는 별개로 자신만의 고유한 로컬 좌표계를 독립적으로 소유하므로 객체를 이동시킬 때는 특정 축을 따라 위치를 옮기는 로컬 오프셋 방식을 주로 사용한다구분 특징월드 스페이스월드 전체를 기준으로 고정되어 있는 절대적인 좌표계로컬 스페이스개별 액터가 자신의 방향을 기준으로 소유하는 고유 좌표계 1.2 프레임 독립적인 이동 구현컴퓨터 성능에 따라 프레임 속도가 매순간 달라지면 액터의 이동 속도가 불규칙해지는..

2026. 4. 4.
언리얼 공부노트 : 트러플 슈팅

언리얼 공부노트 : 트러플 슈팅

1. BP 컴포넌트 디테일 패널 공백 오류현상: 블루프린트 에디터에서 특정 컴포넌트를 선택했을 때 디테일 패널에 아무런 속성도 나타나지 않음.클래스 세팅에 들어가 블루프린트의 문제가 생긴 클래스의 상위 클래스(Pawn 등)로 바꿨다가 다시 원래 클래스(Tank)로 되돌리는 'Reparenting' 수행.2. Assertion Failed: bIsReallyAChild (크래시)현상: 에디터 실행 중 또는 상속 관계 변경 시 bIsReallyAChild 오류와 함께 엔진 종료.원인: 부모 클래스를 변경하거나 구조적 변화를 준 이후 라이브 코딩 기능을 사용하자 크래시가 발생해결 방법:에디터를 저장한 후 끈 상태에서 IDE를 통해 클린 빌드 수행.3. 라이브 코딩 빌드 거부현상: Unable to build ..

2026. 4. 4.
[백준] 11404 - 플로이드

[백준] 11404 - 플로이드

11404. 플로이드 풀이난이도: Gold IV문제 주소: https://www.acmicpc.net/problem/11404문제 풀이이 문제는 제목에서도 나와있듯이 플로이드 알고리즘을 연습해 보기위한 문제이다for (int i = 0; i > a >> b >> c; city[a][b] = min(city[a][b], c);}for (int i = 1 ; i 처음에는 2차원 배열 city의 모든 값을 INT_MAX로 초기화했다. 버스 노선의 정보를 입력받을 때 주의해야 할 점은 시작 도시와 도착 도시를 연결하는 노선이 하나가 아닐 수 있다는 것이다. 따라서 중복되는 노선이 주어질 경우 min 함수를 사용하여 더 적은 비용만 배열에 저장되도록 처리하고 자기 자신으로 가는 비용은 모두 0으로 설정해 두..

2026. 4. 3.
언리얼 공부노트 : 향상된 입력 시스템(Enhanced Input)의 이해

언리얼 공부노트 : 향상된 입력 시스템(Enhanced Input)의 이해

1. 향상된 입력 시스템과거 언리얼 엔진에서는 Project Settings의 Engine - Input 탭에서 Axis Mapping과 Action Mapping을 통해 입력을 설정하고 이후 SetupPlayerInputComponent 함수를 통해 상호작용을 코딩하는 방식을 사용했다 듣고있는 강의에서는 5.0 버전인지 이 방식을 사용하고 있었지만 앞으로 5.6 혹은 5.7로 개발을 해야하기에 이 향상된 시스템을 따로 공부해서 적용 시키는 과정이 생각보다 오래걸렸다 2. 향상된 입력 시스템 핵심 개념향상된 입력 시스템은 크게 Input Action, Input Mapping Context, Triggers, Modifiers 네 가지 핵심 요소로 구성된다.2.1. IA(Input Action)특정 ..

2026. 4. 2.
언리얼 공부노트: BasePawn 설계와 탱크 컴포넌트 구조 잡기

언리얼 공부노트: BasePawn 설계와 탱크 컴포넌트 구조 잡기

1. 기본 폰 클래스 설계1.1. 부모 클래스 선정액터 이상의 기능 필요: 객체를 월드에 배치하고 메시로 시각적 표현을 담기 위해서는 단순 액터보다 상위 클래스가 필요합니다.폰(Pawn) 클래스 활용: 플레이어의 입력에 따라 움직여야 하므로 컨트롤러가 빙의할 수 있는 폰 클래스가 가장 적합합니다.캐릭터 클래스 제외: 캐릭터 클래스는 이족보행에 특화된 캐릭터 무브먼트 컴포넌트를 포함하고 있어, 탱크 구현에는 불필요한 기능이 많습니다.1.2. BasePawn 베이스 클래스 생성공통 기능 통합: 탱크와 포탑의 공통 기능을 하나로 묶어줄 부모 역할의 BasePawn 클래스를 생성합니다.기본 뼈대 구축: 이 클래스 내부에서 형태, 충돌, 발사 로직 등 두 개체가 공유하는 핵심 기능을 코딩합니다. 2. 컴포넌트 ..

2026. 4. 1.
[백준] 9663 N-Queen

[백준] 9663 N-Queen

9663. N-Queen 풀이난이도: Gold IV문제 주소: https://www.acmicpc.net/problem/9663문제 풀이이 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. 1 이상 15 미만의 자연수 N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성해야 한다.처음에는 2차원 배열과 재귀 함수를 활용하여 모든 방향을 탐색하는 방식으로 코드를 작성했다. bool check(int r, int c){ bool check = true; for (int i = 1; i N || y N) continue; if (chess[y][x] == 1) return false; } } return..

2026. 4. 1.
[백준] 10814 - 나이순 정렬

[백준] 10814 - 나이순 정렬

10814. 나이순 정렬 풀이난이도: Silver V문제 주소: https://www.acmicpc.net/problem/10814문제 풀이이 문제는 회원들의 정보를 나이 오름차순으로 나이가 같으면 가입한 순서대로 정렬하는 문제다.문제에서 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서를 만족시키기 위해 입력된 데이터의 상대적 순서를 유지하는 Stable Sort가 필요하다.그리고 바로 정렬에 넣으면 나이순 정렬이 완료 된 후 이름의 사전 순 정렬이 발생하기 때문에 사전 순 정렬이 발생하지 않도록 나이만으로 정렬하게 하는 비교함수를 작성했다 bool compair(pair x, pair y){ return x.first stable sort는 나이가 같은 요소들의 경우 입력된 순서 를 정렬 후에..

2026. 4. 1.
✏️ ⚙️