본문 바로가기

분류 전체보기55

GetWorld와 GetLevel은 어떻게 구현되어 있을까? 언리얼 엔진을 공부한 지 이제 몇 주 됐는데 아직도 기초 개념을 잘 모르겠다. 그래서 레퍼런스를 보고 공부한 내용을 한 번 정리해 보기로 했다.오늘의 내용은 언리얼 엔진의 가장 기초가 되는 부분, 월드와 레벨에 대해 접근하는 GetWorld와 GetLevel 함수가 되겠다.월드와 레벨이 어떤 것인지는 가볍게만 다뤄놨으니 필요하다면 언리얼 레퍼런스를 참고하는 것을 추천한다.월드(UWorld)맵 혹은 샌드박스를 표현하는 최상위 오브젝트로 액터와 컴포넌트가 존재하고 렌더링되는 공간이다.멤버를 보면, ULevel 컴포넌트, BatchComponent, 레이어, NetworkManager, PhysicsCollisionHandler 등 게임에 필요한 상위 오브젝트를 소유하고 있음을 알 수 있다.액터(AActor).. 2024. 4. 25.
[C/C++] 구조체 비트필드(bit-field) C/C++: 구조체 비트필드 비트필드에 대한 쉽고 간단한 설명을 찾는다면 코딩도장에 잘 정리되어 있으니 먼저 한 번 읽어보는 것을 추천한다. C 언어 코딩 도장: 56.1 구조체 비트 필드를 만들고 사용하기 (dojang.io) 비트 필드에 대해 찾게 된 이유 언리얼 엔진을 공부하다가 대체 헤더 파일에서 싱글 콜론(:)이 왜 나오는지 궁금했다. 처음에는 언리얼 엔진만의 문법이라 생각했는데 아무리 검색해 봐도 이에 대한 설명이 없었다. // 멤버 변수에 대한 헤더 파일 코드 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Character) uint8 bIsIdle : 1; UPROPERTY(EditAnywhere, BlueprintReadOnly, Cate.. 2024. 2. 24.
Program:Win32/Wacapew.C!ml : Windows 11에서 멀쩡한 C언어 파일이 트로이 목마로 착각되는 문제(MinGW) 환경: VSCode, MinGW(MinGW - Minimalist GNU for Windows download | SourceForge.net) 멀쩡한 C언어 코드가 갑자기 실행이 안 되는 문제가 생겼습니다. 방화벽이 코드를 보고 트로이목마(Win32/Wacapew.C!ml)로 의심한 것 같습니다. 결론만 말하자면 방화벽이 잘못 탐지한 것이기 때문에 걱정하지 마시고 실행해도 됩니다. 다만 트로이목마로 의심받은 실행파일이 삭제되는 문제가 있으니 방화벽에서 해당 폴더를 검사 예외로 설정합시다. 문제를 일으킨 코드는 다음과 같습니다. #include #include struct normal_struct { unsigned int a : 1; unsigned int b : 2; unsigned int c : 5.. 2024. 2. 24.
[C++] 레퍼런스, const 레퍼런스 반환 / 레퍼런스와 임시 개체의 수명 C++ Return value, reference, const reference C++ Return value, reference, const reference Can you explain to me the difference between returning value, reference to value, and const reference to value? Value: Vector2D operator += (const Vector2D& vector) { this->x += vector... stackoverflow.com 레퍼런스를 반환하는 것, const 레퍼런스를 반환하면 무슨 일이 일어나는지 알아보자. 추가로 레퍼런스를 알아보는 김에 레퍼런스에 의해 임시 개체의 수명이 변화할 수 있다는 것도 알아.. 2024. 2. 5.
UNSEEN 5. 게임 알고리즘 (2): FSM, BT 해당 글은 UNSEEN 2기 코딩 테스트를 대비하여 정리 목적으로 적은 글입니다. 잘못된 부분이 있다면 지적해 주시면 감사하겠습니다. 3. FSM FSM(Finite-state machine), 우리말로 유한 상태 머신은 상태(state)를 기반으로 동작을 제어하는 방식 중 하나이다. 일반적으로 게임 AI를 구현하기 위해 사용된다. 유한한 개수의 상태를 가질 수 있는 오토마타이다. FSM은 한 번에 오로지 하나의 상태만을 가지며, 현재 상태에서 어떠한 사건(Event)이 발생하면 다른 상태로 전이된다. 게임으로 비유하면 이렇다. 몬스터가 Idle, Run, Attack라는 상태를 가질 수 있다. 단, 몬스터는 한 번에 하나의 상태만을 갖는다. 달리면서 공격할 수는 없다. 몬스터는 플레이어를 발견하면 Ru.. 2024. 1. 30.
UNSEEN 5. 게임 알고리즘 (1): A*, 쿼드트리 해당 글은 UNSEEN 2기 코딩 테스트를 대비하여 정리 목적으로 적은 글입니다. 잘못된 부분이 있다면 지적해 주시면 감사하겠습니다. 게임에서 많이 사용되는 알고리즘을 간단하게 개념 위주로 정리해 보자. 자세한 구현은 한 글에서 다룰 내용은 아닌 것 같아서 개요만 정리했다. 이번 글에서는 A*와 쿼드트리를 다룰 예정이다. 1. A* A* 알고리즘? 최단 경로를 구하는 알고리즘을 꼽으라면 가장 대표적인 것이 다익스트라(Dijkstra) 알고리즘이다. 하지만 그래프 탐색의 특성상 시간 복잡도가 크기 때문에, 실생활이나 게임에서는 이를 확장시킨 A* 알고리즘을 많이 사용한다. A* 알고리즘은 주어진 출발 지점에서 목표 지점까지 가는 최단 경로를 찾아내는 그래프 탐색 알고리즘 중 하나이다. 하나의 시작 노드에서.. 2024. 1. 30.
UNSEEN 대비 4. C++ 주요 컨테이너 (2) (map, unordered_map) 해당 글은 다음 UNSEEN 대비 4. C++ 주요 컨테이너 (1) (array, vector, list) (tistory.com)에서 다루지 않은 나머지 컨테이너를 다루는 글입니다. 5. 맵(map) 맵(std::map)은 키(Key)와 값(value)의 쌍들을 저장하는 이진탐색트리 기반의 컨테이너이다. 이때, 키는 중복될 수 없다. 맵의 각 원소는 std::pair로 저장된다. pair는 순서쌍을 가리키는데 여기서는 pair.first에 key가, pair.second에 value가 저장된다. C++에서 맵은 Key를 기준으로 자동 정렬되는데, 내부적으로는 레드블랙트리로 구현된다. 맵 생성 맵을 생성하는 대표적인 방법에는 map 로 빈 맵을 생성하거나 map(const map& x)로 기존 맵을 복사.. 2024. 1. 28.
UNSEEN 대비 4. C++ 주요 컨테이너 (1) (array, vector, list) 1. C++의 주요 컨테이너 C++에서 컨테이너란 임의 타입의 객체를 보관할 수 있는 자료형을 말한다. 개발자는 필요하다면 트리, 그래프, 연결리스트 등 원하는 스펙으로 자료구조를 구현해야 한다. 하지만 C++에서는 표준 템플릿 라이브러리(STL, Standard Template Library)에서 다양한 컨테이너를 제공하고 있기 때문에 보통 STL 컨테이너로 빠르게 원하는 기능을 구현할 수 있다. C++의 표준 템플릿 라이브러리에는 array, vector, list, map, unordered_map 등의 컨테이너가 있다. 이번 글에서는 기본적인 컨테이너 중에 대해 개요와 동작 원리를 알아보자. 2. 배열(std::array) 정의 // 헤더파일 의 선언 template struct array; st.. 2024. 1. 28.
UNSEEN 대비 3. 메모리 영역 해당 글은 UNSEEN 2기 코딩 테스트를 대비하여 정리 목적으로 적은 글입니다. 잘못된 부분이 있다면 지적해 주시면 감사하겠습니다. 3. 메모리 영역 메모리의 구조 프로그램이 실행되려면 먼저 프로그램을 메모리에 로드해야 한다. 프로그램 코드가 담고 있는 명령어와 프로그램 내에서 사용될 변수 등을 위해서 메모리가 필요하기 때문이다. 이때, 프로그램이 메모리에 탑재되어 실제로 실행되고 있는 것을 가리켜 프로세스라 부른다. 컴퓨터의 운영체제는 프로그램 실행을 위해 다양한 메모리 공간을 제공한다. 프로그램이 운영체제로부터 할당받는 메모리 공간은 대표적으로 4가지로 분류할 수 있다. 코드(code) 영역 메모리에 실행할 프로그램의 코드가 저장되는데 이를 메모리에서 코드 영역이라 부른다. 텍스트 영역이라고도 부른.. 2024. 1. 25.