본문 바로가기
반응형

Unreal/Manual132

Unreal GENERATED_BODY(), generated.h [Unreal/C++] GENERATED_BODY(), generated.h Unreal UCLASS()에서의 GENERATED_BODY() 와 {className}.generated.h를 살펴봅니다. GENERATED_BODY() 매크로는 ObjectMacros.h파일에 선언되어 있습니다. (하단 경로 참조)UE_{Version}\Engine\Source\Runtime\CoreUObject\Public\UObject\ObjectMacros.h 아래 사진을 살펴보면 708번 째 줄에 GENERATED_BODY() 매크로가 있습니다. 이 매크로는 다시 BODY_MACRO_COMBINE 매크로를 호출합니다.CURRENT_FILE_ID,_,__LINE__,_GENERATED_BODY 인자를 받고 있는 것을 확.. 2024. 4. 30.
Unreal 문자열 TCHAR [Unreal] 문자열 TCHAR Unreal에서는 별도의 타입을 지정해서 문자열을 사용하도록 TCHAR라고하는 것을 사용한다. 컴퓨터가 영문권에서 개발되었기 때문에 영어같은 경우 1바이트로 충분히 표현이 가능하다.하지만 한국, 중국, 일본 같은 경우 이들 나라의 문자를 1바이트로 표현이 불가능하기 때문에 새로운 표준 규약이 필요했다.  1990년대 후반에 유니코드(Unicode)가 개발되면서 모든 국가들의 다양한 문자를 표현할 수가 있게 되었다. 하지만 컴퓨터는 유니코드가 개발되기 이전에 보급되었다. 컴퓨터 초창기에는 Single Byte(ANSI, ASCII)를 사용 하였고90년대 초중반에는 Multi Byte(EUC-KR, CP949)를 사용하였다.Windows 95의 경우 Unicode가 정착되기.. 2024. 4. 30.
Unreal 언리얼 네트워크 복제 시스템 이해 [Unreal/C++] 언리얼 네트워크 복제 시스템 이해 깔끔하고 이해하기 쉽게 설명되어 있는 영상 링크 2024. 3. 16.
Unreal 멀티 플레이어 온라인 서브시스템 Steam 연결하기 [Unreal/C++] 멀티 플레이어 온라인 서브시스템 Steam 연결하기 Multiplayer Online Subsystem Connecting to Steam Online Subsystems STEAM 플러그인을 이용하여 세션 정보를 받아오고 리슨서버에 연결했습니다. 왼쪽 : 세션을 만들고오른쪽 : 세션에 참가 접속이 완료되었습니다. 주요 코드는 다음과 같습니다.1. 세션의 생성 2. 온라인 세션 검색3. 세션 참가 UMG 버튼을 만들어서 임시로 테스트합니다.GameInstanceSubsystem을 상속받아 클래스를 만들었기 때문에 싱글톤 형식으로 호출할 수 있습니다.GameInstance와 동일한 생명주기를 가지고있어서 관리하기가 간편하다는 장점이 있습니다. 세션을 생성했다고 해도 Level을 열 .. 2024. 3. 15.
Unreal Subsystem을 활용한 Unreal 스타일 싱글톤 패턴 [Unreal/C++] Subsystem을 활용한 Unreal 스타일 싱글톤 패턴 하위 시스템은 전역적으로 액세스 가능한 모듈식 논리를 만드는 간단한 방법입니다. 싱글톤 디자인 패턴에는 많은 부담이 있지만 그 유용성은 무시할 수 없습니다. 다행스럽게도 Unreal은 단점을 줄이면서 싱글톤의 이점을 얻을 수 있는 방법을 제공합니다.  나쁜 방법: C++ 정적 싱글톤class UMySingleton : public UObject{ public: static UMySingleton* GetInstance() { return Instance; } private: static UMySingleton* Instance;};C++ 정적 클래스 싱글톤의 장점과 단점:+ 인터페이스 프로그래머는 다음.. 2024. 3. 15.
Unreal 수명이 관리되는 자동 인스턴싱 프로그래밍 서브시스템(Programming Subsystems) [Unreal/C++] 수명이 관리되는 자동 인스턴싱 프로그래밍 서브시스템(Programming Subsystems) 언리얼 엔진 4 (UE4)의 서브시스템은 수명이 관리되는 자동 인스턴싱 클래스입니다. 이 클래스는 사용하기 쉬운 확장점을 제공하여, 프로그래머는 블루프린트 및 Python 을 바로 노출시킴과 동시에 복잡한 엔진 클래스 수정 또는 오버라이드를 피할 수 있습니다. 서브시스템상속 원본EngineUEngineSubsystem 클래스EditorUEditorSubsystem 클래스GameInstanceUGameInstanceSubsystem 클래스LocalPlayerULocalPlayerSubsystem 클래스 예를 들어 이 베이스 클래스에서 파생된 클래스를 생성하면: class UMyGame.. 2024. 3. 15.
Unreal 하드코딩 된 REGISTER_NAME [Unreal/C++] 하드코딩 된 REGISTER_NAME 하드코딩된 네트워킹 코드 또는 매크로를 이용하여 일관성을 유지할 수 있습니다. UnrealNames.inl 파일에서 하드코딩된 이름들을 확인할 수 있습니다.UnrealNames.h 파일에서는 ## 연산자를 확인할 수 있었습니다.NAME_##name에서 ##는 문자열 결합 연산자이며, name의 값을 문자열로 변환하여 NAME_과 결합합니다. 예를 들어, name이 "DGram"이라면 NAME_DGram이라는 문자열이 됩니다.#define REGISTER_NAME(num,name) inline constexpr EName NAME_##name = EName::name; FName이 들어가는 곳이라면 NAME_{REGISTER_NAME}으로 사용가.. 2024. 3. 15.
Unreal Steam Online Subsystem Steam 세션 생성하기 [Unreal/Steam] Online Subsystem Steam 세션 생성하기 매치메이킹은 플레이어와 세션을 매치해 주는 프로세스를 말합니다. 세션은 기본적으로 서버에서 실행중인 게임의 인스턴스를 말하는 것으로, 여기에는 일정한 프로퍼티를 통해 공개적으로 홍보해서 게임을 플레이하고자 하는 플레이어가 검색하여 참가할 수 있도록 하는 공개 세션과, 초대를 받았거나 그 존재를 알고있는 사람만 참가할 수 있는 개인 세션이 있습니다.현재 플레이중인 모든 게임이 나열된 온라인 게임 로비를 그려봅시다. 목록의 각 게임은 세션, 또는 개별 온라인 매치입니다. 플레이어는 검색이나 기타 수단을 통해 세션을 알게 되고, 그 세션에 참가하여 매치를 플레이합니다.세션의 기본적인 수명은:원하는 세팅으로 새로운 세션을 생성합니.. 2024. 3. 15.
Unreal Steam Online Subsystem Steam 연결하기 [Unreal/Steam] Online Subsystem Steam 연결하기 온라인 서브시스템 Steam API 를 통해 언리얼 엔진(UE) 애플리케이션을 Valve 의 Steam 플랫폼 에 출시하는 것이 가능합니다. Steam 모듈의 주 목적은 Steam 사용자들에게 (매치메이킹이나 리더보드같은) 피처 세트가 포함된 애플리케이션을 쉽게 배포할 수 있도록 하기 위함입니다. 추가적으로, Steam 모듈은 Online Subsystem 으로 노출된 인터페이스를 다수 구현하여, Steamworks Software Development Kit (SDK) 에 제공된 것을 대부분 지원합니다.사용가능한 Steam Interface 몇 가지는 다음과 같습니다:Matchmaking (매치메이킹, 로비 및 GameServ.. 2024. 3. 14.
Unreal Steamworks 온라인 서브시스템 Steam 가입하기 [Unreal/Steamworks] 온라인 서브시스템 Steam 가입하기  온라인 서브시스템 Steam API 를 통해 언리얼 엔진(UE) 애플리케이션을 Valve 의 Steam 플랫폼 에 출시하는 것이 가능합니다. Steam 모듈의 주 목적은 Steam 사용자들에게 (매치메이킹이나 리더보드같은) 피처 세트가 포함된 애플리케이션을 쉽게 배포할 수 있도록 하기 위함입니다. 추가적으로, Steam 모듈은 Online Subsystem 으로 노출된 인터페이스를 다수 구현하여, Steamworks Software Development Kit (SDK) 에 제공된 것을 대부분 지원합니다.사용가능한 Steam Interface 몇 가지는 다음과 같습니다:Matchmaking (매치메이킹, 로비 및 GameServe.. 2024. 3. 14.
Unreal Enemy Spawner 구현 [Unreal/C++] Enemy Spawner 구현 적(Enemy)을 생성하는 시스템으로, 게임에서 플레이어에게 도전을 제공하고 전투를 활성화하는 데 사용됩니다. Enemy Spawner는 게임의 특정 위치에 대상을 생성하거나, 특정 시간 간격으로 대상을 생성하거나, 특정 상황이나 이벤트에 응답하여 대상을 생성할 수 있습니다.  **게임의 도전성 증대**: 적의 수나 강도를 조절함으로써 게임의 난이도를 조절할 수 있습니다. 플레이어가 게임을 진행함에 따라 더 많거나 더 강한 적이 생성될 수 있습니다. **스토리나 이벤트의 진행**: 게임의 특정 이벤트나 스토리 진행에 필요한 적이나 상황을 생성할 수 있습니다. 예를 들어, 보스 전투 직전에 보스의 하수인들을 생성할 수 있습니다. 4. **게임 흐름의 제.. 2024. 3. 12.
Unreal Editor 에서 Debug용 도형 그리기 [Unreal/C++] Editor 에서 Debug용 도형 그리기  [Unreal/C++] Editor Module 만들기[Unreal/C++] Editor Module 만들기 에디터 모듈(Editor modules) 은 에디터 빌드에 대해서만 코드가 컴파일되는 언리얼 엔진 (UE) C++ 모듈입니다. 이를 통해 런타임(출시) 빌드 크기를 늘리지 않고 커스텀 에developer-bing-gu.tistory.com 에디터 상에서 보이는 객체를 렌더하기 위해 이전 글에서 Editor Module을 준비했습니다.포인트 라이트나 기타 볼륨 객체와 같이 PIE 환경이 아닌 시점에도 범위 등을 표현하기 위해 많은 시간이 걸렸습니다. 하찮지만 꽤 유용하게 쓰일 것 같습니다. 아래는 결과물의 모습입니다.아래 이미지에서.. 2024. 3. 10.
반응형