[Animation] 걷기 / 뛰기 (Walk / Sprint)
·
Unrael
1. 애니메이션 구현 준비물총 25가지 애니메이션 시퀀스가 필요하다.Idle(1가지)Walk (6가지)JogSlow (6가지)Jog (6가지)Sprint (8가지) 2. 애니메이션 구현 방법상태 머신(State Machine)을 사용한다.걷기와 달리기는 캐릭터의 기본 애니메이션에 속한다.블렌드 스페이스를 이용한다. 플레이어의 이동 방향과 속력에 따른 걷기 및 달리기 애니메이션을 재생한다. 3. 상태 머신 구현Standing 상태는 걷기 및 달리기 상태를 모두 포함한다.Standing 상태로 애니메이션이 시작한다. 3.1 Standing 상태블렌드 스페이스를 이용하여 걷기 및 달리기 애니메이션 시퀀스가 재생된다.Direction은 이동 방향에 대한 각도(Degree)값이다.GroundSpeed는 이동 속력..
[Animation] 웅크려 이동하기 (Crouching)
·
Unrael
1. 애니메이션 구현 준비물총 9가지 애니메이션 시퀀스가 필요하다.웅크리기웅크리며 상하좌우 이동 (4가지)웅크리며 대각선 이동 (4가지) 2. 애니메이션 구현 방법상태 머신(State Machine)을 사용한다.웅크려 이동하기(Crouching)는 캐릭터의 기본 이동에 속한다.블렌드 스페이스를 이용한다. 플레이어가 웅크리기 키(Left Ctrl)을 눌렀을 경우 앉기 애니메이션(Crouch_Idle)을 재생한다.웅크린 상태에서 이동할 경우 이동 방향(Direction)에 따라 상하좌우, 대각선 애니메이션을 재생한다 3. 상태 머신 구현웅크리기 애니메이션은 캐릭터가 공중, 물 속이 아닌 땅 위에 서있는 상태에서 출발한다. 3.1 트랜지션 룰Standing -> Crouching으로 전환되는 트랜지션 룰이다..
[Gameplay] 애셋 매니저 (AssetManager)
·
Unrael/Basic
1. 애셋 매니저애셋 매니저는 싱글턴 객체이다.애셋 매니저는 생명 주기가 엔진 서브 시스템과 비슷하다.애셋 매니저는 애셋을 보관한다.애셋 매니저는 애셋을 글로벌로 관리한다. (어디서든 접근 가능하다)게임에 필요한 애셋들의 검색, 로드, 언로드 등을 제어한다. 2. 애셋 매니저는 언제 사용할까?큰 규모의 프로젝트에서 메모리 관리를 위해 로드할 애셋과 로드하지 않을 애셋을 구분할 때 사용한다.예를 들어 화이트 리스트 목록이라고 생각하면 편할 것 같다. (필요한 애셋들을 애셋 매니저에 등록해 사용한다.) 2. 애셋 매니저 구성 요소언리얼에서 애셋은 두 가지 타입으로 구분할 수 있다.Primary AssetSecondary Asset 2.1 Primary Asset기본적으로 주요 자산(PrimaryAsset)은..
[Design Pattern] 상태 패턴 (State Pattern)
·
Design Pattern
1. 상태 패턴상태 패턴은 상태가 하나의 클래스가 되어해당 상태일 때 각 동작들을 어떻게 처리할지 정의하고다른 클래스는 상태에 의존하여 각 행동(격발, 스왑, 재장전)의 역할을 위임하는 패턴을 의미한다. 2. 상태 패턴은 언제 사용될까?switch(CurrentState){ case Idle: // ... case Attacking: // ... case Reloading: // ... case Stunned: // ... case Rolling: // ... case Aiming: // ...}위는 상태 분기 방식의 코드이다.상태가 적을 경우 코드가 간단하여 빠르게 구현 가능하며디버깅 시 상태별 분기가 한 곳에 모여 있어 추적하기 쉽다. 그러나 상태가 많아질수록 swit..
[Design Pattern] 옵저버 패턴
·
Design Pattern
1. 옵저버 패턴옵저버 패턴은 어떤 객체의 상태가 변할 때이를 감시하는 다른 객체들에게 알려주는 패턴을 말한다. 2. 옵저버 패턴 구조IObserver옵저버 인터페이스Subject에서 이벤트 변경시 호출될 함수(Update)를 가지고 있다.ObserverA, B옵저버 인터페이스를 구현한 클래스이다.ISubject옵저버를 관리하는 인터페이스옵저버를 등록, 삭제, 알림 기능을 함수로 가지고 있다.ConcreteSubjectISubject를 구현한 클래스이다.옵저버들을 특정 자료구조로 포함하고 있다. (컴포지션 관계) 3. 옵저버 패턴 흐름옵저버 관리 객체를 생성한다. (ISubject)옵저버를 생성한다. (Observer)ISubject에 Observer 객체를 등록한다.ISubject에서 이벤트가 발생한다..
[Design Pattern] 커맨드 패턴 (Command Pattern)
·
Design Pattern
1. 커맨드 패턴커맨드 패턴은 명령을 추상화해서 객체로 다루는 것을 말한다.명령을 객체로 다루게 되면 이를 소유한 객체는 명령을 실행할 수 있다.명령을 객체로 다루게 되면 큐에 명령들을 담아 원할 때 꺼내 명령을 실행할 수 있다. 2. 커맨드 패턴은 언제 사용할까?게임에서 캐릭터를 선택할 때마우스 클릭과 키보드 엔터로 캐릭터를 선택할 수 있다. 서로 다른 상호작용이 동일한 기능을 수행해야할 때하나의 커맨드 객체를 소유하여 이를 실행함으로써 코드를 재사용할 수 있도록 처리할 수 있다. 3. 커맨드 패턴 구조Invoker : 커맨드를 저장하고 실행하는 객체이다.Command : 커맨드 인터페이스Command1 : 커맨드 인터페이스를 상속받은 커맨드 클래스이다. 실행할 로직을 구현한다.Receiver : 커..
[Design Pattern] 퍼사드 패턴 (Facade)
·
Design Pattern
1. 퍼사드 패턴퍼사드 패턴은클라이언트가 여러 객체를 참조하여 기능을 처리하는 것이 아닌하나의 객체를 참조하여(퍼사드 객체) 기능을 처리하는 패턴을 의미힌다. 2. 퍼사드 패턴 필요한 이유클라이언트가 외출 시 여러 가지 작업을 해야한다고 가정해보자.가스밸브 잠금 확인전등/조명 꺼짐 확인에어컨/난방기 꺼짐 확인창문 닫힘 확인클라이언트는 여러 객체를 참조하여 이를 Check, Check, Check 하는 것이 아닌외출시 (LeaveHome) 이 모든 것을 확인해주는 스마트 홈 시스템 객체(퍼사드 객체)를 하나 만들고클라이언트는 하나의 객체를 참조하여 한 번의 호출로 모든 작업을 처리하도록 구현한다. 클라이언트는 여러 객체의 세부 함수들을 알지 않아도 되며퍼사드 객체를 통해 필요한 기능들을 모두 수행할 수 있..
[Design Pattern] 프록시 패턴 (Proxy Pattern)
·
Design Pattern
1. 프록시 패턴어떤 객체에 대한 접근 제어를 프록시 객체를 만들어 위임하는 패턴을 말한다. 프록시 객체는 원본 객체를 호출 전새로운 기능(동작, 접근 제어, 로깅, 캐싱)을 추가로 수행한다. 클라이언트는 프록시 객체를 원본처럼 사용한다. 2. 프록시 패턴 예시원본 객체에 "관리자 권한"이 필요한 경우프록시 객체를 만든 뒤 원본 객체와 컴포지션 관계를 만들고관리자 권한 기능(인증, 권한 확인)을 작성하여 원본 객체를 호출하기 전 처리될 수 있도록 구현한다.#include #include #include // 인터페이스 (Subject)class IAdminService{public: virtual void PerformSensitiveOperation() = 0; virtual ~IAdminS..