예지의 테크 로그포스 (Yeji's Tech Log Force)

[Web타겟] 빌드 용량 줄이기(재설계) 본문

[Unity] Projects & Study/Loop - Interactive Movie

[Web타겟] 빌드 용량 줄이기(재설계)

Yeji Heo 2024. 8. 27. 22:34

1. 문제 상황: The file is too long

PC(Windows, Mac, Linux)플랫폼을 WebGL로 바꾸고자 했다.

에디터에서 WebGL로 Switch Platform하여 Build And Run했다.

 

그런데 인터랙티브 무비인 만큼 영상 파일들의 크기가 너무 컸다.

WebGL빌드는 웹 플랫폼을 위한 것이므로 빌드 용량이 너무 커서는 안 된다.

그래서인지 2 gigabytes아래가 아니면 빌드 할 수 없다라는 아래와 같은 에러를 만났다.

! System.IO.IOException: The file is too long. This operation is currently limited to supporting files less than 2 gigabytes in size.


2. 해결방법: Redesign - 영상을 Embed하지 않고, URL로 대체하기

기존 LOOP는 별도의 서버가 필요하지 않았다. 

온라인 게임이 아니라서 회원별 동적 처리도 필요 없고,

Steam/GooglePlay에서 다운로드하면 게임 데이터는 클라이언트에서 관리하는 것으로도 충분했기 때문이다.

게임 '역전재판'처럼 말이다. 그래서 게임 영상 또한 클라이언트 개발을 하며 Embed했던 것이다.

 

그러나 제공 플랫폼을 웹으로 변경하면서 배포용 서버를 구축할 계획이므로,

이번에는 '서버'를 활용해 근본적인 설계구조 자체를 바꿀 수가 있다.

포함중인 영상의 용량이 커서 빌드에 실패하고 있으므로, 영상을 직접 VideoClip으로 포함하지 않고 URL로 대체해도 좋을 것 같다. 단, 빌드 용량이 줄어드는 만큼 네트워크 대역폭을 많이 쓸 테니, 서버 측 압축으로 Gzip이나 Brotli등을 써줄 필요는 느껴진다.

(+ 시도하면서 알게 됐는데 WebGL은 VideoClip을 지원하지 않는다고 한다. URL로 바꿔야 할 운명이었다)

 

 

※변동 사항

서버 구축 및 동영상 제공을 직접 할 계획이었으나,

NCP Object Storage를 잘 썼던 경험이 있어서 간단히 버킷 생성 후 비디오를 업로드하고 URL을 얻었다.

VideoClip은 지우고, URL로 대체한 후 빌드하였다. 


3. 빌드

웹 빌드 및 실행을 마쳤다. 

그러나 브라우저에서 오브젝트스토리지에 URL로 동영을 요청할 때 CORS 관련 이슈가 발생한다. 

다음 글에서 이어서 해결해본다.



다음 글

 

[웹 플랫폼 추가] NCP Object Storage CORS설정(S3 Browser)

1. 문제 상황: Video접근 시 SOP(Same-Origin Policy)위반으로 인한 접근 거부웹 플랫폼 제공을 위해 VideoClip을 모두 URL로 변경하였다. URL은 NCP ObjectStorage의 File Link다. WebGL을 통한 Unity프로젝트 빌드로 웹

crayeji.tistory.com

 

Comments