구현하며 쌓은 경험을
성장의 기반으로 이어갑니다.
꾸준한 기록, 매일 나아가는 성장
ENGINEERING NOTES / 153
[Unreal Engine] Rendering DeepDive 2
Unreal Engine의 빈 레벨에서도 프레임을 캡처하면 수백 개에서 수천 개에 이르는 이벤트가 기록된다.
[Unreal Engine] Rendering DeepDive 1
Unreal Engine은 높은 품질의 그래픽을 비교적 적은 설정만으로 구현할 수 있도록 다양한 렌더링 기능을 제공한다.
[Unreal Engine] Scientific Notation
Scientific Notation 키우기 게임이나 방치형 게임에서는 재화, 공격력, 경험치 등의 수치가 기하급수적으로 증가하는 경우가 많다.
[Unreal Engine] Networking Insight 사용법
언리얼 엔진에서 RPC, Replication과 같은 네트워크 동작을 프로파일링하려면 Networking Insights를 사용해야 한다.
[Unreal Engine] Compute Shader Basic 4
참고 자료Resource binding overview - Microsoft이전까지 GPU의 병렬 실행 구조와 메모리 계층 구조에 대해 알아보았다.그렇다면 이제 실제 Compute Shader에서는 GPU 메모리에 저장된 데이터를 어떤 방식으로 읽고 쓰는지 이해할 필요
[Unreal Engine] Compute Shader Basic 3
참고 자료Understanding C++ Compute Shader Dispatch and RDG in Unreal Engine - Ghislain GirardotCompute Shader Overview - MicrosoftGPU Performance Backgrou
[Unreal Engine] Compute Shader Basic 2
참고 자료Understanding C++ Compute Shader Dispatch and RDG in Unreal Engine - Ghislain GirardotCompute Shader Overview - Microsoft이전 글에서는 CPU가 Dispatch()를
기술 기록 읽기→[Unreal Engine] Compute Shader Basic 1
참고 자료 Understanding C++ Compute Shader Dispatch and RDG in Unreal Engine - Ghislain Girardot
[Unreal Engine] Network DeepDive 3 - Channel
이전 단계에서 UNetConnection이 네트워크 패킷을 송수신하는 과정을 살펴보았다.하지만 실제로 리플리케이션 될 게임 데이터는 Connection이 직접 처리하지 않는다. 이러한 데이터는 Channel이라는 단위를 통해 분리되고 관리된다.이 과정에서 Connect
[Unreal Engine] Network DeepDive 2 - NetConnection
1. NetConnection 이전 단계에서는 UNetDriver가 리플리케이션 시스템을 통해 송신할 데이터를 구성하고, 네트워크 전송을 위한 준비를 수행하는 과정을 살펴보았다.
[Unreal Engine] NetWork DeepDive 1 - NetDriver
0. How to Replication System Initialize 언리얼엔진에서 멀티플레이에서 서버와 클라이언트 간 통신을 할 때, 리플리케이션이 사용된다. 리플리케이션은 단순히 데이터를 복사하는 기능이 아니라, 서버에서 관리하는 게임 상태를 여러 클라이언트에
[Unreal Engine] Octachedral Impostor 2
이전 포스팅에서는 물체를 Octahedral 좌표계로 변환하고, 각 방향에서 렌더링한 결과를 하나의 Atlas로 구성했다.이제 현재 카메라 방향에 맞는 Atlas의 프레임을 선택하도록 만들면 Impostor가 된다.
[Unreal Engine] Octachedral Impostor 1
1. Octachedral Impostor 기존 Impostor는 여러 방향에서 캡처된 이미지를 기반으로 비교적 자연스러운 결과를 만들어내지만, 근본적으로 방향 샘플링 방식을 어떻게 하냐에 따라 결과가 달라진다.
Game Develpment AX에 대하여
최근 AI의 발전 속도는 거의 “하루 단위”라고 느껴질 정도다.새로운 모델과 서비스가 끊임없이 등장하고, 생산성은 기존 어떤 개발 도구보다도 빠르게 향상되고 있다.이 변화 속에서 개발자들은 프롬프트 엔지니어링, 바이브 코딩, 하네스 엔지니어링, AI 오케스트레이션 같은
[Unreal Engine] Billboard
1. Billboard의 등장 이러한 문제를 최소화하면서 더 자연스러운 결과를 얻기 위해, 단순한 메쉬 감소 방식이 아닌 다양한 기법들이 등장하게 되었고, 여기서 한 가지 고민이 생긴다. 멀리 있는 오브젝트는 성능을 위해 디테일을 줄여야 하지만, 항상 그래도 되는
[Unreal Engine] LOD (Level of Detail)
요즘 대부분의 RPG 게임을 보면, 인게임 연출의 퀄리티가 매우 높아졌다는 것을 체감할 수 있다.특히 카메라가 움직일 때도 큰 위화감 없이, 정교하게 구성된 거대한 맵이 웅장하고 자연스럽게 표현된다.이런 장면을 보고 있으면 자연스럽게 한 가지 의문이 생긴다."이걸 전부
[Unreal Engine] Data-Driven Design 시리즈를 마무리하며.
Unreal Engine에서 데이터를 기반으로 프로젝트를 설계하고 개발하는 방식은, 이미 익숙한 개발자에게는 비교적 자연스러운 개념일 수 있다.하지만 막상 학습하려고 하면, Unreal Engine에서 데이터를 어떤 관점으로 바라보고 어떻게 구조화해야 하는지를 체계적으
[Unreal Engine] Data-Driven Architecture
이번에는 Unreal Engine에서 Data-Driven Architecture를 가장 잘 보여주는 사례인 Epic Games에서 제공하는 샘플 프로젝트인 Lyra Starter Game을 살펴보겠다.Lyra에서 “Experience”는 일반적인 GameMode에 해
[Unreal Engine] Data Validation
Data Validation Unreal Engine Data Validation Plugin
[Unreal Engine] Data Save & Load
1. Data Save 게임을 플레이하는 동안 캐릭터의 체력, 위치, 보유 아이템과 같은 값들은 실시간으로 계속 변화한다. 이러한 데이터는 모두 Data Instance에 해당하며, 게임이 종료되면 함께 사라지는 휘발성 데이터이다. 따라서 게임을 종료한 이후에도 동
[Unreal Engine] Data Definition & Instance
1. Static Data & Runtime Data 게임에서 데이터를 다루다 보면, 실행 중에도 변하지 않는 데이터와 실행 중 지속적으로 변화하는 데이터를 명확히 구분할 필요가 있다. 일반적으로 프로그래밍에서 Static 데이터는 런타임 동안 값이 변하지 않거나
[Unreal Engine] Async Loading
1. Async Loading 1-1. 동기 로딩(Synchronous Loading) vs 비동기 로딩 1-2. Async Loading 사용 예시 1-2-1. FStreamableManager 1-2-2. Asset Manager
[Unreal Engine] Soft Reference
1. Soft Reference 1-1. Hard Reference vs Soft Reference 1-2. Unreal Engine에서의 Soft Reference 사용 예시 1-3. Soft Object Reference / Soft Class Referenc
[Unreal Engine] Texture Atlas 기반 UI 구성
Texture Atlas는 여러 개의 작은 텍스처 이미지를 하나의 큰 텍스처(Texture)에 모아서 사용하는 방식이다.예시를 들면, UI 아이콘, 버튼 이미지, 스프라이트 등을 하나의 이미지 파일 안에 구성해두는 형식이다.게임에서는 UI 요소나 2D 그래픽 리소스가
[Unreal Engine] StaticMesh → DynamicMeshComponent 변환 시 발생한 패키징 이슈
기존에는 Static Mesh의 데이터를 읽어 DynamicMeshComponent로 변환하기 위해 MeshDescription을 이용하여 버텍스와 트라이앵글 정보를 복사하는 방식을 사용했다.하지만 패키징된 빌드에서 오류가 발생했다.문제는 Static Mesh의 데이터
[Unreal Engine] Asset Registry & Asset Manager
게임 프로젝트에는 수많은 Asset이 존재한다.예를 들어 하나의 게임에는 다음과 같은 리소스들이 포함된다.스켈레탈 메시애니메이션텍스처사운드UI데이터 에셋블루프린트작은 프로젝트에서는 큰 문제가 되지 않는다. 하지만 만약 대규모의 AAA급 RPG 게임을 만든다고 가정하면
[Algorithm] PMD Explorers of sky map generation 번역본
Reference : PMD Explorers of sky map generation by Frostbyte0x70
[Unreal Engine] Data Asset
1. Data Asset Data Asset은 Unreal Engine에서 게임 데이터를 Asset 형태로 저장하고 관리하기 위한 데이터 컨테이너이다. 게임에서 사용하는 다양한 설정 값이나 데이터를 코드와 분리하여 독립적인 Asset 파일(.uasset) 로 관리할
[Unreal Engine] Data Table
1. Data Table 우리가 일반적으로 데이터를 관리할 때는 정형적인 구조를 가진 데이터 형식을 사용한다. 예를 들어 엑셀이나 데이터베이스에서 흔히 볼 수 있는 다음과 같은 형태이다. 이처럼 행(Row)과 열(Column)로 구성된 구조화된 데이터 형태를 데이터
[Unreal Engine] Custom LOD
지난번에 구현한 슬라임을 Unreal Insights를 통해 프로파일링한 결과, 현재 시뮬레이션은 CPU에서 직렬적으로 처리되고 있음을 알 수 있었다. 이 구조에서는 슬라임 개수가 증가할수록 Distance Constraint 및 Solver 연산 비용이 선형적으로 증
[ Rendering ] 12. Lighting
해당 포스팅은 이상윤님께서 공유해주신 2025 TA Campus 수업 문서 링크를 바탕으로 작성했습니다. 12. Lighting 리얼 빛의 동작을 그대로 모사하는 건 레이트레이싱처럼 어려우니까, 렌더링과 셰이더에서는 빛을 세분화해서 각각 구현 Direct Diff
[ Rendering ] 11. Physically Based Rendering (PBR)
Physically Based Rendering (PBR)
[Unreal Engine] PBD Collision Constraint
지난 PBD 구현 때는 Collision 처리를 임시로 다음과 같이 진행했다.하지만 이건 그냥 World 좌표 기준으로 z = 0 이하로 떨어지지 않도록한 임시 처리이다.이걸 이제 실제로 물리적 충돌 판정을 이용하여 PBD의 Collision Constraint를 만들
[Unreal Engine] Custom Snow Render Pass 제작
제작했던 Vignette Pass의 구조를 활용해서 이번에는 Screen 효과 중 눈이 내리는 Snow 효과를 만들어보고자 한다.Engine Version : Unreal Engine 5.7 Source Build VersionOS : Windows 11언리얼 엔진의
기술 기록 읽기→[AI] 주니어 게임 개발자와 AI
2022년, 대학교에서 소프트웨어 전공 수업을 듣던 중 교수님이 이런 말씀을 하셨다.“개발자로 살아가고 싶다면 항상 최신 기술과 동향을 파악하는 습관을 길러라.”그리고 그 자리에서 막 등장했던 ChatGPT를 소개해주셨다.직접 사용해본 교수님의 평가는 이랬다“대학교 1
[Unreal Engine] Position-Based Dynamics Using Dynamic Mesh for Softbody
1. PBD (Position-Based Dynamics)란 무엇인가? 우선 PBD를 알아보기 전에 전통적인 물리 시뮬레이션이 어떤 식으로 계산되었는지 알아볼 필요가 있다. 우리가 흔히 알고 있는 고전 역학의 공식들이 컴퓨터 안에서 어떻게 실시간으로 구현되어 왔는지
[Physics] XPBD: Position-Based Simulation of Compliant Constrained Dynamics 번역본
Title: XPBD: Position-Based Simulation of Compliant Constrained Dynamics > > Authors: Miles Macklin, Matthias Müller, Nuttapong Chentanez > >Published
[Graphics] CRACK-FREE POINT-NORMAL TRIANGLES USING ADJACENT EDGE NORMALS 번역본
Papers : CRACK-FREE POINT-NORMAL TRIANGLES USING ADJACENT EDGE NORMALS - Nvidia 0. OVERVIEW 인접 경계 노말(Adjacent Edge Normals)을 사용한 Crack-Free Point-No
[Physics] Position Based Dynamics 번역본
Papers : Position Based Dynamics - Matthias Müller, Bruno Heidelberger, Marcus Hennix, John Ratcliff해당 포스팅은 AI를 통해 번역한 내용입니다. 일부 내용이나 해석에 오역 또는 의역이 있을
[Unreal Engine] Static Mesh To Dynamic Mesh
우리가 게임에서 흔히 사용하는 캐릭터나 환경 오브젝트들은 대부분 Rigid Body이거나, 변형되지 않는 Static Mesh 형태의 정적인 메시들이다.이러한 메시들은 물리적으로 이동하거나 회전할 수는 있지만, 형태 자체가 실시간으로 변형되지는 않는다.하지만 부드럽게
[Unreal Engine] Custom Vignette Pass & Editor Plugin 제작
지난번에는 단순하게 RHI와 RDG를 이용해서 언리얼엔진에서 어떤 방식으로 엔진 수정 없이 커스텀 패스를 추가할 수 있는 지 알아보았다.이번에는 에디터에서 파라미터를 수정해서 Custom Pass에서 만든 셰이더의 값을 조정해보도록 하겠다.이번에는 Screen 효과 중
[ Rendering ] 10. Optimization & Bandwidth Management
해당 포스팅은 이상윤님께서 공유해주신 2025 TA Campus 수업 문서 링크를 바탕으로 작성했습니다.그래픽 처리에서 성능과 발열에 영향을 주는 요소는 크게 연산량(Compute)과 메모리 대역폭 사용량(Bandwidth)으로 나눌 수 있다.이 중에서도 실제 전력 소
[ Rendering ] 9. Throttling
해당 포스팅은 이상윤님께서 공유해주신 2025 TA Campus 수업 문서 링크를 바탕으로 작성했습니다. 9. Throttling
[ Rendering ] 8. Memory
해당 포스팅은 이상윤님께서 공유해주신 2025 TA Campus 수업 문서 링크를 바탕으로 작성했습니다.그래픽스에서 성능을 결정하는 요소는 단순히 연산 성능 뿐만 아니라 메모리 구조와 용량, 그리고 접근 방식도 성능에 영향을 주는 경우가 많다.특히 플랫폼에 따라 메모리
[ Rendering ] 7. Bandwidth
해당 포스팅은 이상윤님께서 공유해주신 2025 TA Campus 수업 문서 링크를 바탕으로 작성했습니다.대역폭(Bandwidth) 이란 단위 시간당 전송할 수 있는 데이터의 최대량을 의미한다.그래픽스 관점에서 대역폭은 주로 다음을 가리킨다.CPU ↔ 메모리GPU ↔ 메
[ Rendering ] 6. Platform
해당 포스팅은 이상윤님께서 공유해주신 2025 TA Campus 수업 문서 링크를 바탕으로 작성했습니다.같은 렌더링 기술을 사용하더라도 플랫폼이 달라지면 전제 조건이 완전히 달라진다.하드웨어 구조, 메모리, 전력 제한, 사용자 환경 등이 다르기 때문에 렌더링 파이프라인
[ Rendering ] 5. Graphics API
해당 포스팅은 이상윤님께서 공유해주신 2025 TA Campus 수업 문서 링크를 바탕으로 작성했습니다.지금까지 그래픽스의 용어의 개념CPU와 GPU의 동작 방식 (Graphics Pipeline)Graphics Pipeline의 구조 설계 및 활용 (Render Pa
[ Rendering ] 4. Rendering Path
해당 포스팅은 이상윤님께서 공유해주신 2025 TA Campus 수업 문서 링크를 바탕으로 작성했습니다.Rendering Path는 앞서 설명했던 Render Pass들을 어떤 순서와 구조로 사용할 것인지를 정의한다.대표적인 Rendering Path로는 다음과 같은
[ Rendering ] 3. Render Pass
해당 포스팅은 이상윤님께서 공유해주신 2025 TA Campus 수업 문서 링크를 바탕으로 작성했습니다.지금까지 우리는 하나의 오브젝트가 GPU를 거쳐 화면에 그려지기까지의 전체 흐름을 살펴봤다.하지만 실제 게임이나 엔진에서는 이 파이프라인을 단 한 번만 돌려서 화면을
[ Rendering ] 2. Graphics Pipeline
해당 포스팅은 이상윤님께서 공유해주신 2025 TA Campus 수업 문서 링크를 바탕으로 작성했습니다. 0. 들어가며 게임을 개발하다보면 화려한 그래픽을 책임지는 TA라는 직군에 대해 항상 듣곤 합니다. 하지만 막상 관련 직무에 대한 인사이트나 공부를 하고 싶어도
[ Rendering ] 1. Terms and Definitions
해당 포스팅은 이상윤님께서 공유해주신 2025 TA Campus 수업 문서 링크를 바탕으로 작성했습니다.게임을 개발하다보면 화려한 그래픽을 책임지는 TA라는 직군에 대해 항상 듣곤 합니다.하지만 막상 관련 직무에 대한 인사이트나 공부를 하고 싶어도 접근하기 쉽지 않았습
[Unreal Engine] Hello, Triangle! Global Custom Shader 제작
0. 들어가기에 앞서 Unreal Engine의 RHI(Render Hardware Interface) 를 사용해 화면에 단순한 삼각형을 렌더링하는 과정을 다뤄보자. 구현은 엔진 코드를 직접 수정하지 않고, 플러그인(Plugin) 형태로 진행하며 다음 요소들을 사용
[Unreal Engine] State
Unreal Engine의 State Tree는 스테이트를 계층 구조(Hierarchy) 로 구성하여 조건 판단, 행동 실행, 전환 흐름을 명확하게 설계할 수 있는 시스템이다.이때 스테이트는 크게 형제(Sibling) 스테이트와 자손(Child) 스테이트 관계로 나뉜다
[Unreal Engine] State Tree 개요
State Tree는 언리얼 엔진에서 제공하는 상태 기반(States) 로직 작성 시스템이다.AI 행동, 게임플레이 로직 등 “현재 상태에 따라 무엇을 할지”를 구조적으로 구성할 수 있게 해준다.전통적인 FSM(Finite State Machine) 의 장점(명확한 상
[Unreal Engine] 타입 오브젝트 패턴
해당 포스팅은 Stuart Butler , Tom Oliver의 Game Development Patterns with Unreal Engine 5를 바탕으로 작성한 내용입니다. 타입 오브젝트(Type Object) 패턴이란?
[Unreal Engine] 서브클래스 샌드박스 패턴
해당 포스팅은 Stuart Butler , Tom Oliver의 Game Development Patterns with Unreal Engine 5를 바탕으로 작성한 내용입니다.서브클래스 샌드박스(Subclass Sandbox) 패턴은 상위 부모 클래스가 전체 흐름과
[Unreal Engine] 템플릿 메소드 패턴
해당 포스팅은 Stuart Butler , Tom Oliver의 Game Development Patterns with Unreal Engine 5를 바탕으로 작성한 내용입니다.템플릿 메소드(Template Method) 패턴은 알고리즘의 전체 흐름(뼈대)은 상위 추상
[Unreal Engine] 커맨드 패턴
해당 포스팅은 Stuart Butler , Tom Oliver의 Game Development Patterns with Unreal Engine 5를 바탕으로 작성한 내용입니다.커맨드 패턴(Command Pattern)은 요청(행동)을 객체로 캡슐화하여 호출자와 실행자
기술 기록 읽기→[Unreal Engine] 싱글턴 패턴
해당 포스팅은 Stuart Butler , Tom Oliver의 Game Development Patterns with Unreal Engine 5를 바탕으로 작성한 내용입니다.싱글턴 패턴은 클래스에서 단 하나의 인스턴스만 존재하도록 보장하는 생성 패턴이다.“이 클래스
[Unreal Engine] 참조 연결의 분리
해당 포스팅은 Stuart Butler , Tom Oliver의 Game Development Patterns with Unreal Engine 5를 바탕으로 작성한 내용입니다.위 UML 시퀀스 다이어그램은 플레이어 입력부터 투사체 생성, 적 처치, 점수 반영까지의 흐
[Unreal Engine] 인터페이스
해당 포스팅은 Stuart Butler , Tom Oliver의 Game Development Patterns with Unreal Engine 5를 바탕으로 작성한 내용입니다.인터페이스는 서로 다른 클래스가 공통적으로 제공해야 하는 동작(함수) 의 "계약(contra
[Unreal Engine] Tick 함수 최적화 성능 분석
해당 포스팅은 Stuart Butler , Tom Oliver의 Game Development Patterns with Unreal Engine 5를 바탕으로 작성한 내용입니다.\[Unreal Engine] Tick 함수 최적화에서 감시 타워의 Tick 코드를 다음과
[Unreal Engine] Tick 함수 최적화
해당 포스팅은 Stuart Butler , Tom Oliver의 Game Development Patterns with Unreal Engine 5를 바탕으로 작성한 내용입니다.위와 같이 적을 색적하기 위한 감시 타워 오브젝트를 만들었다.해당 코드로 실행을 해도 목표로
[Unreal Engine] 업데이트 패턴
해당 포스팅은 Stuart Butler , Tom Oliver의 Game Development Patterns with Unreal Engine 5를 바탕으로 작성한 내용입니다.게임 루프에서 각 게임 객체의 상태를 매 프레임(또는 일정한 Tick)마다 업데이트하는 구조
[Unreal Engine] 컴포넌트 패턴
해당 포스팅은 Stuart Butler , Tom Oliver의 Game Development Patterns with Unreal Engine 5를 바탕으로 작성한 내용입니다.객체를 여러 개의 독립적인 기능 조각(컴포넌트)으로 분리하고, 이를 조합하여 다양한 객체를
[Unreal Engine] 공간 분할과 월드 파티션 시스템
해당 포스팅은 Stuart Butler , Tom Oliver의 Game Development Patterns with Unreal Engine 5를 바탕으로 작성한 내용입니다.게임 월드에는 수천~수십만 개의 액터와 충돌체, 렌더링 오브젝트가 존재한다.만약 매 프레임마
[Unreal Engine] Flyweight
해당 포스팅은 Stuart Butler , Tom Oliver의 Game Development Patterns with Unreal Engine 5를 바탕으로 작성한 내용입니다.플라이웨이트 패턴은 객체를 효율적으로 관리하고 메모리 사용을 최소화하기 위해 사용되는 디자인
[Unreal Engine] Double Buffer
해당 포스팅은 Stuart Butler , Tom Oliver의 Game Development Patterns with Unreal Engine 5를 바탕으로 작성한 내용입니다.추가 참고 자료 : Game Programming Patterns : Double Buffe
[Unreal Engine] 캐스케이딩 캐스트 체인 문제
해당 포스팅은 Stuart Butler , Tom Oliver의 Game Development Patterns with Unreal Engine 5를 바탕으로 작성한 내용입니다.일반적으로 블루프린트에서 다른 객체의 데이터를 접근하거나 함수를 호출할 때 우리는 Cast
[Unreal Engine] SOLID 원칙
해당 포스팅은 Stuart Butler , Tom Oliver의 Game Development Patterns with Unreal Engine 5를 바탕으로 작성한 내용입니다. 언리얼 엔진과 객체지향 프로그래밍 언리얼 엔진은 기본적으로 C++ 기반의 객체지향 구조
[Unreal Engine] 언리얼 엔진5와 레이어 이해하기
해당 포스팅은 Stuart Butler , Tom Oliver의 Game Development Patterns with Unreal Engine 5를 바탕으로 작성한 내용입니다.대부분의 엔진은 레이어라는 개념으로 작동한다. 각 레이어마다 특정한 작업이 배정되어 있으며,
[Unreal Engine] Fresnel
참고 자료 > Hoj Dee - Fresnel in Unreal Engine: A Beginner’s Guide > Epic's Documentation - 머티리얼에 프레넬 사용하기 > lifeisforu - [ PBR 이란 무엇인가 ] Fresnel 이란? Wha
[Unreal Engine] Ray Marching
참고 자료 kishimisu - An introduction to RaymarchingrenderBucket - UE5 Tutorial - HLSL - Introduction To RaymarchingRay marching is a class of rendering m
[Unreal Engine] An introduction to Shader Art Coding
참고 영상 : kishimisu - An introduction to Shader Art Coding쉐이더는 기본적으로 GPU에서 실행되는 코드이며 캔버스의 각 픽셀의 위치 및 색상을 결정하는 과정이다.GPU는 기본적으로 씬의 모든 픽셀에 대해 병렬적으로 계산하여 실시
[Unreal Engine] Actor Role and RemoteRole
출처 ㅣ Cedric Neukirchen - Multiplayer Network CompendiumActor 복제(Replication)를 위해 중요한 두 가지 속성(Role and RemoteRole)이 더 있습니다.이 두 속성은 다음과 같은 정보를 알려줍니다:어떤
[Unreal Engine] Actor Relevancy and Priority
출처 ㅣ Cedric Neukirchen - Multiplayer Network Compendium'연관성(Relevancy)'이란 무엇이며, 왜 필요할까요?맵이나 레벨이 충분히 커서 플레이어가 서로에게 '중요하지 않은' 존재가 될 수 있는 게임을 상상해보세요.플레이어
[Unreal Engine] Ownership
출처 ㅣ Cedric Neukirchen - Multiplayer Network Compendium소유권(Ownership)은 반드시 이해해야 할 매우 중요한 개념입니다. 이미 “클라이언트가 소유한 액터”와 같은 항목이 포함된 표를 본 적이 있을 것입니다.서버 또는 클
[Unreal Engine] Remote Procedure Calls (RPC)
출처 ㅣ Cedric Neukirchen - Multiplayer Network Compendium다른 복제(Replication) 방법으로는 "RPC"가 있습니다. RPC는 "Remote Procedure Call(원격 프로시저 호출)"의 약자입니다.RPC는 다른 인
[Unreal Engine] Replication
출처 ㅣ Cedric Neukirchen - Multiplayer Network Compendium복제(Replication)는 서버가 정보를 클라이언트로 전달하는 행위입니다.이 동작은 특정 엔티티나 그룹에 한정될 수 있습니다. 블루프린트에서는 주로 해당 AActor의
[Unreal Engine] Dedicated Server VS Listen Server
출처 ㅣ Cedric Neukirchen - Multiplayer Network CompendiumDedicated Server는 플레이어가 직접 호스팅할 필요가 없는 독립 실행형 서버입니다.게임 클라이언트와 분리되어 실행되며, 플레이어가 자유롭게 접속하거나 나가더라도
[Unreal Engine] Gameplay Framework + Network
출처 ㅣ Cedric Neukirchen - Multiplayer Network Compendium이전 섹션에서 언리얼 엔진의 서버-클라이언트 아키텍처와 주요 클래스를 살펴보았으니, 이제 이 클래스들을 네 가지 범주로 나눌 수 있습니다:서버 전용(Server Only)
[Unreal Engine] Gameplay Framework 3
출처 ㅣ Cedric Neukirchen - Multiplayer Network CompendiumAHUD 클래스는 각 클라이언트에서만 사용할 수 있으며 PlayerController를 통해 접근할 수 있습니다. PlayerController가 자동으로 AHUD를 스폰
[Unreal Engine] Gameplay Framework 2
출처 ㅣ Cedric Neukirchen - Multiplayer Network CompendiumAPlayerState는 특정 플레이어에 대한 공유 정보를 저장하는 데 가장 중요한 클래스입니다. 플레이어의 현재 정보를 보관하는 용도로 설계되었으며, 각 플레이어마다 자
[Unreal Engine] Gameplay Framework 1
출처 ㅣ Cedric Neukirchen - Multiplayer Network Compendium해당 페이지에서는 언리얼 엔진의 "Gameplay Framework"에서 가장 일반적으로 사용되는 클래스들에 대해 설명합니다. 또한 이러한 클래스들이 어떻게 사용되는지에
[Unreal Engine] Network in Unreal
출처 ㅣ Cedric Neukirchen - Multiplayer Network Compendium언리얼 엔진은 표준 서버-클라이언트 아키텍처를 사용합니다. 즉, 서버가 권한을 가지며 모든 데이터는 먼저 클라이언트에서 서버로 전송되어야 합니다. 이후 서버가 데이터를 검
[Unreal Engine] Multiplayer Network Compendium Introduction
출처 ㅣ Cedric Neukirchen - Multiplayer Network Compendium공식 문서도 이미 훌륭하지만, 언리얼 엔진으로 멀티플레이어 게임을 개발하며 지난 몇 년간 쌓은 기본적인 지식을 정리하고자 이 자료를 만들었습니다.이 문서에서는 네트워크 프
[Unreal Engine] Forward declarations
C++로 언리얼 프로젝트를 개발하다 보면, 헤더 파일마다 include가 점점 늘어나 컴파일 시간이 길어지고, 클래스 간 의존성도 복잡해지는 현상이 발생한다.이럴 때 유용하게 사용할 수 있는 것이 바로 전방 선언(Forward Declaration)이다.전방 선언은 어
[Wanted CAREER GATHERING 2025] 참여 후기
🎇 CAREER GATHERING 신입 개발자로 취업을 준비하던 찰나 운이 좋게도 Wanted에서 주관하는 Career Gathering을 참여할 수 있는 기회를 얻게 되었다. 언리얼 엔진 개발자로 준비하고 있는 만큼 실제로 언리얼 엔진을 주로 쓰는 회사들의 HR
[Unreal Engine] Perforce Client(P4V) 세팅하기
Unreal Project에 사용할 Perforce 서버가 무사히 준비되었다면 이제 서버를 이용하기 위한 Client 프로그램을 설치해야한다. Perforce에서는 P4V를 이용하여 소스컨트롤에 접속할 수 있다.따라서 해당 프로그램을 다운받지 않았다면 아래 링크를
[Unreal Engine] Perforce 시작하기
Unreal Engine 프로젝트를 진행하면서 팀원들과 협업을 위해 소스컨트롤을 구축할 일이 있었다. 하지만 한국에서 아직 Perforce에 대한 레퍼런스가 많이 존재하지 않아서 이슈가 발생했을 때 많이 갈팡질팡했던 것 같다.이 글을 통해 프로젝트를 하면서 경험했던 U
[Unreal Engine] FORCEINLINE
C++ 표준의 inline 키워드는 "인라인화를 제안"하는 역할로, 컴파일러가 해당 함수를 호출 위치에 직접 붙여넣도록 권장합니다. 단, 복잡한 함수라면 무시할 수도 있고, 명시 없이도 인라인화될 수 있습니다.반면에 Unreal Engine에서의 FORCEINLINE
[Unreal Engine] Communicating with your Thread
출처 : @Ayliroe : Multithreading and Performance in Unreal Communicating with your Thread 스레드에서 UObjects와 AActors를 직접 수정하는 것은 Unreal의 가비지 컬렉터 구조상 지원되지
[Unreal Engine] Threading Classes
출처 : @Ayliroe : Multithreading and Performance in Unreal엔진의 Core에서 제공하는 대표적인 멀티스레딩 관련 클래스들을 간단히 정리하면 다음과 같습니다Unreal에서 가장 포괄적인 스레딩 도구입니다. 아래와 같이 FRunna
[Unreal Engine] Multithreading Overview
출처 : @Ayliroe : Multithreading and Performance in UnrealUnreal은 기본적으로 멀티스레딩을 지원하지만, 실제로는 부분적으로만 활용됩니다. 오디오, 렌더링, 통계 등 일부 전용 스레드가 존재하지만, 대부분의 연산은 여전히 게
[Unreal Engine] Validation, Assertions
Unreal Engine으로 개발하는 프로젝트는 대게 복잡하고 규모가 크다.실시간 렌더링, 블루프린트와 C++간의 상호작용, 멀티스레드와 네트워크 환경 등 다양한 요소가 얽혀 있어 예기치 못한 버그가 발생하기 쉽다.특히 게임 플레이 도중 예외적인 상황이 발생했을 때,
[Unreal Engine] Important File Names
아래는 Unreal Engine에서 참고하면 좋은(순서와 상관없이) 주요/유용 C++ 파일 목록입니다.이 중 일부는 이 총정리에서 다루지 않았을 수도 있습니다.처음부터 모두 이해할 필요는 없지만, 나중에 참고할 만한 파일을 알아두면 도움이 됩니다.
[Unreal Engine] Split Screen
Split Screen은 Game Layer Manager가 뷰포트의 Slate 위젯, 해당 Slate 위젯을 사용하는 플레이어, 그리고 Slate 위젯의 형태(분할 레이아웃 등)를 관리하는 구조로 동작합니다.Game Layer Manager는 엔진 초기화 시 Game
기술 기록 읽기→[Unreal Engine] Unreal's Focusing System
언리얼 엔진의 Slate/UMG 포커싱 시스템은 User Focus(사용자 포커스)라는 개념을 기반으로 합니다. 여기서 Slate User(슬레이트 유저)라 불리는 각 사용자는 한 번에 하나의 Slate Widget(슬레이트 위젯)에만 포커스를 둘 수 있습니다.여러 S
[Unreal Engine] Input Framework of Unreal Engine(relating to UMG/Slate)
입력(Input)이 가장 하위 레벨에서 상위 레벨로 어떻게 흐르는지에 대한 전체적인 개요입니다. 아래는 각 사용자의 입력이 Unreal Engine에서 라우팅되는 순서대로 정리한 단계별 흐름입니다(각 단계는 다음 단계로 입력을 전달합니다):엔진 하트비트 틱 FEngin
[Unreal Engine] Development & Debug Tools for UMG/Slate
언리얼 엔진은 UMG 및 Slate UI를 개발할 때 사용할 수 있는 다양한 개발 및 디버그 도구를 제공합니다.이 도구들은 에디터뿐만 아니라 패키징된 개발 빌드(콘솔 포함)에서도 활용할 수 있어 UI 제작과 디버깅에 큰 도움이 됩니다.콘솔 슬레이트 디버거 공식 문서(E
[Unreal Engine] UMG in relation to Levels/Worlds
HUD 액터는 게임 모드(Game Mode)에 의해 레벨에 스폰되는 액터입니다(직접 수동으로 스폰하는 것은 권장하지 않으며, 게임 모드 기능을 오버라이드하고 동작을 정확히 이해하는 경우에만 예외적으로 사용하세요).이 액터들은 네트워크 복제가 되지 않으며, 기본적으로 화
[Unreal Engine] Common Widget Functionality
각 위젯은 고유한 기능과 용도를 가지지만, 모든 위젯에 공통적으로 적용되는 기능도 있습니다. 대표적으로 다음과 같은 항목들이 있습니다:접근성(Accessibility): 각 위젯은 프로젝트의 기본 접근성 설정을 따르며, 위젯별로 개별 설정을 오버라이드할 수 있습니다.
[Unreal Engine] Common Widgets
이러한 위젯에 대한 더 자세한 설명은 학습과 이해를 돕기 위해 여러 페이지로 분할되어 있습니다:텍스트 위젯 개요 페이지텍스트 블록언리얼 엔진에는 기본적으로 많이 사용되는 다양한 위젯들이 존재합니다. \\대부분(혹은 모든) UMG/Slate 기반 UI는 아래와 같은 위젯
[Unreal Engine] UMG (Unreal Motion Graphics)
UMG 프레임워크는 UObject 기반으로 동작하며, 반드시 특정 Player Controller(분할 화면을 고려해 Owning Player라고 부름)에 연결되어야 합니다.Owning Player를 지정하지 않으면 자동으로 레벨의 첫 번째 로컬 플레이어에 연결됩니다.
[Unreal Engine] Slate
Slate 프레임워크는 두 가지 핵심 요소로 구성됩니다:Slate 렌더러Slate 위젯은 자체 렌더러인 Slate Renderer를 통해 화면에 표시됩니다.이 렌더러는 게임 뷰포트 앞에 UI 요소를 렌더링하며, 언리얼의 월드 렌더링 파이프라인과 결합하여 UI를 표시하는
[Unreal Engine] Slate & UMG in Unreal
언리얼 엔진은 Slate라는 자체 UI 프로그래밍 프레임워크를 사용합니다.Slate는 게임 및 비게임 애플리케이션 모두에서 Slate 위젯을 사용하여 UI를 구성합니다. 예시:언리얼 에디터는 전적으로 Slate로 만들어졌습니다.(Nick Darnell의 설명에 따르면
[Unreal Engine] Performance & Design Considerations
Slate 및 UMG 성능 및 최적화 지침에 대한 Epic의 공식 문서UMG와 Slate는 렌더링(GPU)과 연산(CPU) 측면 모두에서 매우 높은 성능을 제공하는 프레임워크입니다.하지만 최적의 사용자 경험을 위해서는 두 가지 측면 모두를 고려하여 UI를 설계해야 합니
[Unreal Engine] Introduction
출처 : YawLighthouse : UMG-Slate-Compendium해당 시리즈는 YawLighthouse의 UMG-Slate-Compendium 문서를 번역한 내용입니다.이 총정리는 UMG & Slate의 기초를 가르치고 Unreal Engine의 UI 프레임
[Unreal Engine] Render Dependency Graph (RDG)
출처 : staticJPL - Render-Dependency-Graph-Documentation2017년 Yuriy O’Donnell은 프로스트바이트에서 일하면서 렌더 그래프 시스템을 개척하고 GDC에서 첫 번째 프레임 그래프를 선보였습니다. 그 결과 이 시스템이 제
[Unreal Engine] Render Hardware Interface (RHI)
출처 : staticJPL - Render-Dependency-Graph-Documentation원래 RHI는 일부 리소스 관리 및 명령 인터페이스를 포함하여 D3D11 API를 기반으로 설계되었습니다. 언리얼 엔진은 모바일, 콘솔, PC 등 다양한 플랫폼을 지원하는
[Unreal Engine] Unreal Engine's Rendering Pipeline
출처 : staticJPL - Render-Dependency-Graph-Documentation언리얼의 렌더링 파이프라인에 대해 알아보기 전에 Rendering pass와 Deferred rendering의 개념에 대해 알아볼 필요가 있습니다.Rendering pas
[Unreal Engine] Fundamentals of Graphics Programming
출처 : staticJPL - Render-Dependency-Graph-Documentation 1. Fundamentals of Graphics Programming Graphics Pipeline 이 문서의 내용을 이해하려면 그래픽 렌더링 파이프라인에 대한
[Unreal Engine] Reflection System - Summary
출처 : staticJPL - Unreal-Engine-Core-Documentation엔진 소스 코드를 꼼꼼히 살펴보았다면, 제공된 UML 다이어그램이 타입 시스템의 구조를 이해하는 데 도움이 될 것입니다.요약하자면, 언리얼 엔진의 리플렉션 시스템은 "생성(Gener
[Unreal Engine] Reflection System - Registration 3
출처 : staticJPL - Unreal-Engine-Core-DocumentationInitCoreUObject에서 ProcessNewlyLoadedObjects 호출 이후에는 다음 코드가 실행됩니다.CloseDisregardForGC가 호출되면 UClass\*의
[Unreal Engine] Reflection System - Registration 2
출처 : staticJPL - Unreal-Engine-Core-DocumentationAppInit 단계에서는 Unreal Engine 내부의 여러 시스템에 초기화 단계임을 알리기 위해 멀티캐스트 델리게이트가 브로드캐스트됩니다.특히 중요한 점은, 이 브로드캐스트가 C
[Unreal Engine] Reflection System - Registration 1
출처 : staticJPL - Unreal-Engine-Core-DocumentationCollection 섹션에서, 사전 등록(Pre-Registration) 단계는 ClassInfo, ScriptStructInfo, EnumInfo를 수집하는 것부터 시작합니다. 이
[Unreal Engine] Reflection System - Collention 2
출처 : staticJPL - Unreal-Engine-Core-Documentation UStruct UEnum & Property Collection UScriptStruct & CPPStructOps UScriptStruct는 POD(Plain Old Dat
[Unreal Engine] Reflection System - Collection 1
출처 : staticJPL - Unreal-Engine-Core-Documentation Collection 생성 섹션에서는 다양한 타입별 코드 스니펫이 삽입되어 컬렉션 및 등록을 위한 준비가 이루어졌습니다. 이번 섹션의 목적은 C++의 정적 자동 등록(Static
[Unreal Engine] Reflection System - Generation 3
출처 : staticJPL - Unreal-Engine-Core-Documentation마찬가지로, GENERATED_USTRUCT_BODY()도 우리가 정의한 매크로로 치환됩니다. 이 매크로는 내부적으로 StaticStruct 함수만 정의하며, FMyStruct는 U
[Unreal Engine] Reflection System - Generation 2
출처 : staticJPL - Unreal-Engine-Core-DocumentationUHT가 타입 메타데이터 정보를 충분히 분석하고 획득했다면, 다음 단계는 이 정보를 활용해 앞서 설명한 타입 시스템 구조를 프로그램의 메모리 내에 실제로 구성하는 것입니다. 이 절차
[Unreal Engine] Reflection System - Generation 1
출처 : staticJPL - Unreal-Engine-Core-Documentation리플렉션은 런타임에 타입 정보를 획득하는 시스템입니다. 이 타입 정보는 객체와 연관된 정적 세부 정보를 제공합니다. 가비지 컬렉션은 클래스 객체를 생성할 때 리플렉션이 없어도 정상적
[Unreal Engine] Reflection System - About
출처 : staticJPL - Unreal-Engine-Core-Documentation언리얼 엔진과 그 내부 동작 방식에 흥미를 느끼는 프로그래머로서, 저는 소프트웨어 시스템 엔지니어링 배경을 가지고 있습니다. 더 깊이 있는 학습 접근과, 미래의 저를 위해 인사이트를
[DirectX12] USING BINDLESS RESOURCES WITH DIRECTX RAYTRACING 번역본
Direct3D 12의 리소스 바인딩은 복잡하고 올바르게 구현하기 어려울 수 있으며, 특히 DirectX 레이트레이싱과 함께 사용할 경우 더욱 그렇습니다. 이 장에서는 바인드리스 기술을 사용하여 셰이더에 모든 리소스에 대한 전역 액세스를 제공하여 애플리케이션 및 셰이더
[Unreal Engine] Rendering & Graphics Programming 번역본
요약 설명: Unreal Engine RDG 이해하기Unreal-Engine-Graphics-Rendering.pdf목차이 문서의 내용을 이해하려면 그래픽 렌더링 파이프라인에 대한 기본적인 이해가 필요합니다. 아래는 Vulkan 그래픽스 파이프라인의 예입니다. 그래픽
[Unreal Engine] GAS Documentation 번역본
충처 : tranek GASDocumentation해당 문서는 Unreal Engine 5의 멀티플레이어 샘플 프로젝트의 GameplayAbilitySystem 플러그인의 이해를 돕는 문서입니다. 이 문서는 공식 문서가 아니며, 프로젝트 역시 에픽게임즈의 검증을 받지
[Unreal Engine] 멀티플레이어에서의 액터 연결 제어
싱글플레이에서는 GameState, PlayerState, PlayerController, Pawn 등이 오로지 한 클라이언트에 하나밖에 없기 때문에 다른 액터와의 동작을 고려할 필요가 없다.그러나 멀티플레이에서는 각 액터와 클래스들 간 관련성, 소유권, 복제 설정 방
[Unreal Engine] Gameplay Effect
게임플레이 이펙트(Gameplay Effect)는 게임플레이 어빌리티 시스템에서 어트리뷰트를 변경하는 방식이다.게임플레이 이펙트를 사용하면 Attribute에 대해 다음과 같은 작업을 수행할 수 있다.즉각적인 Attribute의 변경 (데미지, 치유 Ability)지속
[Unreal Engine] Unreal Header Tool (UHT)
언리얼 헤더 툴(Unreal Header Tool, UHT) 는 UObject 시스템을 지원하는 맞춤형 파싱 및 코드 생성 툴입니다. 코드 컴파일은 두 단계로 이루어집니다.언리얼 관련 클래스 메타데이터의 C++ 헤더를 파싱하고 여러 UObject 관련 기능을 구현하는
[Unreal Engine] Garbage Collection
가비지 콜렉션(GC)은 더 이상 사용되지 않는 객체(메모리)를 자동으로 탐지하고 해제하여 메모리 누수를 방지하는 기술이다. C++, C와 같은 언어는 수동으로 메모리를 해제해야 하지만, GC를 사용하는 언어나 엔진에서는 이 작업을 자동으로 처리한다.GC의 주요 목적은
[Unreal Engine] 언리얼 스마트 포인터
언리얼 스마트 포인터 라이브러리언리얼 엔진에서는 C++의 스마트 포인터와 유사한 방식의 커스텀 포인터 라이브러리를 구현해놓았다.이 포인터들은 Unreal Engine의 메모리 안전성과 참조 관리 기능을 활용할 수 있도록 만들어졌으며, 각각의 목적과 사용 방식이 다르다.
[Unreal Engine] AttributeSet
Attribute의 정의 Attribute는 캐릭터의 능력치 하나하나를 말합니다. 예를 들어: Health (체력) MaxHealth (최대 체력) Mana (마나) Strength (힘) Defense (방어력) 이러한 값들은 보통 float 타입이며,
[DirectX12] DirectX 시작하기
Direct 3D는 응용 프로그램에서 GPU를 제어하고 프로그래밍하는 데 쓰이는 Low Level의 Graphics API이다.우리는 이를 통해 응용 프로그램과 그래픽 하드웨어 사이에서 Direct 3D의 명령들을 이용해서 다양한 물체들을 렌더링할 수 있게 된다.Dir
[Unreal Engine] Delegate
어떤 이벤트가 발생했을 때 함수를 바인딩해서 호출할 수 있도록 해줍니다.Observer Pattern (옵저버 패턴) 을 언리얼스럽게 구현한 것이라고 생각하면 이해하기 쉽습니다.쉽게 말해 "이 일이 일어나면 이 함수들을 호출해줘" 라고 등록하는 것.예를 들어, 게임에서
[Unreal Engine] 리플렉션 시스템
리플렉션(Reflection)은 프로그램이 실행시간에 자기 자신을 조사하는 기능입니다. 이는 엄청나게 유용한 데다 언리얼 엔진 테크놀로지의 근간을 이루는 것으로, 에디터의 디테일 패널, 시리얼라이제이션, 가비지 콜렉션, 네트워크 리플리케이션, 블루프린트/C++ 커뮤니케
[백준] 안전 영역
백준 안전 영역맵의 최대 높이를 구한다.물에 잠기는 높이 h를 0부터 최대 높이까지 변화시키며 반복한다.각 h마다 BFS 혹은 DFS로 잠기지 않은 영역의 개수를 센다.모든 높이에 대해 구한 영역 개수 중 최댓값을 출력한다.
[Unreal Engine] Gameplay Ability
Gameplay Ability는 게임에서 액터가 수행할 수 있는 모든 행동이나 스킬입니다. 예를 들어, 질주하면서 총을 쏘는 것처럼 둘 이상의 GameplayAbility를 동시에 활성화할 수도 있습니다. Gameplay Ability는 블루프린트 또는 C++에서 구현
[Unreal Engine] 어빌리티 시스템 컴포넌트(ASC)
어빌리티 시스템 컴포넌트(ASC)의 정의 AbilitySystemComponent (ASC)는 GAS의 핵심입니다. 시스템과의 모든 상호 작용을 처리하는 컴포넌트입니다. GameplayAbility을 사용하거나 Attributes를 가지거나, GameplayEffe
[Effective Modern C++] Item1. Template Type의 추론 규칙을 숙지하라.
📘핵심 Note템플릿 형식 연역 도중 참조 형식의 인수들은 비참조로 취급된다. 즉, 참조성이 무시된다.보편 참조 매개변수에 대한 형식 연역 과정에서 왼값 인수들은 특별하게 취급된다.값 전달 방식의 매개변수에 대한 형식 연역 과정에서 const 또는 volatile(또
[Unreal Engine] GAS 프로젝트 세팅하기
언리얼 엔진 실행 후 새 프로젝트 생성프로젝트 설정: GAS는 기본적으로 C++ 구현 권장프로젝트명 입력 후 생성게임플레이 어빌리티 시스템은 플러그인으로 제공되기 때문에 사용 옵션을 선택해야 합니다.편집(Edit) > 플러그인(Plugins) > Gameplay Abi
[Unreal Engine] 언리얼엔진5 Gameplay Ability System(GAS)를 시작하며.
보통 언리얼 엔진의 기능이나 프레임워크를 보다보면 유독 불친절한 문서들이 있다.내 경우에는 그게 게임플레이 어빌리티 시스템 문서였다.게임플레이 어빌리티 시스템 개요문서를 보면 알겠지만 처음 GAS를 시작하는 사람의 입장에서 이 문서는 정말 도움이 되기 힘들다.그런 의미
[프로그래머스] 게임 맵 최단거리
프로그래머스 게임 맵 최단거리최단거리 문제 = BFS (Breadth-First Search)를 사용한다.DFS는 최단거리 보장 안됨 (모든 경로를 탐색해야 함).상, 우, 하, 좌로 이동하기 위한 방향 배열.dyi, dxi를 합치면 네 방향을 순서대로 탐색할 수 있음
[프로그래머스] 최소직사각형
프로그래머스 최소직사각형각 카드마다 짧은 쪽, 긴 쪽을 정한다.짧은 쪽들 중 가장 긴 것과 긴 쪽들 중 가장 긴 것을 찾는다.모든 명함(sizesi)에 대해 가로, 세로 중 더 큰 값을 가로로 보고, 더 작은 값을 세로로 본다.이후 각각 가로끼리, 세로끼리 최댓값을 갱
[프로그래머스] 폰켓몬
폰켓몬N마리의 폰켓몬 중 N/2마리를 가져갈 수 있다.폰켓몬의 종류 번호가 담긴 배열이 주어지는데, 중복된 번호가 있을 수 있다.가져갈 수 있는 폰켓몬의 종류 수를 최대로 만들어야 한다.즉, 중복을 제거한 종류 수를 구해야하므로 Set 혹은 unordered_set을
[프로그래머스] 완주하지 못한 선수 (C++)
프로그래머스 완주하지 못한 선수참가자 수는 완주자보다 1명이 많다.즉, participant - completion 을 했을 때 남는 사람이 완주하지 못한 선수이다.단순한 리스트 연산으로도 가능하지만 해시도 이용가능하다.🔍 코드 설명participant 벡터를 순회하