1

Java から単純なビジュアル ノベル ゲーム エンジンを作成することを計画しています。以前に Java を開発したことがありますが、他の言語の経験があります。私がやりたいことは、スクリプトから完全なゲームを作成するためにエンジンで使用できる独自のスクリプト言語を作成することです。ビジュアルノベルはそれを実行するのに十分単純だからだと思います。

私が知らないのは、Java がそのようなスクリプト言語を作成するのに適しているかということです。私の想像では、エンジンはゲームフォルダ内のスクリプトファイルを読み込んで、入力を取り込んで、特定の関数にリンクされた各コマンドを実行します。理論的にそれがどれほど難しいかはわかりません。

おそらくおわかりのように、これに関しては私は初心者です。ありがとう。

4

5 に答える 5

2

ドメイン固有言語 (DSL) が必要なようです。Java 内の DSL に関する記事はこちら

DSL は、特定のタスク用にカスタム設計された、小さくて表現力豊かなプログラミング言語です。この 4 部構成のシリーズでは、Venkat Subramaniam が DSL の概念を紹介し、最後に Java を使用してそれらを構築する方法を示します。

SOには関連する質問があります。

Scala を使用して DSL を作成し、JVM 上で実行できます。ただし、Scala の知識がなければ、これを行うのは (IMO) 重要な作業であることを警告します。

あるいは、スクリプト言語の Java 実装をJava Scripting APIと一緒に使用することもできます。これにより、既存の言語を使用してバイトコードにコンパイルすることができます。利点は、既存の言語を使用していることです。欠点は、特定のニーズに固有のものではないことです。

于 2012-09-28T17:01:03.323 に答える
1
  1. やらないでください。新しい言語を書くのは驚くほど複雑です。文法、解析、エラー報告、パフォーマンスの設計。

  2. それはすでにある: Java でメタ言語を作成する

  3. またはを検討してください。使い慣れた構文を使用することで、人々はあなたを気に入るはずです。

于 2012-09-28T17:02:25.043 に答える
0

上記の回答は良い方向性を示していると思います。
さらにいくつかのアイデアを提供したいと思います:
A. REST/SOAP Web サービスを介して公開でき、クライアント クラスを生成できる Java「GAME API」を提供します
(たとえば、WSDL を取得し、そこからクライアント クラスを生成します)。 )。

B. API を jar ファイルとして提供し、外部 jar をロードするファイル クラス ローダーをゲームに実装させ、開発者が API を使用して開発するクラスを使用します。
このようなクラスローダーを実装する方法の例を次に示します。

C. java が提供する ScriptEngine を使用して、スクリプトを呼び出します。Java 内から JavaScript スクリプトを呼び出す方法の例をここ
で 参照してください。

于 2012-09-28T17:10:29.657 に答える
0

これを行うことは技術的に可能ですが、Java が最善の策であるかどうかはわかりません。プロジェクトの範囲や目的はわかりませんが、ゲーム/スクリプト言語としてPyGameをお勧めします。(他の言語の経験があるとおっしゃっていたので、Pythonに切り替えても大丈夫だと思います)

于 2012-09-28T17:01:58.070 に答える