본문 바로가기

전체 글659

언리얼엔진5 Multiplay Plugin Create ▣ Plugins 개념 플러그인(Plugin)은 언리얼 엔진에서 특정 기능을 추가하거나 확장할 수 있도록 만든 독립적인 모듈입니다. 플러그인은 프로젝트에 필요한 특정 기능을 활성화하거나, 성능을 향상시키는 역할을 합니다. 플러그인은 언리얼 엔진의 기능을 확장하는 "추가 기능"입니다. 기본 엔진 기능 외에 온라인 기능, AI, VR, 멀티플레이어, 물리 엔진, 커스텀 렌더링 기능 등을 추가할 수 있습니다. ▣ 플러그인의 역할 예시 온라인 기능 (Steam, EOS (Epic Online Services)) 추가 → OnlineSubsystem, OnlineSubsystemSteam AI 기능 강화 → AIModule, BehaviorTreeEditor VR(가상현실) 기능 추가 → SteamVR, Ocul.. 2025. 2. 19.
언리얼엔진5 Session Join ▣ 코드 설명 - UWorld* World = GetWorld(); GetWorld() 함수는 현재 캐릭터가 속한 UWorld 객체를 반환합니다. UWorld는 게임의 맵과 관련된 정보를 포함하는 핵심 클래스입니다. World 변수를 통해 현재 실행 중인 게임의 환경을 참조할 수 있습니다. - if (World) World가 nullptr이 아니라면, 즉, 유효한 UWorld 객체라면 다음 동작을 수행합니다. nullptr이면 아무 동작도 하지 않도록 안전하게 처리합니다. - World->ServerTravel(FString("/Game/ThirdPerson/Maps/Lobby.Lobby?listen")); ServerTravel 함수는 서버가 새로운 맵으로 이동하도록 만듭니다. "/Game/ThirdP.. 2025. 2. 18.
언리얼엔진5 Session Join Setup ▣ 코드 상세 설명 UFUNCTION(BlueprintCallable) void JoinGameSession(); UFUNCTION(BlueprintCallable)을 추가하여 블루프린트에서도 호출 가능하도록 설정 현재 온라인에서 사용 가능한 게임 세션을 검색하고, 참가하는 역할을 하는 함수 ▣void OnFindSessionsComplete(bool IsWasSuccessful); 세션 검색이 완료되었을 때 호출되는 콜백 함수  IsWasSuccessful이 true이면 세션 검색 성공, false이면 검색 실패 JoinGameSession()을 실행하면, 온라인에서 참여 가능한 세션을 검색하고, 그 결과를 OnFindSessionsComplete()에서 처리 ▣ FOnFindSessionsComple.. 2025. 2. 15.
언리얼엔진5 Create Session ▣ bInitServerOnClient=true란? bInitServerOnClient=true는 Steam Online Subsystem에서 클라이언트가 직접 서버를 호스팅 할 수 있도록 설정하는 옵션입니다. 즉, 전용 서버(Dedicated Server) 없이 클라이언트가 자체적으로 멀티플레이어 세션을 만들고, 다른 플레이어를 초대할 수 있도록 합니다. ▣ 언제 bInitServerOnClient=true를 사용해야 할까? 호스트 플레이어(클라이언트)가 직접 세션을 만들고 다른 플레이어를 초대하는 경우일반적인 P2P 멀티플레이 게임에서는 플레이어 한 명이 세션을 생성하고 다른 플레이어가 참가하는 방식이 일반적입니다. 예를 들어, 로컬에서 방을 만들고 친구를 초대하는 Steam 멀티플레이 게임이라면 b.. 2025. 2. 14.
언리얼엔진5 Online Subsystem Steam Connection ▣ TSharedPtr OnlineSessionInterface; IOnlineSession을 스마트 포인터(TSharedPtr)로 관리하여 세션 인터페이스를 안전하게 사용. ESPMode::ThreadSafe를 사용하여 멀티스레드 환경에서도 안전하게 공유할 수 있도록 설정. ▣  멀티스레드(Multithreading)란 하나의 프로그램(프로세스) 내에서 여러 개의 작업(스레드, Thread)을 동시에 실행하는 기술을 의미합니다. ▣  스레드(Thread)란? 스레드는 프로세스 내에서 실행되는 작은 작업 단위. 하나의 프로그램(프로세스)은 여러 개의 스레드를 가질 수 있음.▣  멀티스레드란? CPU의 여러 코어를 활용하여 여러 작업을 동시에 실행하는 방식. Unreal Engine 같은 게임 엔진에서는 .. 2025. 2. 13.
언리얼엔진5 Online Subsystem Steam Setting ▣ C++ Platform으로 프로젝트를 생성하고 Online Subsystem Steam 플러그인을 설치합니다.   ▣ build.cs에서 OnlineSubsystemSteam, OnlineSubsystem을 추가합니다.Unreal Engine에서 Online Subsystem Steam을 사용하려면 Build.cs 파일에 관련된 모듈을 추가해야 합니다.이는 Unreal Build System(UBT)이 컴파일 시 필요한 모듈을 포함하도록 지시하기 위함입니다.  ▣ 프로젝트 폴더에서 Config 폴더에 들어가서  DefaultEngine.ini  파일을 선택합니다.    ▣ APIhttps://dev.epicgames.com/documentation/ko-kr/unreal-engine/online-su.. 2025. 2. 13.
언리얼엔진5 c++ Multiplay test ▣ Default Level과 Lobby Level을 생성합니다.   ▣ Player Blueprint에서 1번 키를 눌렀을 때, 2번 키를 눌렀을 때에 대한 노드를 완성합니다.  ▣ Options 옵션이란? 역할: 레벨이 로드될 때 추가적인 설정이나 명령행 옵션을 전달하는 문자열입니다. 예를 들어, "open MyMap?listen"와 같이 사용하면 MyMap을 로드하면서? listen 옵션도 함께 적용됩니다. ▣ 사용 방식: Open Level (by Name) 노드에서 Level Name과 함께 Options 입력란에 옵션 문자열을 넣어주면, 엔진은 이를 레벨 로딩 명령에 추가하여 처리합니다. ▣ 왜 Options에 listen을 넣어야 하는가? 리슨 서버 모드 지정: listen 옵션은 현재 게임.. 2025. 2. 11.
언리얼엔진5 c++ virtual, override ▣ 부모 클래스에서 virtual을 사용하면 자식 클래스에서 재정의(Override) 가능 virtual을 사용하지 않으면 부모 클래스의 함수만 호출됨 ▣ override 키워드는 부모의 가상 함수를 정확히 재정의(Overriding)하는지 확인하는 역할을 합니다.   ▣ 추상 클래스(Abstract Class)를 활용하여, 강제적으로 자식 클래스에서 함수 재정의하도록 만듭니다. 2025. 2. 8.
언리얼엔진5 c++ Class, 생성자, 기본멤버함수 ▣ 클래스 (Class)클래스는 객체를 생성하는 템플릿(설계도)이다. 멤버 변수(속성)와 멤버 함수(기능)로 구성됨. 생성자(Constructor)를 이용해 멤버 변수를 초기화할 수 있음.      ▣ 생성자(Constructor)가 가장 먼저 실행됩니다.  ▣ BeginPlay()가 게임이 시작될 때 한 번 호출됩니다. ▣ Tick(float DeltaTime)이 프레임마다 실행되며 메시지가 출력됩니다. ▣ 소멸자(Destructor)가 실행되며 객체가 메모리에서 해제됩니다.  ▣ 상속하여 자식 클래스를 활용하여 부모클래스 함수를 호출해서 사용 가능 2025. 2. 8.
유니티 LOD Group ▣ LOD Group 컴포넌트를 관리할 빈오브젝트를 생성하고 컴포넌트를 추가합니다.   ▣ LOD Group컴포넌트에 있는 빈오브젝트 안에 여러 모양에 오브젝트를 추가합니다.   ▣ LOD Group에서 LOD 0, LOD 1, LOD 2 등 레벨마다 Renders를 하나씩 추가합니다.  ▣ LOD Levels (LOD 레벨) LOD Group에서는 여러 개의 LOD 레벨을 추가할 수 있습니다. 각 LOD 레벨에는 다른 메쉬(Renderer)를 설정할 수 있으며, 카메라 거리(뷰 프러스텀)에 따라 특정 LOD가 활성화됩니다. LOD 0: 가장 높은 디테일의 모델 (가장 가까운 거리에서 보임) LOD 1: 중간 디테일 모델 LOD 2: 낮은 디테일 모델 LOD 3 (이하 추가 가능): 더 낮은 디테일 모델.. 2025. 2. 8.
언리얼엔진5 c++ int32 타입의 숫자를 FText로 변환 ▣ SetText(FText) : UTextBlock의 텍스트를 설정하는 함수▣ FText::AsNumber(int32 Value) : int32 타입의 숫자를 FText로 변환하는 함수▣ 즉, MedicineMap[EMedicineType::Drink] (현재 음료 개수)를 FText로 변환한 후 DrinkCountTextBlock에 설정합니다. 2025. 1. 31.
언리얼엔진5 c++ 몇 초 뒤 OpenLevel ▣ FTimerHandle DoorTimer FTimerHandle은 Unreal Engine의 타이머를 관리하기 위한 핸들입니다.역할: 타이머를 식별하고, 특정 타이머를 취소하거나 재설정할 때 사용됩니다. 이 코드에서는 DoorTimer라는 이름의 타이머 핸들을 생성했습니다. 예시 사용법: 타이머 취소: GetWorld()->GetTimerManager().ClearTimer(DoorTimer); 타이머 상태 확인: GetWorld()->GetTimerManager().IsTimerActive(DoorTimer);▣  GetWorld()->GetTimerManager().SetTimer SetTimer는 타이머를 설정하여 특정 시간이 지난 후에 함수를 실행하거나 반복 실행하게 만듭니다. ▣ GetWor.. 2025. 1. 24.
언리얼엔진5 Blueprint BGM 재생, 정지 ▣ Audio Component 추가 및 초기화블루프린트에 Audio Component를 추가합니다. 소리를 재생하고 페이드 아웃 타이밍을 설정합니다.Fade Out 함수 노드아래 노드를 연결합니다:Fade Out Duration: 페이드 아웃에 걸릴 시간 (초 단위). 2025. 1. 24.
언리얼엔진5 c++ GetMapName UEDPIE_0_ 제거 ▣ 코드 설명 LevelName:World->GetMapName()을 통해 현재 레벨 이름을 가져옵니다. 접두사가 포함된 상태의 원본 이름입니다.원본이름 : UEDPIE_0_TutorialsMapPrefix:World->StreamingLevelsPrefix를 사용하여 접두사를 확인합니다. 이 값은 접두사가 없을 경우 빈 문자열이 될 수도 있습니다.접두사 : UEDPIE_0_StartsWith():StartsWith(Prefix): 레벨 이름이 Prefix로 시작하는지 확인합니다.레벨 이름이 접두사로 시작하는지 확인합니다. 접두사가 포함된 경우, 이를 RightChop(Prefix.Len())으로 제거합니다. RightChop(Prefix.Len()): 접두사의 길이만큼 문자열을 잘라냅니다. ▣ 결과: .. 2025. 1. 23.
언리얼엔진5 c++ ActorName Find 문자제거 ▣ 코드 분석 Hit.GetActor()->GetName()충돌된 액터의 이름을 가져옵니다. 이름은 FString 형식으로 반환됩니다. ▣ GetName설명:UObject의 이름을 반환하는 함수입니다.이름은 FString 형식으로 반환되며, 이는 해당 객체가 엔진 내에서 사용되는 고유 이름입니다.사용 예시:FString Name = Hit.GetActor()->GetName();주요 활용:디버깅 시 객체 이름 확인.이름을 기반으로 객체 필터링 또는 분류. ▣ LeftChop설명:문자열의 끝에서 지정한 길이만큼 제거하여 새로운 문자열을 반환합니다.사용 예시:FString Result = ItemName.LeftChop(3); // 끝에서 3글자 제거주요 활용:특정 패턴의 끝 부분을 제거하여 필요한 부분만 .. 2025. 1. 22.
유니티 상속(Inheritance) ▣ 상속이란?상속은 객체 지향 프로그래밍(Object-Oriented Programming, OOP)에서 자식 클래스가 부모 클래스의 속성과 메서드를 물려받는 기능을 말합니다. 이를 통해 코드 재사용성을 높이고, 공통 기능을 한 곳에서 관리할 수 있어 유지보수성을 향상할 수 있습니다.▣  왜 사용하는가?코드 재사용성: 공통된 기능을 부모 클래스에 정의하여 여러 자식 클래스에서 재사용할 수 있습니다.유지보수성: 기능을 한 곳에서 관리하여 수정이 필요할 때 중복된 코드를 일일이 수정할 필요가 없습니다.확장성: 기존 코드를 기반으로 새로운 기능을 쉽게 추가할 수 있습니다.가독성: 중복 코드를 제거해 코드가 간결해지고 읽기 쉬워집니다.▣  언제 사용하는가?여러 클래스가 공통된 속성과 메서드를 가질 때.유사한 기.. 2025. 1. 15.
유니티 namespace ▣ 설명클래스와 메서드 이름 충돌 방지 및 코드 그룹화.▣ 사용 방법  namespace 키워드로 선언.▣ 언제 사용클래스 간 이름 충돌을 방지할 때. 2025. 1. 14.
언리얼엔진5 c++ CanvasPanel ▣ .h, .cpp 코드에 헤더를 추가합니다.   ▣ .h 헤더파일에 UCanvasPanel을 선언합니다.  ▣ HUDWidget: UI를 관리하는 UUserWidget의 인스턴스를 가리킵니다. CreateWidget: 새로운 UUserWidget 인스턴스를 생성합니다. GetWorld()->GetFirstPlayerController(): 현재 월드에서 첫 번째 플레이어 컨트롤러를 가져옵니다. HUDClass: 블루프린트나 C++로 정의된 HUD 위젯 클래스입니다. 목적: HUDWidget이 아직 생성되지 않았다면, CreateWidget을 통해 생성합니다. ▣ HUDWidget->IsInViewport(): HUDWidget이 현재 화면에 추가되었는지 확인합니다. HUDWidget->AddToView.. 2025. 1. 13.
언리얼엔진5 Pain Causing Volume (함정, 불, 발판 데미지 볼륨) ▣ 먼저 Pain Causing Volume을 추가합니다.  ▣ 디테일탭에서 필요한 값을 조절합니다.Pain Causing 피해 유발 - 볼륨이 현재 대미지를 입힐지 말지입니다. Damage Per Sec 초당 대미지 - Pain Causing 이 켜져 있을 때 볼륨에 있는 액터에게 입히는 초당 대미지입니다. Damage Type 대미지 유형 - 액터에 가해지는 대미지 유형을 나타냅니다. Pain Interval Pain Causing 이 켜졌을 때 대미지가 적용되는 초단위 간격입니다. Entry Pain 진입 피해 - Pain Causing 이 켜진 볼륨에 들어설 때 Pain Interval 에 따른 지속 대미지에 추가로 즉시 적용할 대미지를 나타냅니다.  ▣ 충돌한 대상 Player에 Event Da.. 2025. 1. 13.
유니티 new 키워드 ▣ new 키워드 사용객체를 생성하고 메모리를 할당합니다. 참조형 데이터 타입(클래스, 배열 등)을 사용할 때 주로 사용됩니다. 예시: new ClassName() 또는 new int[10]▣ new 키워드 미사용값 형식(구조체, 기본 데이터 타입 등)의 경우 기본값이 자동으로 설정됩니다. 참조형 데이터 타입에서는 null로 초기화되며, 메모리를 명시적으로 할당하지 않습니다. 예시: int, float, string ▣ int는 값 형식이므로 메모리를 명시적으로 할당할 필요가 없습니다. 초기화 없이 사용하면 컴파일러 오류가 발생합니다.  ▣ GameObject는 참조 형식이므로 new 키워드를 사용하여 메모리를 할당해야 객체를 생성할 수 있습니다. new 없이 사용하려 하면 NullReferenceExc.. 2025. 1. 13.
언리얼엔진5 Blueprint Camera Zoom ▣ Timeline을 활용해서 0.3초에 0->1 값으로 Alpha이 바뀌는데 이걸 활용해서 카메라 줌과 위치를 변경하는 블루프린트 노드 제작했습니다. 2025. 1. 11.
유니티 GitHub 기본 연동방법 https://github.com/ GitHub · Build and ship software on a single, collaborative platformJoin the world's most widely adopted, AI-powered developer platform where millions of developers, businesses, and the largest open source community build software that advances humanity.github.com https://desktop.github.com/download/ Download GitHub DesktopSimple collaboration from your desktopdesktop.github... 2025. 1. 10.
유니티 MonoBehaviour ▣ MonoBehaviour란? MonoBehaviour는 Unity의 모든 스크립트가 기본적으로 상속받는 클래스입니다. Unity 엔진과 스크립트를 연결하는 역할을 하며, 게임 오브젝트에 스크립트를 부착하고 다양한 이벤트 메서드를 사용할 수 있게 합니다. ▣  MonoBehaviour를 사용하는 이유 Unity의 게임 오브젝트와 상호작용하기 위해 필요. Unity의 라이프사이클 이벤트(Start, Update 등)를 활용 가능. 스크립트를 통해 씬에 존재하는 오브젝트를 제어할 수 있음. ▣  주요 이벤트 메서드 MonoBehaviour를 상속하면 Unity의 특정 이벤트에서 자동으로 호출되는 메서드를 사용할 수 있습니다. 초기화 관련 Awake(): 스크립트가 활성화될 때 호출. 오브젝트의 초기화에 적.. 2025. 1. 10.
유니티 반복문 ▣ 반복문 종류 for: 정해진 횟수만큼 반복 while: 조건이 참일 때 반복 foreach: 컬렉션의 모든 요소 반복 in 키워드 사용do-while: 조건에 상관없이 최소 한 번 실행 후 조건을 평가 in : in 키워드는 foreach 문에서 컬렉션의 요소를 순회할 때 사용, 조건문일 때 사용 불가 var :  var는 컴파일러가 변수의 자료형을 자동으로 추론하도록 하는 키워드 2025. 1. 9.