C++ での JavaScript スクリプトのサポートの追加

この投稿では、Tiny-JS ライブラリを使用して C++ アプリケーションに JavaScript スクリプトのサポートを追加する方法について説明します。

Tiny-JS は、C++ に埋め込むためのライブラリであり、バインディング (スクリプトから C++ コードを呼び出す機能) のサポートとともに JavaScript コードの実行を提供します。

最初は、人気のあるライブラリである ChaiScript、Duktape、または connect Lua を使用したいと考えていましたが、依存関係や、さまざまなプラットフォームへの移植が困難になる可能性があるため、シンプルで最小限だが強力な MIT JS ライブラリを見つけることにしました。 JS はこれらの基準を満たしています。このライブラリの唯一の欠点は、作成者によるサポート/開発がないことですが、コードは非常にシンプルなので、必要に応じてサポートを引き継ぐことができます。

リポジトリから Tiny-JS をダウンロードします。
https://github.com/gfwilliams/tiny-js

次に、スクリプトを担当するコードに Tiny-JS ヘッダーを追加します。

#include "tiny-js/TinyJS.h"
#include "tiny-js/TinyJS_Functions.h"

TinyJS .cpp ファイルをビルド ステージに追加すると、スクリプトの読み込みと実行の作成を開始できます。

ライブラリの使用例はリポジトリで入手できます。
https://github.com/gfwilliams/tiny-js/blob/master/Script.cpp
https://github.com/gfwilliams/tiny-js/blob/wiki/CodeExamples.md

ハンドラー クラスの実装例は、SpaceJaguar プロジェクトにあります。
https://gitlab.com/demensdeum/space-jaguar-action-rpg/-/blob/master/project/src/Controllers/SpaceJaguarScriptController/SpaceJaguarScriptController.h
https://gitlab.com/demensdeum/space-jaguar-action-rpg/-/blob/master/project/src/Controllers/SpaceJaguarScriptController/SpaceJaguarScriptController.cpp

アプリケーションに追加されたゲーム スクリプトの例:
https://gitlab.com/demensdeum/space-jaguar-action-rpg/-/blob/master/project/resources/com.demensdeum.spacejaguaractionrpg.scripts.sceneController.js

ソース

https://github.com/gfwilliams/tiny-js
https://github.com/dbohdan/embedded-scripting-languages
https://github.com/AlexKotik/embeddable-scripting-languages

Leave a Comment

Your email address will not be published. Required fields are marked *