우수 답변
글쎄요, Unity에 대한 질문에 답할 수 있습니다. .
이전에는 브라우저 내 Unity 게임, 특히 Facebook에서 번성하는 생태계가되었습니다. Unity 웹 플레이어는 멋진 그래픽과 부드러운 프레임 속도를 얻을 수있을만큼 괜찮 았습니다 (많은 베이킹 및 최적화를 수행 한 경우). 저는 한때 웹 플레이어에 배포 된 심각한 게임 / 시뮬레이션 작업을하고 한계를 뛰어 넘었 기 때문에 그것이 무엇을 할 수 있는지 알았습니다.
Chrome이 죽이기 결정했을 때 모든 것이 바뀌 었습니다. 웹 플레이어의 기반이되는 NPAPI 지원. NPAPI 란 무엇입니까? 자세한 내용은 여기에 있습니다- NPAPI-Wikipedia -간단히 말하면 다양한 주류 브라우저를위한 플러그인 개발 방법입니다. 그러나 NPAPI는 오래되어 보안 문제가 발생하기 쉬우 며 HTML5 / WebGL 등을 사용하라는 요청이 있었기 때문에 Chrome은이를 단계적으로 제거하기로 결정했습니다.
NPAPI와 WebGL 사용의 가장 큰 차이점은 전자입니다. 로컬 컴퓨터의 리소스에 거의 무제한으로 액세스 할 수 있습니다 (자세한 내용은 NPAPI 플러그인-Google 크롬 참조). Unity3D WebGL의 경우 두 가지 큰 문제가 있습니다.
첫 번째는 HTML5 / WebGL을위한 기본 코드 컴파일이 없다는 것입니다. Unity는 최적화 된 JavaScript 형태로 프로젝트를 컴파일하여이 문제를 해결했습니다. 프로젝트를 실행하려면 대부분의 Unity 엔진 코드가 있어야하며 Unity는 결코 경량이 아니기 때문에 파일 크기 측면에서 large 입니다. 웹 플레이어의 경우 대부분의 엔진 코드가 이미 DLL 또는 플러그인에 있으므로 장면 데이터 자체를로드하고 실행할 수 있습니다. 그러나 WebGL 웹 플레이어의 경우 엔진 코드를 지속적으로 다시 다운로드해야하며 아직 해결책이 있는지 확실하지 않습니다.
크기를 줄이려면 WebGL 코드가 압축됩니다. 그러나 이는 클라이언트의 컴퓨터에서 다운로드 한 후 코드를 압축 해제해야한다는 것을 의미하므로 경험이 느리고 투박해집니다.
킬러 문제는 메모리 문제입니다. NPAPI와 달리 WebGL 웹 플레이어를 실행하면 브라우저에있는 메모리 만 사용할 수 있습니다. 솔직히 당신의 통제에서 벗어났습니다. 플레이어가 100 개 이상의 탭을 열어 게임을 실행하기에 충분한 메모리가 남아 있지 않을 수 있습니다. 또는 게임이 브라우저의 메모리 제한에 비해 너무 커서로드하는 동안 오류 메시지없이 충돌이 발생할 수 있습니다 (2 년 전 제가 시도한 경우였습니다).
WebGL / HTML5를 사용하여 더 자세하지 않은 모델, 더 낮은 품질의 게임 자산 (사운드, 텍스처 등)을 해결합니다. Franky, WebGL / HTML5가 이전 NPAPI 플러그인이 제공 할 수있는 수준의 품질과 프레임 속도를 제공 할 수 있을지 의심 스럽기 때문에 웹 기반 Unity 게임의 전체 생태계가 지워 졌다고 생각합니다.
이것은 주로 Unity3D WebGL 플레이어를위한 것입니다. WebGL에서 게임을 실행할 수있는 다른 게임 엔진이 있지만 JavaScript 기반이고 웹에 최적화되어 있습니다. Unity3D는 거대한 엔진이며 웹은 더 이상 배포 플랫폼으로서의 일류 시민이 아닙니다.
어쨌든 저는 그렇지 않았습니다. 지난 2 년 동안 Unity 장면에서 누군가가 저를 모순 할 수 있기를 바랍니다.
답변
여기에 숨어있는 콘텐츠 문제와 사회 공학 문제가 있지만 저는 기술적 인 문제에 대해 이야기 할 것입니다. 처음 두 권에 대해 두 권의 책을 쓸 수 있습니다.
여기서 TL; DR은 실제로 동일한 AAA 성능을 얻을 수 없다는 것입니다. 네이티브 프로그램에서 기대할 수있는 웹 플랫폼. 몇 가지 해결 방법이 있지만 개발자가 구현하는 데 더 많은 비용이 듭니다.
1.) 런타임 컴파일 및 자산 처리
표준 게임 제작 방법과 달리 웹 게임은 현재 코드를 컴파일하고 관련 자산에 실시간으로 액세스해야합니다. 역사적으로 게임에는 요청시로드 및 실행되는 사전 컴파일 된 자산과 코드가있었습니다. 게임을 사전 컴파일하면 다양한 상황에서 더 잘 실행되도록 게임을 최적화 할 수 있습니다. 이 사용자 정의 중 일부는 설치시 발생하며 (IE, PC / MAC / 콘솔 차이) 일부는 게임 옵션을 설정할 때 발생합니다.
이 최적화는 런타임 전에 발생하므로 게임에로드 할 수 있습니다. 더 빠르게 (당신이해야 할 일을 이미 알고 있습니다). 그러나 런타임 컴파일은이 모든 것을 미리가 아닌 런타임에 파악해야 함을 의미합니다. 이로 인해 일반적으로로드 시간이 증가합니다. 이론적으로는 다운로드 한 데이터를 캐시 할 수 있지만 브라우저 (또는 불운 한 사용자)가 수행중인 작업을 매우 쉽게 재정의 할 수 있습니다. # 3을 참조하세요.
2.) 서버 유지 관리
웹 브라우저를 통해 파일과 자산을 원격으로 저장할 수 있지만 이는 게임 회사의 유지 관리 문제를 나타냅니다. 서버 서비스 서비스를 유지하기위한 시간과 비용. 이 문제는 로컬 컴퓨터에 게임을 한 번 설치하고 지속적인 스트리밍 업데이트 대신 주기적으로 패치를 제공하면 크게 줄일 수 있습니다. 대역폭 = $$$, 최대 가동 시간으로 서버를 운영하는 데 필요한 정보 기술 전문가는 말할 것도 없습니다.
3.) 브라우저 오버 헤드 / 제한