분류 전체보기
-
[UE5] 클라이언트-서버 연결시 호출 함수 정리UE5 2024. 12. 12. 15:33
로그인 과정 PreLogin클라이언트가 서버에 연결을 시도할 때 호출클라이언트의 인증 및 접속 허용 여부를 확인플레이어 컨트롤러는 아직 생성되지 않음주로 접속 제한, IP 검증, 허용 여부 확인 등에 사용Login클라이언트가 접속 인증을 마치고 로그인 시 호출이 시점에서 플레이어 컨트롤러가 생성클라이언트가 사용할 PlayerController를 반환PostLogin클라이언트가 서버에 성공적으로 접속한 후 호출GameMode에서 호출되며, PlayerController가 완전히 초기화된 상태플레이어가 게임에 완전히 들어오고 게임 시작 전에 수행할 작업(초기 설정, 팀 배정 등)에 사용StartPlay게임의 주요 루프가 시작되기 전에 호출GameModeBase에서 호출되며, 게임 로직 초기화에 사용Begin..
-
[UE5] 매크로를 이용한 사용자 정의 로그UE5 2024. 12. 10. 07:06
새로운 로그 카테고리를 지정하는 이유 A. 로그의 필터링 및 가독성프로젝트가 커질수록 여러 서브시스템(네트워크, 렌더링, AI 등)에서 로그가 발생LogABNetwork와 같은 고유 로그 카테고리를 사용하면 특정 서브시스템의 로그만 필터링해서 볼 수 있음예: 네트워크 관련 디버깅 시, LogABNetwork만 활성화하여 로그를 확인.콘솔 명령어 Log LogABNetwork Verbose를 사용하여 해당 카테고리의 Verbose 로그만 활성화 가능.B. 유지보수성과 디버깅 용이성로그 메시지가 어떤 기능이나 모듈에서 발생했는지 명확하게 나타낼 수 있음문제 발생 시 어떤 서브시스템에서 로그가 생성되었는지 바로 파악 가능.예: 네트워크 모듈의 로그는 LogABNetwork, UI 모듈의 로그는 LogABUI...
-
[UE5] 네트워크 멀티플레이어UE5 2024. 12. 10. 00:53
언리얼 네트워크 멀티플레이어 프레임워크멀티플레이어 세션에서는 게임 상태 정보가 인터넷 연결을 통해 여러 대의 컴퓨터 간에 전달플레이어들 간에 동기화(정보 공유) 과정이 꽤나 복잡함언제 어느타이밍에 어떻게 이루어지는 것을 아는 것이 중요!언리얼 엔진은 클라이언트-서버 모델을 사용한 대의 컴퓨터는 서버, 나머지는 클라이언트로 서버에 연결서버는 연결된 각 클라이언트와 게임 상태정보를 공유하고 서로 통신할 수 있는 수단을 제공클라이언트에서는 자신이 소유한 폰을 제어하고 서버에 신호를 보내주는 역할만 함나머지는 서버의 컨텐츠가 클라이언트에 복제 되어 재생이 되는 형태시각적으로 보여지는 화면 자체를 클라이언트로 복제하는 것이 아님서버는 게임 데이터에 대한 정보를 복제해서 데이터로 하여금 서버의 컨텐츠를 똑같이 클라..
-
[UE5] 추상클래스와 인터페이스UE5 2024. 12. 6. 07:20
주요 차이점특징추상 클래스인터페이스주요 목적공통 기능 재사용 및 확장클래스 간의 약속(규격) 정의상속 방식단일 상속다중 상속 가능멤버멤버 변수와 일반 메서드 포함 가능멤버 변수를 가질 수 없음순수 가상 함수일부만 포함 가능모든 함수가 순수 가상 함수생성자생성자 정의 가능생성자 정의 불가사용 예시상속받는 클래스 간의 기능 공유클래스 간의 규격(행동) 정의다중 상속 지원 여부단일 상속만 가능다중 상속 가능 사용 사례 추상 클래스공통적인 동작을 상속받아 재사용 할 때상태(멤버 변수)와 공통 메서드를 제공해야 할 때일부 메서드는 구현하고, 나머지는 파생 클래스에서 구현하도록 강제할 때멤버 변수와 메서드 정의 가능순수 가상 함수(=0)와 일반 메서드 혼합 가능예) 게임 캐릭터 시스템class ACharacter{..
-
[UE5] 순수 가상 함수(Pure Virtual Function)UE5 2024. 12. 6. 05:34
virtual void FunctionName() = 0; 순수 가상 함수는 함수의 구현체(내용)가 없고, 파생 클래스에서 반드시 구현해야 하는 함수클래스 선언에서 = 0 을 사용하여 정의순수 가상 함수는 기본 클래스가 추상 클래스(Abstract Class)가 되도록 만듬추상 클래스는 직접 객체를 생성할 수 없으며, 오직 파생 클래스에서만 사용class IPlayerScoreListener{public: virtual void OnPlayerScoreChanged(int32 NewPlayerScore) = 0; // 순수 가상 함수};파생 클래스에서의 순수 가상 함수 구현 예시class PlayerScoreHandler : public IPlayerScoreListener{public: ..
-
[UE5] 인터페이스의 활용UE5 2024. 12. 5. 06:02
이득우의 언리얼 프로그래밍 pt2에서는 세 개의 레이어를 기준으로 게임의 다양한 기능을 구현한다. 하위 레이어에서 상위 레이어를 참조할 때는 인터페이스를 활용하여 구현한다. 인터페이스를 활용할 때의 장점 1. 의존성 문제 해결하위 레이어가 상위 레이어에 강하게 결합하면, 의존성 문제가 발생할 수 있음class UABCharacterHUD : public UUserWidget{public: void UpdateHPBar(AABCharacterBase* Character) { float CurrentHP = Character->GetCurrentHP(); float MaxHP = Character->GetMaxHP(); HPBar->SetPercent(Curr..
-
[UE5] 단일 캐스팅 델리게이트를 이용한 다중 동작 이벤트 처리UE5 2024. 12. 3. 18:54
1. 단일 캐스팅(Single-cast Delegate) vs 멀티 캐스팅(Multi-cast Delegate) 델리게이트특징단일 캐스팅 델리게이트멀티캐스팅 델리게이트핸들러 수한 번에 하나의 함수만 바인딩 가능여러 함수를 바인딩 가능사용 사례특정 이벤트에 하나의 동작만 필요할 때하나의 이벤트로 여러 동작을 처리할 때유연성제한적높은 유연성실행 함수Execute, ExecuteIfBoundBroadCast 2. 단일 캐스팅 델리게이트의 다중 동작FonTakeItemDelegate 선언 및 델리게이트를 담아줄 구조체 선언DECLARE_DELEGATE_OneParam(FOnTakeItemDelegate, class UABItemData* /*InItemData*/);USTRUCT(BlueprintType)str..
-
[UE5] CoreMinimal.h란?UE5 2024. 12. 3. 17:25
언리얼 엔진에서 자주 사용되는 핵심 헤더 파일언리얼 엔진의 기본적인 기능과 데이터 타입 포함 어떤 요소들이 포함되나?기본 데이터 타입FString, FVector, FRotator, FMatrix 등매크로UE_LOG, check, ensure 등기본 클래스를 포함하는 모듈Core : 기본 C++ 클래스와 티입 정의CoreUObject : 객체 시스템과 리플렉션 지원Engine : 게임 엔진의 핵심 시스템InputCore : 입력 관련 타입과 설정Slate : UI 구성 요소Math 라이브러리FVector, FQuat, FTransform 등유틸리티 함수 CoreMinimal.h의 단점대규모 프로젝트CoreMinimal.h는 많은 헤더를 포함하므로, 대규모 프로젝트에서 빌드 시간을 증가시킬수 있음필요한 헤..