Sponsored Link

雑記の最近のブログ記事

元々私がSilverlightに興味を持ったのは、Adobe Flashの価格が高くて「遊びで使うのにこんなに出せねーよ」と思ったのがキッカケで(もっと安いFlexでいいと後から知った)、VisualStudioで開発できるSilverlightなら私にとってはタダも同然……という、実にセコい理由だったりします。

しかし、蓋を開けてみれば、Silverlightの開発にはVisualStudioだけでなくExpression Blendという別のツールも使うことが分かり、そのソフトの値段が63,203円(Amazonでの現在の価格)とFlashと大差ない値段で絶望。「なんでこんなに高いんだよ!この守銭奴!」と文句を言いつつ、「Microsoftにこれ以上1円も払わんぞ!」とVisualStudioオンリーで開発を進めることを心に決めていたのが、2時間前までの私。

よくよく調べて見ると、アップグレード版の対象商品にVisual Studioも含まれていることが判明。

Microsoft Expression アップグレード情報

これなら私は、13,986円のExpression Blend 2 アップグレード版でいいみたいです。

さらによく調べてみると、なんとこのExpression Blend 2にはVisual Studio 2008 Standard Editionも含まれているそうです。

Visual Studio 2008 Standard Edition アップグレード版の現在のAmazonの価格は18,711円。Expression Blend 2の方が5000円も安くて同じ物が手にはいってしまいます。ようするに、Expression Blend 2の値段はマイナス5000円ということですねw

というわけで、Microsoftさんは守銭奴どころか、恐ろしいほど太っ腹なことが分かりました。

Expression Blend 2には全く興味ないけどVisual Studio 2008は欲しいという方にも、こちらがお勧めです。

ところで私は以前書いたように、既にVisual Studio 2008 Standard Editionを買ってしまったのですが、これ返品するからExpression Blend 2+5000円と交換してもらえませんか?orz

レーザーマウスが出た頃の売り文句は「どこでも使える」でしたが、実際にはどこでもと言うには程遠く、満足に使えるサーフェスはそれほどありませんでしたが、Microsoftが「本当にどこでも使える」という売り文句でBlueTrack Technologyという新型センサを発表しました。

http://www.microsoft.com/japan/hardware/mouse/bluetrack/special/

新製品の売り文句なんて話半分くらいに受け取っているのですが、YouTubeで実際に操作している動画を見て驚愕。これは本当にどこでも使えますw

 

国内では来週、ワイヤレスモデルが2機種発売予定です。

Microsoft Explorer Mouse(5AA-00018)

Microsoft Explorer Mini Mouse Dark Silver(5BA-00017)

来年2月にこのセンサーを使用したゲーミングマウスも発売予定になっています。

ただし、ゲーミングマウスとして見た場合に、このセンサにはいくつか問題と思われる点があります。

1つめはリフトオフディスタンスの長さ。リフトオフディスタンスとは、マウスを操作面から持ち上げて反応しなくなる距離のことです。マウスを右に動かし続ける場合、ある程度動かしたらマウスを持ち上げて左に戻すという使い方をしますが、リフトオフディスタンスが長いと左に戻す際に操作を切るためにたくさん持ち上げる必要があり、操作が大変になります。リフトオフディスタンスが長いと言われるレーザーマウスですら4mm程度ですが、上の動画の様子ではかなり離れていても反応してしまいそうです。

もう1つの問題はセンサーが斜め向きになっていること。レーザーマウスも斜めになっているのですが、マウスを持ち上げたときにマウスカーソルが上下に動いてしまう欠点があります。リフトオフディスタンスが長いほど上下に動く量も増えてしまうので、BlueTrackはかなり動くのではないかと思います。FPSのようにマウスで視点操作をするゲームでは、この上下のブレで画面全体が動いてしまうので、たんにマウスカーソルが上下に動く以上に不快に感じてしまいます。

Microsoftがブラウザ上でSilverlightアプリケーションを簡単に構築できる、PopFlyというサービスを提供しています。

http://www.popfly.com/

Yahoo!Pipesのような感じで、データソースと出力ツールを接続するだけで、コーディング無しで簡単にSilverlightアプリケーションを作ることができます。

試しにFlickrから富士山の写真を拾ってきて表示するアプリケーションを作ってみました。(製作時間2分)

Yahoo!Pipesのように、用意された道具を組み合わせるだけでなく、自分でJavaScriptを書いて入力ソースやデータ加工ツールを作ることもできるようです。

今回試したのはマッシュアップツールですが、簡単なゲームを作ることもできます。○○ツクールよりは汎用的で、Win95の頃にあったClick&Playみたいな感じでしょうか。コーディング無しでも色々できそうな感じですが、自分でJavaScriptでコードを追加することもできるみたいです。さすがにマッシュアップほど簡単ではなかったので、ちょっと覗いてみた程度で、ゲーム製作にはまだ手をつけていません。そのうち何か簡単なものを作ってみたいと思います。

ちょっとした小ネタの発表のためのプラットフォームとして期待していたMicrosoft版Flashモドキ「Silverlight」のバージョン2.0が、やっと正式リリースされました。

Silverlightは1.0の頃はプログラミング言語としてJavaScriptしか使えませんでしたが、2.0ではC#、VB.NET、IronPython、IronRuby、Managed JScriptも使えるようになりました。

さっそく、Silverlightのポテンシャルがどの程度が調べていたら、なんとSilverlight上で動くQuakeを作っている人がいました。

Quake in Silverlight (with texture mapping)

Silverlightに3D描画機能はないので、ポリゴン描画はもちろん自前実装です。テクスチャまで貼られていますが、これって1ピクセルずつ描画しているんですかね?ここまでやって60fps出るそうです。(作者のPCはPentium4 3.2GHzだったと思う)

テクスチャ無しの3Dで何かしようとしていた自分の志の低さを痛感させられましたw

現在PCのHDD接続インターフェースとしてはSerialATAが主流ですが、SerialATAには「IDE互換モード」と「AHCIモード」と呼ばれる2つの動作モードがあります。

IDE互換モードはSerialATA1.0で用意された規格で、まるでパラレルATAのように振る舞うことで従来のシステムとの互換性を高めています。

それに対してSerialATA2.0で用意されたAHCI(Advanced Host Controller Interface)モードでは、パラレルATAとの互換性を排除して、より高度な制御が可能となっています。

SerialATAのドライブ本来の性能を発揮するには、IDE互換モードではなくAHCIモードで使用する必要があります。しかし、AHCIモードを使用するにはOSやドライバの対応が必要で、XPで使うには面倒な手順でOSをインストールする必要がありました。

私が現在使っているPCは、OSはVista、チップセットはICH9R、HDDはもちろんSerialATAの最近の物で、AHCIはすぐにでも使える状態ですが、今まではIDE互換モードになっていました。

せっかく使えるのだから試しに使ってみようとBIOSでAHCIに切り替えてみると……はい、起動しなくなりましたorz

一瞬顔が青くなりましたが、Vistaのインストール時にIDE互換モードにしていると、AHCIドライバを読み込まないように自動的に設定されるのが原因でした。

ブート ドライブの SATA モードを変更した後で Windows Vista ベースのコンピュータを起動すると、エラー メッセージ "STOP 0x0000007B INACCESSABLE_BOOT_DEVICE" が表示される(Microsoftサポートオンライン)

レジストリを書き換えてから改めてAHCIモードに変えてみると、無事に起動しました。

今回は「BIOSに設定があったからなんとなく試してみた」だけで、事前に何も情報を集めていなかったので、とりあえずAHCIモードで何か問題がないか2ち○んねるで情報収集しようとギ○ナビを起動したら……起動時のプログレスバーの進み方がめちゃくちゃ速い!!ギコナビ以外のアプリケーションも起動が速くなりました。

「体感できなかった」という報告もよく見るので全く期待していなかったのですが、これは嬉しい誤算。私の使っているHDDは、シーケンシャルアクセスは物凄く速いがランダムアクセスが遅い、直線番長なんて言われたりするドライブなので、特にNCQが効果的なのかもしれません。

先日リリースされたMovable Type 4.2に更新しようとしたら、ここで使っているs33.xrea.comサーバは、PerlやMySQLのバージョンが古いせいで、上手くインストールできませんでした。

システム更新時のトラブルを避けるために、別のサーバで導入テストまでやったのに、そのテストしたサーバとこのサーバでは、インストールされているソフトのバージョンが違うという罠がありましたorz

元に戻そうとしたら、MySQLのバックアップファイルを誤って紛失してしまったので、Movable Typeに組み込まれているバックアップ復元機能を利用しましたが、なぜか50件の記事しか復元されませんでした。

とりあえず応急処置で、復元されなかった記事は以前に出力されたhtmlを見ながら日付を調節して1つずつ投稿しなおしておきましたが、何か不具合があるかもしれません。また、コメントは戻していないので、7月以降のコメントは消えているかもしれません。

4.0で出来たばかりのバックアップ機能ではなく、以前からあるエクスポート/インポート機能でバックアップを取ればよかったorz

当サイトでも利用している無料ウェブサービスXREAの広告サーバがハッキングされ、2008年6月8日から17日までの間、自動挿入される広告にトロイの木馬が仕掛けられていたようです。

参考リンク:Adobe Flash Playerの脆弱性および XREA広告サーバハッキング問題 まとめ

これはFlash Playerの脆弱性を利用した攻撃で、閲覧しただけでウイルスに感染してしまいます。4月9日にリリースされたFlash Player 9.0.124.0以降ならば大丈夫なようですが、それ以前のバージョンを使用している場合は、更新と感染の確認をしてください。

googleで「site:xrea.com」で検索すると約400万件のページがヒットしますが、たった1台の広告サーバをハッキングするだけで、これだけの数のページが影響を受けるというのは恐ろしいですね。(400万件全てが広告が表示されるページではありませんが)

ブログでは1つのページに複数のコンテンツが含まれるために、検索したいキーワードと関係ないサイトがヒットすることがあります。

例えば「遺伝子組み換えトウモロコシ」と「吉野家の牛丼」について別の記事として書いた場合でも、それらが同じページに並んでいると「遺伝子組み換え牛丼」で検索した際にもヒットしてしまいます。

以前からこの点が気になっていたので、アーカイブページのように複数の記事が並んでいるページでは<meta>タグでNOINDEXを指定するようにしました。(ただしトップページだけは例外)

検索して開いてみたらフィードだったということも多いので、robots.txtでatom.xmlも検索から除外しました。

昔好きだったInterstate'76というゲームをWindowsXP上で動かすことに成功したので動画を撮ってみました。

この動画をアップしたのは去年の12月なんですけどね。インストーラでも作ってクリスマスプレゼントかお年玉として公開しようと思ったのですが、こんなゲームをいまだに持っている人いなそうなので中止しましたw

このゲームをXP上で動かす方法ですが、

  1. なんとかして日本語版をインストールする(Pentium3以降ではCPUが速過ぎるために0除算エラーが発生して普通にはインストールできません)
  2. レジストリをいじって英語版のフリをする
  3. Gold Edition(英語版)のパッチを当てる
  4. 音声のプロパティあたりでサウンドのアクセラレータをOFFにする

という手順が必要です。

日本語版をインストールしてサウンドのアクセラレータをOFFにするだけでも一応動くのですが、車が何かにぶつかった瞬間に落ちてしまいます。これはフォースフィードバックが影響しているらしく、英語版の新しいバージョンでは設定ファイルの編集でフォースフィードバックを無効にすれば解決するそうですが、日本語版にはいくら探してもそんな設定がありませんでした。

Gold Editionのパッチを当てると音声が英語になってしまうので、この動画の撮影時には音声ファイルを日本語版のものに置き換えて「ほぼ日本語版」にしてあります。

先日、新しいPCを購入したついでに、今まで気になっていた電源周りを整理しようと思い、エレコムの「コードすっきりタップ」と「ACアダプタすっきりタップ」を購入しました。

tap1.jpg
tap2.jpg

コードすっきりタップは、接続したコードが一方向にまとまり配線がスッキリします。ただし、見ての通りこのタップにACアダプタを接続すると他の接続口が塞がってしまいます。そこでACアダプタすっきりタップも同時に購入し、ACアダプタはこちらに接続しています。

詳しくは、エレコムのプレスリリースでもどうぞ。実際に電源コードやACアダプタを接続した写真もあります。

私は電源コードを延長する必要はなかったので、コードすっきりタップは0.3mのものを、ACアダプタすっきりタップは雷ガード付きの1mのものを購入しました。(何故か雷ガード無しタイプは2m~しか無かったので)

実際に使ってみた感じでは、期待していたコードすっきりタップよりも、おまけで買ったACアダプタすっきりタップの方が良い感じでした。

昨日公開されたCatalyst 8.3でRADEONでもドライバレベルでGPUを利用したアスペクト比固定拡大ができるようになりました。

この機能が使えるのはRADEON X1xxx以降で、OSはXPでもVistaでも使えるそうです。

とりあえずGeForceとRADEONでアス比固定拡大ができるようになったので、DirectDraw版のアス比固定拡大ツールが欲しい人はこれで我慢してください。

レーザーマウスも"光学式"なのですが、レーザーではない一般的な光学式マウスに対する特別な呼び方が存在しないので、ここでは光学式と言ったら非レーザーマウスを指すことにします。

現在レーザーマウスは主にゲーマー向けマウスとして出ている物が多いですが、必ずしもレーザーマウスの方が光学式より性能がいいというわけではありません。

レーザーマウスが出始めた頃、特徴として「場所を選ばず使える」というような説明がされていました。たしかに光学式マウスでは相性の悪い操作面でもレーザーなら大丈夫な場合もありますが、逆に光学式なら問題無いのにレーザーでは駄目という面もあり、むしろレーザーの方が相性が厳しいのが実情となっています。

現状でレーザーマウスが光学式に比べて優れているのは、dpiが非常に高いこと、この一点しかないと言ってもいいでしょう。dpiが高いとマウスカーソルの動きが速くなり、マウスを2cmも動かせば画面の端から端まで届いてしまうほどのスピードを出すこともできます。RTSのようなジャンルのゲームで、カーソルを大きく動かす場合は高dpiのマウスが好まれます。

操作面との相性に関しては、目視では模様が確認できないような机でもマウスパッド無しで使えますが、逆に布製のマウスパッドとは相性が悪くカーソルが飛びやすくなります。レーザーマウスの追従性に悩まされている人は、試しにマウスパッド無しで操作してみると改善されるかもしれません。(表面がデコボコの面も苦手らしいです)

マウスを素早く動かすことが多いFPSゲーマーには、レーザーマウスは追従性の悪さで嫌われがちですが、少なくとも私の使っている机(マウスパッド無し)では、常識的な速さの範囲内ではカーソルが飛ぶような現象は起こりません。ゲーマー向けとして出ているレーザーマウスならば、相性のいいマウスパッドさえあれば性能は問題ないと思います。

逆に、高dpiのマウスが必要でなければ、わざわざレーザーマウスを選ぶ必要はないですね。

基本的に無線式のマウスは有線式に比べて、あまりゲームには向いていません。

まず1つめの理由は、有線に比べると低い信頼性。プロトコル上の工夫で多少のノイズが混入しても操作にはほとんど影響しないようになってはいますが、それでも有線に比べると遥かにノイズ耐性が低いです。また、目に見えない電波を使用しているので、問題があっても分かり辛く、原因の特定が難しくなっています。

2つめは、バッテリを内蔵することによる重量の増加。例えばMicrosoftのComfort Optical Mouse 1000とWireless Optical Mouse 2000は同じマウスの有線/無線バリエーションと言える関係ですが、データシート上のスペックは有線版が119g、無線版が電池混みで131gとなっています。有線版はケーブル込みの重量でケーブルが40g程度なので(MS製の別のマウスがそのくらい)、マウス本体は80~90g程度だと思います。

3つめの理由として、省電力モードがあります。無縁式のマウスはバッテリを長持ちさせるために、マウスが動いていないと判断すると自動的に省電力モードに移行します。この省電力モードからの復帰時に、僅かですが操作がモタつき、相手と目が合った次の瞬間には死んでいるようなシビアなゲームでは命取りになってしまいます。(参考リンク)

ロジクール(Logitech)からゲーマー向け無線式マウスのG7 Laser Cordless Mouseが出ていましたが、既に生産が終了しています。このG7では専用バッテリによる軽量化(単3電池2本が約50gなのに対して専用バッテリは18g)、ゲーム中は省電力モードにならない等の工夫で、通常の無線式のマウスが持つ欠点を克服しています。ただし、その代償としてバッテリのもちが非常に悪く、1日もたないようです。現在、ロジクールから新たなゲーミンググレードの無線式マウスは発売されていませんし、他社からも似たようなものは出ていないので、シビアなゲームに使える無線式マウスは無い状態です。

有線式マウスの線がわずらわしいという人は、コードホルダを試してみるといいでしょう。単なるコードを挟める錘だったり、バネで空中で支持する物など色々な種類があります。空中で支持するタイプでも、重量のある物がお勧めです。マウスパッドを挟んで固定するタイプは避けた方がいいでしょう。

光学式マウスに限った話ではありませんが、最近のWindowsにはマウスの加速度と呼ばれる設定があります。

これはマウスをゆっくり動かしたときはカーソルの動きが遅くなり(dpiが下がる)、素早く動かすと速くなる(dpiが上がる)機能です。これはデフォルトでONになっているので、ほとんどの人が知らずに使っていると思います。

この機能は[コントロールパネル]-[マウス]-[ポインタオプション]にある「ポインタの精度を高める(E)」というチェックボックスで設定します。ここにチェックが入っていると加速度が有効で、チェックが外れていると無効になります。

mouse.gif

この加速度はマウスでFPSのように正確な照準が必要なゲームをする場合は、無い方が良いと言われています。加速度無しの場合はマウスを右に3cm動かしてから左に3cm動かすと元の位置に戻りますが、加速度有りの場合は動かす速度によってマウスの報告する移動量が変化するので、全く同じ速度で動かさない限り(事実上不可能)元の位置には戻りません。これが精密な照準を妨げる要因となります。もっとも、慣れの問題で、加速度有りで慣れていれば大丈夫という話もありますが。

また、マウスで絵や文字を描く場合には、絶対に無い方がいいです。加速度有りと無しで平仮名の「あ」をゆっくり書いてみると、次のようになります。 

mouse2.gif
これはわざと下手に演技しているわけではなく、全く同じように書いたつもりです。加速度有りだと緩やかな曲線を描こうとしてもXY軸に沿った直線になりがちで、綺麗な曲線が描けません。特にゆっくり動かしたときは、マウスの動きとカーソルの動きが一致せずに、気持ち悪い動きをします。

普通にブラウザ等を使うときは、慣れの問題もあると思いますが、加速度があった方が楽だと思います。ゲームをしたり絵を描くときは無い方がいいでしょう。

ただし、加速度を無効にすると全体的にカーソルの動きが遅くなり、400dpiのマウスだと遅すぎて使いにくくなると思います。マウスのプロパティでカーソルの動きを速くすると1ピクセル単位の操作ができなくなってしまうので、加速度を無効にする場合は800dpi以上のマウスを使った方がいいです。

マウスを動かせるスペースには限りがありますし、腕の長さも無限ではないので、操作範囲から外に出そうになったら一度持ち上げてマウスの位置を戻す必要があります。マウスカーソルのように画面端という壁が存在する場合は、マウスを持ち上げずにそこにぶつけて戻すという人もいるようですが、物体の回転をマウスで操作するような場合は壁がないのでそうも行きません。

ボールマウスは、マウスの中でボールが転がることで移動を検出しているので、マウスを持ち上げて中のボールが操作面から離れると、マウスを動かしてもカーソルは動かなくなります。

一方、光学式マウスでは、もともとイメージセンサが操作面に接触していません。イメージセンサで操作面のテクスチャを読み取れる範囲ならば、マウスを持ち上げてもカーソルが動いてしまいます。そのため、マウスの位置をリセットしようと持ち上げても、マウスが反応してしまうことがあります。

マウスを持ち上げてカーソルが動かなくなる距離を、リフトオフディスタンスと言います。リフトオフディスタンスが短いマウスほど少し持ち上げるだけで済み、良いマウスだと言えます。ただし、この値がマウスメーカーから公表されていることは稀で、ゲーマー向け情報サイトのレビューでも見ないと書いてありません。

また、マウスが反応する範囲で高さを上下させてみると、大抵のマウスはカーソルが上下に動くと思います。リフトオフディスタンスが短いと、この上下のブレも少なくなります。

光学式マウスはボタンの数やホイールの種類以外に、センサの性能が公開されていることが多いです。今回はその数字の説明です。

  • dpi

マウスを1インチ移動させたときに、何カウント分の信号を発生させるかの値です。数字が大きいほどカーソルの動きが早くなります。

カーソルのスピードはOSの設定から変更できますが、遅いマウスを補正で速くすると1ピクセル単位の操作ができなくなってしまいます。

マウスの1カウントがそのままスクリーンのドットに対応するわけではないので、dpiという単位は不適切で、cpi(counts per inch)を使うべきという意見もあります。

400~800dpi程度が一般的で、レーザーマウスでは3200dpiという製品もあります。必ずしも値が大きいほど良いわけではありません。普通は800dpiもあれば十分でしょう。

  • fps

光学式マウスは操作面を一定間隔で撮影して、それらの画像を比較することで移動量を検出しています。画像比較で移動を検出するには、1つ前に撮影した画像と重なっている領域がなければいけません。マウスの移動速度が速過ぎると、画像の重複領域が無くなってしまい、移動を検出できなくなってしまいます。

1秒間に何回イメージを取得するかを表すのがfpsです。この値が大きいほどカーソルの追従性が良くなり、素早くマウスを動かしてもカーソルの動きがおかしくなりません。

現在売られているマウスでは2000~10000fpsの物があります。

  • レポートレート(Hz)

マウスの状態を取得する頻度を表す数値です。

USB接続の入力機器は、USB1.1のLow Speedモードでインタラプト転送を使用するのが一般的です。このインタラプト転送では1~255msに1回、最大8バイトのデータを転送することができます。一般的なUSBマウスではこの間隔が8msになっており、125Hzとなります。

この間隔は操作遅延と、カーソルの追従性に影響します。

125Hzのマウスでは、ボタンを押したりマウスを動かしてからその情報がPCに伝わるまでに、ワーストケースで8msの遅延が発生します。

また、マウスの移動量は8bit値が使われるのが普通で、8bit値の最大値127*125Hz=15875が1秒間に通信できる最大のカウント数となります。800dpiのマウスの場合、15875÷800≒20となり1秒間に20インチ動かす速度が、そのマウスのプロトコル上の限界速度になります。

dpiが高いレーザーマウスでは、カーソルの追従性はセンサ性能よりも、こちらがネックになっている場合があります。

マウスでゲームをしなければ、これらの数値はそれほど意識する必要は無いです。今売られている最低ランクのマウスでも、ブラウザの操作をする分には全く問題のないレベルです。一番最初に出たマイクロソフトの最高峰のマウスよりも、今のマウスの方がセンサの性能は上がっています。

かつてはマウスといえば中にボールが入っていて、それを転がすことで移動を検出していましたが、マイクロソフトが現在の方式の光学式マウスを発明してから、ほとんどのマウスが光学式になりました。

光学式マウスが移動を検出する原理は、マウスに搭載されたイメージセンサで1秒間に数千回ものスピードで操作面の写真を撮影し、その画像を比較することで移動量を求めています。

このマウスに搭載されているイメージセンサは、デジカメに使われている数百万画素の物と比べると非常に小さいもので、16*16や22*22程度の画素数しかありません。

光学式マウスに必要な機能はイメージセンサも含めて1チップに集積されていて、イメージの撮影・移動量の検出・ボールマウスと互換性のある信号の出力までを全て専用チップ内で処理してしまうので、部品点数も少なく低コストでマウスが作れます。

ちなみに、イメージセンサの画像をそのまま取得する機能を備えた物もあり、それを利用して光学式マウスでライントレーサを作ってしまった人もいますw

光学式マウス用のイメージセンサはAvago Technologiesが有名ですが、元々この会社はHP(ヒューレットパッカード)から独立したAgilent Technologiesの半導体部門です。HPがPC部門(現HP)と測定器部門(現Agilent)に分かれ、Agilentの中の半導体部門がAvagoとして独立しました。Avagoという会社ができたのはつい最近のことですが、中身はポッと出のベンチャー企業ではなく歴史の長い会社です。

パナツインやパナカスタムは非常に頑丈な作りですし、こんなものを所有している人なら壊れても自分で修理してあと10年でも使えると思いますが、本体を手に入れたが説明書が無くて困っている人がいたので、スキャンしたものを置いておきます。

panatwin.pdf

私が持っていたのは、パナツインから麻雀用ボタンを省略したパナカスタムでしたが、説明書はパナツインの物が入っていました。

私は最近までパナカスタムというコントロールボックス(アーケードゲーム基板を家で遊ぶための機械)をPCに接続し、それをゲームの操作に使っていました。パナカスタムは筐体が鉄で出来ていて非常に頑丈で、重量も5kgあり、ゲームコントローラとしてはかなり優秀でしたが、さすがにデカすぎて邪魔に感じるようになってきたので、先日ヤフオクで売ってしまいました。

この頃は昔ほどアーケードスティックを使うようなゲームはプレイしていませんが、シューティングゲームや格闘ゲームを遊ぶときは、スティックタイプのコントローラが欲しいので、パナカスタムの代わりになる物を選定中です。

現在の候補は次のようになっています。

セガのPS3用コントローラですが、USB接続なのでPCでも使えます。レバーもボタンも業務用の物なので、ゲーセンと全く同じ感触です。PCではレバーがハットスイッチとして認識されるので、古いゲームを遊ぶ際には注意が必要です。発売当初あった不具合は、現在新品で売られている物は修正されています。

ホリのPS3用コントローラですが、USB接続なのでPCでも使えます。スティックはゲーセンと同じ物ですが、ボタンがホリの物で質がイマイチのようです。連射機能付き。スティックはハットスイッチとアナログレバーのどちらにも設定できます。AmazonのレビューにPS2用のゲームで使えないとありますが、最近PS3のファームウェアが更新され、今ではPS2用のゲームでも使用できるようになったそうです。

今のところRAP3に心が動いています。ボタンの品質は、自分で業務用の物に交換してしまえば問題ありませんし。ただ、そうなると価格がかなり高くなりますが。

また、アーケードスティックではなくゲームパッドですが、ロジのPC用のチルストリームも興味があります。既にXbox360用純正有線コントローラを持っているのですが、チルストリームの方が一回り小さく、十字キーの操作性が素晴らしいみたいです。360用純正コントローラはアナログスティックでの操作はいいのですが、十字キーがイマイチだったので、十字キーをメインで使うゲーム用に1つ欲しいです。ちなみにドライバはチルストリームでもX360Cが使えるようです。

このソフトは以前は「ウルトラキッド」「ファンファーレフォトグラファ」「HYPER KiD」「The Graphics[ペイント]」等の名前で売られていたソフトの後継で、なかなか使いやすいフォトレタッチソフトです。名前をころころと変えつつバージョンアップしてきて、今はソースネクストから1,980円で販売されています。

ソースネクストというとちょっとイメージが悪いかもしれませんが(失礼)、フォトグラファは38,000円もした結構まじめに打倒Photoshopを狙っていたソフトです。結局、低価格版Photoshopの出現と同時に、当時いっぱいいたライバルもろとも打ち砕かれてしまいましたが…

機能的にはフォトグラファからCMYKモードが省かれた程度なので、それが必要ない人には十分です。また、10年前からプログラムが大して変わって無いので、動作も非常に軽いです。

難点は、説明書がヘルプファイルしかないので、この手のソフトを初めて使う人には難しいかもしれないこと。また、Photoshopプラグインに対応していますが、動くのは稀でほとんど動きません。(1つ前のPaintgraphicの方が互換性高かったようです)

私はPhotoshopよりもこちらの方が好きなので、ウルトラキッド2時代から愛用しています。ちょっとした画像編集ソフトが欲しいけどフリーのGIMPには馴染めなかった人は試してみてはいかがでしょうか。

昨日始まったアニメ「しおんの王」を見ていたら、輪郭線の細さが気になりました。

アニメ製作がデジタル化される以前のセル画の時代には、輪郭線は絵の構成要素としての役割とは別に、彩色の際に色がはみ出るのを防ぐ緩衝エリアとしての役目がありましたが、今ではそのような必要性はないので太さは関係ないんですね。

また、被写界深度効果もかなり積極的に使われていました。被写界深度効果は他のアニメでも使われていますが、たとえばドラゴノーツが半径1~1.5ピクセルのぼかしで注意していないと気付かない程度なのに対して、しおんの王ではかなりキツく輪郭線が完全に消失する程かかっていました。

同じカットでピント位置が変化する表現も多く(複数の人物が発言するほぼ全てのシーン)、発言するキャラにピントが合うように変化していました。ただ、少しやりすぎで見難い感じがしましたがw

Amazonクレジットカード

| 雑記 | コメント(1)

私は今まで郵便貯金のキャッシュカードとセゾンのクレジットカードが一緒になった郵貯カード《セゾン》VISAを使っていたのですが、郵便局の民営化でこの提携が切れてしまい、キャッシュカードとクレジットカードで分かれることになりました。参考リンク

ゆうちょ銀行は現時点では新しい提携先の発表はありませんし、キャッシュカードとクレジットカードで2枚のカードを持つのは嫌だなぁと思っていたので、他の金融機関と提携している年会費無料のクレジットカードを探してみたら、これが意外と少ない。

結局、1枚にまとめるのは諦めて、貯金を新生銀行、クレジットカードをAmazonクレジットカードにしました。

新生銀行はコンビニATM利用時の手数料が24時間無料で、以前から口座を作ってありました。Amazonクレジットカードは、ポイントの還元率が非常に高く、還元の単位が500ポイント毎というのも使いやすいです。Amazonギフト券での還元なのでAmazonでしか使えませんが、一年間に使うお金の半分がAmazonではないかという私には非常にありがたいカードです。 *1

新生銀行にも新生VISAカードがありますが、どうせオンライン決算にしか使わないならクレジットカードを持ち歩く必要もないので、今回は見送りました。

他に検討した中でお勧めは三菱東京UFJ銀行です。ここのスーパー普通貯金(凄いのか普通なのか謎の名称)に100万円50万円以上貯金しておけば、コンビニATMが24時間無料で利用できるようになります。貯金が50万円未満でも、キャッシュカードとクレジットカードが一緒になったスーパーICカードで、1円でもクレジットカードの利用があればコンビニATMが無料になります。

これらの情報はほとんど夜中の3時にK塚さんにメッセで教もらいました :-)


*1 : セゾンも永久不滅.com経由でAmazonを利用すると還元率が高い

綺麗に色分けされたソースコードをブログに載せている人がいて、どんなソフトを使っているのか参考にしようと調べてみたら、はてなダイアリーに標準で備わっている機能(superpre)でガックリ。

うちで使っているMovableTypeで同じことができないかと調べてみたら、VimColorプラグインがありました。当サイトでも既に導入済みで、半歩進んだエラー処理のソースコードはこれでハイライトされています。

ところで、このプラグインはキーワードのハイライトだけでなくTabもスペースに展開してくれて便利なのですが、なぜか行頭のTabだけスペースが2つ少なくなります。Tab4だとスペース2つ、Tab8だと6つになってしまいます。行頭に何か文字(例えばC++のコメントの//)があるとこの問題は発生せずに、設定通りのタブストップ位置までスペースが挿入されます。このせいで、コメント行とそうでない行で2文字タブ位置がずれてしまう問題も発生しています。

このプラグインは最終的にテキストエディタのVimを起動してそちらに処理を委ねているので、Vimのオプションを見ながら関係がありそうなものを片っ端から試してみましたが、まったく改善されませんでした。プラグインのソースコードを見ても何も悪さはしてなさそうなので、どこに原因があるのかさっぱり分かりません。

今はエディタでTabをスペースに変換してから貼り付けるという方法で回避していますが、手間が増えてめんどくさいです。なんとかしてプラグインにTab変換をやらせたいのですが、そもそもVimなんて使ったことのない私には何をいじったらいいのやら...

Amazon AdSense

| 雑記 | コメント(1) | トラックバック(0)

当サイトは無料のウェブスペースを利用しているので、一番上に自動でGoogle AdSenseの広告が入ります。

Google AdSenseは広告が掲載されるサイトの内容に基づいて一番適合しそうな広告を自動で選んでくれるサービスで、広告主もそれを掲載する側も何も考える必要はなく、費用(労力)対効果としては素晴らしい広告ではないかと思います。特に無料ウェブスペースのようなサービスでは、これ以外の広告は考えられないほどの効果があると思います。

広告といえばニコニコ市場でおなじみのAmazonも有名ですが、そのAmazonにもGoogle AdSenseそっくりの広告があります。(まだβテスト中ですが)

とりあえず、うちのサイトにはどんな商品が選択されるのか、ためしに貼ってみます。(この記事だけ)

ゲームコントローラのレスポンス問題の続き

USB以前のゲームコントローラの接続に使われていたインターフェースは

  • サウンドカードのゲームポート
  • ISA/PCI接続の拡張カード(IF-SEGA2等)
  • プリンタ用のパラレルポート等を利用したDirect Pad Pro

といったところです。

これらのインターフェースがUSB接続のものと決定的に違うのは、コントローラを接続しているコネクタの電気的な状態がCPUから直接見えることです。いまどんな信号が流れているのか、CPUからリアルタイムに見ることができます。また、コントローラの状態の読み出しが、アプリケーションの実行パスの一部として直列に処理されます。

それに対して、USBは通信にかなり複雑な手順が必要なため、ゲームコントローラや変換機にもCPUを搭載していて、実際にゲームコントローラの状態を読み取るのは、そちらのCPUが行っています。

前回、ポーリングの間隔が十分に短くないと入力の取りこぼしが発生するという話をしましたが、USB接続の場合はコントローラや変換機側のCPUが適当な間隔でポーリングをして、USBを通して情報をPCに送っています。このコントローラ(変換機)側のCPUのポーリング間隔がレスポンスに影響してきます。

では、このポーリング間隔が、どの程度ならレスポンスに問題が無いのでしょうか?

よくある誤解が、連打速度を基準にすることです。高橋名人が16連射だから、1秒間に32回ポーリングすれば十分だろうという発想です。 *1

確かにボタンを連打するという操作では1秒間に16回程度が常人の限界だと思いますが、レバー操作やボタンのずらし押し等は、それより遥かに速いテンポで入力されています。

ハイパーオリンピックという主にボタンを連打することで記録を競うゲームがありましたが、この種のゲームで記録を伸ばすために、レバーにボタンを配線するという方法が使われました。 *2 各所のハイスコア集計で自動連射機能は禁止されていましたが、このレバーを使用した方法はセーフである場合が多く、通常のボタン操作よりも遥かに高いスコアをたたき出していました。 *3

この例でも分かるように、レバー操作はボタン連打よりも速いスピードで入力が変化しており、連打速度を基準では不十分です。

また、ゲームが60fpsで動いているのにコントローラが秒間20回しか情報を更新していなければ、全ての操作が3フレーム単位となり、3フレームより短い入力は不可能です。正確に1フレームだけボタンを押さないといけないアキラの膝なんて絶対に出ません。タイミングを合わせるような操作も、3フレーム単位でしか調節できなくなります。これではブロッキングとか無理ですね。

なお、このレスポンス問題をラグ(遅延)と誤解している人が多いですが、遅延とは違います。50ms間隔でポーリングしている場合、ボタンを押してから実際にその情報が読み取られるまで最悪で50msの時間がかかるので、これが遅延だと思われています。

ほとんどのゲームが60fpsで動いているので、入力も60回行えるのが理想ですね。ただ、1秒間にきっちり60回ポーリングすると、ゲーム側が60.1fpsのように微妙に速かった場合に、たまに1回の入力が2フレームまたいでしまうことになるので、もう少し余裕を持たせた方がいいと思います。

サンワサプライのPlaystation用コントローラ変換機のJY-PSUAD11やその旧製品のJY-PSUAD1は、1秒間に110回もポーリングしているので、現時点ではこれが一番良いでしょう。 *4 この手の製品でコントローラを2つ接続可能なものは、1つのものと比べてポーリング間隔が半分になっているのがほとんどなので、レスポンスを気にするなら2つ接続できるものは避けた方がいいです。


*1 : ボタンを連打するという操作はONの状態とOFFの状態を交互に繰り返すことなので、連打速度の2倍の情報更新が必要
*2 : デジタル操作のレバーは電気的には上下左右の4つのボタンがあることに等しいので、ボタンの線を繋げばボタンとして機能する
*3 : ゲーメスト誌では96年頃から禁止されました
*4 : 製品には55回の入力と記載されているが、これはONとOFFで合わせて1回とカウントしているため

ゲームコントローラがUSBで接続されるようになってから、レスポンスというのが大きな問題になるようになりました。なぜこのような問題が発生するかというと、それは「ろくにゲームもしない人がコントローラを作っているから」です。

という話は置いておいて、技術的な面からこの問題について説明します。

キーボードやマウス、ゲームコントローラのような入力機器の状態をホストであるPCに伝える手段に、「割り込み」と「ポーリング」という2種類の方法があります。

割り込みは、デバイスが自分から能動的にデータを送り込む方式で、CPUはデバイスの状態を監視する必要はありません。CPUが他の仕事をしているときでも、デバイス側から呼びかけてCPUに今やっている仕事をいったん中断させてから情報を渡します。割り込みが発生するたびにCPUは仕事を中断させないといけないので、あまり頻繁に割り込みをかけると全体の処理速度に影響が出てきます。 *1 この方式は、非周期的で入力の頻度が少ない機器に向いています。また、入力の取りこぼしが発生しないという利点もあります。PCではキーボードとマウスがこの方式を使っています。

一方ポーリングは、CPU側からデバイスに現在の状態を問い合わせることで情報を伝えます。デバイス側から自発的に情報を送ることはせず、聞かれるまで黙っています。この方式では、CPUから問い合わせがあったときに最新の状態を伝えるだけで、前回の問い合わせから今回までの間に起こった変化については関知しません。そのため、ポーリングの間隔が十分に短くないと、入力の取りこぼしがおきてしまいます。また、入力を受け付けている間は周期的に問い合わせる必要があるため、CPUはゆっくり休むことはできません。一般的にゲームコントローラはこちらの方式を使っています。

両者のもう1つの特徴は、割り込みデバイスは基本的に入力の「変化」を情報として伝え、ポーリングデバイスは現在のありのままの「状態」を伝えます。例えばキーボードでは、あるキーが押されたらそのキーがONになったという信号を送りますが、そのキーが押され続けている間は何も送りません。次にキーが離された時点で、OFFになったという信号を送ります。 *2 このとき、キーOFFの信号が何らかの原因でロストしてしまうと、キーを離しても押しっぱなしの状態になってしまいます。Windows上でキーボードやマウスのボタンが押しっぱなしの状態になってしまった経験がある方も多いと思います。逆にポーリングデバイスでは、このような押しっぱなし現象は発生しません。

長くなったので、続きはゲームコントローラのレスポンス問題 その2で。


*1 : 逆に、割り込みがかかるまでCPUは居眠りをしていてもいい
*2 : 実際には押されている間は周期的にキーONの信号を送っていたような気がする

1つ書き忘れ。

PCでゲームをする場合、液晶モニタが原因の遅延とは別の理由で、さらに遅延が発生します。次の図を見てください。

NVIDIA.gif

GeForce7600GSの画面のプロパティの一部ですが、初期設定では最大で3フレームの先読みレンダリングをするようになっています。

これは、アプリケーションに対しては描画が完了したように見せかけて、実際には最大で3フレーム分の描画処理を溜め込むという設定です。

これが無いとGPUがCPUから命令されるまで暇を持て余したり、GPUが前の仕事を終わらせるまでCPUが待たされたりして、スムーズに仕事が進みません。そこで、3日先の仕事の内容まで先に聞いておいて、指示待ちをすることなく黙々と仕事をこなすことで効率をあげようというのが、この機能です。

CPUが既に終わっていると思っている仕事が、3日分も溜め込まれているので当然ですが遅延が発生します。

この機能はSLIで特に効果を発揮し、3フレーム遅延してもfpsが3倍になれば変わらないはずというのが、NVIDIAの言い分です。

しかし、それにはアプリケーション側が可変フレームレートで動作するものでなければいけませんし、VSYNC同期も切らないといけません。

VSYNC同期をオンにしたまま60fps以上で動作するゲームを遊ぶと、GPUが描画命令を消化するスピードが1秒間に60回ずつに固定されてしまうので、いつまで経っても3フレーム(0.05秒)の遅延が解消されません。

私は最近はそれほど重いゲームは遊ばないので、多少の効率ダウンには目をつぶって、遅延重視でこの値を0にしています。

ちなみに、この項目は初期状態では見えないように隠されています。どうやって出すのかは覚えてないので省略。

以前からゲーマーの間では、液晶モニタは映像信号の入力から実際に画面に出力されるまでに遅延があることは知られていましたが、今年になってから各テレビメーカーが遅延低減を謳ったゲームモードを売りにしてきたこともあり、やっとテレビメーカーも遅延があったことを公表しました。

参考リンク(半年近く前の記事ですが)

テレビ放送のような非インタラクティブなコンテンツでは遅延は全く問題になりませんが、テレビゲームのようにプレイヤーの操作と画面が連動して動くインタラクティブなコンテンツでは、遅延が問題になってきます。(過去の映像を見ながら操作するのでその分反応が遅れる)

遅延は映像をより美しく見せるための高画質化のための画像処理が原因となっており、安物の低機能なモニタよりも高画質な高級機の方が遅延が多いという悲しい傾向にあります。

安物のモニタであっても、液晶モニタは液晶パネルの解像度がきっちり決まっているので、それと異なる解像度の信号が入力されたときは、スケーリングという一種の画像処理が必要になります。 *1

これらの画像処理をする際には、一度フレームバッファに1画面分の映像を溜め込む必要があります。1画面分キャプチャしてから、パネルに合わせてスケーリングし、それが終わってからやっとパネルに出力されます。 *2

1画面分キャプチャするためには、映像信号が画面の左上から始まり1行ずつ出力されて右下まで走査し終わるまでの時間が必要です。ブラウン管ではこの時点で既に画面の表示が完了していますが、液晶モニタではここでやっとスタート地点に立った状態です。この走査の時間は、1フレーム分に匹敵するほどの時間がかかるので、この時点で既に液晶モニタは1フレーム分遅れています。

テレビメーカーが1フレームしか遅延しないと発表している遅延低減モードが、ユーザの実測では2フレーム遅延していたという話もありますが、この走査終了を0秒とメーカーは考えているために、そのような食い違いが起こるのではないでしょうか。

なお、私はテレビの専門化ではないので、この記事は全て憶測で書いています。

※追記(2007/10/17)

YouTubeに遅延が分かりやすい動画がありました。


*1 : ブラウン管は元々ピクセルの境界が曖昧で入力信号によってサイズが可変なので必要無い
*2 : 原理的には走査線1本ないしは2本分だけのラインバッファでも可能だが、そのような機種はたぶん無いと思う

長年、地味にお世話になっていたinfoseekティッカー(Web設置型のコンパクトなニュース配信ティッカー)が2007年7月17日をもってサービス終了となってしまいました。

基本的にプル型のメディアのインターネットでは、自分の興味の無い分野の話題は最初から目に入ることもなく、それゆえに情報に偏りが出来てしまいます。そんな状況を少しでも改善するために、私はニュースティッカーのようなプッシュ型サービスを利用しています。

また、ティッカーを配置することを前提にレイアウトを決めていたので、ティッカーが無くなるとレイアウトも考え直す必要があり、それも面倒なので別のティッカーを探すことにしました。

そこで見つけたのがai-Tickerです。これは自分の好きなRSSを表示させることができ、またデザインも自由に変えることができます。(自分のサーバに画像を用意すれば自作スキンも使えます)

ai-TickerにYahoo!ニュース等が提供するRSSを表示させれば、自分の好きなニュースを配信させることができます。(当サイトのティッカーは掲示板に設置してあります)

ところで、せっかく好きなRSSを表示させることができるのだから、もっと面白い使い方を考えてみます。

Movable Type 4がリリースされていたので、3から更新してみました。

テンプレートの構成が変わって色々エラーでまくりだったので、おもいきってデータベース初期化、新規インストールをしてから、過去の記事をインポートしました。

前から欲しかった、ブログ記事以外のウェブページの作成ができるようになったのが嬉しいです。

また、テンプレートを初期化したおかげで、3.3くらいから追加されていたらしいFlickrのようなタグ付け機能も使えるようになりました。(YouTube, ニコニコ動画の方が最近は伝わりやすい?)

かなり便利になっていますが、システムだけで18MBの容量を食ってしまうので、50MBしか使えないXREAの無料アカウントではちょっと厳しいですね。

傑作アドベンチャーゲームの「The Secret of Monkey Island」が、いつの間にか無料でダウンロードできるようになっていました。

しかも、Windows、Linux、Nintendo DS、PSP、PS2、Dreamcast、Palm...等の様々な環境で遊ぶことができるようです。

私の友人に、テレビとPCを部屋の反対側に配置し、PCを使いながらテレビを見る際はテレビを鏡に映して見ている、ちょっと変わった人がいます。
ある日その友人が、字幕やテロップが読みにくいと言っていたので、『リバーサルミラー』(正映鏡)というものを紹介しました。

リバーサルミラーとは、2枚の鏡を直角に配置したもので、それぞれの鏡で2回反射することで左右反転していない像を得ることができる鏡です。(反対の反対は賛成なのだ by バカボンパパ)
結局、値段が高い(3000~5000円程度)ということで却下されたわけですが、よく考えたらこの鏡でテレビを見るのは難しいことが分かりました。

明るさや音の大きさのような物理量を量子化するとき、有限のビット数で表現するので無限の範囲を扱うことはできません。そこで範囲を限定する必要があります。
このとき、同じ量子化ビット数で範囲を広く取れば取るほど、その分階調が荒くなってしまいます。

例えば太陽の明るさは月の50万倍ありますが、8bitで太陽の明るさまで扱おうとすると、月の明るさは最小輝度(太陽の256分の1)よりも暗いので、漆黒の闇と月の区別が付かなくなります。
逆に月の一番明るい部分に合わせて量子化すると、月は綺麗に表現できますが、太陽の明るさを表現することができません。

画像の輝度や音声の強弱のような連続的な情報を、離散的な数値で表現することを量子化といいます。また、このとき全体を2のn乗の段階で表す場合、nを量子化ビット数と言います。
量子化ビット数が大きいほど階調が細かくなり、より滑らかな信号を表現できます。

PCの画面モードには16bitカラーと24bitカラーがありますが、16bitカラーではRGBをそれぞれ5~6bitで量子化しており、24bitでは8bitで量子化しています。24bitカラーの方が量子化ビット数が多く、階調が細かいので、滑らかなグラデーションが表現できます。

ところで、この量子化ビット数が異なると、中間階調で同じ値を表現できなくなります。

インターネットで標準的な画像フォーマットといえばGIFとJPEG。
打倒GIFを掲げていたPNGなんてちっとも普及しませんでしたね。
(IE7がPNGの半透明に対応するので、そこからが本当の勝負?)

ところで、GIFって256色だけでなく、フルカラーも扱えるって知ってました?

WindowsXPからClearTypeという方法で文字を滑らかにする機能が使えるようになっています。
しかし、OSに標準でついてくるMS Pゴシック等の日