귀하의 애플리케이션에 어떤 Javascript 엔진을 삽입하시겠습니까?[닫은]

StackOverflow https://stackoverflow.com/questions/93692

  •  01-07-2019
  •  | 
  •  

문제

내 취미 게임 엔진에 Javascript를 삽입하고 싶습니다.이제 5세대 Javascript 엔진이 출시되었으므로(모두 매우 빠르게) C++ 프레임워크에 어떤 엔진을 포함할지 궁금합니다(실제로 포함하기 쉬운 포함).

메모:분명히 말씀드리자면 저는 DOM 스크립팅이나 브라우저에서 Javascript를 작성하는 데 관심이 없습니다.

다음은 지금까지의 링크 모음과 스레드의 몇 가지 팁입니다.

참고로 저는 Lua를 좋아하고 직장에서 이미 Lua를 게임 엔진에 5번 정도 삽입했습니다.

그러나 지금은 이것은 취미 프로젝트이며 Javascript는 대부분의 웹 개발자에게 알려져 있으며 ECMA, Flash 및 Flex 개발자이기 때문에 스크립팅에 Javascript 및 XML을 사용하는 게임 엔진이 더 사용자 친화적이고 더 큰 규모의 프로젝트에 적합할 것이라고 생각합니다. Lua를 사용하는 사용자 기반(그리고 지금까지 게임에 자신의 기술을 사용할 기회가 없었던 사용자 기반)(그리고 주변에 그런 사용자가 많이 있습니다!)

또한 기록을 위해 저는 V8을 사용하겠습니다. 주로 C++ 스타일을 좋아하기 때문입니다.

도움이 되었습니까?

해결책

모질라의 스파이더몽키 매우 쉽고 잘 문서화되어 있습니다.C API이지만 C++로 래핑하는 것은 간단합니다.스레드로부터 안전하도록 컴파일할 수 있는데, 이는 하나의 스레드에 메인 로직을 두고 두 번째 스레드에 사용자 인터페이스 로직을 두기를 원할 가능성이 높기 때문에 게임에 유용합니다.

구글의 V8 C++를 사용하고 있으므로 좋은 선택이 될 수 있지만 아직 경험이 없습니다.에 따르면 문서 (덕분에 다니엘 제임스), V8은 스레드로부터 안전하지 않지만 향후 변경될 수 있습니다.

또한 있습니다 WebKit의 SquirrelFish, 하지만 이전에 검색했을 때는 독립형 버전을 찾을 수 없었습니다.

다른 팁

나는 SpiderMonkey와 V8을 모두 사용해 보았습니다.SpiderMonkey를 사용하면 아무것도 할 수 없었습니다.심지어 mozilla.org에서 컴파일할 예제도 구할 수 없었습니다.

V8은 기본적으로 작동했으며 기본적인 C++ <-> Javascript 상호 작용이 매우 빠르게 진행되었습니다.V8을 사용하는 사람들을 위한 Google 목록이 있으며 대부분의 질문에 대한 답변이 이미 거기에 있습니다.

나는 v8이 현재 x86, x64 및 arm 프로세서에서만 작동한다고 믿습니다.단점이 될 수도 있습니다.

스레드 안전성과 관련하여 include/v8.h:

 * Multiple threads in V8 are allowed, but only one thread at a time
 * is allowed to use V8.  The definition of 'using V8' includes
 * accessing handles or holding onto object pointers obtained from V8
 * handles.  It is up to the user of V8 to ensure (perhaps with
 * locking) that this constraint is not violated.

소스 파일에서 더 많은 내용을 읽을 수 있습니다(doxygen 문서처럼 보이지만 어디에도 올려 놓지 않은 것 같습니다).

업데이트: 해당 댓글은 아마도 얼마 전에 삭제된 것 같습니다.v8에는 이제 Isolate 엔진의 인스턴스를 나타내는 객체입니다.싱글 Isolate 인스턴스는 한 번에 하나의 스레드에서만 사용할 수 있지만 다른 스레드에서는 Isolate 인스턴스는 동시에 다른 스레드에서 사용될 수 있습니다.

Java Script가 정말 게임에 적합한 언어인가요?많은 게임들이 이 기능을 사용하고 있습니다. 루아 스크립팅을 위한 프로그래밍 언어.통합하기 쉽고 매우 작으며 거의 ​​모든 플랫폼에서 컴파일되며 배우기 쉽습니다.

다소 주제에서 벗어난 내용이지만, 문제를 해결하려면 고정관념에서 벗어나 생각하는 것이 중요할 수 있습니다.

그만큼 기준 V8이 다른 엔진보다 1000%(또는 무엇이든) 더 빠른 장면을 처음 선보였을 때 나온 이 엔진은 재귀에 능숙한 엔진을 선호하는 데 큰 비중을 두었습니다.코드에서 많은 재귀를 사용하는 경우 V8은 속도 측면에서 상당한 이점을 제공할 수 있습니다."실제 세계"(현재는 적어도) 웹 분야에서는 SquirrelFish Extreme이 현재로서는 확실한 승자인 것 같습니다(참조: 주제에 대한 내 블로그 게시물 내 자신의 비공식 테스트 결과에 대해).

다른 사람들이 지적했듯이 통합의 용이성과 문서의 품질이 순수한 속도보다 우선할 수 있습니다.배송하지 않으면 잭을 의미하지 않습니다!

스크립팅 엔진과 C++에 대해 말할 때 고려할 수도 있습니다. 대본.이는 ecma 스크립트(~Javascript)에 가깝고 C++에 포함시키기가 매우 쉽습니다.

웹페이지의 판매자:

...반면에 Chaiscript는 C ++와의 통합으로 처음부터 설계되었습니다....Chaiscript에는 메타 컴파일러, 라이브러리 의존성, 빌드 시스템 요구 사항이 없으며 어떤 종류의 레거시 수하물도 없습니다.AT는 C ++ 기능으로 원활하게 작동합니다.모든 유형에 대해 명시 적으로 말할 필요는 없으며 기능 중심입니다.

Chaiscript를 사용하면 문자 그대로 프로그램에 3 줄의 코드를 추가하고 빌드 단계를 전혀 수정하지 않음으로써 응용 프로그램을 스크립팅 할 수 있습니다.

나는 SpiderMonkey의 다음 진화 버전인 TraceMonkey가 나오기를 기다리고 있습니다.더 빠르고 더 나은 디자인.(Adobe Flash에서 기증한 코드 사용)

Tracemonkey는 실제 사용량을 기반으로 런타임에 구조를 공격적으로 최적화하여 반복적인 작업을 훨씬 빠르게 만드는 데 자부심을 갖고 있으며, 이는 게임 강화에 유용합니다.

Javascript .NET을 사용해 보세요:

http://javascriptdotnet.codeplex.com/

Google V8을 구현합니다.이를 통해 .NET 코드에서 직접 Javascript를 컴파일하고 실행할 수 있으며 Javascript 코드에서 사용할 CLI 개체도 제공할 수 있습니다.그리고 V8은 아마도 성능 측면에서 지금까지 만들어진 최고의 엔진일 것입니다. 이는 Javascript에서 기본 코드를 생성합니다.

당신은 또한보고 싶을 수도 있습니다 V8 Google에서.그래도 꽤 새롭습니다.

빠른 자바스크립트 엔진을 자랑하는 v8을 주시하고 있으며, 성숙해짐에 따라 크로스 플랫폼 지원을 개발할 것이라고 확신합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top