2015年8月31日月曜日

GRANDIA II for PCをPS3コントローラーで操作する方法(修正版)

DreamCastの名作PRG、GRANDIA IIのPC版が出た。とはいっても英語版の、しかもリメイク版。
たまたま知ってやり始めたのだけど、キーボードでの操作ではまともにゲームにならない。
このゲームは3Dで表示されるため画面回転というかカメラ視点を変えないと見えない物が多く、また移動の際も歩きから走りまでを無断階で調整でき、かつ同時に回転も出来ないといけない。キーボードではこれが出来ないからだめ。

ではあったが、PS3のコントローラーをWindowsに接続したら格段に操作性が良くなった。その接続とGRANDIA IIからの正しい認識にはちょっと苦労があった。それを箇条書きにしておく。
  1. PS3コントローラーをUSBケーブルでWindowsに接続する。すると標準のドライバーで認識される。これはすごいことだが、そのドライバーではGRANDIA IIには不足なので、SONY提供のドライバーに差し替える。
  2. ここからコントローラーのドライバーをダウンロードし、展開しておく。
  3. 以下Windows7での手順。コントロールパネル~デバイスとプリンター~PLAYSTATION3コントローラーで右クリック~プロパティ。
  4. ハードウエアのタグからプロパティ
  5. ドライバーのタグを開き、削除を押す。これで標準ドライバを外す。
  6. ドライバの更新から先ほどドライバを展開したフォルダを指定する。これで新しいドライバがインストールされる。認識までにはちょっと時間がかかるかもしれない。一旦抜き差しして見る必要もあるかも。

    もし標準でドライバが入ってしまい上記方法でうまくいかない場合は4の次から以下の通り。
    ・「USB入力デバイス」のプロパティ
    ・ハードウエア~ドライバー~ドライバの更新
    ・「コンピューターを参照してドライバーソフトウエアを更新します」の次の場所でフォルダを指定する。サブフォルダもチェック。
  7. 以下Windows10での手順。デバイスとプリンターで標準で認識されたPS3コントローラーを削除する。
  8. ドライバーを展開したフォルダ内にある sixaxis.infで右クリック、インストールを選択する。
  9. デバイスをインストールしますか?と聞いてくるので、インストールを選ぶ。
  10. これで一応GRANDIA IIが操作できるようになるが、そのままのボタン配置では非常に使いにくいので変更する。GRANDIA IIにはボタン配置を変更する画面があるが、このPS3コントローラーに対しては全く効かない。なので、ドライバ側で変更をかける。
  11. 展開したドライバのフォルダの中にあるsixaxistool.exeをダブルクリックする。画面上何も起こらないように見えるが、タスクバーの中にアイコンで入っているので、右クリックから設定編集を選ぶ。
  12. ドライバ設定をクリック、空きのどれかを選ぶ
  13. ボタンアサインを変更する:ボタン0→○、ボタン1→×、ボタン2,3→無し、ボタン4→L1,ボタン5→R1、ボタン7→△、
  14. 設定保存を押して名前をつけて保存する(GRANDIA IIとか)
  15. 適用アプリケーションにgrandia2.exeを設定する(上の画像は入れる前)
  16. 設定画面を閉じる
  17. もう一度タスクバーから右クリック、先ほど付けた名前が出ているので、それを選択(重要)
これで、PS3コントローラーで操作できるようになる。ただし、起動時の「PUSH START BUTTON」だけはボタンが効かないので、キーボードを押す。

Windowsを再起動または休止明けの時にはコントローラーが認識されなくなるので、一度ケーブルを抜いて再接続が必要。

なお、Blutoothでの接続ができるかどうかは不明。可能そうな気もするけど、必要がないもので試してない。
→上記ドライバではそもそも無理な上に、他のを使ってもBlutoothのポートを1つ占有してしまうようで、実用的ではない。PS3コントローラー用ドライバーを用意しているBluetoothアダプタも売れている。でもそれくらいするなら、USB接続のままでいいや。


PS3コントローラーをWindowsに接続するドライバーにはmotioninjoyというのもあるが、やたら広告が出てきて非常に見づらい上に、うちの環境ではインストールすら出来なかった。このSONY純正で十分なので、これはおすすめしない(大元のHPも閉じられているようだし)。

これで大体DreamCastと同じ操作ができる。左スティックで歩くから走るの無段階切り替え移動、L1/R1で回転、○で選択、×でキャンセル、三角でメニューとなる。本当に格段に操作性が良くなり、ようやくゲームになる。

それは良かったのだが、いかんせんゲームのシステム的出来が悪い。
とにかく引っかかりが多すぎる。音が出るたび一旦停止、時々敵のキャラクターが消えるし、画面は波打ってる。音楽はループする前に一旦途切れるからおかしい。DreamCast版を知っていると「この程度で製品にする?」と思えるくらい。PS2版も出来は良くなかったが、それ以下。いくら高解像度でもなぁ、と思う。

まあ、買ったからには最後までやるけど。

・・・追記
ゲームの起動は以下の画面から行う。複数の場所から起動ができそうなのだけど、他の場所から起動しようとするとエラーが出て起動できない。
 他にも色々とバグがいそう。アップデートが時々発表されているから、自動アップデートはONにするのが良いかと。本当にアップデートされているか確認する方法がないけど(ファイル日付から判断するにされてない気もする)。
→次回起動時に更新されると判明。V1.03でだいぶ設定項目が増えたけど、前の設定が消えてしまうようで、設定し直しが必要。急に画面幅が変わってるし、英語音声になったので驚いた。
なお、バージョンは設定画面の右下に表示されている。

2015年9月17日追記
V1.04では標準でPS3コントローラーがサポートされた。コントローラーのところにその表示が出てる。でもうまく設定できないので私は上記ドライバーで動かしている。
頻繁にバージョンアップされるのはありがたいんだけど、その都度設定が初期化されるのが難点。
少なくともフルスクリーン起動をデフォルトにするのだけはやめてほしい。終了するのにものすごく苦労するから。

2015年8月28日金曜日

花子で作るUIToolbarアイコン

UIToolBarのアイコンはPNGのアルファチャンネルというものを使って描かなければならない。
この画像は特殊なので、一般的なグラフィックツールでは作成できない。

Photoshopが一般的らしいが有償である。無償ではgimpやinkscapeを使うらしいが共に英語版で、
しかも操作が直感でわからない(と思う)上に、gimpは非常に重いので過去に断念している。

Windows上で、なんとか花子や花子フォトレタッチという手慣れたツールで出来ないか調べた結果、出来た。以下にその方法をまとめる。
  1. グレースケールのPNG画像を作る。私は花子2013と花子フォトレタッチを使った。花子フォトレタッチでは、保存時にグレースケール、透過はなしを指定する。
  2. そのグレースケール画像を読み込み、花子フォトレタッチでネガ・ポジ変換をかける(画像>色>ネガ・ポジ変換)。これが意外と重要。
  3. ここからNetPBMのWindows版を入手する。グラフィック加工ツール群である。
  4. アーカイブの中からbinフォルダの下を適当な場所に展開、libの下も同フォルダに展開する。
  5. コマンドプロンプトを起動。set RGBDEF=./rgb.txtを実行。
  6. グレイスケール画像を透過マスクPNGに変換する方法に従って各ツールを実行していく。
これで作成した画像をiOSに読み込ませたらうまく行った。

各ツールの実行をバッチファイルにしてみた。これをツールと同じフォルダにal.batという名前(適当で構わない)で保存した場合、

  al pngファイル名 x幅 y幅

で、PNGファイル名は拡張子を付けず指定、その画像幅を後に指定する。
例えば64*32のicon.pngというファイルを 変換する場合、

 al icon 64 32

とすると、変換結果としてiconA.pngというファイルが出来る。これをUIToolbarに入れればよい。

これが出来たので、ようやくUIToolbarのアイコンが自作できるようになった。いや、今までも作ったことはあるけど、白黒の2値画像しか作れなかったので。その成果はX-BASIC'にて。

---↓ここからバッチファイル---

@echo off
if "%1"=="" goto ERR
if "%2"=="" goto ERR
if "%3"=="" goto ERR
set RGBDEF=./rgb.txt
pngtopnm %1.png > %1.pgm
ppmmake black %2 %3 > black.pgm
pnmtopng -alpha=%1.pgm black.pgm > %1A.png
del black.pgm
del %1.pgm
goto END
:ERR
echo al pngファイル名(拡張子は不要) x幅 y幅
:end
 
---↑ここまでバッチファイル---


おまけ。
iOSでPNGの透過を有効にするときは、256色にするか、インデックスカラーというものにしなければならない。普通にフルカラーで透過色を設定しても透過しない。
インデックスカラーへの変換は、フリーのgimpかPhotoshopで出来る。

gimpの場合は、画像>モード>インデックスカラー>255色で変換し、ファイル>エクスポートでPNGで出力し直す。



2015年8月3日月曜日

Windows7が休止から勝手に復帰するときの対処法

なんか昨日あたりから、Windows7(Pro 64ビット)が、休止から勝手に復帰する現象が発生していた。「スリープ」ではなく「休止」。

スリープはマウスやキーボードの押下で復帰するが、休止はそんなことはない。基本的には電源ボタンの再押下しか復帰方法はないはず・・・だと思っていた。

しかし、休止させてから10分ほどすると勝手に復帰している。電気の無駄でもあるし、そうでなくてもこの糞暑い時に暖房器具にも近いPCが起動しているのは宜しくない。
ということで調査を開始。

スリープからの復帰を止める方法はいくらでも情報があるが、さすがに休止からについては殆ど無い。あったとしても、ほとんどは休止とスリープを混同してる。

念のためキーボード、マウス、Bluetoothのプロパティーからスリープからの復帰も禁止してみたが、変わらず。

考えられる可能性として、有線ネットワークからWakeupLANを受信して再起動している事が考えられた。念のため調べてみたが、それもONになってなかった。

とあるサイトに、「電源オプション」の詳細設定でスリープの「次の時間が経過後休止状態にするを有効にしていると、休止にならずに復帰することがある」という情報があった。調べてみたが、うちでは「なし」になっている。しかしその下に今まで見たこともない設定があった。

それが「スリープ解除タイマーの許可」で、「有効」になっていた。まさかと思ってこれを「無効」にしてみたら直った。



全く用途不明だが、スリープを指定時間で解除するタイマーがあるようだ。しかもそれがスリープだけでなく休止に対しても効いてしまっていると。そりゃバグだろう。

ということでまとめ。
(1)コントロールパネル~電源オプションを開く
(2)省電力(他のプランでも可)を選択し、プラン設定の変更をクリック。もしくは左のリストから「電源プランの作成」をクリックして新規にプランを作成する(上のはそれで「カスタムプラン1」というのを作った時のもの)。


(3)詳細な電源設定の変更をクリック
(4)すると上記の電源オプションの詳細設定が出てくるので、スリープ~スリープ解除タイマーの許可を開く
(5)設定を「無効」にする
他の設定も必要に応じて変更すればいい。

ちょうどWindows10が公開された辺りからだったので、もしかしたら、それを通知するプログラム(GWX.EXE)が悪さしているのではとも疑ったが、そうではなかった。ウイルスも疑ったが、ウイルスバスターの検査では引っかかるものはなかった。

しかし、こんな設定変更した覚えはない。Windows7(XP以降全て)のファイルシステムNTFSは、しょっちゅうファイルが破壊される、極めて弱いファイルシステムなので、何かの拍子に関連情報ファイルが破壊されたのかもしれない。

ス リープ解除の時間をどこで設定するのかはわからない。ここではない。これが有効になっていてもそのスリープ解除タイマーの設定さえなければ自動復帰しない はずで、何かのプログラムがそれを指定したのかもしれない。それがGWXではないという保証はない。いずれにせよ、解除タイマーを無効にすれば勝手に復帰 はしなくなる。

もし同様のことでお悩みの方がいらっしゃれば、お試しを。

2016/02/08追記:
Windows10ではこれをしてもまだ勝手に休止から明けてしまうことがある。とりあえずの可能性の回避方法を別ネタへ。