Tout d'abord, je m'excuse pour le post long. J'ai posé quelques questions à propos de haxe et de sa pertinence en tant qu'outil pour résoudre un problème auquel je suis confronté. J'ai une connaissance très limitée de haxe mais ce que je sais est mon rôle idéal pour haxe dans mon projet n'est pas l'utilisation normale de haxe. Donc, ce que j'essaie d'éviter, c'est perdre du temps, je n'ai pas appris ce langage (malgré qu'il semble vraiment amusant et puissant) seulement pour trouver que ce n'est pas fait pour le but. Donc j'espère obtenir des conseils de la part de vétérinaires chevronnés sur la question de savoir si elle est appropriée. J'espère vraiment que c'est le cas.Utiliser haxe comme un transpiler entre C++ et JavaScript
Voici ce que je suis en train de réaliser:
Je travaille dans l'industrie du jeu et je dois créer un jeu dans les deux C++ et JS. C++ pour un système embarqué et JS pour en ligne et mobile. Je suis très expérimenté en C++ et JS.
Les jeux que je développe Je veux seulement écrire une fois. Maintenant, je pourrais utiliser quelque chose comme emscripten pour passer de C++ à JS mais cela se traduira par du code JS compilé qui ne peut pas être débogué avec les outils de développement de chrome facilement. Je suis convaincu que je vais courir dans les bogues cas de bord avec le JS compilé que je ne peux pas revenir facilement au C++ d'origine. De plus, certaines plates-formes pour le jeu exigeraient que les laboratoires d'équité regardent le code source qui serait un problème pour les JS compilés. Ce dont j'ai vraiment besoin, c'est d'un compilateur source-à-source qui produise du code C++ et JS lisible et humain, que je peux ensuite utiliser et modifier dans sa forme native si nécessaire, donc haxe. J'ai regardé le code produit par haxe pour C++ et JS. JS semble parfaitement facile à comprendre et à utiliser. C++ pas tellement, mais encore à peu près acceptable. Je peux même empêcher haxe de compiler et de relier C++ dont je n'ai pas besoin. Je ne veux que le code source.
Jusqu'à présent, si bon.
Maintenant, j'ai un cadre de jeu en C++ que oxygine utilise le moteur 2d. Il est capable d'afficher des sprites etc. ainsi qu'un framework que j'ai créé pour les bus de messages et les machines à états finis (charge aussi des classes plus utiles). J'ai aussi un framework similaire dans JS qui utilise Pixijs pour son moteur 2d et qui a son propre bus de messages etc tout comme le moteur C++. Maintenant, ce que je veux être en mesure de faire est d'écrire des modules dans haxe que lorsque je transpile à la fois C++ et JS que le code peut être inclus dans le cadre et travailler avec son moteur de langage respecté. Chaque objet que je crée dans haxe sera très encapsulé et devra juste s'abonner au bus de messages, gérer les messages et renvoyer les messages. Il peut également avoir besoin de savoir comment utiliser sa machine d'état de moteurs. Donc je ne sais pas si cela est possible avec haxe car le bus de messages (avec d'autres objets) ne sera pas écrit en haxe mais sera fourni au module après qu'il ait été transpilé et construit dans son projet natif. Peut-être que je peux écrire ma propre bibliothèque haxe qui connaît la syntaxe de mes deux moteurs de jeu et qui peut transpiler en fonction de sa langue cible? Je ne suis pas sûr que ce soit possible.
Merci d'avoir pris le temps de lire, et les conseils que vous pouvez donner.
Je pense que Haxe est fait pour exactement ce problème. Je pense que votre question est très large, mais vous pouvez faire une distinction entre ce qui est utilisé dans le C++/js en utilisant la compilation conditionnelle. Cela signifie que vous devriez faire '#if js' ou' #if cpp' Voir http://haxe.org/manual/lf-condition-compilation.html –
J'essayais de réaliser quelque chose de similaire (compiler Haxe en C++ et importer mon Modules Haxe dans un projet C++ existant) mais sur #Haxe IRC, les gens fortement découragés de le faire. D'après ce que j'ai trouvé après une recherche, je pense qu'ils ont tout à fait raison. Ils m'ont expliqué que le code C++ généré est parfait pour être compilé directement par un compilateur C++, mais rien de plus. –
Il existe [une autre discussion pertinente] (https://groups.google.com/forum/#!topic/haxelang/gSnoTKv7HEY) sur un transpileur C++-to-Haxe. –