2016年03月09日

Javardry & JavardryEditor テスト91


  • ゲームパッド操作に対応
     JAVAだとゲームパッド使うの大変らしいし、JoyToKeyとか使えばいーじゃないと思って放置してたんですが、ふと気になって調べてみると、結構簡単に使えるようになるライブラリがあるっつーことで試してみたところ、確かに簡単にゲームパッドを認識出来るようになりました。その後意図通りに動かすのには苦労しましたが、まあ普通に使えるレベルにはなったんじゃあないかと思います。
     ただし、Windowsの場合はゲームパッドさえ繋いで(OSに認識されて)いれば特に事前作業とかいらないんですが、Linux(Ubuntu)の場合にはちょっとした手間がかかります。最初にゲームパッドをOSに認識させておくってのはまあ当然必要なんですが、ネイティブライブラリにパスを通してやらないとダメなんですね。Windowsの場合にはdllをJavardry.jarと同じディレクトリに入れておけばいいんですが、Linuxの場合には libjinput-linux.so, libjinput-linux64.so をどこかのディレクトリ(例えば /usr/local/lib)に入れてやって、
    LD_LIBRARY_PATH=/usr/local/lib; export LD_LIBRARY_PATH
    なんてなコマンドでパスを通して、共有ライブラリとして認識させてやらないといかんらしいです。さらに、JAVAがゲームパッドの情報を読み込もうとして、元々所有者以外は読み書き不可の /dev/input/* にアクセスするため、
    sudo chmod go+r /dev/input/*
    こんな感じで所有者以外でも読めるようにしてやらないといけないよーです。この二つをやってからJavardryを実行すれば、ゲームパッドが使えるようになります。いや、Linuxは素人同然なんで、実は他にも何か問題があるとしてもわかりゃしませんが、とりあえずは以上の手順で使えました。
     今回説明した手順だと、OSの起動ごとにパス通しとパーミッションの変更を毎回やる必要がありますが、設定ファイルを書き換えてやれば省略出来ます。面倒なんで説明はしませんけども、まあLinuxを普段使いしてるような人なら多分わかるんでしょう。ググればやり方出てきますし。
     JAVAライブラリ、およびネイティブライブラリが増えてますので、本体一式を落として下さい。
  • LinuxでOpenJDKを使用している場合、1秒未満のwaveファイル再生に不具合があるため、効果音ファイルを修正
     私の場合、Linux(Ubuntu)にはOracle JDKとOpenJDKの両方を入れてるんですが、OpenJDKでの動作時のみ、効果音を鳴らすと音が(音楽も効果音も)一切鳴らなくなったり、フリーズしてしまったりという症状が出ており、延々悩んでいたんですが、どうやらOpenJDKの仕様なのかバグなのか、再生時間が1秒未満のwaveファイルを再生させるとアカンようでした。で、対策として1秒未満の効果音に無音時間を追加してやって、再生時間を1秒以上にしてやったところ、特に問題なく鳴るようになりました。普通気がつかないでしょ、こんなこと……。
     まあそんなわけで、効果音のwaveファイルを修正しているので、Linux環境でプレイする人は本体一式を落とし直して下さい。また、Linux環境でのプレイを考慮するシナリオ製作者の方は、効果音配布時、再生時間に注意して下さい。
  • 効果音が被ったり鳴らなかったりする症状をいくらか改善……出来たような気がしなくもない
     効果音が時折鳴らなかったりする問題は、大分前から気になってましたし、何度か指摘もされてるんですが、どうにもはっきりとした原因が掴めずそのままになってます。同じ音を連続して鳴らす際の処理に問題があるのだろうと当たりを付けてはいるんですが、どうにもうまくいかない。今回は、同じ音を連続して鳴らす際に、前の音がまだ再生中であれば強制的に一旦停止させ、さらに1msecのウェイトを置いて(何故かこれがないとうまく鳴らない)、それから次の音を再生させるという形にしてみました。いや、似たようなことは前からやってるんですが、ちょっと方式を変えてみたところ、少し改善されたような気がしないでもないです。とりあえずは様子見で。

posted by THU at 13:26| Comment(0) | TrackBack(0) | ゲーム製作
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック