전체 글

[Unreal_블루프린트]#21_Interface, Combo 관련 클래스 Unreal 블루프린트 개발 중 "Interface"에 대해 알아보겠습니다. "블루 프린트" 활용에 대한 내용입니다. Interface 1. 상속 계층 디자인 Weapon ( 무기 혹은 공격 방식 ) : 최상위 클래스, 인터페이스 클래스 Character의 공격 방식에 따라서 크게 검을 휘두르는 "Sword" 공격 방식과 "Wizard(마법)" 공격 방식을 구현했습니다. 우리는 OOP를 위해 상위 클래스 혹은 인터페이스 클래스 "Weapon (공격 무기)"를 구현해보겠습니다. 잘 알다시피, C++의 인터페이스 클래스는 자세한 "구현"이 없는 순수 가상 메서드를 정의해두어 이를 상속하는 하위 클래스들이 순수 가상 메서드를 직접 오버..
[디자인 패턴] #12_Component Pattern, 컴포넌트 패턴 게임 디자인 패턴 중 "디커플링 패턴"에 대해 알아보겠습니다. "게임 프로그래밍 패턴"의 14 항목, "컴포넌트"에 해당하는 내용입니다. 개념 1. 의도 한 객체가 여러 분야의 기능들을 "커플링" 없이 다룰 수 있도록 합니다. 복잡한 상속 관계를 통해 여러 기능들을 상속받아 사용하기보다, 각 기능 별 컴포넌트 클래스를 작성하고 해당 클래스 객체를 데이터 멤버로 두어 "디커플링"합니다. 패턴 1. 컴포넌트 패턴 한 객체에 필요한 다양한 분야의 기능들을 별도의 컴포넌트 클래스로 옮겨놓고, 이를 필요로 하는 객체는 단순히 "컴포넌트들의 컨테이너" 역할을 합니다! 2. 왜 필요한가? class Player { public: Player():..
[Basic C++] #58_포인터, 배열과 포인터, 포인터 연산 C++의 "포인터"에 대해 알아보겠습니다. "전문가를 위한 C"의 22 항목, "효과적인 메모리 관리"에 해당하는 내용입니다. 포인터 개념 1. 포인터? 포인터는 단순히 메모리 위치를 계산하는 주 솟값입니다. 2. "*"를 활용한 역 참조 "*" 연산자를 활용하면 포인터를 역 참조할 수 있습니다. 여기서 역 참조란 단순히 포인터가 가리키는 메모리 주소에 들어있는 값을 가져올 수 있습니다. 3. "&"를 활용한 참조 "&" 연산자를 활용하면 어떤 값이 저장되어 있는 메모리의 주솟값을 가져옵니다. 보통 포인터 변수에 "&a" 값을 넣어줌으로써 "a"라는 변수의 메모리 주소 값을 넘겨줍니다. 배열과 포인터 1. 배열 == 포인터, but ALL..
[Basic C++] #57_동적 메모리 C++의 "동적 메모리"에 대해 알아보겠습니다. "전문가를 위한 C"의 22 항목, "효과적인 메모리 관리"에 해당하는 내용입니다. 동적 메모리 1. 메모리 구조 1. 코드 영역 : 컴파일된 프로그램이 저장되는 영역, ready-only! 2. 데이터 영역 : 전역 변수 및 정적 변수가 저장되는 영역 3. 힙 영역 : 동적으로 할당된 변수를 저장하는 영역 4. 스택 영역 : 함수 매개변수, 지역 변수 및 기타 함수 관련 데이터가 저장되는 영역 2. Heap 정적 메모리와 반대로 힙은 동적 메모리 할당에 사용되는 공간입니다. 동적 메모리 할당이란, 프로그램 실행 중에 메모리 공간을 할당받는 것을 의미하며, 프로그램의 종료와 함께 해제해주어 운영체제에 반납해야 합니다..
[디자인 패턴] #11_타입 객체, Type Object 게임 디자인 패턴 중 "타입 객체"에 대해 알아보겠습니다. "게임 프로그래밍 패턴"의 13 항목, "타입 객체"에 해당하는 내용입니다. 개념 1. 타입 객체 클래스 하나를 인스턴스 별로 다른 객체형으로 표현하며, 앞으로 추가할 새로운 클래스들을 유연하게 만들 수 있게 합니다. 2. 왜 필요한가? #include using namespace std; class Monster { public: virtual ~Monster(); virtual string getAttack() = 0; protected: Monster(int initialHealth):health(initialHealth){} private: int health; }; class Dr..
[Unreal]#14_AI controller 생성 및 세팅 Unreal 개발 중 "AI Controller"에 대해 알아보겠습니다. "Simple Shooter Game"의 AI Player 개발 내용입니다. AI Controller 클래스 1. AI Controller 클래스 생성 1. 우 클릭 -> 새로운 C++ 클래스 생성 2. 모든 클래스 -> AIController를 부모 클래스로 설정 2. C++ 클래스를 상속하는 블루프린트 클래스 생성 1. 우 클릭 -> 블루 프린트 클래스 생성 2. 부모 클래스로 앞서 생성한 AI 클래스(C++)를 부모 클래스로 설정합니다. 3. Auto Possess AI 지정 1. Character 블루프린트 에디터 창 2. Pawn 탭에 있는 "Auto Posses..
[Unreal_블루프린트]#20_Magical Attack Unreal 블루프린트 개발 중 "Wizard Mode"에 대해 알아보겠습니다. "블루 프린트" 활용에 대한 내용입니다. Fire Ball 1. Hand Fire Ball 블루프린트 생성 Hand Fire Ball은 Player의 Combat Mode가 "Wizard"일 때 장착하는 일종의 Actor입니다! 2. Fire Ball 블루프린트 생성 Fire Ball은 무기로써 활용됩니다! 3. Skeleton에 Socket 추가 같은 Particle System 템플릿이지만, 장착 용(Hand_Fireball)과 투척 용(Throw_Fireball)으로 구분합니다! 4. 투척 용 Fireball의 Use Local Space 해제 투척 용 Fire..
[Basic C++] #56_cctype, 대문자+소문자 확인 C++의 라이브러리 중 "cctype"에 대해 알아보겠습니다. cctype 헤더가 제공하는 소문자+대문자 판별 함수에 대한 내용입니다. isdigit, isupper, islower, isspace 1. 헤더 #include 2. 코드 #include #include #include using namespace std; int main() { string str = "aBF c12"; cout
[Unreal_블루프린트]#19_Wizard Animation Unreal 블루프린트 개발 중 "Wizard Mode"에 대해 알아보겠습니다. "블루 프린트" 활용에 대한 내용입니다. Wizard Animation 1. Wizard 관련 State Machine 생성 1. Animation Blueprint 내부 Anim Graph에서 상태 기계 추가 2. Entry -> Wizard 애니메이션 Blend Space 2. Unarmed Sword 상태 기계 수정 1. Jump 관련 상태들을 별도의 "Jump" 상태 기계로 분리합니다. 2. Combat Type(Unarmed, Sword, Wizard)에 상관없이 Jump를 수행할 수 있도록 합니다. 3. Cache 포즈 생성 1. 기존의 Un..
[Unreal_블루프린트]#18_Combat Style, Sword Mode, Wizard Mode Unreal 블루프린트 개발 중 "Combat Style"에 대해 알아보겠습니다. "블루 프린트" 활용에 대한 내용입니다. Combat Style 열거형 1. 열거형 생성 2. 열거형 선언 1. Unarmed : 비 무장 상태 2. Sword : Sword로 무장한 상태 3. Wizard : Wizard 모드로 무장한 상태 Refactoring "Sword Event" 1. Sword Event 수정 1. Combat Type 열거형의 스위치 노드 현재 무슨 Combat Type 상태를 갖고 있냐에 따라서, Equip 입력 액션(칼을 뽑는 액션)의 방향이 달라집니다. 2. Equip Sword 이벤트 호출..
Hardii2
개발 블로그