분류 전체보기 121

Decorator 패턴

Decorator 패턴은 기본 객체에 추가적인 기능을 동적으로 유연하게 첨가하는 패턴입니다. 구조 Component ConcreteComponent와 Decorator가 구현할 인터페이스입니다. 두 객체를 동등하게 다루기 위해 존재합니다. ConcreteComponent Decorate를 받을 객체입니다. 즉, 기능 추가를 받을 기본 객체를 의미합니다. Decorator Decorate를 할 객체의 추상 클래스입니다. 즉, 기능 추가를 할 객체는 이 객체를 상속받습니다. ConcreteDecorator Decorator를 상속받아 구현할 다양한 기능 객체입니다. 이 기능들은 ConcreteComponent에 추가되기 위해 만들어 집니다. 활용 상황 객체가 상황에 따라 다양한 기능이 추가되거나 삭제되어야 ..

Proxy 패턴

Proxy 패턴은 Proxy 객체를 통해 기본 객체에 접근하는 패턴입니다. 구조 Subject Proxy와 RealSubject가 구현해야하는 인터페이스입니다. 두 객체를 동일하게 다루기 위해 존재합니다. Proxy RealSubject와 Client 요청 사이에 존재하는 객체입니다. Subject를 구현함으로써 Client가 RealSubject를 사용하는 것과 별 차이가 없습니다. RealSubject 실질적으로 요청에 대해 주된 기능을 수행하는 객체입니다. Proxy 객체는 내부적으로 RealSubject 객체를 로직에 맞게 사용합니다. (위임) 활용 상황 기본 객체가 리소스 집약적인 경우에 유용합니다. 자잘한 작업들은 Proxy 객체가 처리하면 됩니다. 기본 객체에 접근을 제어해야하는 경우에 유용..

Composite 패턴

Composite 패턴은 단일 객체와 그 객체들을 가지는 집합 객체를 같은 타입으로 취급하며, 트리 구조로 객체들을 엮는 패턴입니다. 구조 Component Leaf와 Composite가 구현해야하는 인터페이스로, Leaf와 Composite는 모두 Component라는 같은 타입으로 다뤄집니다. Leaf 단일 객체로 Composite의 부분 객체로 들어가게 됩니다. 이때, Component의 형태로 들어갑니다. Composite 집합 객체로 Leaf 객체나 Composite를 자식으로 둡니다. 이때, Component의 형태로 들어갑니다. 클라이언트는 이 Composite를 통해 부분 객체들(Leaf나 Composite)을 다룰 수 있습니다. 활용 상황 객체들 간에 계급 및 계층구조가 있고 이를 표현해..

[언리얼 C++] 개발자 툴

개발자 툴에는 디버거, 분석기, 프로파일러 등 여러가지 정보 수집 툴이 제공됩니다. 프로젝트나 코드 또는 컨텐츠의 최적화 작업 또는 예상대로 작동하지 않을 수 있는 여러 부분에 대한 진단에 도움이 될 수 있는 툴입니다. 제공되는 개발자 툴들은 파일 메뉴에서 Window >> Developer Tools 아래에서 찾을 수 있습니다. 개발자 툴은 세가지 카테고리로 나뉩니다. 디버그: 디버깅 툴이 들어있습니다. 로그: 메시지 및 출력 로그 창이 들어있습니다. 기타: 로거, 매니저, 프로파일러 등이 들어있습니다. 사용가능한 툴의 옵션과 설명은 아래 표와 같습니다. 옵션 설명 블루프린트 디버거 블루프린트 디버거를 엽니다. 중단점을 통해 블루프린트 또는 레벨 블루프린트를 단계별로 살펴볼 수 있습니다. 콜리전 분석기..

[언리얼 C++] UnrealBuildTool (모듈 및 빌드 구성)

1. 모듈 모듈은 언리얼 엔진 4의 빌딩 블록입니다. 엔진은 대규모 모듈 모음으로 구현되며 게임은 이를 보강하기 위해 자체 모듈을 제공합니다. 각 모듈은 기능 집합을 캡슐화하고 다른 모듈에서 사용할 수 있도록 공용 인터페이스 및 컴파일 환경(매크로, 포함 경로 등)을 제공할 수 있습니다. 모듈은 확장자가 .build.cs인 C# 소스 파일을 통해 선언되며 프로젝트의 소스 디렉터리에 저장됩니다. 모듈에 속한 C++ 소스 코드는 .build.cs 파일 옆이나 그 하위 디렉터리에 저장됩니다. 각 .build.cs 파일은 ModuleRules 기본 클래스에서 파생된 클래스를 선언하고 해당 생성자에서 빌드하는 방법을 제어하는 속성을 설정합니다. 이러한 .build.cs 파일은 UnrealBuildTool에 의해 ..

[언리얼 C++] UnrealBuildTool (UBT)

UnrealBuildTool(UBT)은 다양한 빌드 구성에 걸쳐 언리얼 엔진 4 소스 코드를 빌드하는 프로세스를 관리하는 커스텀 도구입니다. 사용자가 구성 가능한 다양한 빌드 옵션을 살펴 보려면 BuildConfiguration.cs 파일을 읽어보시길 바랍니다. 1. 모듈식 아키텍처 언리얼 엔진 4는 여러 모듈로 나뉩니다. 각 모듈에는 모듈 종속성, 추가 라이브러리, 포함 경로 등을 정의하는 옵션을 포함하여 빌드 방법을 제어하는 .build.cs 파일이 있습니다. 기본적으로 이러한 모듈은 DLL로 컴파일되고 단일 실행 파일에 의해 로드됩니다. BuildConfiguration.cs 파일에서 모놀리식 실행 파일을 빌드하도록 선택할 수 있습니다. 빌드 프로세스는 .sln 또는 .vcproj 파일(Visual..

[언리얼 C++] 언리얼 프론트엔드 인터페이스

언리얼 프론트엔드 유저 인터페이스는 아래와 같은 부분으로 이루어져 있습니다. -1. 디바이스 브라우저 -2. 런처 -3. 세션 브라우저 -4. 자동화 -5. 세션 콘솔 1. 디바이스 브라우저 디바이스 브라우저는 현재 기능적으로 크게 제한되어 있으나, 나중에는 네트워크의 모든 타깃 디바이스를 관리하고 공유할 수 있게 될 것입니다. 자동으로 로컬에 사용가능한 디바이스를 감지하고 발견할 수 없는 디바이스를 수동 추가하는 인터페이스 역시 제공합니다. 현재는 로컬에서 발견 가능한 디바이스만 지원합니다. 로컬에서 발견 가능한 디바이스의 범위는 로컬 Windows PC 그리고 네트워크 상에서 선택된 콘솔 디바이스가 포함됩니다. 2. 런처 런처 탭에서는 게임을 빌드, 쿠킹, 설치, 실행시킬 수 있습니다. 런처의 모든 ..

[언리얼 C++] 언리얼 프론트엔드

언리얼 프론트엔드(UFE)는 게임 빌드에 대한 준비, 디바이스에 설치, 실행과 같은 작업을 단순화시켜 빠르게 할 수 있도록 고안된 툴입니다. 언리얼 프론트엔드는 모든 게임 설치, 프로파일링, 테스팅 작업을 하는데 있어서 중앙 인터페이스 역할을 하게끔 디자인되어 있습니다. 언리얼 프론트엔드는 아래와 같은 특징이 있습니다. 특징 설명 Launcher 게임을 빌드, 쿠킹, 설치, 실행합니다. UFE로, 로컬이든 네트워크든, 각기 다른 타깃 플랫폼이 실행중인 다수의 타깃 디바이스에 동시에 설치 가능합니다. 싱글 게임이나 멀티플레이 크로스 플랫폼 게임 테스트를 위한 작업 속도를 크게 끌어올리기 위해, 디바이스 별로 (지원하는 플랫폼에 대해) 다수의 인스턴스를 실행하고 그 인스턴스 별로 각기 다른 규칙을 구성할 수..

[언리얼 C++] 디바이스에서 실행하기

1. Android 디바이스에서 실행하기 에디터 메인 툴 바 오른편에 드롭다운 메뉴가 달린 Launch(실행) 버튼이 있습니다. 드롭다운 메뉴에는 현재 맵을 실행시킬 수 있는 플랫폼 목록이 나옵니다. 일반적으로 Windows나 Mac에서는 필요하지 않은데, 데이터 쿠킹 필요 없이 그냥 '플레이' 버튼을 사용하면 되기 때문입니다. Android의 경우, 여러가지 옵션이 있습니다. 포맷 설명 ETC1 모든 Android 기반 디바이스에 지원되지만 알파 텍스처는 압축되지 않습니다 (그대로 저장됩니다). 압축률을 높이려면 RGB 와 알파 텍스처를 별도로 사용하는 것이 좋습니다. ETC2 모든 OpenGL 3.x 클래스 디바이스에 지원되며, 알파 압축도 지원됩니다. ATC Qualcomm Adreno GPU 에 ..

[언리얼 C++] 컨텐츠 쿠킹

언리얼 엔진에서는 컨텐츠 애셋을 내부적으로 사용되는 특정 포맷으로 저장하는데, 텍스처 데이터는 PNG, 오디오는 WAV입니다. 그러나 이러한 컨텐츠들은 다양한 플랫폼에 맞는 여러가지 포맷으로 변환해줘야 합니다. 해당 플랫폼이 독점 포맷을 사용한다던가, 언리얼의 애셋 저장 포맷을 지원하지 않는다던가, 메모리 또는 퍼포먼스 측면에서 더욱 효율적인 포맷이 존재한다던가 하는 이유 때문입니다. 이렇게 내부 포맷에서 플랫폼 전용 포맷으로 컨텐츠를 변환하는 프로세스를 쿠킹이라고 합니다. 1. 명령줄에서 컨텐츠 쿠킹하기 게임 데이터 쿠킹을 위해서 Cook 커맨드렛을 사용해야 합니다. UE4Editor.exe -run=cook -targetplatform=+ [-cookonthefly] [-iterate] [-map=+..