전체 글

[Unreal_블루프린트]#32_AI Patrolling Path using Spline Unreal 블루프린트 개발 중 "AI" 구현을 진행합니다. "블루 프린트" 활용에 대한 내용입니다. Summary Spline 컴포넌트 : 임의의 Actor에 추가하고 World에 AI가 Patrolling을 수행할 Path를 그려줍니다. Patrol Component : 해당 Actor를 멤버로 갖는 컴포넌트들 별도로 생성하고 세부 사항을 구현합니다. BTTask_Patrol : AI의 Patrolling을 BT에서 실행합니다. BP_PatrollingPath 1. BP_Patrolling Path 2. Spline Wolrd에 배치된 흰색 선이 Spline입니다. Spline 특성에 "Closed Loop"을 ..
[Unreal_블루프린트]#31-3_Environmental Querying System(EQS) Unreal 블루프린트 개발 중 "Behavior Tree" 구현을 진행합니다. "블루 프린트" 활용에 대한 내용입니다. Goal BTService_Around : AI의 상태에 따라서, Behavior Key(상태 열거형) 값을 변경합니다. BTService_StrafeAround : Behavior Key::Strafe 일 때, 실행되는 BTService입니다. BTService_StrafeAround::GetStrafeQuery는 AI : Player의 거리에 따라서 EnvQuery_Left or Right 수행 여부 결정 GetStrafeQuery 함수의 반환 EnvQuery를 최종적으로 실행시킵니다..
[Unreal_블루프린트]#31_Environmental Querying System(EQS) Unreal 블루프린트 개발 중 "Behavior Tree" 구현을 진행합니다. "블루 프린트" 활용에 대한 내용입니다. 목표 AI가 Player 기준으로 "왼쪽" 혹은 "오른쪽"으로 비켜 지나갈 위치를 구현합니다. 이때, 기준이 될 위치 혹은 Actor를 EnvQueryContext로 생성해서 재료로 삼고, 최종 목표 위치를 찾아보겠습니다. EnvQuery_Context 1. EnvQuery_Context_StrafeLeft 종합적으로, AI가 Player를 바라보는 방향을 기준으로 "왼쪽" 방향으로 특정 거리만큼 떨어진 위치를 구합니다. 2. EnvQuery_Context_StrafeRight EnvQuer..
#1. 개념 1. static 키워드static 키워드는 변수 혹은 함수를 내부 링킹을 통해 정의하기 위해 사용됩니다. 더불어, static으로 정의한 변수 혹은 함수는 메모리 구조의 Data 영역에 저장되어 프로그램의 시작과 함께 메모리가 할당되며, 프로그램의 종료 시점에 해제됩니다. static 키워드는 어떤 함수 내 static 변수, 어떤 클래스 내 static 데이터 멤버, 그리고 static 멤버 메서드에 사용됩니다. 2. 링킹C++ 환경에서 소스 파일이 컴파일 되면 목적 파일이 생성됩니다. 그리고, 서로 다른 목적 파일들을 '링킹' 단계에서 하나로 묶어 주어 하나의 실행 파일이 생성됩니다. 이때, 변수나 함수의 이름을 기준으로 목적 파일 안에서 일어나는 변수 참조 혹은 함수 호출 등이 서로 ..
[디자인 패턴] #14_서비스 중개자 패턴, Service Locator 게임 디자인 패턴 중 "디커플링 패턴"에 대해 알아보겠습니다. "게임 프로그래밍 패턴"의 16 항목, "서비스 중개자"에 해당하는 내용입니다. Overview 개요 활용 예제 널 객체 디자인 패턴 데코레이터 패턴 #1. 개요 1. 정의 서비스 중개자 패턴은 디자인 패턴 중 하나로, 다수의 서비스나 컴포넌트가 서로 통신할 수 있도록 '중개자'를 도입하는 방법입니다. 따라서, '서비스 중개자' 패턴은 객체 간의 커플링을 낮추고, 유연성을 향상하며, 유지보수성을 증가시키는데 도움이 됩니다. 2. 왜 필요한가? // 정적 서비스 클래스 AudioSystem::playSound(GUN_SHOT_SOUND); // 싱글턴 디자인 패턴 활용 A..
[Basic C++] #61_객체 풀, Obejct Pooling C++의 "디자인 효율성"에 대해 알아보겠습니다. "전문가를 위한 C"의 22 항목, "효과적인 메모리 관리"에 해당하는 내용입니다. 객체 풀링 1. 개념 객체가 필요할 때마다 직접 생성하는 것이 아니라, 시작 시점에 한 번만 생성됩니다. 필요할 때마다 객체 풀에 요청하며, 수명이 끝난 객체는 객체 풀에 되돌려 놓습니다. 즉, 객체의 생성자를 매번 필요할 때마다 호출하지 않고, 시작 시점에 미리 준비해 놓습니다. 2. 언제? 프로그램이 구동되는 동안 빈번하게 발생하는 "생성자"와 "소멸자" 호출을 피하기 위한 메커니즘. 개수가 많고, 비교적 수명이 짧은 타입의 객체들의 사용은 "객체 풀" 사용을 고려해야 합니다! 예제 1. 목표 객체들을 ..
[Unreal]#19_Custom Behavior Tree Service Unreal 개발 중 "Behavior Tree Service"에 대해 알아보겠습니다. "Simple Shooter Game"의 AI Player 개발 내용입니다. Behavior Tree Service BT_Service는 Background Task들을 실행하기 위한 노드로서, AI가 필요로 하는 정보들을 Update 합니다. UBTService_UpdateLastKnownPlayerLocation * UpdatePlaeyrLocation 네이밍을 UdpateLastKnownPlayerLocation이라 가정하겠습니다. 1. UBTService_UpdateLastKnownPlayerLocation Blackboard에서 생성한 ..
[Unreal]#18_Custom Behavior Tree Task Unreal 개발 중 "Behavior Tree Task"에 대해 알아보겠습니다. "Simple Shooter Game"의 AI Player 개발 내용입니다. BTTask_Shoot 1. BTTask_Shoot 2. UBTTask_Shoot.h // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "BehaviorTree/BTTaskNode.h" #include "BTTask_Shoot.generated.h" /** * */ UCLASS() class SIMPLESHO..
[Unreal_블루프린트]#31_Environmental Querying System(EQS) Unreal 블루프린트 개발 중 "Behavior Tree" 구현을 진행합니다. "블루 프린트" 활용에 대한 내용입니다. Environment Query Context 1. Environment Query Context 블루프린트 클래스 생성 EQS의 테스트에서 활용할 Context를 생성할 수 있습니다. 2. EnvQueryContext_Player::Provide Single Actor 간단하게, Player 객체 중 인덱스 0번에 존재하는 BP_Player 객체를 반환해줍니다. Environment Query 1. 화면 Generators는 위치 혹은 Actor를 생성하며, 가장 높은 Weight 값을 가..
[Unreal_블루프린트]#30_Behavior Tree, Tracing Unreal 블루프린트 개발 중 "Behavior Tree" 구현을 진행합니다. "블루 프린트" 활용에 대한 내용입니다. Behavior Tree 1. 세팅 [Unreal]#16_Behavior Tree Setting [Unreal]#16_Behavior Tree Setting Unreal 개발 중 "AI Controller"에 대해 알아보겠습니다. "Simple Shooter Game"의 AI Player 개발 내용입니다. Setting 1. Behavior Tree + Bloackboard 블루프린트 생성 2... webddevys.tistory.com [Unreal]#17_Behavior Tree [Unreal]#17_Beha..
Hardii2
개발 블로그