전체 글 282

언리얼 게임 모드 클래스

언리얼에서 게임을 구현하는 다양한 기능은 플러그인, 모듈 등을 통해서 추가할 수 있다. 하지만 게임 구현의 주춧돌은 역시 게임 모드 클래스이다. 언리얼 게임 모드 클래스 게임에 일시 정지 기능을 추가하고 싶은 경우를 생각해보자. 게임을 일시 정지시키기 위한 모든 로직 및 구현 내용이 하나의 클래스 안에 배치돼야 할 것이다. 게임 모드 클래스는 플레이어가 게임에 입장하면 게임 흐름을 처리하는 역할을 담당하게 된다. 게임 흐름은 게임에서 발생하는 모든 상황(ex. 일시정지, 플레이, 재시작 등 게임 흐름 행동)이 될 수 있다. 이와 비슷하게 멀티플레이어 게임에서는 네트워크와 관련된 게임플레이 로직이 한 곳에 배치돼야 한다. 게임 모드 클래스는 바로 이런 역할을 담당한다. 게임 모드는 게임 로직을 실행하고 플..

UE5 2023.10.27

std::deque

C++ Standard Library 의 deque deque deque란? 덱(deque)은 양방향 큐(double-ended queue)의 약자이다. 벡터는 가변 길이 배열이고, push_front() 또는 pop_front() 같은 함수는 비용이 많이든다. std::deque를 사용하면 이러한 단점을 극복할 수 있다. 덱의 구조 C++ 표준은 어떤 기능의 동작만을 정의할 뿐이며, 어떻게 구현해야 하는지는 정의하지 않는다. deque는 list 혹은 vector보다 구현이 약간 복잡한데, deque는 다른 컨테이너만큼 단순하지는 않기 때문에 실제 구현은 좀 더 다른 형태일 수 있고, 많은 최적화 기법이 적용되었을 수 있다. 그러나 기본 개념은 같다. 즉, 이러한 컨테이너를 구현하려면 연속된 메모리 청..

C++ std::List

C++ Standard Library 의 list std::list list란? std::forward_list는 아주 기본적인 형태로 구현된 연결리스트이다. std::forward_list는 다른 유용한 기능 중에서도 리스트 끝에 원소 추가, 역방향 이동, 리스트 크기 반환 등의 기능은 제공하지 않는다. 이는 메모리를 적게 쓰고 성능을 유지하기 위함이다. 이외에도 std::forward_list의 반복자는 매우 적은 기능만 지원한다. 컨테이너의 크기를 얻어오거나 자료 구조 맨 뒤에 새로운 데이터를 추가하는 등의 기능은 매우 유용하고 빈번하게 사용되지만, std::forward_list에서는 지원되지 않는다. 그러므로 std::forward_list의 단점을 보완하기 위해 std::list를 C++에서 ..

프로그래머스 lv2 최댓값과 최솟값 c++

#include #include #include #include using namespace std; string solution(string s) { string answer = ""; string Stemp = ""; vector V; for (int i = 0; i < s.length(); i++) { if (s[i] != ' ') Stemp += s[i]; else { V.push_back(stoi(Stemp)); Stemp.clear(); } } V.push_back(stoi(Stemp)); sort(V.begin(), V.end()); answer += to_string(V.front()) + " " + to_string(V.back()); return answer; } int main() {..

컴퓨터 그래픽스의 개요

컴퓨터 그래픽스란? 컴퓨터를 이용하여 영상을 생성하는 작업을 컴퓨터 그래픽스라 한다. 이 작업의 입력이 3차원 데이터로 주어지는 경우 3차원 그래픽스라고 부른다. 그래픽스의 발전은 나날이 눈에 띄게 발전되오고있다. 지난 30년간 영화 특수효과 뿐만 아니라 3차원 게임 내에서도 굉장한 발전을 이뤄오고있다. 이는 단순한 PC, 콘솔 게임 뿐만 아니라 모바일 영역에서도 고성능의 그래픽스를 찾아볼 수 있다. 실시간 그래픽스란? 그래픽스는 실시간 그래픽스와 비실시간 그래픽스로 나눌 수 있는데 실시간 그래픽스의 기준은 각 이미지를 1/30초 이내로 렌더링해야한다는 것이 기준이다. ( = Real-time graphics systems must render each image in less than 1/30th of..

그래픽스/OpenGL 2023.10.24

UE5 멀티스레딩과 enum을 이용한 상태 변환

멀티스레딩을 이용하면 여러 함수가 동시에 호출되는 것이 가능하다. 해당 언리얼 엔진 문서를 참고하였음 https://docs.unrealengine.com/5.1/ko/animation-optimization-in-unreal-engine/ https://docs.unrealengine.com/5.3/ko/animation-optimization-in-unreal-engine/ 애니메이션 최적화 애니메이션 블루프린트의 퍼포먼스를 높이는 최적화 기법에 대한 설명입니다. docs.unrealengine.com 애니메이션 최적화에 가장 좋은 방법은 멀티스레드를 이용하는 것이다. 여기서 잠깐, 멀티 스레드의 개념 이전에 알아 두어야 할 것이 있는데, 스레드 개념이다. 스레드란 무엇인가? 일반적으로 많이 쓰는 운..

UE5 2023.10.22

Introduction to Computer Systems - 컴퓨터 시스템 개요

개인용 컴퓨터 개인용 컴퓨터의 등장 ( = PC의 등장)은 새로운 컴퓨터 사용 방식을 의미한다. VLSI 기술의 발전으로 1970년대 초 인텔에 의해 마이크로 프로세서가 등장하고, 이해 따라 컴퓨터가 소형화/저가화되면서 70년대 후반에 개인용 컴퓨터의 등장으로 이어지게 되었다. 개인용 컴퓨터의 등장으로 관련 시장이 급격하게 확대됨에 따라 이에 따른 소프트 웨어 및 하드웨어 관련 사업이 부흥하기 시작하였다. 모바일 컴퓨팅 모바일 컴퓨팅이 가능하기 위해서는 아래 3가지 기반 기술이 필요하다. 고속 네트워크 모바일 컴퓨팅이 가능하기 위한 고속의 네트워크 전송기술 모바일 하드웨어 휴대성을 위한 초소형, 초경량의 하드웨어 제조기술 모바일 소프트웨어 개인별 최적화된 소프트웨어 제작, 유통 기술 개인용, 모바일 모두..

UFUNCTION() 응용을 위한 가이드

블루프린트는 프로그래머와 디자이너의 협업이 가능하도록 해줄 때 편리하다. unreal은 디자이너도, 프로그래머도 둘 다 사용이 가능하다는 점에서 큰 이점이 된다. 이에 대한 예시로 디자이너가 새로운 유형의 무기를 구현할 때, 프로그래머가 무기에 대한 클래스를 만들어 놓고 Fire() 함수 등 조작할 수 있는 중요한 몇가지의 함수를 블루프린트로 만들어 가시화 해놓으면, 디자이너가 코드를 읽어야 할 필요는 없다. 프로그래머도 디자이너에게 코드를 맡길 필요가 없다. 총 발사 속도를 다시 코딩하고 게임을 컴파일 시킬 필요도 없다. 디자이너는 블루프린트를 이용해 직접 발사속도 및 스태틱 매쉬만 변경해주면 된다. 이는 디자이너 프로그래머 모두에게 시간 절약이 될 수 있다. 근데 프로그래머에게도 BP를 사용할지 C+..

UE5 2023.10.16

Physics Field System _ RPG 부서지는 물체

게임에서는 부서지는 물체와 부서지지 않는 물체가 구분된다. 이러한 사소한 물리 시스템의 적용이 플레이어의 몰입감을 높여준다. 붉은 사막 트레일러에서 이를 찾아볼 수 있다. 플레이어가 전투 중, 나무로 만든 구조체와 부딪히니, 박살이 나는 것을 확인할 수 있다. 이는 비단 나무 뿐만이 아닌, 항아리가 될 수도 있고, 혹은 이러한 물리 시스템을 이용해서 끊겨있는 다리를 대신 해 나무를 부셔서 다리 대용으로 이용하도록 플레이어를 유도하면 플레이어가 게임에서 느끼는 몰입감은 배가 될 것이다. 결국 플레이어가 얼마나 오랫동안 게임에 머무르느냐는 이러한 사소한 디테일에 따라 달린 것이라고 생각한다. 가상 세계에서 플레이어가 상상했던 그 이상의 디테일을 접할 기회를 자꾸 제공하면 플레이어는 해당 가상 세계에서의 몰입..

UE5 2023.10.16