UDN
Search public documentation:
LevelStreamingHowToKR
English Translation
日本語訳
中国翻译
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
日本語訳
中国翻译
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
레벨 스트리밍 사용하기
문서 변경내역: Dave Nash 작성. Daniel Vogel 수정. 홍성진 번역.
개요
퍼시스턴트(지속) 레벨
- 새 맵을 생성하고 보이지 않는 어딘가에 작은 큐브 지오메트리를 추가합니다. (이렇게 하면 엔진이 이 레벨을 하나의 레벨로 인정을 하며, 결국 이를 없애는 단계가 있을 것입니다.)
- 플레이어 시작 지점에 Player Start 를 놓습니다. 퍼시스턴트 레벨에서는 이 Player Start 가 공중에 뜰 가능성이 있지만 레벨에 스트림 인 후에는 첫 번째 스트리밍 레벨에서 플레이어를 시작하고자 하는 어느 위치로나 이동할 수 있습니다. 게임을 플레이할 때가 아니라 플레이어가 퍼시스턴트 레벨이 아닌 스트리밍 레벨 중 하나의 지오메트리을 실제로 통과할 때 퍼시스턴트 레벨을 시작합니다.
- 맵을 저장합니다. 자체적인 관리 방식에 맞도록 퍼시스턴트 레벨 이름을 지정합니다. 예를 들어 Headquarters_P 같은 식입니다.
- 콘텐츠 브라우저를 열고 "레벨" 탭을 클릭합니다. 여기서 스트림 인 시키려는 모든 레벨을 나열해야 합니다. Headquarters 가 맵 셋으로 구성되었다면, 여기서 3가지를 모두 추가합니다. 메뉴에서 레벨 -> 기존 레벨 추가... 를 선택하여 추가합니다. 스트리밍 레벨을 추가하는 순서는 중요하지 않으나 앞으로는 정돈 상태 유지를 위한 레벨 재정렬이 가능하도록 할 예정입니다. 작업 결과는 아래 그림과 같을 것입니다.
- 레벨 스트리밍 작동방식을 거리와 키즈멧 중에서 선택할 수 있는 옵션이 주어집니다.
- 거리 스트리밍은 레벨 원점에서 플레이어까지의 거리에 따라 레벨을 로드 / 언로드합니다.
- 키즈멧 스트리밍은 디자이너가 키즈멧 스크립팅을 통해 마음대로 레벨을 로드 / 언로드할 수 있어 가장 일반적입니다.


퍼시스턴트 레벨 작업 방법 요약
- 언리얼 에디터에서 새 맵을 작성합니다.
- 큐브처럼 간단한 BSP 지오메트리를 추가합니다.
- Player Start 를 추가합니다.
- 레벨 브라우저에서 스트리밍하려는 레벨을 추가합니다.
- 맵을 저장하고 이름을 지정합니다.
키즈멧을 통해 스크립트 스트리밍
- 키즈멧을 엽니다.
- 레벨 시작을 배치합니다(New Event -> Level Loaded).
- 레벨과 같은 수의 Steam Level 액션을 놓습니다. (New Action -> Level -> Stream Level).
- Stream Level 에 클릭하고 LevelName 부분에 레벨 이름을 넣어 각 레벨 이름을 추가합니다.
- Level Loaded 를 Steam Level 액션의 각 Load 입력에 연결합니다.

스크립트 스트리밍 작업 방법 요약
- 키즈멧을 엽니다.
- Level Loaded 액션과 StreamLevel 액션을 추가하고 Level Loaded 를 Load 입력에 연결합니다.
- Stream Level 을 클릭하고 "LevelName" 필드에 스트리밍하려는 레벨의 이름을 넣은 다음 bMakeVisibleAfterLoad 를 체크합니다.
- 맵을 저장하고 게임을 실행합니다.
거리 기반 스트리밍

거리 스크립팅 작업 방법 요약
- 콘텐츠 브라우저를 엽니다.
- 레벨 탭을 클릭합니다.
- 콘텐트 브라우저의 파일 메뉴에서 Level -> New From File 을 선택하고 스트림 인 시킬 레벨을 선택합니다.
- "Distance" 스트리밍을 선택합니다.
- "Persistent Level"을 선택했는지 확인하고 오른쪽의 WorldInfo 등록 정보를 펼칩니다. WorldInfo_#을 마우스 오른쪽 버튼으로 클릭하고 "Edit Properties"를 선택합니다.
- 표시되는 프로퍼티 창에서 WorldInfo 를 펼친 다음 StreamingLevels 를 펼칩니다.
- 플레이어와의 거리가 얼마나 되어야 레벨을 월드에 스트림 인 시킬 것인지 그 거리를 입력하고, 거리 측정을 위한 원점 위치를 월드 스페이스상의 위치로 변경합니다.
스트리밍 레벨 작업
로드와 이벤트
일반적으로 레벨 로드시 여러가지 이벤트가 돌아가는 Level Startup 액션을 대체하기 위해 새로운 키즈멧 액션이 추가되었습니다. 그 이름은 Level Loaded And Visible 입니다. 기본적으로 Level Startup 과 같은 방식으로 작동하나, Change Level Visibility 액션과 함께 작동되도록 고안되었습니다. CLV 액션을 통해서든 bMakeVisibleAfterLoad 플랙 체크 상태로 스트림 인 시켜서든, 레벨이 플레이어에게 보이게 되면 이 Loaded And Visible 액션이 발동됩니다. 여기에 Remote Events 와 결합시켜, 필요에 따라 로드 / 언로드는 물론이고 다른 스트리밍 레벨과 이벤트를 주고받을 수 있도록 하기 위해, 각 스트리밍 레벨을 독립적인 개체로 만듭니다. 아래 그림은 주 레벨이 보이게 되자 마자 플레이어를 텔레포트시키고, 다른 레벨의 Remote Event 가 발동되었을 때 크리처를 스폰시키기도 하는 예입니다.
레벨 간 액터 이동
2007년 12월 QA 승인 빌드 이후, 한 레벨에서 액터를 복사(Ctrl + C)하고 현재 레벨을 변경하고 붙여넣기(Ctrl + V)하면 간단히 레벨 간 액터 이동이 가능합니다. 그러나 이는 액터 간 참조에 따라 생길수 있는 문제 해결을 위해 새로운(scratch) 월드로 serialize 시켜야 한다는 점에서, MoveSelectedActorsToCurrentLevel 과 비슷한 방법을 사용합니다. 이 함수성은 changelist #203995, #206418 에 도입되었습니다. 2007년 1월 QA 승인 빌드 이전에는 대규모 액터를 한 번에 이동할 때 메모리 부족 오류가 발생할 수 있었으나 에디터 트랜잭션 버퍼의 성능(및 메모리 사용량)을 개선하여 이를 해결했습니다(changelist #206829). 또한 2007년 1월 QA 승인 빌드에서는 레벨 브라우저 의 New Level from Selected Actors 버튼을 사용하여 액터를 새 레벨로 이동할 수 있습니다 (changelist #206324).최적화
대부분 개발자들은 퍼포먼스와 작업방식 두 가지 면 모두에 있어서 스트리밍 레벨은 다다익선이라는 것을 알게 될 것입니다. 그러나 현재 시스템의 제한 요소 한 가지 때문에 좌절을 겪게 되는데, 그것은 뭐냐면 어느 한 레벨에 놓은 액터를 다른 레벨에서 키즈멧으로 직접 참조할 수 없다는 것입니다. 원격 이벤트를 발동시키고 수신하여 스트리밍 레벨 사이의 이벤트를 트리거시킬 수는 있지만, 여기서 다른 레벨 사이의 액터를 직접 참조할 수는 없는 것입니다. 위의 그림에서 보면 Pathnode_0 과 Pathnode_1 은 이 스크립트의 같은 레벨, 이 경우 Headquarters_2 에 있어야 합니다. 그 노드 중 하나라도 HQ_1 이나 3 에 있었다면, 이 액션들은 기능을 상실하게 됩니다. 2007년 12월 QA 승인 빌드 이후로, 기존 레벨을 스트리밍 덩어리로 쉽게 잘라주는 기능이 추가되었습니다.- 월드의 액터를 한 다발 선택합니다.
- 레벨 브라우저의 레벨 에서 선택 액터로부터 새 레벨 을 선택합니다.
- 디스크에 새로운 스트리밍 레벨이 생성되어 월드에 추가되며, 그 후 선택된 액터가 그 새 레벨로 이동됩니다.