지원되는 모든 플랫폼에서 섬을 실행할 수 있도록 보장하기 위해 포트나이트 에서는 일부 메모리 제한을 적용합니다.
포크리의 이전 제한에서는 경험이 일반 크기의 섬에서 허용되는 100,000 메모리 유닛을 초과하지 않도록 해야 했습니다.
포크리에서 초대형 섬을 선택하면 각 구역이 100,000 유닛 한계를 넘지 않는 한 이 한계치를 우회할 수 있습니다.
포트나이트 언리얼 에디터(Unreal Editor for Fortnite, UEFN) 에서는 메모리 기능이 확장되어 더 크고 다양한 경험을 제작할 수 있습니다. 이 기능을 모두 활용하려면 UEFN에서 메모리 사용량이 계산되는 방식을 이해하는 것이 도움이 됩니다.
월드 파티션 소개
월드 파티션(World Partition) 은 대규모 섬 경험을 제작하는 데 핵심적인 역할을 합니다. 이 기능은 자동으로 월드를 그리드로 나누며, 필요한 셀만 스트리밍합니다.
또한 월드 파티션은 셀을 로드하고 언로드하는 스트리밍 과 플레이어 카메라가 에셋에서 멀어질수록 에셋의 디테일을 그룹화하고 그 양을 줄이는 계층형 레벨 오브 디테일(Hierarchical Level of Detail, HLOD) 을 활용합니다.
월드 파티션, 스트리밍 및 HLOD에 대한 자세한 내용은 스트리밍 및 HLOD를 참고하세요.
새 세션 레이아웃
포트나이트 크리에이터에게 익숙한 셀 메모리 사용량(Cell Memory Used) 바가 변경되었습니다. 프로젝트에 스트리밍 이 활성화되어 있는 경우 더 이상 섬의 최대 메모리 유닛 수에 제한을 받지 않습니다.
세션에 로드되면 HUD에 현재 메모리 사용량(Current Memory Usage) 바가 표시됩니다.
현재 메모리 사용량
현재 메모리 사용량은 최대 100,000 메모리 유닛을 표시하여 섬의 로컬 메모리 사용량을 간략하게 보여줍니다.
포크리 편집 세션과의 가장 큰 차이는 이제 메모리가 섬의 모든 에셋에 의해 사용되는 총 메모리 대신 섬 내 플레이어의 위치에 따라 계산된다는 것입니다. 메모리 계산을 수행하면 각 스트리밍 셀의 가장 정확한 메모리 사용량 값을 확인할 수 있습니다.
일부 에셋은 플레이어 위치와 관계없이 메모리에 유지되므로 맵 어디에 있든 메모리 사용량에 추가됩니다.
현재 총 메모리에 포함되는 에셋은 다음과 같으며, 이 외에 다른 에셋들도 포함됩니다.
- 장치
- 커스텀 랜드스케이프
- 커스텀 에셋
다른 에셋의 대부분은 위에서 설명한 대로 로드 및 언로드되며, 바는 섬의 특정 구역에 대한 메모리 사용량을 보여줍니다.
레벨에서 100,000%를 초과하는 영역이 있는 경우 섬을 퍼블리싱할 수 없습니다.
UEFN 사용자는 퍼블리싱하지 않는 한 100,000 표시기 제한을 초과할 수 있습니다. 콘솔에서 협업하는 사용자들의 경우에는 가용 메모리 하드웨어 제한에 걸려 세션에서 추방될 수 있습니다. 문제가 해결되면 다시 연결할 수 있습니다.
메모리 계산
섬을 성공적으로 퍼블리싱하려면 모든 지원 하드웨어 플랫폼에서 실행할 수 있어야 합니다.
퍼블리싱하기 전에 프로젝트가 메모리 제한을 초과하지 않는지 확실하게 확인하는 것이 중요합니다. 프로젝트(Project) 드롭다운에서 메모리 계산 실행(Launch Memory Calculation) 을 선택합니다.
이 프로세스는 모든 셀에서 사용되는 메모리를 계산합니다.
-
프라이빗 버전 업로드를 알리는 대화창이 표시될 것입니다. 버튼을 클릭해 프로그레스 바를 확인하세요.
-
선택 사항으로 프로젝트 버전에 대한 설명을 추가할 수 있습니다.
-
화면 하단에 메모리 계산이 진행 중이라는 알림이 표시됩니다.
-
업로드가 완료되면 알림 창은 계산이 시작되었다는 걸 나타내는 화면으로 바뀝니다.
-
클라이언트에서는 메모리 계산 결과가 표시됩니다. 계속(Continue) 을 누르면 플레이어 캐릭터를 조작할 수 있게 됩니다.
-
계산이 끝나면 플레이어 캐릭터는 계산이 시작되기 전 원래 위치로 순간이동되며 다음과 같은 두 가지 상태 중 하나를 확인할 수 있습니다.
-
에디터에서 툴(Tools) > 프로젝트 크기(Project Size) 를 선택해 프로젝트 크기의 세부 정보를 확인할 수 있습니다.
프로젝트에서 스트리밍(Streaming)을 적용했다면 자유롭게 날아다니면서 여러 영역이 차지하는 공간의 크기를 볼 수 있습니다.
스트리밍이 적용되었다면 메모리 사용량 바가 어떻게 변하는지 확인해보세요. 이를 사용하여 레벨에서 메모리 사용량이 계획보다 많은 영역을 식별할 수 있습니다.
섬이 메모리를 계획보다 많이 사용하는 경우 퍼블리싱하기 전에 로컬 메모리 이슈를 해결해야 합니다.
섬의 예산이 초과된 경우 해결 방법
제한에 도달했을 때 메모리를 절약하는 전략은 다양합니다. 다음과 같은 방법을 시도해볼 수 있습니다.
-
메모리 계산 후 섬에서 메모리를 가장 많이 차지하는 에셋 100개가 정리된 시트를 확인할 수 있습니다. 창(Window) > 메시지 로그(Message Log) > 메모리 테스트 결과(Memory Test Results) 를 선택하면 됩니다.
아래 표는 각 용어별 의미를 보여줍니다.
용어 의미 설명 ShrdAsset 공유 에셋 크기 에셋이 사용하는 메모리 양 + 다른 에셋과 공유되는 종속성을 더한 값입니다. 예컨대 메시 두 개가 공유하는 텍스처의 경우, 이 텍스처가 사용하는 메모리는 두 메시에 공유되는 비용이 됩니다. ExclAsset 독점 에셋 크기 에셋이 사용하는 메모리 양 + 해당 에셋에 고유한 종속성을 더한 값입니다. 예컨대 메시 하나에서만 사용하는 텍스처의 경우, 이 텍스처가 사용하는 메모리는 해당 텍스처를 사용하는 단일 메시에만 한정되는 비용이 됩니다. PerInstMin 최소 인스턴스 크기 에셋의 단일 인스턴스가 사용하는 최소 메모리 양입니다. 예컨대 액터 10개가 표시하는 사용자 위젯이 있고, 그 위젯이 그려지는 해상도를 조정하는 인스턴스별 세팅이 있는 경우, 이 크기는 가장 낮은 해상도로 위젯을 그리는 인스턴스에서 사용하는 메모리가 됩니다. PerInstMax 최대 인스턴스 크기 에셋의 단일 인스턴스가 사용하는 최대 메모리 양입니다. 예컨대 액터 10개가 표시하는 사용자 위젯이 있고, 그 위젯이 그려지는 해상도를 조정하는 인스턴스별 세팅이 있는 경우, 이 크기는 가장 높은 해상도로 위젯을 그리는 인스턴스에서 사용하는 메모리가 됩니다. NumInst 인스턴스 수 에셋이 섬에서 표시된 횟수입니다. 총 인스턴스 크기 총 인스턴스 크기 모든 에셋 인스턴스 크기의 총합입니다. TotalExcl 총 제외 크기 독점 에셋 크기와 총 인스턴스 크기로 구성됩니다. 현재 세부 메모리 결과가 정렬되는 방식입니다. 총 총 크기 공유 에셋 크기와 총 제외 크기로 구성됩니다. -
'월드 파티션' 패널에서 스트리밍을 켭니다. 큰 섬의 경우 반드시 해야 하지만, 작은 섬에서도 특히 콘텐츠가 너무 밀집된 경우 스트리밍의 장점을 누릴 수 있습니다.
-
섬에 콘텐츠를 고르게 분포시킵니다. 작은 영역에 너무 많은 액터가 집중되면 콘텐츠가 스트리밍되지 않을 수 있으며, 메모리 예산 초과에 영향을 미칠 수 있습니다.
-
섬에서 사용하는 장치 수를 줄입니다. 장치는 배치할 수 있는 액터 중 가장 비용이 많이 듭니다. 그러나 같은 장치를 인스턴스로 배치하면 메모리 비용을 대폭 줄일 수 있습니다.
-
'프로젝트 크기(Project Size)' 창을 살펴봅니다. 디스크에 메모리를 많이 차지하는 오브젝트가 있다면 런타임에서도 메모리를 많이 소모할 가능성이 높습니다. 프로젝트 크기를 확인하려면 프로젝트 드롭다운 메뉴를 클릭하고 프로젝트 크기 를 선택합니다.
-
커스텀 에셋 LOD에서 퀄리티 레벨을 줄입니다. 특히 에셋이 먼 거리에서만 보일 경우 이렇게 하면 좋습니다.
-
같은 메시를 여러 번 재사용합니다. 100개의 나무로 구성된 숲에서 100개의 고유한 나무를 사용하는 대신 5가지 베리에이션을 사용하고 복제합니다. 이렇게 하면 메모리에 미치는 영향이 크게 줄어듭니다.
-
HLOD를 사용하는 경우 프로젝트 프로세스를 통해 생성하고, 멀리서 볼 수 있는 오브젝트에 대해서만 생성되게 합니다.
-
섬을 모두 동시에 표시하지 않아도 되는 구성으로 섬을 세분화할 수 있는 경우 데이터 레이어를 활용하세요. 예를 들면 플레이어가 신전에 들어가지 않으면 접근할 수 없는 지하 던전과 같은 경우가 있습니다.
-
커스텀 콘텐츠의 메시 복잡도를 낮춥니다. 하이 폴리 메시는 메모리 비용을 증가시킵니다. 콘텐츠 브라우저에서 메시를 더블클릭하여 편집하고, 나나이트 세팅(Nanite Settings) 의 트라이앵글 퍼센트 유지(Keep Triangle Percent) 값을 조정합니다. 낮은 값을 사용하면 메시의 복잡도가 낮아지고 액터의 메모리 비용도 줄어듭니다.