찾기
내용으로 건너뛰기
추적
문서의 이전 판을 선택했습니다!
저장하면 이 자료로 새 판을 만듭니다.
미디어 파일
======네이티브 클라이언트 개발 시작하기====== 네이티브 클라이언트(//NaCl//)는 Google에 의한 신기술로, 사용자가 플러그 인을 설치할 필요 없이 아주 고성능의 웹 앱의 배포를 허용하기 위해 네이티브 실행 코드를 웹페이지에 내장할 수 있게 해 줍니다. 현재, NaCl는 Windows, Mac OS X, Linux에서 Google Chrome에서만 지원하나(Chrome OS 지원은 현재 진행 중), 이 기술은 오픈 소스이며, 장래 다른 브라우저 플랫폼에도 포팅(port) 될 수 있습니다. . Unity 3.5는 NaCl 을 사용하여 Chrome에서 플러그 인을 설치하지 않고 Unity Web Player 콘텐트(.unity3d files)의 실행을 지원합니다. 이는 아직 초기 릴리스 이나 – 안정적으로 사용할 수 있습니다. 하지만 Unity Web Player에서 지원하는 모든 기능을 지원하는 것은 아니고, NaCI가 진화하는 플랫폼이므로, 브라우저 플러그 인에서 수행할 수 있는 모든 것을 지원하지는 않습니다. =====NaCl 상의 게임 구축과 시험===== NaCl에서 게임을 구축하고 시험하는 것은 간단합니다. 사용자는 Google Chrome을 설치하여야 합니다. Build Settings에서 "Web Player"을 선택하고, "Enable NaCl" 체크상자를 체크합니다. 이는 생성된 unity3d 파일이 NaCI에서 실행될 수 있게 해 줍니다(NaCl에 필요한 GLSL ES 셰이더(Shaders)를 포함함으로써, 그리고 NaCI 가 지원하지 않는 동적(dynamic) 폰트를 비활성화 함으로써). 그리고 NaCi 런타임과 NaCI에서 게임을 시작할 html 파일을 설치합니다. 사용자가 Build & Run을 클릭하면, Unity는 Chrome에 사용자의 플레이어를 하나의 앱으로 설치하고 자동으로 구동할 것 입니다. =====NaCl 포함 게임 출시===== 현재 상태로는, NaCI는 Chrome에서 기본값으로 일반 웹 페이지를 사용할 수 없습니다. 사용자는 모든 웹 페이지에 NaCI 플레이어를 내장 할 수 있고, %%chrome://flags%%에서 사용자가 NaCI를 수동으로 바로 활성화하도록 지시할 수 있지만, NaCI 게임을 출시하여 박스 밖에서 실행하도록 만들 수 있는 유일한 방법은 [[https://chrome.google.com/webstore|Chrome Web Store]] 에 배포하는 것입니다 (이에 대하여 NaCI는 기본적으로 비활성화 상태). Chrome Web Store는 상당히 비제한적이라는 점을 유의하고, 사용자 자신의 웹사이트에 내장된 콘텐트를 호스트 할 수 있게 해 주거나, 혹은 사용자가 원할 경우 사용자 자신의 지불 처리 시스템(payment processing system)을 사용할 수 있게 해 줍니다. 현재의 계획은 이러한 제한을 Google이 휴대용 NaCI(PNaCI)라는 신기술을 완성했을 때 풀 것으로 예상하고 있으며, 이렇게 되면 사용자가 이것을 LLVM bitcode로 실행 코드를 출시할 수 있게 해주어서, NaCl 앱이 특정 CPU 구조와 독립시킬 수 있습니다. 그러면 NaCI는 모든 임의의 웹사이트에서 사용할 수 있게 됩니다. ====빌드 크기에 관한 노트==== NaCl 빌드를 작성 시, 사용자는 //unity_nacl_files_3.x.x// 폴더가 100MB 이상으로 매우 크다는 것을 알게 될 것입니다. 이렇게 많은 데이터가 NaCI 콘텐트를 실행할 때 마다 다운로드 되어야 하는지 우려된다면, 그 대답은 일반적으로 "no" 입니다. Chrome Web Store에서 앱을 제공하는 방법은 두 가지가 있는데, 호스트 방식과 패키지 앱 방식입니다. 만일 사용자가 자신의 콘텐트를 패키지 앱으로 제공한다면, 모든 데이터는 압축 아카이브로 다운되고 설치될 것이고, 이 경우 사용자의 디스크에 저장될 것 입니다. 만일 사용자가 자신의 콘텐트를 호스트 앱으로 제공한다면, 데이터는 웹에서 매번 다운로드 될 것입니다. 하지만 NaCl 런타임은 //unity_nacl_files_3.x.x// 폴더에서 관련 아키텍처(i686 or x86_64)만 다운로드 할 것이며, 웹 서버가 올바로 설정되었다면, 이 데이터는 전송 시 압축될 것이고, 그리하여 실제로 전송되는 데이터의 양은 약 10MB (물리 스트리핑(stripping)이 사용될 경우 그 이하)정도일 것 입니다. //unity_nacl_files_3.x.x// 폴더는 전송 시 데이터를 압축하기 위하여 Apache를 설정하는 하나의 //.htaccess// 파일을 포함하고 있습니다. 만일 사용자가 다른 웹 서버를 사용할 경우, 사용자는 이를 스스로 설정해야 할 수 있습니다. =====NaCl의 한계점===== NaCl는 일반적인 Unity Web Player에 있는 모든 기능을 아직 지원하지는 않습니다. 여기에 대한 많은 지원은 Chrome과 Unity의 미래 버전에 포함될 것 입니다. 현재 NaCI는 다음과 같은 기능은 지원하지 않습니다: * Webcam Textures * Joystick Input * Caching * Dynamic Fonts * WWW 클래스 이외 다른 종류의 네트워크. * Profiler는 편집기로의 네트워크 연결이 필요하므로 작동하지 않습니다. * 표준 웹 플레이어 플러그 인과 마찬가지고, NaCl 는 네이티브 C/C++ 플러그 인을 지원하지 않습니다. 다음 기능은 지원하지만, 일부 한계점이 존재합니다: * 깊이 텍스처(Depth textures): -> 깊이 텍스처는 실시간 그림자와 다른 효과에 필요합니다. 깊이 텍스처는 Unity NaCl에서 지원되나, Chrome's OpenGL ES 2.0 구현은 Windows에 필요한 확장(extensions)을 지원하지 않습니다. 그러므로 깊이 텍스처는 OS X 와 Linux에서만 동작합니다. * 다른 그래픽 기능들: -> NaCl는 OpenGL ES 2.0을 사용하고, 이는 일반 OpenGL에 포함된 모든 확장을 지원하지는 않습니다. 이는 선형 및 HDR 라이팅과 같이 확장에 의존하는 일부 기능은 현재 NaCI에서 동작하지 못함을 의미합니다. 또한 셰이더(Shadrs)도 GLSL 셰이더로 컴파일 될 수 있어야 하며, 모든 내장된 Unity 셰이더가 이를 지원하지는 않습니다. 예를 들어, Screen Space Ambient Occlusion은 GLSL에서는 지원하지 않습니다. * 커서 잠그기(Cursor locking): -> 커서 잠그기는 지원하지만, 풀 스크린 모드에서만 지원됩니다. 윈도우 된(windowed) 모드에서의 커서 잠금은 장래의 Chrome 출시에서 지원할 계획입니다. * NullReferenceExceptions: -> NaCI는 하드웨어 에러 처리(exception handling)은 지원하지 않습니다. 이는 스크립트 코드에서 NullReferenceException이 발생하면 NaCI가 중단(crash) 한다는 것을 의미합니다. 하지만, 사용자는 ''softexceptions="1"''을 내장 매개변수(embed parameters)로 전달하여 (개발 플레이어를 빌드 할 때 자동으로 Unity에 의해 설정), mono로 하여금 소프트웨어에서 NullReferences에 대한 확인을 수행해 줄 것을 요청할 수 있으며, 이렇게 하면 스크립트의 수행은 느려지나 crash는 발생하지 않습니다. Google은 Mac에서 OS X 10.6.7 이상의 사양 이외는 NaCI에 대한 어떠한 시스템 요구사항도 제시하지 않고 있지만, 우리가 본 바로는 옛날 시스템에는 잘 작동하지 않으며 – 특히 시스템이 오래된 GPU나 그래픽 드라이버 혹은 저용량의 메모리가 있을 경우에 그러합니다. 만일 사용자가 오래된 하드웨어를 대상으로 개발한다면, Web Player가 더 나은 결과를 제공하는 것을 볼 수 있을 것 입니다. =====풀 스크린 모드:===== 풀 스크린 모드는 Screen.fullScreen을 설정하여 지원하나, 사용자가 마우스 버튼을 놓은 프레임에서만 풀 스크린 모드를 입력할 수 있습니다. NaCI는 실제적으로 하드웨어 해상도를 변경하지는 않으며, 이러한 이유로 Screen.fullScreen은 현재 데스크탑의 해상도만을 결과값으로 보여주는 것 입니다. 하지만, Chrome은 더 작은 버퍼로 랜더링 수행을 지원하고, 화면이 느려지면 이 규모를 상향합니다. 그러므로, 풀 스크린 모드에서는 일반적으로 데스크 탑 해상도보다 저 사양을 요구하지만, 스크린 모드를 바꾸는 대신 CPU 에 따른 사양변경을 합니다. =====WWW 클래스:===== NaCI는 WWW 클래스를 지원하지만, Unity Web Player와는 다른 보안정책을 따릅니다. Unity Web Player가 플래시와 유사하게 [[Security Sandbox|crossdomain.xml]] 정책파일을 사용하는 반면, Unity NaCI는 [[http://www.w3.org/TR/cors/|here]]에 기록되고 NaCI가 따르는 근원지간 보안 모델(the cross-origin security model)을 따라야 합니다. 기본적으로, 해당 플레이어가 호스트 하는 도메인과 다른 도메인 상에 있는 html 문서를 접근하려면, 사용자는 웹 서버의가 요청 시 헤더(header)에 ''Access-Control-Allow-Origin''을 보내어 해당 플레이어가 그 도메인을 호스트 할 수 있도록 설정해야 합니다. =====NaCl에서 브라우저 javascript와의 통신===== JavaScript을 사용하여 웹 페이지와의 대화는 지원되며, 한 가지만 제외하고 [[Unity Web Player and browser communication|using the Unity Web Player]]와 매우 유사합니다: html javascript 에서 Unity로 메시지를 보내는 문법(syntax)이 다르며, 그 이유는 그것이 NaCI 모듈을 통과해야 하기 때문입니다. 사용자가 기본적은 Unity가 생성한 html을 사용할 경우, 이 코드는 동작할 것 입니다: ''document.getElementById('UnityEmbed').postMessage("GameObject.Message(parameter");'' =====기록하기(Logging)===== NaCl는 사용자 파일 시스템으로 접근을 허락하지 않기 때문에 로그 파일을 작성하지 않을 것 입니다. 대신 모든 로그를 stdout으로 보냅니다. NaCI로부터 플레이어 로그를 보려면: * 편집기에서 Build & Run을 한번 수행하여 사용자가 Chrome에 앱 으로 게임을 설치했는지 확인하기 바랍니다. * Mac OS X에서 Chrome을 Terminal로 시작하고, 그 아이콘 위를 클릭하여 앱을 시작합니다. Unity 플레이어가 로그를 터미널로 출력하는 것이 보일 것 입니다. * Windows에서도 마찬가지이나, NACL_EXE_STDOUT 과 NACL_EXE_STDERR 환경 변수를 설정해야 하고, Chrome을 --no-sandbox 옵션으로 시작해야 합니다. Google의 [[https://sites.google.com/a/chromium.org/dev/nativeclient/how-tos/debuggingtips|documentation]]을 참조하십시오. {{tag>유니티 unity}} * 출처: [[http://unitykoreawiki.com/index.php?n=KrMain.nacl-gettingstarted|유니티코리아위키]] (CC BY-NC-SA 2.0)
2+1?
이 필드는 비어 있도록 유지하세요:
저장
미리 보기
취소
편집 요약
참고: 이 문서를 편집하면 내용은 다음 라이선스에 따라 배포하는 데 동의하는 것으로 간주합니다:
CC Attribution-Noncommercial-Share Alike 4.0 International
연결문서
유니티3D ( Unity3D )
문서 도구
문서 보기
이전 판
연결문서
맨 위로
다크 모드로 보기
☀️
Toggle Menu
유니티3D ( Unity3D )
너두 고쳐두 됩니다.
사이트 도구
최근 바뀜
미디어 관리자
사이트맵
사용자 도구
등록
로긴
최근 수정된 문서
misuse_topical5
노박
unique_items
dinner_bell
deputy_beagle
ratslayer
one_for_my_baby
alerio
power_fist
제거됨
fixer
climb_ev_ry_mountain
companion
[장비 분실]
crashed_vertibird
brotherhood_t-51b_power_armor
marco
i_forgot_to_remember_to_forget
cateye