서버 라이브 실행 상태를 검사하기 위해 멀티 유저 서버(Multi-User Server) 에 유저 인터페이스가 추가되었습니다. 이를 통해 운영자와 ICVFX 스테이지 매니저가 멀티 유저 서버 작동 중에 문제를 검사하고 모니터링하고 진단할 수 있습니다.
이는 콘솔 명령을 통해 연결 정보 스트림만 제공하고 실행 중인 서버 작동에 대한 컨텍스트 정보는 제공하지 않던 콘솔 서버보다 유용합니다.
콘솔 서버는 헤드리스 컴퓨터나 UI를 실행할 수 없는 컴퓨터에서 여전히 운영할 수 있습니다. 예를 들어, Linux 서버나 컨테이너화된 작업에서 사용할 수 있습니다.
멀티 유저 서버 빌드하기
멀티 유저 서버 프로그램을 실행하려면 멀티 유저 서버를 빌드해야 합니다. 사전 컴파일된 바이너리 빌드를 사용하는 경우, 서버가 미리 빌드되고 엔진 실행 시 사용할 수 있어야 합니다. 소스에서 언리얼 엔진을 빌드하는 경우, UnrealGameSync 를 사용하여 콘솔 및 UI 버전 모두에 대해 서버의 컴파일된 버전을 빌드하는 것이 좋습니다.
UnrealGameSync에서 UnrealMultiUserServer 컴파일(Compile UnrealMultiUserServer) 및 UnrealMultiUserSlateServer 컴파일(Compile UnrealMultiUserSlateServer) 옵션을 활성화하여 일반 동기화 작업 중에 서버를 빌드할 수 있습니다. UnrealMultiUserServer는 새 UI 기반 서버의 이름입니다.
-
UnrealGameSync 인터페이스 오른쪽 하단의 옵션(Options) 을 클릭하고 명령 커스터마이징(Customize Commands) 을 선택합니다.
-
빌드 단계 수정(Modify Build Steps) 대화창에서 UnrealMultiUserServer 컴파일 및 UnrealMultiUserSlateServer 컴파일 옆의 체크박스를 활성화합니다.
Multi-User Editing 플러그인 활성화하기
멀티 유저 서버를 사용하려면 프로젝트에서 Multi-User Editing 플러그인을 활성화해야 합니다.
-
에디터에서 편집(Edit) > 플러그인(Plugins) 으로 이동하여 플러그인 브라우저를 엽니다.
-
'Multi-User'를 검색하고 Multi-User Editing 플러그인을 활성화합니다.
-
진행하기 전에 언리얼 에디터를 재시작합니다.
UI 모드 실행으로 세팅 변경하기
플러그인을 활성화한 다음에는 플러그인이 UI 모드에서 실행되도록 멀티 유저 프로젝트 세팅에서 디폴트 서버 모드를 변경해야 합니다.
-
창(Window) 메뉴에서 멀티 유저 브라우저(Multi-User Browser) 를 선택하여 플러그인 인터페이스를 엽니다.
-
멀티 유저 브라우저 창 오른쪽 상단의 세팅 톱니바퀴 아이콘을 클릭합니다. 그러면 멀티 유저 에디터 플러그인 세팅이 열립니다.
-
클라이언트 세팅(Client Settings) 아래에서 서버 타입(Server Type) 프로퍼티를 슬레이트(Slate) 모드로 변경합니다.
스위치보드 지원
UI 모드에서 멀티 유저 서버 실행은 스위치보드에서도 지원됩니다. 스위치보드 애플리케이션은 기본적으로 UI 모드에서 멀티 유저 서버를 실행합니다.
스위치보드 세팅(Switchboard Settings) 메뉴의 글로벌 세팅을 조정하여 이 행동을 변경할 수 있습니다.
-
스위치보드 애플리케이션 메뉴에서 세팅(Settings) > 세팅 으로 이동합니다.
-
멀티 유저 서버(Multi User Server) 섹션으로 스크롤을 내립니다.
-
UI 모드에서 멀티 유저 서버 실행(Launch Multi-user server in UI mode) 옆의 박스를 체크 해제하여 유저 인터페이스 버전을 비활성화합니다. 이제 스위치보드가 콘솔 모드에서 멀티 유저 서버를 실행합니다.
멀티 유저 서버 실행하기
멀티 유저 브라우저 에디터 패널 또는 스위치보드 에서 새 서버를 실행할 수 있습니다.
멀티 유저 브라우저에서 실행하기
멀티 유저 브라우저 패널을 열면 플러그인이 자동으로 네트워크에서 사용할 수 있는 서버를 검색합니다.
창 중간에 있는 서버 실행(Launch a Server) 버튼을 클릭하거나 툴바 왼쪽의 서버 아이콘을 클릭하여 새 서버를 실행할 수 있습니다.

새 창에서 멀티 유저 서버 UI가 열립니다.

스위치보드에서 실행하기
스위치보드 애플리케이션에서 창 왼쪽 하단에 있는 멀티 유저 서버 실행 아이콘을 클릭합니다.

멀티 유저 서버 UI 개요
멀티 유저 서버 인터페이스에는 세 개의 영역이 포함되어 있습니다.

- 메뉴 바와 탭입니다.
- 세션 및 클라이언트 정보 패널입니다.
- 명령 콘솔 및 출력 로그입니다.
메뉴 바 및 탭
창
창 메뉴에는 세션, 클라이언트 또는 활성 세션과 같은 현재 UI 탭 내에서 이용할 수 있는 컨텍스트 민감 브라우저 창 목록이 표시됩니다. 이 목록을 사용하여 이전에 닫힌 창을 복원할 수 있습니다.

디버그
디버그(Debug) > 앱 아이콘 보기(View App Icons) 에서 멀티 유저 서버 인터페이스의 모든 아이콘을 설명하는 정보 키를 불러올 수 있습니다.

탭
메뉴 바 아래에는 멀티 유저 서버의 다양한 UI 패널 간에 전환할 수 있는 탭 행이 있습니다. 세션(Sessions) 및 클라이언트(Clients) 탭은 기본으로 표시됩니다. 활성(Active) 또는 아카이브에 보관한 세션(Archived Session) 을 더블클릭하면 해당 세션에 대한 세부 정보가 포함된 새로운 탭 패널이 열립니다.

명령 콘솔 및 출력 로그
멀티 유저 서버에는 서버 운영에 관련된 정보 로그를 검토할 수 있는 출력 로그가 있습니다. 이 로그에서 멀티 유저 서버 운영 문제 해결에 도움이 될 수 있는 오류, 경고 및 일반 진단 정보를 찾아볼 수 있습니다.

필터 드롭다운 메뉴 아래에서 몇 가지 옵션을 사용하여 표시할 출력 로그 항목을 제한할 수 있습니다.
이 인터페이스에는 멀티 유저 서버 운영에 영향을 주는 다양한 콘솔 변수를 수정할 수 있는 명령 콘솔도 있습니다.
세션 정보 탭
언리얼 에디터에서 사용할 수 있는 기존 멀티 유저 브라우저와 비슷하게 멀티 유저 서버에도 실행 중인 세션과 아카이브에 보관한 세션을 검사할 수 있는 세션 패널(Sessions Panel)이 있습니다.

툴바 아이콘
활성 세션이나 아카이브에 보관한 세션을 선택하면 세션 탭의 툴바에서 세 가지 액션을 수행할 수 있습니다.
아이콘 | 설명 |
---|---|
![]() |
선택한 세션을 복원합니다. |
![]() |
선택한 세션을 아카이브에 보관합니다. |
![]() |
허용된 경우 선택한 세션을 삭제합니다. |
활성 세션
서버의 모든 활성 세션 은 세션의 서버, 프로젝트 이름, 언리얼 엔진 버전, 최종 수정일에 대한 요약 정보와 함께 여기에 나열됩니다. 활성 세션을 우클릭하면 컨텍스트 메뉴에서 해당 세션을 아카이브 보관(Archive), 이름 변경(Rename) 또는 삭제(Delete )할 수 있습니다.

활성 세션을 더블클릭 하여 새 탭에서 더 자세하게 해당 세션을 검사할 수 있습니다.
아카이브에 보관한 세션
서버의 모든 아카이브에 보관한 세션 은 위와 같은 요약 정보와 함께 여기에 나열됩니다. 아카이브에 보관한 세션을 우클릭하면 컨텍스트 메뉴에서 해당 세션을 아카이브 보관(Archive), 이름 변경(Rename) 또는 삭제(Delete )할 수 있습니다.

아카이브에 보관한 세션을 더블클릭 하여 새 탭에서 더 자세하게 해당 세션을 검사할 수 있습니다.
활성 세션 탭
세션 정보 패널(Sessions Information Panel)에서 원하는 활성 세션을 더블클릭하여 해당 세션에 대한 추가 정보를 표시할 수 있습니다. 세션에 대한 정보가 표시된 해당 세션의 이름으로 된 새 탭이 열립니다. 활성 세션의 정보 패널에는 4개의 영역이 있습니다.

- 연결된 클라이언트(Connected Clients)
- 세션 히스토리(Session History)
- 트랜잭션 디테일(Transaction Details)
- 세션 콘텐츠(Session Content)
연결된 클라이언트
활성 세션 탭에서 연결된 클라이언트(Connected Clients) 버튼을 클릭하여 현재 해당 세션에 연결된 클라이언트를 검사할 수 있습니다. 연결된 클라이언트 버튼을 클릭하면 해당 특정 세션의 활성 연결만 표시하도록 콘텐츠가 필터링된 메인 클라이언트 탭으로 이동합니다. 클라이언트 탭의 톱니바퀴 아이콘을 사용하여 필터를 지우고 모든 클라이언트를 표시할 수 있습니다.
세션 히스토리
활성 세션 탭을 열면 해당 세션 동안 발생한 모든 개별 트랜잭션의 히스토리가 시간순으로 표시됩니다. 이 패널에는 작업에 대한 요약 내용과 변경사항이 발생한 클라이언트도 표시됩니다.

검색창을 사용하여 히스토리 타임라인에서 특정 트랜잭션을 찾아볼 수 있습니다. 톱니바퀴 아이콘을 클릭하면 몇 가지 디스플레이 필터를 이용할 수 있습니다.

트랜잭션 디테일
세션 히스토리에서 원하는 개별 트랜잭션을 선택하고 디테일 섹션을 확장하여 해당 트랜잭션에서 이루어진 변경사항에 대한 추가 정보를 확인할 수 있습니다.

수정된 오브젝트 및 프로퍼티(Modified objects and properties) 아래에서 나열된 항목 중 하나에 마우스를 올리면 어떤 에셋이 수정되었는지 툴팁에 정확하게 표시됩니다.
세션 콘텐츠

세션 콘텐츠 패널에는 프로젝트의 콘텐츠에 이루어진 모든 변경사항이 나열됩니다. 새 패키지가 추가되면 패키지 이름 왼쪽에 더하기 아이콘과 함께 나열됩니다. 패키지가 저장되면 이 아이콘은 체크 표시로 변경됩니다.
클라이언트 정보 탭
클라이언트 정보 탭에는 멀티 유저 서버의 네트워크 정보와 해당 서버의 세션에 참여한 모든 클라이언트의 레코드가 표시됩니다.
클라이언트 테이블
클라이언트 테이블에서는 연결 여부와 상관없이, 서버에 참여한 모든 클라이언트를 추적합니다. 현재 멀티 유저 서버의 활성 세션에 연결되어 있는 클라이언트는 테이블의 왼쪽 하단에 녹색 스와치가 표시됩니다. 서버에서 클라이언트의 연결이 끊어지면 스와치가 회색으로 바뀝니다.

클라이언트 테이블에서는 각 클라이언트가 전송하고 수신하는 활성 네트워크 데이터를 간략하게 보여줍니다. 검색창을 사용하여 특정 클라이언트에 대한 정보를 얻을 수 있습니다. 또한, 클라이언트의 모서리를 우클릭하고 컨텍스트 메뉴의 옵션 중 하나를 선택하여 특정 클라이언트에 대한 자세한 연결 정보를 확인할 수도 있습니다.

- 로그 열기(Open Log): 이 클라이언트와 관련된 로그 이벤트를 볼 수 있는 새 탭을 엽니다.
- 네트워크 그래프(Network Graph): 클라이언트의 네트워크 활동에 대한 실시간 그래프를 표시합니다.
- 아웃바운드 세그먼트 테이블(Outbound segment table): 해당 클라이언트가 개시한 모든 트랜잭션의 항목화된 레코드입니다.
- 인바운드 세그먼트 테이블(Inbound segment table): 해당 클라이언트가 수신한 모든 트랜잭션의 항목화된 레코드입니다.
이러한 테이블에서 클라이언트가 전송하고 수신하는 활성 데이터에 대한 정보를 확인할 수 있습니다.
항목 | 설명 |
---|---|
전송(Sent) | 클라이언트가 전송한 총 데이터입니다. |
수신(Received) | 클라이언트가 수신한 총 데이터입니다. |
RTT | 밀리초 단위의 왕복 시간입니다. |
전송 중(Inflight) | 현재 수신자의 확인을 기다리는 전송 중인 데이터입니다. |
손실(Lost) | 패킷 손실에 대한 정보입니다. |
이 정보는 패킷 처리량이 매우 높은 상황에서 발생 가능한 패킷 손실을 진단할 때 매우 유용합니다. 불안정하거나 네트워크 정체 또는 환경설정 때문에 도달할 수 없는 연결을 식별할 수 있습니다.
패키지 열
서버 창 오른쪽의 패키지 열에는 클라이언트 간의 패키지 전송 정보가 표시됩니다. 이 뷰에서는 다른 클라이언트로 현재 전송되는 대량 데이터에 대한 정보를 제공합니다. 예를 들어, 레벨 스냅샷 데이터나 GPU 라이트매스 베이크 등의 정보를 확인할 수 있습니다.

패키지가 전송된 시간, 크기, 리비전 정보가 표시됩니다. 스테이트(State) 열의 녹색 체크마크는 패키지가 완전하게 수신되었음을 수신자가 확인했으며, 따라서 패키지가 노드에 있어야 한다는 뜻입니다. 향상된 로깅(Enhanced Logging) 을 활성화하면 역시 체크마크를 클릭하여 패키지 전송에 사용된 정확한 메시지를 알아낼 수도 있습니다.
향상된 로깅
향상된 로깅은 클라이언트 탭 하단의 서버 로그(Server Log) 패널에서 이용할 수 있습니다. 서버 로그 패널 중간에 있는 로깅 활성화(Enable logging) 를 클릭하면 향상된 로깅이 활성화됩니다.

향상된 로깅에는 현재 멀티 유저 서버와 클라이언트 간에 전송되는 메시지에 대해 상세 내역이 표시됩니다. 전송되는 메시지 타입을 검사할 수 있습니다. 기본적으로, 전송된 시간과 전송한 사람, 전송된 위치, 클라이언트의 확인 여부와 함께 모든 메시지 타입이 표시됩니다.
서버 로그 패널의 검색창 왼쪽에서 다양한 필터를 사용할 수 있습니다. 드롭다운 캐럿 아이콘을 클릭하면 필터가 표시됩니다.

서버에서 향상된 로깅이 일단 활성화되면, 이를 끌 수 없습니다. 로깅 정보는 서버 로그 파일과 같은 디렉터리에 있는 CSV 파일에 기록됩니다. 세션이 길면 CSV 파일이 매우 커지므로, 문제 해결 시에만 이 기능을 활성화해야 합니다.
트랜잭션 음소거 및 삭제하기
멀티 유저 서버 애플리케이션에는 사용자가 기존 세션 데이터를 편집할 수 있는 기능이 있어, 클라이언트가 생성한 트랜잭션을 음소거하거나 삭제할 수 있습니다. 이 기능은 사용자 작업에 문제를 일으킬 수 있는 트랜잭션을 식별하고 제거하는 데 유용합니다.
세션을 아카이브에 보관하기
이 기능을 사용하려면 편집하려는 세션의 아카이브 보관된 사본을 생성하고 그 아카이브에 보관한 세션을 멀티 유저 서버에서 열어야 합니다. 세션 탭에서 활성 세션을 우클릭 한 다음, 컨텍스트 메뉴에서 아카이브(Archive) 를 선택합니다. 아카이브에 보관한 세션을 더블클릭하여 정보 패널을 엽니다.

아카이브에 보관한 세션이 열리면 원하는 트랜잭션을 선택하여 음소거하거나 삭제할 수 있습니다.
트랜잭션 삭제하기
트랜잭션을 삭제하려면 아카이브에 보관한 세션에서 트랜잭션을 우클릭한 다음, 컨텍스트 메뉴에서 편집 > 삭제 를 선택합니다.

트랜잭션 삭제는 원본이 손상되는 작업으로, 실행 취소할 수 없다는 점에 주의하세요. 트랜잭션 음소거는 삭제와 효과가 비슷하지만, 나중에 음소거를 해제할 수 있습니다. 나중에 해당 트랜잭션을 복구해야 할 수도 있다면, 삭제 대신 음소거를 사용하세요.
트랜잭션 음소거하기
아카이브에 보관한 세션에서 트랜잭션을 음소거하면, 아카이브 보관이 해제된 뒤 해당 세션에 클라이언트가 다시 참여할 때 해당 트랜잭션이 재생되지 않습니다. 음소거된 트랜잭션은 트랜잭션 히스토리에 흐릿한 항목으로 표시됩니다. 트랜잭션을 음소거하려면 트랜잭션 히스토리에서 트랜잭션을 우클릭한 다음, 컨텍스트 메뉴에서 음소거(Mute) 를 선택합니다.

이 워크플로는 기본적으로 트랜잭션 삭제와 결과가 같습니다. 그러나, 트랜잭션을 음소거하면 나중에 언제든지 음소거를 해제할 수 있지만, 삭제된 트랜잭션은 복구할 수 없습니다. 트랜잭션을 임시로 비활성화하든 영구적으로 비활성화하든, 음소거 워크플로를 사용하는 것이 권장됩니다.
종속성 분석
트랜잭션을 음소거하려 하면, 트랜잭션을 음소거하면 다운스트림 종속성이 중단될 위험이 있다고 안내하는 경고 대화창이 표시됩니다.

이전 트랜잭션에 종속되는 트랜잭션이 있을 수 있으므로 음소거하거나 삭제할 때는 항상 트랜잭션 히스토리에서 종속성을 분석해야 합니다. 이 프로세스는 자동이며 서로 연관된 트랜잭션을 찾아줍니다. 종속성 분석은 완벽히 무오류가 아니며, 트랜잭션이 서로 종속되어 있는지 여부를 쉽게 확인할 수 없는 경우도 있습니다. 그러한 경우에는 트랜잭션을 포함하거나 제외하도록 선택할 수 있습니다. 대부분의 경우 지나치다 싶은 정도로 신중히 처리하는 것이 최선입니다.