[Unreal]#3_Character Animation, Animation Blend Space Unreal 개발 중 "Animation"에 대해 알아보겠습니다. "Simple Shooter Game"의 Character Class 개발 과정 중 일부입니다. Skeleton Skeleton = Animation + Meshes "Skeleton" 은 "Mesh"와 여러 가지 "Animation"으로 이루어져 있습니다 이때, "Mesh"는 "Skeleton"을 이루는 요소들이며, "Animation"은 해당 "Mesh"들로 구현하는 모션들입니다. 1. Mesh 설정 1. Component 목록 중 "Mesh Component" 선택 2. 오른쪽 Details 목록 중 "Mesh" 항목에서 "Skeletal..
[Basic C++] #55-6_함수 템플릿 C++의 템플릿 중 "함수 템플릿"에 대해 알아보겠습니다. "전문가를 위한 C"의 11 항목, "템플릿을 이용한 제네릭 코드 작성"에 해당하는 내용입니다. 함수 템플릿 일반 함수를 템플릿 화하는 방법을 알아보겠습니다! 1. 템플릿 함수 예제 static const size_t NOT_FOUND = (size_t)(-1); template size_t Find(T& val, T* arr, size_t size) { for (size_t i = 0; i < size; i++) { if (arr[i] == val) return i; } return NOT_FOUND; } 위 "Find()" 함수는 특정 값, 배열, 그리고 배열의 크기를 인자로 받아 특정 값과 일치하..
[Basic C++] #55-5_템플릿 클래스의 파생 클래스, 템플릿 클래스 상속 C++의 템플릿 중 "템플릿 클래스 상속"에 대해 알아보겠습니다. "전문가를 위한 C"의 11 항목, "템플릿을 이용한 제네릭 코드 작성"에 해당하는 내용입니다. 템플릿 클래스 상속 1. 인스턴스화 되지 않은 템플릿 원본 상속 ---> 템플릿 O 2. 인스턴스 상속 ---> 템플릿 X 인스턴스화되지 않은, 즉 원본 템플릿 클래스를 상속하는 하위 클래스는 항상 템플릿으로 작성해야 합니다. 반면에, 템플릿 클래스의 인스턴스를 상속하는 경우 하위 클래스는 템플릿일 필요가 없습니다. // 템플릿 클래스(SuperClass)의 파생 클래스(SubClass) 정의 template class SubClass : public SuperC..
[디자인 패턴] #5_싱글턴 패턴, Singleton Pattern 게임 디자인 패턴 중 "싱글턴 패턴(Singleton Pattern)"에 대해 알아보겠습니다. "게임 프로그래밍 패턴"의 6 항목, "싱글턴"에 해당하는 내용입니다. 싱글턴 패턴 오직 한 개의 클래스 인스턴스만을 갖도록 보장하고, 이에 대한 전역적인 접근점을 제공한다. - GoF의 디자인 패턴 81pg "싱글턴 패턴"은 오직 한 개의 클래스 인스턴스만이 존재하도록 보장하고, 이에 대한 전역적인 접근을 허용하는 디자인 패턴입니다. 자세한 내용을 살펴보도록 합시다! 1. 오직 한 개의 인스턴스만 갖도록 보장 먼저, "싱글톤 패턴"의 두 가지 특징 중 첫 번째 특징을 살펴보겠습니다. "오직 한 개의 클래스 인스턴스만을 보장" 하는 "싱글턴 패..
[Programmers 알고리즘, C++]#Level 1_키패드 누르기 Programmers 알고리즘 문제 풀이, Level1_키패드 누르기 STL 컨테이너 활용과 규칙을 찾아 풀이하는 문제입니다. 문제 풀이 먼저, "1 - 4 - 7"은 "L", 그리고 "3 - 6 - 9"는 "R"이 확정입니다. 따라서, C++가 제공하는 STL 컨테이너 중 "map"을 활용해봤습니다. key 는 키패드의 숫자로 설정하고, 미리 확정된 손을 value로 하였습니다. 예를 들면, {1, "L"}, {3, "R"}, ... etc 물론, "2 - 5 - 8 - 0"은 정해진 손이 없기 때문에 "U(Undefined)"로 value를 저장합니다. 더불어, '*', '0', 그리고 '#'은 편의상 각각 10, 11, 그리고 ..
[Programmers 알고리즘, C++]#Level1_크레인 인형 뽑기, 2차원 배열, stack, STL 컨테이너, adjacent_find() Programmers 알고리즘 문제 풀이, Level1_크레인 인형뽑기 2차원 배열의 개념과 STL 컨테이너 활용 문제 문제 풀이 문제는 스택 자료구조에대한 이해와 2차원 배열의 활용을 요구합니다. 먼저, 주어진 2차원 배열에서 탐색을 진행하고, 스택에 차례대로 "push_back" 합니다. 간단하게 stack(바구니)에 저장된 이전 항목과 현재 저장할 항목을 비교할 수 있지만, STL 알고리즘을 활용해보고자 "adjacent_find"를 사용해보겠습니다! 굉장히 간단합니다. 바로 코드를 살펴보겠습니다. * 주의할 점은 "N x N" 격자 밑에 있는 숫자는 ..
[Basic C++] #55-4_템플릿 클래스의 특수화, 특정 타입에 대한 템플릿 클래스 C++의 템플릿 중 "템플릿 클래스 특수화"에 대해 알아보겠습니다. "전문가를 위한 C"의 11 항목, "템플릿을 이용한 제네릭 코드 작성"에 해당하는 내용입니다. 템플릿 클래스의 특수화 template class MyClass { //... }; C++는 특정 타입에 대해서만 특별한 템플릿 클래스 정의를 사용할 수 있도록 하고 있습니다! 앞서 살펴봤던 "템플릿"의 구현의 목표는 "타입"에 대한 제한 없이 코드 작성이 가능한 제네릭 프로그래밍이었죠! 이때, "템플릿 특수화"라는 개념은 "특정 타입"에 대하여 다른 타입들과 다르게 "특별한 정의"를 적용하고자 하는 것입니다. 정리하자면, "특정 타입"에 대한 "특별한 ..
[Basic C++] #55-3_템플릿 메서드, 이중 템플릿 C++의 템플릿 중 "템플릿 메서드"에 대해 알아보겠습니다. "전문가를 위한 C"의 11 항목, "템플릿을 이용한 제네릭 코드 작성"에 해당하는 내용입니다. 템플릿 메서드 MyClass myClass1; MyClass myClass2; myClass1 = myClass2; // 에러 발생!! MyClass myClass2(myClass1); // 에러 발생!! 앞서 살펴본 템플릿의 내용에 따르면 "MyClass "와 "MyClass "은 클래스 명은 같지만, 서로 다른 타입을 갖게 되어 다른 객체입니다! 따라서, 서로 간의 대입 연산 혹은 복제 연산이 불가능하겠죠... 하지만! C++는 클래스의 개별 메서드의 템플릿화를 지원합니다! 그러므로, ..
[Basic C++] #55-2_템플릿 파라미터 C++의 템플릿 중 "템플릿 파라미터"에 대해 알아보겠습니다. "전문가를 위한 C"의 11 항목, "템플릿을 이용한 제네릭 코드 작성"에 해당하는 내용입니다. 템플릿 파라미터 template 템플릿 코드를 작성하기위해 우리는 ""안에 파라미터 목록들이 필요합니다. 이러한 파라미터 목록은 함수나 메서드의 파라미터 목록과 비슷합니다. 원하는 개수만큼 작성 할 수 있고, 꼭 "타입"이 아니어도 됩니다! 타입이 아닌(non-type) 템플릿 파라미터 template class MyClass { public: MyClass(); virtual ~MyClass(); void setElementAt(size_t x, size_t y, const T& inElement)..
[디자인 패턴] #4_프로토타입 패턴, Prototype Pattern 게임 디자인 패턴 중 "프로토타입 패턴(Prototype Pattern)"에 대해 알아보겠습니다. "게임 프로그래밍 패턴"의 5 항목, "프로토타입"에 해당하는 내용입니다. 프로토타입 패턴 원형(Prototype)이 되는 인스턴스를 사용해서 객체의 종류를 명시하고, 이렇게 만든 견본을 복사해서 새로운 객체를 생성합니다. - GoF의 디자인 패턴 - "프로토타입 패턴"은 원형이되는 인스턴스를 하나 만들어 새롭게 생성할 객체들의 프로토타입으로 사용하는 디자인 패턴을 말합니다. 역시 이해를 위해 예제를 살펴보겠습니다. Monster + Sapwner, 몬스터와 스포터 class Monster { //... }; 1. Ghost 몬스터 cl..