DirectInput方式のジョイパッドが使えるようになるプラグイン

フォーラムルール
素材の利用規約を決めたいけど、どんなことを書けばいいのか分からない場合は、
素材のテンプレートをご利用下さい。
アバター
Trb
記事: 151
登録日時: 2015年11月15日(日) 19:26
連絡を取る:

DirectInput方式のジョイパッドが使えるようになるプラグイン

投稿記事by Trb » 2016年2月26日(金) 20:19

ジョイパッドにはDirect Input方式とX Input方式の2種類があって、ツクールMVはX Input方式のジョイパッドにしか対応していません。
しかしX Input方式のジョイパッドを持っていない人も多いと思うので(自分も持ってないです)Direct Inputのジョイパッドを使えるようにするプラグインを作ってみました。

他のプラグインと競合しやすいので、現在3バージョン用意してあります。
ご自分の環境に合わせて最適なものを使用してください。


初期バージョン。
F5をおしてリロードした際にパッドの認識が途絶えてしまう問題がありますが、他プラグインとの競合は一番起こりにくいです。
パッドを一旦抜いて再接続すれば回復するので「パッドが動かなくなった時は再接続を試して下さい」といった注意書きを表示するようにすれば一番安定して使えると思います。
use_DI_Joypad.js
(2.13 KiB) ダウンロード数: 1416 回



バージョン1.15
上記の問題を回避するため、F5を押した時リロードをせずScene_Bootに移動するようにしたバージョンです。
デフォルトの環境では問題なく使えるはずですが、かなり特殊な挙動になるため他のプラグインと競合する可能性があります。
use_DI_Joypad_ver_1_15.js
(3.64 KiB) ダウンロード数: 178 回



バージョン1.15b
Scene_Bootに移動するとYanfly氏のプラグインと競合するという報告を頂き、F5を押した時に移動するSceneをScene_BootからScene_Titleに変更したバージョンです。
use_DI_Joypad_ver_1_15b.js
(4.31 KiB) ダウンロード数: 309 回



バージョン1.2
やはりリロード時の処理に手を加えると競合が起こりやすいため、初期バージョン同様リロード時の処理には手を加えないようにしました。
そのためリロード時にパッドの接続が途切れてしまいますが、プレイヤーにその旨を伝えるポップアップを表示させられるようにしたバージョンです。
use_DI_Joypad_ver_1_2.js
(4.09 KiB) ダウンロード数: 1704 回
最後に編集したユーザー Trb on 2016年7月09日(土) 23:34 [ 編集 2 回目 ]

アバター
FINGERMAN
記事: 35
登録日時: 2016年2月28日(日) 21:40

Re: DirectInput方式のジョイパッドが使えるようになるプラグイン

投稿記事by FINGERMAN » 2016年3月09日(水) 20:13

ツクールMVの不具合を補う素晴らしいプラグインなのでぜひ使わせていただきます!
通常使用の場合、Xbox用コントローラーでも
それ以外(プレステ用コントローラーを変換器を用いて使用しています)でも
ほぼ問題無く使用できていましたが、
不具合のようなものがありましたので報告させていただきます。

一度キーボードでなにかのキーを押して以降パッドが反応しなくなってしまいました。
通常利用ではあまりこの問題に触れないとは思うのですが、例えば…
・Enterキーでニューゲームで開始したあと
・F5キーでタイトル画面に戻ったあと
・F9キーでデバッグをし終えたあと
などジョイパッドに持ち替えて、操作するといったことができなくなりました。
アバター
Trb
記事: 151
登録日時: 2015年11月15日(日) 19:26
連絡を取る:

Re: DirectInput方式のジョイパッドが使えるようになるプラグイン

投稿記事by Trb » 2016年3月09日(水) 20:33

ご利用ありがとうございます。

本当だ・・・!
自分の方はENTERやF9は大丈夫でしたが、F5で戻ると動かなくなりました。
原因と解決策を考えてみます。
アバター
FINGERMAN
記事: 35
登録日時: 2016年2月28日(日) 21:40

Re: DirectInput方式のジョイパッドが使えるようになるプラグイン

投稿記事by FINGERMAN » 2016年3月09日(水) 22:57

>自分の方はENTERやF9は大丈夫でしたが、F5で戻ると動かなくなりました。
このコメントを見て確認したところおそらくF5のみの不具合でした。
先ほどのコメントが若干紛らわしい表記になってしまいすいません。

また、それとは別の不具合の可能性がありますが同様にタイトル画面時、
決定ボタン以外(上下ボタン等)を受け付けない状態になっていることにも気がつきました。
セーブデータがある場合ニューゲームやオプションの項目を選択できません。
なおコンティニューを決定ボタンで一度決定してセーブデータ選択ウインドウが出た時に
一旦キャンセルをすれば上下ボタンの操作を受けつけるようになります。
アバター
Trb
記事: 151
登録日時: 2015年11月15日(日) 19:26
連絡を取る:

Re: DirectInput方式のジョイパッドが使えるようになるプラグイン

投稿記事by Trb » 2016年3月09日(水) 23:40

あ、そうでしたか!
F5を押した時だけということなら何とかなるかもしれません。


ゲーム開始時に十字キーを受け付けない件についてはそういう仕様なのかなと思ってます。
というのも、自分の知り合いにXInput式のジョイパッドを使ってる方がいるのですが、その方もデフォでそういう状態になっているそうなんです。
また、外部ツールでDirectInputのジョイパッドをXInputに変換するものもあるのですが、それを使ってみてもやっぱり最初はボタンを入力しないと動かないんです。
アバター
Trb
記事: 151
登録日時: 2015年11月15日(日) 19:26
連絡を取る:

Re: DirectInput方式のジョイパッドが使えるようになるプラグイン

投稿記事by Trb » 2016年3月11日(金) 21:59

色々試してみたところ、どうも原因はMVのスクリプトにあるのではなく、実行環境であるnw.jsの仕様でこうなってしまうように思います。
なのでF5を押した時の動作を『ブラウザのリロード』ではなく『ゲームの最初に戻る』にすることで一応問題なく動くようにしました。



ただ注意点が2つあります。
1つ目は、ゲームをexeで出力して配布する場合は大丈夫ですが、ブラウザ公開する場合ジョイパッドの動作やF5を押した時の処理がブラウザによって全然違うので、こちらではとても対応し切れません。
また自分はMacのパソコンを持ってないのでMac版での動作も全く予想できません。

そして2つ目は、上にも書いた通りF5を押した時の動作を『ゲームの最初に戻る』(強制的にシーンを切り替える)に変更しています。
通常のプレイでは想定されていないシーンの移動をしているため、特殊なプラグインを使っていると不具合が起こりやすいかもしれません。
これはそのプラグインに合わせて調整することなら出来ると思うので、もしそういうことがあったら連絡ください。
最後に編集したユーザー Trb on 2016年3月20日(日) 12:35 [ 編集 1 回目 ]
アバター
Trb
記事: 151
登録日時: 2015年11月15日(日) 19:26
連絡を取る:

Re: DirectInput方式のジョイパッドが使えるようになるプラグイン

投稿記事by Trb » 2016年3月17日(木) 19:28

すみません、またもやバグが見つかりました(- -;
Ver1.1のMVでは使えないようです。
初期Verのものでは問題なく動くはずですが、アップデートを当てたゲームでは使用しないで下さい。


3/20 追記
修正しました。
このプラグインで改変している部分の一部がVer1.1での修正点に絡んでたのが原因のようでした。

use_DI_Joypad.js
(3.66 KiB) ダウンロード数: 426 回
アバター
FINGERMAN
記事: 35
登録日時: 2016年2月28日(日) 21:40

Re: DirectInput方式のジョイパッドが使えるようになるプラグイン

投稿記事by FINGERMAN » 2016年3月21日(月) 12:16

修正していただきありがとうございました! :D
早速自分のゲームも新しいバージョンに差し替えさせていただきます!m( _ _ )m
アバター
Telmina
記事: 30
登録日時: 2016年1月16日(土) 23:22
お住まい: 秋葉原電気街徒歩圏
連絡を取る:

Re: DirectInput方式のジョイパッドが使えるようになるプラグイン

投稿記事by Telmina » 2016年6月09日(木) 02:27

 こんばんは。

 自分が先日公開したゲームで、こちらのプラグインを利用させていただいておりますが、これについて一点ご報告がございます。

 自分のゲームでは、yanflyさんの「Battle Engine Core」をどうしても使わなければならない事情があったため、これと共存させようとしたのですが、素の状態の「use_DI_Joypad.js」ver. 1.15を使おうとすると、ある特定条件下で戦闘中にゲームが停止して復帰できなくなってしまいます。

  1. 一度普通にゲームを起動する。
  2. キーボードのF5キーを押下してタイトル画面に戻る。
  3. その状態で任意のセーブデータを再開する。
  4. 敵と遭遇し、戦闘を開始する。なぜかアクターたちの姿が見えず、影だけになる。
  5. コマンド入力を終えて実行に移るタイミングで、「TypeError / Cannot read property ‘slice’ of null」という謎のエラーが発生し、ゲームが中断されてしまう。

 「use_DI_Joypad.js」の94行目の「Scene_Boot」を「Scene_Title」に書き換えたところ、戦闘時にアクターが消えたりコマンド入力後にエラー停止したりすることはなくなりました。

 詳細については、10日ほど前に自分のブログ上で申し上げております。こちらでご報告申し上げようと思いながらずっと放置してしまっており、失礼いたしました。


 ただ、「Scene_Boot」や「Scene_Title」の意味合いを考えると、この回避方法で本当にいいのかどうか全く自信がありません。

 プラグインの構造や設計思想上、この対応で本当によかったのか、また、よりよい解決法があるのか、可能であればご教示いただければと思います。
アバター
Trb
記事: 151
登録日時: 2015年11月15日(日) 19:26
連絡を取る:

Re: DirectInput方式のジョイパッドが使えるようになるプラグイン

投稿記事by Trb » 2016年6月09日(木) 19:16

報告ありがとうございます。
こちらでも現象を確認できました。

Scene_Bootに飛ぶかScene_Titleに飛ぶかの問題ですが、他のプラグインを一切入れていないデフォルトの状態で比べたらどちらでも問題ないと思います。
では何故Scene_Bootにしてあるのかといいますと、タイトルスキッププラグイン等を使ってタイトル画面の無いゲームにしている場合に、タイトルに移動してしまうと不味いかなと思ったからです。

F5を押した時にリロードではなく別のシーンに飛ぶというのは本来起こり得ない処理なので、どのプラグインもそんな処理を想定した作りにはなっていません。
なのでBootにしてもTitleにしても何かしらのプラグインと競合してしまう可能性はあると思います。

Yanfly様のプラグインは使っている方も多いと思うのでこちらでもScene_Titleに飛ぶようにしたYanfly対応版を上げておきますが、どのプラグインと競合するかは把握し切れないのでテストプレイを入念に行うようお願いします。




一応、一番上に投稿してある初期VerではF5を押した時の処理が通常のリロードになっているので、この手の競合は一切起こらないはずです。
ただし上のやり取りにあるようにこのVerではリロードするとジョイパッドの認識が途絶えてしまうという問題があります。
しかしながら、ジョイパッドの認識が途絶えてしまうのはパッドを一度抜いて再接続すれば回復するので、
「パッドが動かなくなった時は再接続を試してください」といった注意書きを入れた上で初期Verを使うというのも手です。

“MV:プラグイン素材” へ戻る