また土日仕事だった。
メモリ破壊ぽいバグが出てるのでいつ終息させられるかも予想つかんし、それでもいつか直しますと言ってられる状況でもないしな。
タブレットでゲーム作ってて何が困るって入力だ。
タッチ入力対応とかめんどくさいのでやってないために入力に使えるのはタッチキーボードくらいしか無いんだが、Windows 8.1のタッチキーボードは2キー同時入力ができない。こんなに隣のキー間違って反応するのに2キー同時押しができないとか何かの間違いじゃないのか?隣のキーだけ同時入力できる嫌がらせ仕様なのか?とか思うけど思ったところで同時押しできるわけでもない。
タッチ操作できる仮想ジョイスティックとか無いしな……とだめもとで探したら普通に発見できた。たぶとろというのでつい最近出たばっかりな奴のようだ。仕組み的にはvJoyという仮想ジョイスティックドライバなんてものがあってそれに対応したタッチジョイスティックということらしい。すごい物があるもんだな。
試してみたがなんか動かん。ジョイスティックのプロパティでは反応してんのでゲーム側が悪いっぽいな。ジョイスティック対応のコードは書いてあるけど、実際ジョイスティックで動かしたことはないかも。
いろいろ調べた結果、OpenTKのGameWindow.Joysticksプロパティは、このプロパティにアクセスした時点で値が更新されるので、列挙された個々のデバイスオブジェクトを保持しちゃいけなかったようだ。なんだその作りひどいな……と思ったら、そもそもこのプロパティはObsolete属性付いてんので廃止ですね。IronRubyからアクセスすると何も言われないので気付かなかった。OpenTK.Input.Joystickクラスを使えと書かれてたのでそっちを使うようにして無事取得できるようになった。
しかし、タッチでの仮想ジョイスティックは使いづらいなこれ……。スマホでの仮想ゲームパッドは使いづらいとみんなが言うのはよくわかるわ。とはいえ無いより断然マシでこれは助かる。
たぶとろの問題点は、最低限動きます状態なので全面半透明で見た目悪いし、タッチするとウィンドウフォーカスうつっちゃうし、カスタマイズはおろかウィンドウ位置とサイズの記憶もしてくれないといった辺りで、これらはまあ仕方ないよねと言える程度。 ただ一番の問題はソースが無いことだろう。ソース公開されてればせめてフォーカスうつっちゃうあたりだけでも直すんだけどなぁ。これに限らず、何かソフト公開する場合はライセンスとか適当でもいいのでソースは公開してもらえるといじって使う人も居るのでご考慮願いたい。ソース公開は最強のカスタマイズ機能ですので、是非是非。
vJoyのSDK見たところ自分で作るのも簡単そうだけど、べつに俺が最強のタッチゲームパッド作ってやるぜ!というわけでもなく自分用にちょこっといじりたいというだけなので、既製の物があればそれ使いたいよね……。
肝心のゲームの中身はさっぱり進んでない。衝突判定が安定してないので直さないとねと思って、思ってるだけだ。