인기 글

1. [Unreal 5] 언리얼 엔진의 렌더링 파이프라인 (Rendering Pipeline)
·
Computer Graphics
서론 게임에서 무언가가 모니터 화면에 보여지고 있다는 것(렌더링)은 게임 엔진이 렌더링 파이프라인 이라는 정해진 과정을 열심히 수행하고 있다는 증거이다. 게임 엔진은 일반적으로 렌더링 파이프라인 이라는 것을 수행해 이미지 또는 프레임을 화면에 렌더링 한다. 본 게시글은 Unreal Engine에서 이 렌더링 파이프라인이 어떤 방식으로 이루어지고 어떻게 플레이어의 화면에 무언가를 렌더링 할 수 있는지에 대해 다루도록 하겠다.Rendering Pipeline? 렌더링 파이프라인의 과정에 대해 설명한 글은 정말 많다. 하지만 그 글들을 보면 과정이 조금씩 다르거나 똑같은 과정이라도 지칭하는 이름이 다르다. 렌더링 파이프라인은 렌더링의 목적에 따라 여러가지 종류의 렌더링 파이프라인이 존재하고, 설명하는 주체가 ..
[Unreal 5] Unreal Multi-User Editing 베타
·
Unreal 5
소규모로 레벨 디자인 팀플을 하게 되었다.개인적으로 해도 되지만 다같이 협업하는 게 더 좋을 것 같아서 협업 툴을 알아보던 중, 여러 명의 사용자가 하나의 라이브 세션에서 작업한 내용을 실시간으로 동기화하며 동시에 작업할 수 있는 플러그인을 발견했다.Unreal Multi-User Editing 가이드Multi-User Editing 사전 준비 사항모두 같은 언리얼 버전을 사용해야 한다.모두 같은 LAN이나 VPN에 접속해야 한다.같은 사본 프로젝트를 팀원들이 모두 가지고 있어야 한다.팀원들과 LAN 연결이 불가능한 상황이었기 때문에 Hamachi를 통해 가상 네트워크를 만들어 해결했다.기본 프로젝트를 수정하는 방식으로 진행했기에 UnrealLearningKit 프로젝트를 새로 생성해서 사용했다.단, 같..
[Unreal 5/C++] 회전 발판과 움직이는 장애물 퍼즐 스테이지
·
Study
서론회전하는 발판 & 움직이는 발판을 적절하게 조합해서 특정 시작점에서 도착지점까지 랜덤으로 맵을 생성하는 것을 구현해보았다.우선 중요한건 시작점에서 도착지점까지 4방향으로 랜덤한 범위만큼 왕복 이동하는 발판과 정지해있는 발판이 반드시 만나야하며 발판끼리 겹치는 경우도 없어야 한다. DynamicActor 클래스 구현우선 발판들의 공통적인 속성을 가지고 있는 Actor를 상속받는 부모 클래스인 DynamicActor를 만들어 준다. DynamicActor.h#pragma once#include "CoreMinimal.h"#include "GameFramework/Actor.h"#include "DynamicActor.generated.h"UCLASS()class ASSIGNMENT_API ADynamic..
2. [Unreal 5 / C++] 발사체 구현 하기
·
FPS Shooting
발사체 액터 클래스 추가이번 시간에는 슈팅 시 생성될 발사체를 구현해보자. 먼저 액터를 상속받는 Projectile 클래스를 추가한다. Projectile 클래스 헤더 구성발사체의 주요 구성 요소는 다음과 같다:SphereComponent: 발사체의 충돌 처리.ProjectileMovementComponent: 발사체의 이동 처리.StaticMeshComponent: 발사체의 모습 정의.ParticleSystem: 발사체 충돌 시 발생할 이펙트 정의.#pragma once#include "CoreMinimal.h"#include "GameFramework/Actor.h"#include "Projectile.generated.h"UCLASS()class PROJECT_4_API AProjectile : p..
[Unreal 5] C++ 클래스가 언리얼 에디터에서 보이지 않거나 삭제하고 싶을 때
·
Troubleshooting
언리얼 에디터에서는 C++ 클래스를 직접 삭제할 수 없기 때문에, 사용하지 않는 C++ 클래스를 삭제하려면 다음과 같은 과정을 따라야 한다.C++ 소스 삭제하고 싶을 때언리얼 에디터 종료Visual Studio 솔루션 탐색기의 프로젝트에서 해당 .cpp와 .h 파일 제거파일 탐색기에서 프로젝트 폴더 → Source 폴더 내의 Public에 존재하는 .h 파일과 Private에 존재하는 .cpp 파일 삭제Visual Studio에서 솔루션 우클릭 → 솔루션 다시 빌드빌드가 완료되면 언리얼 에디터 실행C++로 만든 클래스가 보이지 않을 때언리얼 에디터 종료Visual Studio에서 솔루션 우클릭 → 솔루션 다시 빌드빌드가 완료되면 언리얼 에디터 실행이 과정을 통해 삭제된 C++ 클래스 문제를 해결하거나, ..

최신 글

[Unreal 5] 언리얼 엔진의 가비지 컬렉션(Garbage Collection, GC)
·
Study
서론필자는 C++을 주로 사용해 개발해왔기에, 가비지 컬렉션(Garbage Collection)은 ‘약자들이나 쓰는 기능’이라며 멸시해왔다. 하지만 언리얼 엔진을 사용할 때는, 언리얼의 게임 프레임워크 클래스들을 반드시 사용해야 하며, 이 수많은 클래스들의 생명 주기를 정확히 알지 않는 이상, 직접적인 메모리 관리는 사실상 불가능하다.따라서 언리얼에서는 더 이상 참조되지 않거나 명시적으로 소멸 예약된 UObject를 주기적으로 정리하기 위해, 자체적인 가비지 컬렉션 시스템을 사용한다.Garbage Collection제목에 '언리얼 엔진의 가비지 컬렉션'이라 적었지만, 사실 언리얼만의 독특한 방식이 있는 것은 아니다. 기본적으로는 일반적인 가비지 컬렉션 원리를 따른다.다만 차이점이 있다면, UObject를..
[CS] 아스키코드와 유니코드, EUC-KR과 UTF-8 차이
·
Computer Science
아스키코드(ASCII)1960년대 미국에서 만들어진 문자 인코딩 표준.7비트(1바이트 미만)로 총 128개의 문자만 표현 가능(영문 대소문자, 숫자, 특수문자, 제어문자 등).영어 및 일부 특수문자만 지원하며, 한글이나 기타 비영어권 문자는 표현 불가.유니코드(Unicode)전 세계 모든 언어의 문자를 일관되게 표현하기 위한 국제 표준 문자 집합.각 문자에 고유한 코드 포인트를 부여(U+XXXX 형식).16~32비트로 구성되어 14만 자 이상의 문자와 기호, 이모지까지 지원.아스키코드와 호환(초기 128문자는 동일).구분표현 가능 문자 수비트 수특징ASCII1287비트영어권 중심, 한글 불가Unicode143,859+16~32비트다국어 지원, 코드포인트 부여EUC-KR과 UTF-8의 차이구분지원 문자 범..
[CS] 프로세스(Process)와 스레드(Thread)
·
Computer Science
프로세스(Process)와 스레드(Thread)프로세스(Process)정의: 운영체제에서 실행 중인 프로그램의 인스턴스를 뜻한다. 코드, 데이터, 시스템 자원(메모리 영역, 파일 디스크립터 등)을 포함하는 독립적인 실행 단위다.특징:독립된 메모리 공간을 가지므로, 서로 다른 프로세스 간 메모리 침범이 불가능해 안정성이 높다.문맥 전환(Context Switch) 시 커널이 레지스터, 메모리 맵 등 전체 상태를 저장하고 복원해야 하므로 오버헤드가 크다.프로세스 간 통신(IPC)이 필요할 때는 파이프, 소켓, 공유 메모리 등을 사용해야 하며, 구현이 비교적 복잡하다.스레드(Thread)정의: 프로세스 내에서 작업 흐름의 단위를 의미하며, 같은 프로세스 자원을 공유하는 실행 단위다.특징:메모리 공간(코드, 데..
[CS] 캐시 메모리(Cache Memory)
·
Computer Science
서론컴퓨터 시스템의 성능을 높이기 위해 다양한 방법이 연구되고 있으며, 그중 하나는 메모리 계층 구조를 효율적으로 구성하는 것이다. 특히 CPU와 메인 메모리 사이의 속도 차이를 완화하는 데 중요한 역할을 하는 구성 요소가 바로 캐시 메모리(Cache Memory)다. 캐시 메모리는 자주 사용하는 데이터를 빠르게 접근할 수 있도록 도와 전체 시스템의 처리 속도를 크게 향상시킨다. 그러나 캐시에 원하는 데이터가 없을 때 발생하는 캐시 미스(Cache Miss)는 오히려 성능 저하로 이어질 수 있다. 이 글에서는 캐시 메모리의 역할과 구조를 이해하고, 캐시 미스가 시스템 성능에 미치는 영향을 살펴보자.캐시 메모리캐시 메모리(SRAM)는 집적도가 낮아 많은 데이터를 담을 수는 없지만(수 MB 단위), 속도가 ..
[C++] 백준/Gold/4179. 불!
·
Algorithm
불 ! (백준 4179번)문제 개요문제 설명:미로에서 지훈이(J)가 불(F)로부터 탈출하는 최소 시간을 구하는 문제미로는 벽(#), 빈 공간(.), 불(F), 지훈이(J)로 구성됨불은 매 초마다 상하좌우 인접한 빈 공간으로 확산매 초마다 상하좌우로 한 칸 이동 가능하며, 벽이나 불이 있는 곳으로 이동 불가미로 밖으로 나가면 탈출 성공탈출이 불가능하면 "IMPOSSIBLE" 출력핵심 포인트:불의 확산과 J의 이동을 시간 단위로 동기화하며 시뮬레이션 해야 함BFS를 이용하여 J의 이동과 불의 확산을 순차적으로 처리접근 방법1. 불 확산과 지훈이 이동을 동시에 처리하는 BFS불의 현재 위치를 set에 저장해 매 시간마다 인접한 빈 공간으로 확산J의 위치를 queue에 저장해 BFS 탐색 진행J의 이동 시간이 ..