포스트

Unity Web

Unity Web

머리말


Unity Web


과거에는 ‘WebGL’ 이라는 이름으로 Build Target을 설정할 수 있었는데,
시간이 지남에 따라 Web Graphics API로 WebGL2, Web GPU도 지원하게 되면서 ‘WebGL’ 이라는 이름이 조금 어색해짐.

-> 그래서 Unity 6부터 ‘Web’ Build Target으로 이름이 바뀜.
아이콘도 HTML5 로고에서 지구 (글로벌, 인터넷) 느낌의 모양으로 바뀜.

Web Graphics API


  • WebGL
  • WebGL2
  • WebGPU

Unity 6 기준, 지원하는 Graphics API는 WebGL2, WebGPU 두 가지.

WebGL (1)은 원래 지원했는데, Unity 6 올라오면서 설정할 수 없게 됐고,
WebGPU는 새로 생긴 옵션인데, 아직 실험적 단계라 프로젝트에 적용하기에는 어려워보임.

그래서 사실상 지금 시점에서는 WebGL2 사용해야 할 듯

WASM


Web Assembly의 줄임말

  • LLVM 저수준 가상 머신?
  • Emscripten
    • C++/C -> Emscripten -> Wasm
    • Emscripten 에서 LLVM을 컴파일에 이용
  • 모든 브라우저는 Wasm을 JS와 함께 실행 가능?
  • Wasm은 거의 네이티브 같은 속도로 실행된다?
  • 개발 과정에 Unity가 깊은 연관 있다고 봤던 것 같음

  • 모바일 브라우저에서 WASM 지원하는 최소 버전
    • Safari: 15 16.4
    • Chrome: 58 91
    • Firefox: 89
    • Edge: 91

(이거 VRChat인가 USharp인가 어디서 쓴거 본 것 같은데)

Web Template


빌드 결과물 어떻게 보여줄 것인지에 대한 Template
HTML, CSS, JS 다 있는 듯

  • ProjectSettings 에셋 파일을 텍스트 편집기로 열면, Theme 부분에 APPLICATION:~, PROJECT:~를 확인 가능

프로파일링


  • Profiler
    • Web 빌드 연결해서 사용할 수 있음.
    • [확인 필요] Profiler에서 측정되는 Memory는 JS Memory 기준인 듯 함.
      • WASM Heap은 따로 방법 없는 듯?
  • Memory Profiler
    • 아쉽게도 아직 Web 빌드 지원 없음.

Web Diagnostics

Player Settings에서 옵션 키고, Web Template – Web Diagnostics 있는 걸로 설정해서 빌드하면
런타임에 첫 진입까지 걸린 시간, Memory 사용량, FPS 측정할 수 있음

Web Memory

두 종류의 메모리 확인할 수 있는데
하나는 JS Memory라는 것이고, 하나는 WASM Heap이라는 것임.

  • JS Memory
    • Performance.Memory API
      • Only Chrome, Edge
      • No Safari, Firefox, iOS
  • WASM Heap

메모


  • 인스턴트 게임 빌드 (Facebook)
  • Keijiro WebGPI Sample
  • HTTP Preload 태그를 이용
  • 첫 번째 씬에 필요한 에셋 로드

참고

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.