분류 전체보기 146

언리얼5 - 리플렉션을 활용하는 언리얼 에디터 UI와 UI의 확장

언리얼 에디터 UI언리얼 에디터는 런타임 또는 디자인 타임에 클래스, 속성, 메서드 정보를 활용하여 자동으로 에디터의 UI를 생성하거나 확장하는 작업을 지원함.개발자가 직접 특성 클래스를 수정하지 않아도 리플렉션을 통해 자동으로 타입과 속성 정보를 읽고, 이를 바탕으로 UI를 동적으로 생성하거나 관리할 수 있음. 언리얼의 리플렉션 시스템은 UCLASS, UPROPERTY, UFUNCTION 등을 통해 타입과 속성 정보를 메타 데이터로 저장.이를 기반으로 속성 패널(Details Panel), 블루프린트 노드, UI 확장 등을 자동으로 생성할 수 있음. 1. 리플렉션을 활용한 Details Panel 생성UCLASS와 UPROPERTY를 사용해 속성을 정의하면 언리얼 리플렉션 시스템이 이를 읽고 Detai..

언리얼 5 - 게임 플로우 다듬기

게임 구성 요소의 정리게임 구성 요소의 분류세 개의 레이어를 기준으로 게임을 구성하는 다양한 기능의 구현  게임 플로우를 위해 보강할 내용죽었을 때 NPC와 플레이어의 처리이동 속도의 적용포션/스크롤 아이템의 추가 구현과 캐릭터의 적용스탯 기능 및 UI 기능의 보강 캐릭터 관련 보완사항 수정// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "Character/ABCharacterBase.h"#include "Engine/StreamableManager.h"#include "Interface/ABCharacterAIInterface.h"#..

언리얼 C++ - 정적 분기와 동적 로직, 리플렉션의 사용

정적 분기와 동적 로직의 차이 정적 분기(ex. Switch문) :모든 분기에 대해 미리 연결하고 구현해놓아야 함.플레이어가 단축키를 수정한다면? 정적 분기만으로 구현하려면 모든 키에 대해 미리 매핑을 해놔야함. 동적 로직 :런타임 중에 분기가 추가되거나 수정될 수 있음.데이터를 기반으로 값을 설정할 수 있음. JSON 파일을 읽어와 설정할 수 있음.미리 모든 동작을 연결해놓지 않아도 런타임 중에 키 설정이나 게임 진행상황에 따라 분기(행동, 동작)가 추가로 연결될 수 있는 것. 리플렉션(C#) :복잡한 동적 로직을 구현할 수 있게 됨런타임 중에 타입 정보에 접근해 조회하거나, 메서드를 동적으로 호출할 수 있게 됨→ 프로그램이 보다 동적이고 유지보수에 용이해짐 1. 유연성ex. 플러그인 시스템으로 외부 ..

언리얼C++ - Delegate를 배열에 저장해서 사용하기

언리얼에서 델리게이트는 내부적으로 복잡한 형태(함수 포인터, 바운드 객체 등)를 유지해야하기 때문에 일반적인 값 타입처럼 복사하거나 전달하는 작업이 제한적임. void Bar(FOnTakeItemDelegate Delegate);→  불가능하거나 비효율적.위 코드처럼 델리게이트를 값으로 전달하려고 하면 델리게이트를 복사하는 과정에서 문제가 발생함.이 때문에 언리얼 엔진은 주로  참조를 통해 전달하거나 별도의 래퍼를 사용하는 방식을 권장. TArray DelegateArray;DelegateArray.Add(SomeDelegate);→  마찬가지로 TArray는 내부적으로 복사 생성자와 할당 연산자를 사용해 데이터를 관리하기 때문에제대로 동작하지 않음. 결국 Delegate는 복사 가능한 타입이 아니기 때..

언리얼 5 - 헤드업디스플레이의 구현

헤드 업 디스플레이의 생성 프로세스헤드업디스플레이의 생성 과정헤드 업 디스플레이(HUD)는 플레이어 컨트롤러에 의해 제작되고 관리되는 UI 객체HUD의 구현은 위젯을 생성하고 이를 플레이어 뷰포트에 띄우는 과정으로 생성됨.이렇게 만들어진 위젯은 자신을 소유한 플레이어 컨트롤러에 접근할 수 있음. 유저 인터페이스 - 위젯 블루프린트, UserWidget으로 WBP_ABHUD 위젯 생성 간단하게 HUD 위젯 제작 UserWidget을 상속받은 ABHUDWidget 클래스 생성 위젯의 부모 클래스 변경 // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#in..

언리얼 5 - 행동트리 모델의 구현

BTTaskNode를 상속받은 BTTask_FindPatrolPos 노드 생성컴파일 에러가 발생하는데, 행동 트리 모듈을 추가하려면 AI에 관련된 모듈을 추가해줘야함."NavigationSystem", "AIModule", "GameplayTasks"  // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "BehaviorTree/BTTaskNode.h"#include "BTTask_FindPatrolPos.generated.h"/** * */UCLASS()class ARENABATTLE_API UBTTask_FindPatrolPos : ..

언리얼5 - 행동트리 모델의 이해

행동 트리 모델 개요행동 트리(Behavior Tree)의 역사2004년 개발사 번지의 헤일로2에서 인공지능을 설계하는데 사용됨.2005 GDC에서 발표 : "Handling Complexity in the Halo 2 AI"우선순위와 트리 구조를 사용해 인공지능을 설계하는 기법게임 산업에서 개량해 널리 사용되고 있음. 행동 트리 모델의 장점FSM이 가지고 있던 문제를 해결하는 새로운 게임 인공지능 모델의 수립.행동 크리 모델의 장점모듈화가 잘 되어 있어 확장이 자유로움트리를 기반으로 계층화가 잘 되어있어, 복잡한 인공지능 모델을 쉽게 설계할 수 있음다이어그램으로 인공지능 모델을 효과적으로 표현할 수 있음제공되는 여러 편리한 부가 기능을 활용해 다양한 상황에 대해 손쉽게 제어할 수 있음. 행동 트리 모델..

언리얼 5 - 게임 데이터 관리

데이터 기반의 게임 시스템 구축csv파일을 언리얼에서 Import할 수 있음.동일한 이름의 속성을 가진 구조체가 필요. GameData 폴더를 만들고 ABCharacterStat.h 이라는 헤더파일(구조체) 생성 엑셀 데이터의 임포트DataAsset과 유사하게 FTableRowBase를 상속받은 구조체를 선언엑셀의 Name 칼럼을 제외한 칼럼과 동일하게 UPROPERTY 속성을 선언엑셀 데이터를 csv로 익스포트한 후 언리얼 엔진에 임포트#pragma once#include "CoreMinimal.h"#include "Engine/DataTable.h"#include "ABCharacterStat.generated.h"USTRUCT(BlueprintType)struct FABCharacterStat : ..

언리얼 5 - 무한맵의 제작

스테이지 기믹의 설계스테이지 기믹 기획스테이지는 플레이어와 NPC가 1:1로 겨루는 장소스테이지는 총 4개의 상태를 가지고 있으며 순서대로 진행READY : 플레이어의 입장을 처리하는 단계FIGHT : 플레이어와 NPC가 대전하는 단계REWARD : 플레이어가 보상을 선택하는 단계NEXT : 다음 스테이지로 이동을 처리하는 단계무한히 순환하는 구조로 설계 스테이지 준비 단계스테이지 중앙에 위치한 트리거 볼륨을 준비플레이어가 트리거 볼륨에 진입하면 대전 단계로 이동 스테이지 대전 단계플레이어가 나가지 못하게 모든 문을 닫고 대전할 NPC를 스폰NPC가 없어지면 보상 단계로 이동 스테이지 보상 선택 단계정해진 위치의 4개의 상자에서 아이템을 랜덤하게 생성상자 중 하나를 선택하면 다음 스테이지 단계로 이동 다..

언리얼5 - 아이템 시스템

InfinityBladeWeapons 애셋 Import 트리거 박스의 설정트리거 박스의 구현 아이템 구현을 위해 루트에 트리거를 설정하고 자식에 메시 컴포넌트를 부착이펙트는 기본 값으로 비활성화 상태로 두고 오버랩  이벤트 발생 시 발도되도록 설정이펙트 종료 시 액터가 제거되도록 설정Actor를 상속받은 ABItemBox 클래스 생성 사용한 MeshComponent의 주소는 Environment - Props의 박스,ParticleSystem의 주소는 Effect의 Chest Open 파티클 // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#inclu..

반응형