63 votes

Quel moteur Javascript intégrerais-tu dans ton application?

Je veux intégrer du Javascript dans un hobby moteur de jeu de la mine. Maintenant que nous avons la 5ème génération de moteurs Javascript (tous ultra-rapide) je suis curieux de savoir ce moteur que vous choisissez d'intégrer dans un cadre logiciel C++ (qui comprend la facilité de embeding)?

Remarque: pour que ce soit clair, je ne suis pas intéressé dans les DOM scripting ou écrire du code Javascript dans un navigateur.

Voici une compilation de liens jusqu'à présent et quelques bouts de fil

Juste pour le record, j'aime Lua et avez déjà intégrés dans les moteurs de jeu d'environ 5 fois au travail.

Mais maintenant, c'est un projet de loisirs, et je pense que le Javascript étant connu par la plupart des développeurs web et parce que sa ECMA, Flash et Flex développeurs, un moteur de jeu qui utilise le Javascript et le XML pour le script serait plus convivial et de répondre à un plus grand nombre d'utilisateurs (et qui jusqu'à présent n'a pas eu la chance d'utiliser leurs compétences pour les jeux) que celui avec Lua (et il y a beaucoup de personnes autour de vous!).

Aussi pour le dossier je vais aller avec V8 sur ce, principalement parce que j'aime bien c'est style C++.

17voto

postfuturist Points 9836

J'ai essayé à la fois SpiderMonkey et V8. Avec SpiderMonkey, je ne pouvais rien faire fonctionner. Je n'ai même pas pu obtenir les exemples sur mozilla.org pour les compiler.

La V8 a fonctionné de manière inédite et quelques interactions basiques C ++ <-> Javascript se sont déroulées assez rapidement. Il existe certaines listes Google pour les personnes utilisant la V8, et la plupart de mes questions y ont déjà été répondues.

17voto

Stephen Deken Points 2418

Mozilla SpiderMonkey est assez facile et bien documenté. C'est une API en C, mais il est simple de les envelopper dans du C++. Il peut être compilé pour être thread-safe, ce qui est utile pour les jeux depuis vous auriez probablement souhaitez avoir votre logique principale dans un thread de l'interface utilisateur et la logique dans un deuxième thread.

Google V8 pourrait être un bon choix, puisque vous êtes à l'aide de C++, mais je n'ai aucune expérience avec elle encore. Selon la documentation (merci à Daniel James), le V8 n'est pas thread-safe, bien que cela pourrait changer dans l'avenir.

Il y a aussi WebKit de l'Interpréteur, mais je ne pouvais pas trouver une version autonome de cela quand j'étais à la recherche plus tôt.

8voto

Laserallan Points 5500

Java Script est-il vraiment le bon langage pour votre jeu? De nombreux jeux utilisent le langage de programmation LUA pour la création de scripts. Il est facile à intégrer, très petit, compile sur presque toutes les plateformes et facile à apprendre.

Ceci est quelque peu hors sujet, mais il est important de sortir des sentiers battus pour bien faire les choses.

8voto

Daniel James Points 2889

Je crois que le v8 ne fonctionne que sur x86, x64 et les processeurs arm pour le moment. Ce qui pourrait être un inconvénient.

En ce qui concerne la sécurité des threads, de 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.

Vous pouvez en lire plus dans le fichier source (il ressemble à la documentation doxygen, mais ils ne semblent pas avoir mis en place n'importe où).

Mise à jour: ce commentaire a été supprimé, probablement il y a quelques temps. Il ressemble v8 a maintenant un Isolate objet qui représente une instance du moteur. Un seul Isolate instance ne peut être utilisé que dans un seul thread à la fois, mais les autres Isolate instances peuvent être utilisés dans d'autres threads en même temps.

6voto

Andrew Hedges Points 11496

L' indice de référence qui est sorti quand V8 a d'abord frappé la scène qui a montré V8 être 1000% (ou autre) plus vite que les autres moteurs a été fortement orientée vers favorisant les moteurs qui ont été bon à la récursivité. Si votre code utilise beaucoup de récursivité, puis V8 pourrait vous donner un avantage significatif, en termes de vitesse. Pour le "monde réel" (actuellement, au moins) des contenus du web, SquirrelFish Extrême semble être les mains vers le bas gagnant pour le moment (voir mon billet de blog sur le sujet pour les résultats de mes propres tests informelle).

Comme d'autres l'ont souligné, la facilité d'intégration et de qualité de la documentation pourrait prévaloir sur la vitesse pure. Il ne signifie pas que jack, si vous n'avez pas le navire!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X