묻공러
'게임 엔진' 카테고리의 글 목록 (4 Page)

게임 엔진

게임 엔진/[코드조선] 언리얼

언리얼 Game Data - GameInstance

데이터 클래스 게임에 사용될 데이터가 여러 개체에 저장된다면각 개체 속성 간의 동기화 문제가 발생한다따라서, 게임 내에서 단 하나의 개체로 관리되는 싱글톤 패턴 객체가 필요하다언리얼 싱글톤 클래스를 사용하면 되고 엔진 초기화 때부터 게임 종료까지 유지된다 언리얼 싱글톤 클래스 언리얼에서 제공되는 싱글톤 클래스는 총 4가지 종류가 있다1. 게임 인스턴스 2. 에셋 매니저 3. 게임 플레이 관련 액터 (ex. GameMode, GameState, …) 4. 직접 프로젝트에 싱글톤을 등록한 언리얼 오브젝트 클래스 직접 등록하는 방법은 Settings > Project Settings > Engine > General Settings > Default Classes Advanced 탭에 Game Singleto..

게임 엔진/[코드조선] 언리얼

언리얼 AI - Decorator

Decorator Blackboard의 값을 기반으로 특정 Composite Task의 수행 분기를결정하는 부분으로 조건문, 조건식의 개념이다 Decorator 주의점Decorator을 사용할 때는 Notify Observer와 Observer aborts 설정에 따라결과가 달라질 수 있음을 유의해야 한다  Notify Observer Notify Observer를 On Value Change로 설정하는 경우에는해당 키 값의 변경이 감지되면, Notify Observer가 발생한다 Notify Observer를 On Result Change로 설정하는 경우에는조건식의 결과가 변경되는 경우에 Notify Observer가 발생한다 예를 들어, x > 1.0f라는 조건식을 가정하에는x가 0.8f에서 0.9f..

게임 엔진/[코드조선] 언리얼

언리얼 AI - Blackboard Key

AIController 설정BlackBoard와 Behavior Tree를 사용하기 위해서는AIController 블루프린트 클래스에 Blackboard와 BehaviorTree를 지정해야 한다또한, Blackboard Data Asset도 지정해야 한다Blackboard에서 사용할 Data들을 쉽게 관리하기 위해Blackboard Data Asset을 사용한다 Blackboard keyBlackboard에는 특정 유형의 데이터를 저장하고 이를 BehaviorTree에서 활용할 수 있다블랙보드에서 > New Key > 원하는 타입을 지정해 추가할 수 있다   Blackboard Component 연동 및 SetValue()그리고 이러한 Blackboard key를 cpp에서 활용하기 위해서는 AICont..

게임 엔진/[코드조선] 언리얼

언리얼 AI - Behavior Tree, Blackboard

FSM상태 노드들을 연결하여 인공지능을 설계하는 방식이다모든 상태 노드들에 상하 관계가 없는 수평 구조이다즉, 모든 상태 노드에서 모든 상태 노드로 전환이 가능하고 구현이 쉽다하지만, 상태 노드가 많아질수록 굉장히 복잡해지는 문제가 발생하다Behavior Tree 우선순위와 트리 구조를 사용해서 인공지능을 설계하는 방식이다상하 관계가 있는 수직 구조이다상위 상태 노드(Composite Task)들은 서브 상태 트리(Child Task)의 동작 여부를 결정한다하위 상태 노드(Child Task)들은 자신이 맡은 작업만 수행하는 구조이다적절한 규칙을 통해서 노드가 많아져도 가독성이 높다하지만, 규칙과 다양한 노드들의 용도를 알아야 해서 구현하기가 약간 까다롭다Blackboard Behavior Tree의 판..

게임 엔진/[코드조선] 언리얼

언리얼 AI - AIController

AIController폰은 플레이어 컨트롤러에 의해 수동적으로 조종된다반면, 플레이어를 제외한 나머지 폰들은 인공지능이 폰을 제어하도록 AIController를 설정해야 하고Behavior Tree 모델을 사용해서 인공지능 설계가 가능하다NavMeshNPC가 스스로 움직이기 위해 지원되는 기능 중 대표적인 것은Navigation Mesh이다Place Actors > Volumes > NavMeshBoundsVolume을 ViewPort에 배치할 수 있다기준점을 Location으로 설정하고Details > Brush Settings을 통해 NPC의 움직임 영역을 설정할 수 있다Viewport 클릭하고 P키를 누르면, 에디터에서 네비 메시 영역이 녹색으로 표시된다해당 NavMesh를 사용하려면 아래의 모듈을..

게임 엔진/[코드조선] 언리얼

언리얼 Damage Framework - TakeDamage 함수

TakeDamage() 함수 감지된 액터에 데미지를 전달하기 위한 데미지 프레임워크가 제공된다그중 대표적인 것이 AActor::TakeDamage() 함수이다TakeDamage() 함수는 총 네 개의 인자를 가진다 - DamageAmount 전달할 데미지의 양- DamageEvent 데미지의 종류- EventInstigator 공격 명령을 내린 컨트롤러- DamageCauser 데미지 전달을 위해 사용한 액터bCanBeDamaged 속성 모든 액터에는 CanBeDamaged 속성이 있다이를 false로 설정하면 캐릭터에 전달된 데미지의 결과가 모두 0이 되는 무적 상태가 된다 TakeDamage() 함수 코드 예시 // SPlayerCharacter.h...class STUDYPROJECT_API ASP..

게임 엔진/[코드조선] 언리얼

언리얼 Collision - Draw Debug (+ Console Command)

Console Command런타임 중에 디버깅용 PrintString() 함수 호출이나 디버깅용 드로잉을 자유자재로 끄고 키고자 하는 경우에 콘솔 커맨드를 활용하면 된다언리얼 에디터 > 틸드키(`)를 통해 콘솔 커맨드 입력이 가능하다  Console Command 생성우리만의 콘솔 커맨드를 만들기 위해서는아래의 코드와 같이 작성하면 되고콘솔 커맨드에 "StudyProject.ShowAttackDebug 1"을 작성해서 콘솔 변수에 1을 넣어 활용할 수 있다// SPlayerCharacter.h...class STUDYPROJECT_API ASPlayerCharacter : public ASCharacter{ ...public: static int32 ShowAttackDebug; protected: ....

게임 엔진/[코드조선] 언리얼

언리얼 Collision - 충돌 감지

콜리전 트레이싱 함수 콜리전 트레이싱을 하기 위해서는세 가지 카테고리를 함수 이름에 작성해주어야 한다ex. {처리방법}{대상}{처리설정}  처리방법 LineTrace-/BoxTrace-/SphereTrace-/CapsuleTrace-/… Sweep- Overlap-대상 Test: 무언가 감지 되었는지를 테스트 Single 또는 AnyTest: 감지된 단일 물체 정보를 반환Multi: 감지된 모든 물체 정보를 배열로 반환 처리설정 ByChannel: 채널 정보를 사용해서 감지ByObjectType: 물체에 지정된 오브젝트 타입(콜리전 채널) 정보를 사용해 감지ByProfile: 프로파일(콜리전 프리셋) 정보를 사용해서 감지캐릭터 공격의 충돌 감지 예시캐릭터의 위치에서 시선 방향으로 물체가 있는지 감지하는 ..

게임 엔진/[코드조선] 언리얼

언리얼 Collision - 충돌 설정

충돌체 제작 방법 충돌체를 설정하는 방법은 총 3가지가 있으며 아래와 같다추가적으로, 하나의 액터에는 아래의 세 가지의 충돌체를 모두 설정할 수도 있다 - Primitive Component일반적인 경우에는 루트 컴포넌트로 설정되는 프리미티브 컴포넌트(캡슐, 박스, …)가 충돌체 역할을 한다 - StaticMesh Component스태틱메시 에셋을 그대로 충돌체로 사용하는 방법으로스태틱메시를 더블클릭하면 열리는 스태틱메시 에디터에서 해당 충돌체 영역을 설정하고 확인할 수 있다스태틱메시 에셋에 콜리전을 넣으면, 비주얼과 충돌 기능을 모두 설정할 수 있다 - Physics Asset일반적으로 캐릭터의 이동은 캡슐 컴포넌트를 사용해서 처리한다하지만 특정 상황에서 캐릭터의 각 관절 효과가 적용되는 RagDoll..

게임 엔진/[코드조선] 언리얼

언리얼 Animation - Animation Notify

애니메이션 노티파이 애니메이션을 재생하는 동안 원하는 타이밍에 애님 인스턴스의 멤버 함수를 호출하는 기능이다애니메이션 노티파이는 애니메이션 시퀀스와 애니메이션 몽타주 모두 사용가능하다애니메이션 노티파이의 활용 공격 애니메이션인 경우에 특정 애니메이션 프레임에서 충돌 검사 로직을 처리해야 한다이때 애니메이션 노티파이를 활용하면 구현이 가능하다애니메이션 노티파이 실습 Notifies 섹션 빈 공간에 우클릭을 하고Add Notify를 통해 노티파이를 만들 수 있다3번 공격을 하는 경우라면, 적절한 위치에 CheckHit Notify를 3개 작성하면 된다   그리고 AnimInstance에 “AnimNotify_노티파이명()”의 멤버 함수와BroadCast할 멤버 변수를 만들어줘야 한다또한 UHT에 의해 언리얼..