beatorajaで使用しているライブラリ

beatorajaはJavaで書かれています。

よく「Javaは遅い」「ゲームには向いていない」という意見を見かけると思います。遅いという点については別に述べるとして、ゲームに向いていない一要因としてはゲーム向けフレームワーク・ライブラリの少なさ、ノウハウの少なさにあると思います。

本記事では、beatorajaで使用しているライブラリについて紹介します。

Javaでゲーム開発しようと考えている方の参考になればと。

 

LibGDX

Javaのゲームフレームワーク。2D/3D描画、サウンド入出力、キーボード/マウス/コントローラー入出力等、ゲームに必要なライブラリはほぼ含まれています。描画はLWJGL、サウンド入出力はOpenALを通して行われます。

JavaCV

様々な画像処理をJavaで使用できる様にするためのライブラリ。beatorajaでは動画BGAの再生にffmpegを使用しており、ffmpegへのアクセサとして使用しています。

SQLite-JDBC

JavaからSQLiteデータベースを使用するための定番ライブラリ。

PortAudio

クロスプラットフォームなオーディオ入出力ライブラリ。WASAPI、ASIO以外にもALSA、CoreAudio等のLinux/Mac用のオーディオインターフェイスにも対応。PortAudioはC++で記述されているため、Javaから使用するにはJNIを経由する必要があります(PortAudio内にJNI用Java、C++のコードは用意されていますが自身でビルドする必要があります)。

luaj

Java上でluaスクリプトを実行するためのライブラリ。beatorajaではスキン定義内でluaを使用しています。

 

逆に使用しなくなったライブラリ

VLCj

マルチメディアプレイヤーとして有名なVLCをJavaから操作できる様にするライブラリ。開発初期の頃はVLCjを利用して動画再生を行なっていましたが、再生開始タイミングが数秒ズレてしまう問題が解決できなかった点、オートプレイ時の再生速度変更に同期できなかった点、内部では結局ffmpegが動いている点からJavaCVに乗り換えてしまいました。

JASIOHost

JavaからASIOを使用できる様にするためのライブラリ。PortAudioに比べてJNI周りをビルドする必要がないため導入が楽ですが、PortAudioに比べてノイズが乗りやすい印象を受けました。

 

Java用ゲームライブラリを調査してて思ったことは、確かに数は少ないもののゲーム開発には十分ということ。というかlibGDXだけでほぼカバーできます。同じバイナリでLinux/Mac上でも動くというのは大きなメリットです。

日本語ドキュメントやサンプルも徐々に増えていってますので、興味のある方は一度触ってみてはいかがでしょうか。