전체 글 62

single linked list 구현

node 이용한 싱글 링크드 리스트 구현 :) 처음 실행 했을 때 버그도 안 나고 누수도 안 나서 살짝 당황했지만 잘 이해해서 다행이당! // single linked list class template class singleLinkedList { public: // push back element! void push_back(T element) { node* newNode = new node(element); if (head == nullptr) { head = newNode; tail = newNode; } else { tail->next = newNode; tail = newNode; } ++size; } // find element at selected index node* findNode(int..

queue 구현

stack과 비슷하게 동적으로 메모리하는 부분은 stl의 vector나 deque이용해서 쓰면 되지만 난 그냥 미리 할당된 메모리 공간에서 queue 간단하게 구현함! queue는 stack과 다르게 들어온 순서대로 데이터가 삭제된다! template class queue { public: // push element void Push(T element) { queueContainer[bottom] = element; ++bottom; } // pop top element void Pop(void) { if (bottom > top) { ++top; } } // return top element T Top(void) const { return queueContainer[top]; } // return b..

stack 구현

메모리를 동적으로 관리하거나 STL의 실제 스택처럼은 구현 안 함! 간단하게 어떤 원리로 동작하는지만 테스트하기 위한 코드임 :3 stack은 먼저 들어온 값이 가장 마지막으로 삭제 되고 가장 마지막에 들어온 값이 먼저 삭제되는 구조임 ;) #include using namespace std; template class stack { public: // push element void Push(T element) { stackContainer[size] = element; ++size; } // pop top element void Pop(void) { if (size > 0) { --size; } } // return top element T Top(void) const { return stackCon..

UE4 4.24에서 4.25로 버전 업 이슈

4.24에서는 패키징하기 위해서 Codeworks for Android 1R7u1와 NDK r14b를 이용했었음 근데 4.25로 버전 업을 하면서 더 이상 사용이 불가능해지고 Android Studio와 NDK r21을 써야 함 Android Studio를 설치하기 전엔 꼭 기존 Codeworks와 NDK 폴더 삭제해줘야 함 걍 C 디렉토리에 있는 NVPACK 폴더 삭제 권장 관련 언리얼 공식 문서 : https://www.unrealengine.com/en-US/tech-blog/updates-to-required-setup-for-android-ndk-21-in-unreal-engine-4-25

게임에서의 청킹 최적화(Optimizing game for chunked downloading)

중규모 이상의 게임을 패키징할 땐 게임 컨텐츠를 여러 개의 청크로 나눠 초반 다운로드 사이즈를 줄이고 패치 속도를 더 올리고 로딩 시간을 줄인다. PC랑 콘솔에선 큰 크기의 청크를 소수 만드는게 좋고 모바일 환경에선 작은 크기의 청크를 여러 개 만드는 게 좋다. 언리얼 엔진 4에선 청킹을 하고 분석과 최적화를 위한 툴들을 제공한다. 청킹 셋업 청크란 독립적으로 배포가 가능하고 다운로드를 할 수 있는 에셋 묶음이다. 프로젝트는 기본적으로 모든 게임의 컨텐츠를 포함하고 있는 Chunk0 이라고 부르는 한 개의 청크를 갖고 있다. 에셋들을 여러 개의 청크로 분리한 후엔 엔진은 각 청크마다 독립적으로 .pak파일을 생성해준다. 청크를 만들 땐 AssetManager을 쓰는 방법이 가장 대표적인 방식이다. 에셋을..

C++ 프로그래밍 : 런타임 타입 정보(Runtime Type Information)

C++ 프로그래밍 런타임 타입 정보(Runtime Type Information) 클래스 사이 타입 변환에 대해 두 번에 걸쳐 자세한 소개를 했다. 간단히 떠올려보면 강제 타입 변환을 비롯해 static_cast, reinterpret_cast에 관련한 성질을 중점적으로 알아봤다. 몇몇 개발자는 C++ 타입 변환 중에 자바(Java)에 필적할만한 RTTI(Runtime Type Information)를 추가적으로 소개해주면 좋겠다는 의견을 제시했다. 비록 RTTI가 C++ 개발에 많이 사용되는 편은 아니지만 C++이 현대화하고 있는 추세에 맞춰 RTTI를 한번쯤 이해하고 가는 것은 많은 도움이 될 수 있을 거라는 생각이 들었다. 따라서 이번 글에서는 C++의 RTTI를 자세히 알아보겠다. 1. 다이나믹 ..

공부/C++ \C# 2020.06.03

[ DirectX11 3D Project ] 카메라 줌인, 줌아웃, 회전

지난번엔 카메라 이동을 만들었고 이번에는 카메라 줌인과 줌아웃, 그리고 회전을 만들어보겠습니다! 카메라의 회전과 줌은 다이렉트 인풋 객체의 마우스 이동값과 버튼 입력값을 이용해서 만들겠습니다. SystemClass가 다이렉트 인풋 객체를 가지고 있어서 마우스 동작에 대한 처리를 할 함수를 SystemClass에 추가합니다. 함수 이름은 MouseInput이라고 짓겠습니다. MouseInput 함수는 Run 함수에서 프레임마다 호출합니다. MouseInput 함수에서는 마우스의 이동값과 버튼 입력값을 가지고 있는 DIMOUSESTATE 구조체를 인자로 넘겨주면서 GraphisClass의 MouseInput을 호출합니다. void SystemClass::MouseInput() { DIMOUSESTATE mo..