인기 글

[C++] Intro sort 인트로 정렬 C++
·
Coding Test
C++에서 제공하는 정렬 함수: IntroSortC++의 알고리즘 헤더에서는 sort() 함수를 지원한다. 정말 많은 sort 알고리즘이 존재하지만 C++에서 제공하는 정렬 함수는 어떤 알고리즘을 사용하는지 알아보자.정렬 알고리즘의 종류와 시간 복잡도여러가지 알고리즘에 대한 간략한 설명과 시간 복잡도를 보면 다음과 같다.알고리즘시간 복잡도 (최선)시간 복잡도 (평균)시간 복잡도 (최악)공간 복잡도퀵 정렬 (Quick Sort)O(n log n)O(n log n)O(n²)O(log n)힙 정렬 (Heap Sort)O(n log n)O(n log n)O(n log n)O(1)삽입 정렬 (Insertion Sort)O(n)O(n²)O(n²)O(1)C++의 IntroSort이런 널리 알려진 정렬 알고리즘과 달리..
1. [Unreal 5] 언리얼 엔진의 렌더링 파이프라인 (Rendering Pipeline)
·
Computer Graphics
서론 게임에서 무언가가 모니터 화면에 보여지고 있다는 것(렌더링)은 게임 엔진이 렌더링 파이프라인 이라는 정해진 과정을 열심히 수행하고 있다는 증거이다. 게임 엔진은 일반적으로 렌더링 파이프라인 이라는 것을 수행해 이미지 또는 프레임을 화면에 렌더링 한다. 본 게시글은 Unreal Engine에서 이 렌더링 파이프라인이 어떤 방식으로 이루어지고 어떻게 플레이어의 화면에 무언가를 렌더링 할 수 있는지에 대해 다루도록 하겠다.Rendering Pipeline? 렌더링 파이프라인의 과정에 대해 설명한 글은 정말 많다. 하지만 그 글들을 보면 과정이 조금씩 다르거나 똑같은 과정이라도 지칭하는 이름이 다르다. 렌더링 파이프라인은 렌더링의 목적에 따라 여러가지 종류의 렌더링 파이프라인이 존재하고, 설명하는 주체가 ..
[Unreal 5] C++ 클래스 빨간줄이 발생할 때
·
Troubleshooting
언리얼에서 C++로 visual studio로 코드를 작성하다보면 간혹가다 코드에 Intellisence 에러가 발생하는걸 볼 수 있다.언리얼 에디터 내에서는 컴파일이 정상적으로 동작하는데 이런 에러가 발생할때에는 코드창 우클릭 다시검사 -> 솔루션 다시검사를 통해 해결할 수 있다.언리얼에서 C++로 Visual Studio를 사용해 코드를 작성하다 보면 간혹 IntelliSense 에러가 발생하는 경우가 있다.이러한 상황에서 언리얼 에디터 내에서는 컴파일이 정상적으로 동작하지만, Visual Studio에서 에러가 나타나는 경우 다음과 같은 방법으로 해결할 수 있다코드 창에서 우클릭"다시 검사" → "솔루션 다시 검사"위 과정을 통해 IntelliSense 에러를 해결할 수 있다.
[Unreal 5] C++ 클래스가 언리얼 에디터에서 보이지 않거나 삭제하고 싶을 때
·
Troubleshooting
언리얼 에디터에서는 C++ 클래스를 직접 삭제할 수 없기 때문에, 사용하지 않는 C++ 클래스를 삭제하려면 다음과 같은 과정을 따라야 한다.C++ 소스 삭제하고 싶을 때언리얼 에디터 종료Visual Studio 솔루션 탐색기의 프로젝트에서 해당 .cpp와 .h 파일 제거파일 탐색기에서 프로젝트 폴더 → Source 폴더 내의 Public에 존재하는 .h 파일과 Private에 존재하는 .cpp 파일 삭제Visual Studio에서 솔루션 우클릭 → 솔루션 다시 빌드빌드가 완료되면 언리얼 에디터 실행C++로 만든 클래스가 보이지 않을 때언리얼 에디터 종료Visual Studio에서 솔루션 우클릭 → 솔루션 다시 빌드빌드가 완료되면 언리얼 에디터 실행이 과정을 통해 삭제된 C++ 클래스 문제를 해결하거나, ..
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 / STILL LOADING] Objective system
·
STILL LOADING
서론개발 기간의 상당부분을 차지했던 Rendering system에 대한 소개를 마쳤다. 이제 그 다음으로 많은 시간을 투자했던 Objective system에 대해 소개하도록 하겠다. 이 시스템은 게임의 목표에 대한 상태와 그 상태의 변화(목표 진행중, 목표 달성 등)으로 부터 발생하는 여러 이벤트들 컨트롤 해주는 포괄적 시스템이다. 여기서 더 나아가 그런 목표에 대한 관리들을 C++ 코드를 작성하지 않고 블루프린트에서 쉽게 관리가 가능하도록 지원하게 하였다.아키텍처필자가 설계한 오브젝티브 시스템은 총 5계층의 아키텍처로 이루어져 있다.1. Data Layer (데이터 계층)USLObjectiveDataSettings: 시스템 전체 설정 관리USLObjectiveDataAsset: 챕터별 목표 템플릿 ..
3. [Unreal 5 / STILL LOADING] Rendering system - Pixelart style
·
STILL LOADING
서론카툰 렌더링이야 그나마 자료도 많고 언리얼에서도 엔진을 수정하지 않고 PPM만을 사용해서 완벽하게는 아니더라도 카툰렌더링을 표현하는 시도가 적은 것은 아니다. 하지만 언리얼에서 픽셀아트 스타일의 게임, 즉 2D 도트 게임을 만드는 시도는 사례가 그리 많지 않다. 그도 그럴것이 언리얼 엔진은 실사지향을 하기 때문에 기본 렌더링 방식 자체가 멀티 라이팅에 유리한 디퍼드 렌더링으로 되어있기 때문에 성능상 유리하지 않다. 이를 해결하고자 엔진을 커스텀해서 사용하는 시간과 노력을 들일바엔 차라리 유니티 엔진으로 2D 게임을 만든는 것이 효율적인 선택일 것이다. 따라서 엔진을 커스텀하지 않고 3D 그래픽을 픽셀 아트로 변환하고자 하는 시도는 "정말 이것이 가능한가?" 라는 의문이 있었다.Transforming ..
2. [Unreal 5 / STILL LOADING] Rendering system - Cartoon style
·
STILL LOADING
서론순서에 맞지 않게 2D 픽셀아트 스타일 렌더링을 다루기 전에 카툰 렌더링을 먼저 다루는 이유는, 프로젝트의 렌더링 방법에 따라 복잡도의 차등을 나누자면 카툰 스타일 렌더링 방식이 가장 복잡도가 낮고 다른 렌더링 방식의 베이스가 되기 때문이다. 우선 프로젝트에서 사용한 카툰 렌더링 방식은 Post Processing material(이후 PPM)을 활용한 Physically based Cel shading을 기반으로 하고 다음 유튜브를 가장 많이 참고하였다.Physically Based Cel Shading - Visual Tech ArtOutline(외곽선)비주얼 완성도의 핵심적인 기능을 하는게 아웃라인이지 않나 싶다. 컴퓨터 비전에서 사물의 외곽선을 검출하는 여러 에지 검출 알고리즘들에 대해 배웠던..
1. [Unreal 5 / STILL LOADING] Rendering system - Summary
·
STILL LOADING
서론프로젝트의 기획 단계에서 요구되었던 렌더링 방식은 총 4가지이다. 고전 게임에서 자주 볼 수 있는 흑백 2D 게임 스타일, 그보다 조금 더 발전한 컬러 2D 픽셀 아트 스타일, 3D 카툰 스타일, 3D 실사 지향 스타일 등이 있고 여기서 3D 실사 지향 스타일은 언리얼 자체가 실사 지향 렌더링을 추구 하기 때문에 언리얼의 기본 기능만을 사용하여 연출할 수 있있고 내가 만들어야 했던 것은 흑백 2D 게임 스타일, 컬러 2D 픽셀아트 스타일, 3D 카툰 스타일 이렇게 총 3개이다.흑백 2D 게임 스타일흑백 2D 게임 스타일은 과거 게임보이 시절 흑백 게임들의 그래픽에서 모티브를 하였다. 물론 그 당시 흑백 게임들은 큰 모니터가 아니라 작은 게임보이의 디스플레이에서 재생되기 때문에 픽셀 수 자체가 많지 않..
0. [Unreal 5 / STILL LOADING] Introduction
·
STILL LOADING
서론본 시리즈에서는 필자가 내일배움캠프 언리얼 5 개발자 교육 과정을 수료하며 팀장으로 진행했던 최종 프로젝트인 STILL LOADING 프로젝트에 대해 개발했던 기술적인 부분들을 정리하여 연재할 생각이다. 남들이 다 하는건 괜히 꺼려지고 특별한 것을 선호하는 홍대병 개발자인 본인의 특성상, 자료도 적고 하려는 사람도 적은 재밌는 시도를 맡아 개발하였기 때문에 앞으로 연재하는 내용들 중 일부는 아마 국내에서 최초로 다루고 게시하는 것일 가능성이 크다.STILL LOADINGSTILL LOADING Official Trailer게임의 장르를 한 문단으로 만들면 다음과 같다.메타픽션 서스펜스 어드벤쳐 퍼즐 2D/3D 게임아주 김치피자탕수육 장르를 가진 우리 게임의 스토리는 미완성된 게임의 주인공이 자아를 갖..