언어:

언리얼 프론트엔드

UnrealFrontend.png

UnrealFrontend (UFE), 언리얼 프론트엔드는 게임 빌드에 대한 준비, 디바이스에 설치, 실행과 같은 작업을 단순화시켜 빠르게 할 수 있도록 고안된 툴입니다. UFE 는 모든 게임 설치, 프로파일링, 테스팅 작업을 하는 데 있어서의 중앙 인터페이스 역할을 하게끔 디자인되어 있습니다.

특징

UFE 는 다음과 같은 특징이 있습니다:

특징

설명

Launcher

게임을 빌드, 쿠킹, 설치, 실행합니다. UFE 로, 로컬이든 네트워크든, 각기 다른 타깃 플랫폼이 실행중인 다수의 타깃 디바이스에 동시에 설치 가능합니다. 싱글 게임이나 멀티플레이 크로스 플랫폼 게임 테스트를 위한 작업 속도를 크게 끌어올리기 위해, 디바이스 별로 (지원하는 플랫폼에 대해) 다수의 인스턴스를 실행하고 그 인스턴스 별로 각기 다른 규칙을 구성할 수 있을 것입니다.

Sessions

현재 네트워크에서 실행중인 활성 게임 세션을 원격 모니터링하고 상호작용합니다. 새로운 세션 브라우저를 통해 현재 네트워크에서 실행중인 게임의 인스턴스 위치를 확인할 수 있습니다. 세션 콘솔에는 각 게임 인스턴스의 출력 로그가 실시간으로 표시되어, 그를 통해 하나 또는 그 이상의 타깃 디바이스에 콘솔 명령을 내릴 수 있습니다. 활성 세션을 떨어져 있는 다른 개발자나 아티스트와 공유하는 것도 곧 가능해져, 여러 사람을 책상 앞에 불러모을 필요 없이 의견을 들을 수 있습니다.

Automation

코드와 콘텐츠를 자동으로 테스트하고 그 온전성을 확인합니다. 기존 버전의 엔진에서는 사용할 수 없던 신기능입니다. 게임에 있는 커스텀 C++ 클래스나 콘텐츠에 대한 유닛/피처/스트레스 테스트를 작성할 수 있고, 모든 맵과 패키지가 오류 없이 잘 로드되는지 확인하는 작업같은 일반적인 작업방식 검증을 위한 자동화 테스트를 만들 수도 있습니다. 또한 자동화 테스트를 빌드 시스템에 통합하는 작업도 진행중이라, 연속 통합 프로세스의 일환으로써 테스트를 자동으로 돌려 문제가 될 수 있는 부분을 감지해 내는 것도 가능해 질 것입니다.

Profiling

게임 퍼포먼스를 원격 분석하여 병목현상을 찾아냅니다. UE3 의 기존 프로파일링 툴 세트에 익숙하신 분들께는 희소식이 될 텐데, 약간씩은 이질적이던 그 모든 툴을 UFE 내 통합된 사용감으로 통합하는 작업을 현재 진행하고 있습니다.

Device Management

개발 키트, 모바일 디바이스, 기타 테스트 컴퓨터를 관리합니다. 단순한 디바이스 발견 기능은 이미 기존 버전의 UFE 에서도 가능했으나, UE4 에서는 훨씬 강력해 집니다. 타깃 디바이스가 로컬 PC 에 물리적으로든 디바이스의 SDK 를 통해서든 연결되어 있어야 했던 제약을 없애고 있습니다. 로컬 및 네트워크 연결된 디바이스를 감지하여 다른 이와 공유할 수 있게 될 것입니다. Windows와 Mac 컴퓨터 역시도 이제는 설치, 실행, 자동화 대상 디바이스처럼 작동 가능합니다.

시작하기

언리얼 프론트엔드는 언리얼 에디터의 탭으로도, 독립형 어플리케이션으로도 사용 가능합니다. 그 기능은 동일하지만 QA 종사자나 프로그래머 분들은 가벼운 독립형 어플리케이션을 선호할 것입니다. 언리얼 에디터를 거의 항상 열어놓고 쓰시는 아티스트 분들은 에디터 포함 버전이 좋을 수도 있습니다. 언리얼 에디터 탭은 창 메뉴를 통해 접근할 수 있습니다:

workspace_menu.png

독립형 어플리케이션은 /Engine/Binaries/Win64 와 /Engine/Binaries/Mac 디렉터리에 있습니다:

explorer.png

참고로 엔진 소스 빌드를 사용중인 경우, Visual Studio 나 XCode 에서 먼저 언리얼 프론트엔드를 빌드해야 할 것입니다.

인터페이스

언리얼 프론트엔드 유저 인터페이스는 다음과 같은 부분으로 이루어져 있습니다:

UnrealFrontend_UI.png

  1. 디바이스 브라우저

  2. 런처

  3. 세션 브라우저

  4. 자동화

  5. 세션 콘솔

런처

런처 탭에서는 게임을 빌드, 쿠킹, 설치, 실행시킬 수 있습니다. 그러한 작업을 하는 방법은 여러가지 있겠지만, 이 글 작성 시점에서 지원되는 세팅은 다음과 같습니다:

  • 빌드: 새 빌드를 만듭니다.

  • 쿠킹: 날림으로(On the fly) (Windows와 선택된 콘솔)

  • 설치: 파일 서버 (로컬 Windows와 선택된 콘솔), 디바이스에 설치 (로컬 Windows)

  • 실행: 기본 규칙 사용 (예: 디바이스 당 하나의 인스턴스 + 모두 같은 세팅)

런처의 모든 세팅은 프로파일에 합쳐집니다. 이런 식으로 각기 다른 세팅 그룹 여럿을 동시에 유지 가능하여, 날마다 많은 테스트를 돌려야 하는 QA 종사자에게는 더없이 편리합니다. 런처를 처음 열 때는 프로파일이 없으니 새로 하나 만들어야 합니다:

profile_add.png

프로파일이 생성되면 다수의 세팅 카테고리가 나타납니다:

빌드

launcher_build.png

세팅

설명

게임

빌드할 게임 프로젝트를 나타냅니다.

빌드 환경설정

게임 빌드시 사용할 환경설정을 지정합니다.

쿠킹

launcher_cook.png

세팅

설명

쿠킹할 플랫폼

게임 콘텐츠를 쿠킹할 대상 플랫폼을 나타냅니다.

쿠킹되지 않은 콘텐츠는 현재 어느 플랫폼에도 지원되지 않습니다.

쿠킹할 언어

게임 콘텐츠를 쿠킹할 대상 언어를 나타냅니다.

쿠킹할 맵

쿠킹할 맵을 나타냅니다.

수정된 콘텐츠만 쿠킹

켜면 쿠커는 수정되지 않은 콘텐츠를 무시합니다.

버전 없이 패키지 저장

쿠커 빌드 환경설정

쿠킹에 사용할 바이너리를 결정하는 환경설정을 지정합니다.

부가 쿠커 옵션

디바이스 브라우저

디바이스 브라우저는 현재 기능적으로 크게 제한되어 있으나, 나중에는 네트워크의 (로그 파일 전송까지 포함해서) 모든 타깃 디바이스를 관리하고 공유할 수 있게 될 것입니다. 자동으로 로컬에 사용가능한 디바이스를 감지하고 발견할 수 없는 디바이스를 수동 추가하는 인터페이스 역시 제공합니다.

현재 디바이스 소유 개념은 마땅히 없습니다. (여러 개발자 사이에 공유되는 디바이스 고정 기능까지 포함해서) 어느 수준까지 구현할지도 아직 미정입니다.

device_browser.png

현재는 로컬에서 발견 가능한 디바이스만 지원합니다. 이 글 작성 시점에서 그 범위는, 로컬 Windows PC (Win32, Win64 플랫폼), 그리고 네트워크 상에서 선택된 콘솔 디바이스가 포함됩니다.

세션 브라우저

하나 이상의 디바이스에서 게임을 실행할 때, 런처는 실행중인 모든 게임 인스턴스로 구성된 세션을 새로 만드는데, 이것을 세션 브라우저에서 추적 가능합니다. 바로 이것이 UFE 에서 매우 핵심적인 역할을 하는데, 현재 선택된 세션( 또는 세션 인스턴스)이 세션 콘솔 탭이나 자동화 탭 그리고 앞으로 나올 프로파일러 같은 다른 UFE 탭의 기능을 결정하기 때문입니다.

session_browser.png

디바이스 브라우저처럼 세션 브라우저도 기능상의 제약이 있습니다. 현재는 분할된 리스트 레이아웃으로 이루어져 있습니다. 맨 위의 리스트에는 발견된 세션이 모두 표시되며, 맨 밑의 리스트에는 선택된 세션의 일부인 게임 인스턴스가 표시됩니다. 하나의 세션이 꼭 게임으로만 구성되지는 않으며, 콘텐츠 쿠커나 파일 서버같은 보조 툴이 포함될 수도 있습니다.

언리얼 에디터 안에서 UFE 를 실행할 때, 현재 항상 Unnamed Session 이 표시됩니다 (언리얼 에디터 인스턴스 자체를 나타냅니다).

세션 콘솔

세션 콘솔 은 현재 세션 브라우저 에 선택되어 있는 모든 게임 인스턴스에서의 로그 출력을 수집하는 중심 허브 입니다. 표시되는 로그는 세션 브라우저 에 현재 선택된 인스턴스에 따라 달라집니다. 그 후 로그 메시지 리스트(4a)에 검색어나 카테고리, 상세 필터(4b)를 사용해서 걸러낼 수 있습니다. 선택된 게임 인스턴스에 콘솔 명령을 전송하는 것도 가능합니다 (4c). 여러 인스턴스에 전송된 명령은 각 인스턴스 별로 실행됩니다. 마지막으로 못지 않게 중요한 것은, 로그 메시지를 모두 또는 선택한 것만 파일로 익스포트하는 것도 가능합니다.

console.png

이 글 작성 시점에서는, 세션 발견 이후의 로그만 사용 가능합니다. 곧 UFE 실행 이전 생성된 로그에 대해서도 수집할 수 있도록 할 계획입니다.

자동화

자동화 패널에서는 자동화 테스트 기능을 접할 수 있습니다. 세션 내 각 인스턴스는 (에디터 안에서 UFE 를 실행할 때의 로컬 언리얼 에디터 인스턴스를 포함해서) 언제든지 코드와 콘텐츠 확인을 위한 자동화 유닛/피처/스트레스 테스트를 수행할 수 있습니다.

automation.png

  1. 컨트롤 패널

  2. 필터 패널

  3. 테스트 리스트

  4. 결과

세션 브라우저 에서 하나 이상의 인스턴스를 선택한 이후, 테스트 리스트 에는 해당 인스턴스에 대해 가능한 모든 테스트가 표시됩니다. 그 후 실제 돌리고자 하는 테스트의 체크박스를 클릭하여 선택하거나, 필터 패널 을 사용해서 테스트 리스트를 걸러낼 수 있습니다. 선택된 테스트를 돌리려면 컨트롤 패널 의 시작 버튼을 누릅니다. 테스트 결과가 (오류 메시지를 포함해서) 결과 창에 종합되어 나타납니다.

(여러 인스턴스를 선택하여) 여러 인스턴스에 대해 자동화 테스트를 병렬적으로 돌릴 수도 있습니다. 현재 테스트 그룹 기능 구현 작업을 하고 있으며, 여러 레벨의 병렬 처리가 (여러 유형의 로드 밸런싱, 중복 테스팅 등) 가능할 것입니다. 자세한 신규 테스트 생성 방법은 자동화 시스템 관련 문서를 확인해 주시기 바랍니다.

언리얼 리모트 에이전트

Unreal Remote Agent (URA, 언리얼 리모트 에이전트)는 원격 PC(와 나중에는 Mac)의 시스템 트레이에 실행되는 독립형 프로그램으로, 그 PC 와 거기에 연결된 콘솔 디바이스를 네트워크를 통해 사용할 수 있도록 해 줍니다. 이전엔 게임 설치와 실행에 필요했던 URA 는 현재 지원되지 않으며, 업그레이드 과정에 있습니다.