Rev. 2.73

BananaBread는 얼마전 MDN(Mozilla Developer Network) 데모에 제출된 WebGL을 이용하여 구현한 FPS 게임입니다. C++과 OpenGL로 작성된 Cube 2: Sauerbraten 엔진을 Emscripten을 이용하여 자바스크립트와 WebGL로 컴파일하여 모던 브라우저에서 별도의 플러그인 설치없이 즐길 수 있도록 했습니다.

EmscriptenLLVM(C/C++)을 자바스크립트로 컴파일하는 프로젝트입니다. C++로 짜여진 Bullet 물리 엔진, TTS(Text-to-Speech) eSpeak 등의 놀라운 컴파일 데모들이 있습니다.

이 프로젝트의 주요 목표는 첫째로, 브라우저의 3D 성능 프로파일링 하는 것이고, 둘째로, 많은 사람들이 회의적으로 생각하는 자바스크립트와 WebGL을 이용한 게임 구축에 대한 증명하는 것이며, 마지막으로, 이 프로젝트에 사용된 모든 소스 코드(미술 자산 포함)를 공개하여 다른 사람들이 게임을 만드는 데 사용할 수 있게 하는 것입니다.

멋진 양반들이군요! 저는 맥용 크롬에서 테스트했는데 chrome://flags에서 기본으로 비활성화 되어 있는 "포인터 잠금" 항목을 활성화하고 브라우저를 재시작하여 성공적으로 실행할 수 있었습니다.

Comments

Prototype.js에서 SVG 요소에는 DOM 메서드가 적용되어 있지 않아 몇 줄을 수정해서 사용하고 있었다는 사실을 잊고 있었습니다. 그래서 이번에 업데이트된 1.7.1에도 적용했습니다. 이게 되면 무엇이 가능하냐고요? SVG요소를 동적으로 다루기 위한 자바스크립트를 훨씬 수월하게 작성할 수 있지요.

1.7 버전 3,041라인 부근을 다음과 같이 수정:

  var elementPrototype = window.HTMLElement ? HTMLElement.prototype :
    Element.prototype;
    
  if (F.ElementExtensions) {
    // Extended methods support for SVG elements by @firejune
    if (window.SVGElement) {
      copy(Element.Methods, SVGElement.prototype);
      copy(Element.Methods.Simulated, SVGElement.prototype, true);
    }
    copy(Element.Methods, elementPrototype);
    copy(Element.Methods.Simulated, elementPrototype, true);
  }

1.7.1 버전 3,378라인 부근을 다음과 같이 수정:

    var ELEMENT_PROTOTYPE = window.HTMLElement ? HTMLElement.prototype :
     Element.prototype;

    if (F.ElementExtensions) {
      // Extended methods support for SVG elements by @firejune
      if (window.SVGElement) {
        mergeMethods(SVGElement.prototype, Element.Methods);
        mergeMethods(SVGElement.prototype, Element.Methods.Simulated, true);
      }
      mergeMethods(ELEMENT_PROTOTYPE, Element.Methods);
      mergeMethods(ELEMENT_PROTOTYPE, Element.Methods.Simulated, true);
    }

경고: 이런 식의 패치는 혼란을 일으킬 수 있습니다.

Comments