2014/12/12

G100sファーストインプレッション

「より軽量であること」がどれだけ有効なのかを確かめるために試用してみるテスト.

錘を外すために通電して全スイッチの動作を確認したら即分解.開封から5分程度でしょうか.
多分自己最速ですね :D

ピストルサーバーをプレイしていて思ったのですが,このマウスは重量が軽いので慣性が小さく,ダイレクトに思考をマウスに伝えられる能力が高いと感じました.未だかつて無い一体感ですね.

G302の形状に慣れ,G100の形状にはすぐに適応出来たのでしばらくはG100sで行こうと思います.

初日でG100sに大きく傾いたので,AM010搭載の可能性が低いG300と,G100s選べと言われたらかなり微妙なライン・・・


ちょっと良いAIMだったので動画をアップロード :D


2014/12/10

ADNS-9500 Logitechカスタムを殻割りしてみる

巷でのブームに乗って撮ってみました.
Nikon 1 V1だと全然寄れないので苦し紛れでVICTORINOXについていたルーペで拡大してなんとか撮りました :D
ADNS-'S'9500
手元に潰していいセンサは・・・と思ったらG700の基板がぶち転がしてあったので,センサを外して,殻割り.
「殻を割った」というよりはプラスチックのカバーを剥がしただけですね.センサの基板とカバーはゴム状の接着剤で貼り付けられていました.

このセンサは表面の印字では"S9500 B1212TD 103"となっており,通常のADNS-9500の"A9500 xxxx"という印字とは異なっています.S9500はロジクール向けのカスタムモデルのようです.
ピン数はAは8x2の16ピンですが,Sは7x2の14ピンになっています.何が省かれているのかは詳細に調べないと分かりませんが,Aのデータシートを見た感じレギュレータの出力ピンを省いたのかなーとか思ったり.

フォーカスが外れていますが,穴の位置的にセンサーダイから外れた右端の四角い物体がレーザ発光部だと思われます.チップLED的なものを想像していたのですが非常に小さいです.
ADNS-9500はダイ上に発光部があるので外部にレーザ用のドライバ(トランジスタ)をぶら下げなくてはいけないのですよね.


●PMW3310DHと似ている?
rafa様の記事を見ると,PMW3310DHとかなり似ている構成だと分かります.
参考 : rafalog: Pixart PMW3310DH殻割り
周辺部を見れば判別は容易ですが,ダイのみで9500と3310差が見分けられる方は,極端にレベル高いソムリエですねこれ.是非お知り合いになりたいです.
また,センサの系統を考えるとADNS-9800もこれらとクリソツな可能性が高いと考えれます.

また,AM010ともおおまかなレイアウトは似ているのですよね.3050の世代からダイのアーキテクチャが変わったのかもしれません.


そろそろ,やり残した遅延ネタに移行していきたいのですが他にもやりたいことが幾つか・・・

2014/12/08

ROCCAT KAVEのモード設定

KAVE自体はもうディスコンになっており新型のXTD 5.1chが出ていたりとちょっと時期遅れな感じですが気になったので実験.

重量・性能共に最高クラスと名高いのヘッドセットであるROCCAT KAVEですが,手元のコントローラには[Game]  [Movie]なるモード切り替えスイッチがついています.この設定,どちらがTop Choiceなのか調べてみます.

とりあえず公式マニュアルを見てみましょう.
http://www.roccat.org/Downloads/Manuals/ROCCAT-Kave/ROCCAT-Kave_Manual_EN.pdf
OPERATION,Game vs. Movieから引用:
Two options are available to you which control how the headset sound is mixed: ‘Game’ and ‘Movie’.
The ‘Game’ setting is equivalent to the original 5.1 sound setting and is best suited to games, particularly first-person shooters.
If you intend to watch films on the computer, ‘Movie’ is the best setting as it ensures that the voices sound clearer and more defined.

何をもって"best suited to games"と言えるのか明確なDefinitionが示されていないので詳細は良く分からないのですが,とりあえず「ゲームやるならGameモードが最適で,映画を見るならMovieモードにすると良いですよ.」という事らしいです.ほほう.

何が起きているのか確認してみましょう.
検証に使うのはCS:GOのカスタムマップ「Audio Test Chamber」です.
http://steamcommunity.com/sharedfiles/filedetails/?id=337790613

KaveのGameモードとMovieモードを切り替えながら足音を聞いてみます.
モードの切り替えの時にラグや音の途切れが全くないので,スイッチでコントローラ内の回路を直接切り替えているみたいです.

足音を鳴らしたままで自分の視点をグルグル回すとよく分かるのですが,Movieモードだと正面±30°くらいに音源がある時だけ音が大きくなります.他の状況だとGameモードとの差は知覚できません.

本来は自分が回っているのですが,音源のほうが回っているとするとイメージだと下図のような感じ.


「現実に近い」というか音の軌道として正しいように聞こえるのはGameモードです.
ゲーム用途なら間違いなくGameモードを使ったほうが良いと思います.

Movieの方は前方の音を強調した音響設定にしてあるみたいですが,それがなぜMovieに適するのかは不明です.何らかのサラウンドの規格に準拠していたりするのでしょうか.


KAVEの簡易レビュー :

ついでにレビューをば.
結論から言うとこのヘッドセットが壊れたら2万円出して後継機のXTD 5.1chを買うレベルで気に入っています.
サラウンドに対応しているタイトルのみに限定されますが,2chヘッドフォンと比較すると「定位感」の次元が違います.BF3をメインでプレイしていた時に購入したのですが,立ち回りが変わりました.

わかりやすく言うと,目を閉じた状態で
・2chでプレイ・・・敵の居る方向が30度刻みで分かる
・5.1chでプレイ・・・敵の居る方向が15度刻みで分かる
という位の差です.
足音を聞いてPrefireする時の精度も上がりますし,後ろから足音がした時に厳密にどこに敵が居るのかかなり正確に分かります.


もちろんある程度のサウンドカードも必要ですが,定位感を重視するならサウンドカードよりもヘッドフォンがリアル5.1chな物を買うべきでしょう.
120HzのモニタとKaveのどちらかしか使えないのなら120Hzのモニタより60Hzモニタ+このヘッドフォンのほうが強いと思います.

私のデバイス優先度は,
マウス > マウスパッド > Kave > モニタ > キーボード > サウンドカード
という感じですね.あくまでサラウンド対応しているゲームに限定すればですが.


・音質
少し低音が強めでほかは普通という感じ.
他のチャンネルのドライバを入れなくてはいけないのでドライバ径も小さいですし,2chヘッドフォンだと考えると約1万円というのはかなりコストパフォーマンスの悪い製品だと思います.これに音質に期待して買う人も居ないでしょうけど.ただ,音質的には3000円くらいのヘッドフォンよりは良いと思います.


・装着感
耳全体を覆う感じのタイプで,重い以外は良いです.密閉型なので蒸れます.
私もゲーム中以外はスピーカーを使用しており,基本的Kaveは使いません.


Pros
・次元が違う定位感
・特に難点のない音質(特筆して良くないが悪くはない)
・耐久性が高い(3年間毎日数時間使用しても壊れない)
・装着感

Cons
・サラウンド対応タイトルでしか効果を発揮しない
・重い(人によっては装着できないと感じるほど)
・蒸れる(密閉型のため)
・音質の割には高額(2ch用途のみなら別なものを買うべき)

2014/12/02

CS:GOのFoV(視野角)を擬似的に下げてみる

超小ネタ更新.

Counter Strike Global Offensive では視野角(FoV, Field of View)は固定となっています.
垂直方向の視野角は一定で,モニタのアスペクト比に応じて水平方向の視野角が変化します.
CS:GOの日本語Wikiに大変分かりやすい図が乗っているので参照下さい.

アスペクト比に関しては,4:3+黒枠(Black Bars)の方が良いとか,4:3を16:9に引き伸ばすと敵の横幅が大きくなるので当てやすいとか,横方向の視野角が大きい16:9ワイドが強い等々の説ありますがプロですらこのあたりの設定はマチマチであり,「自分がやりやすいと思うものが一番良い」というのが一般的な意見のように感じます.

今回はいつも少し毛色の違った話で,簡単にFoVを下げる方法を考えようというトライです.

体感的にはこんな感じ.


やることは簡単で,

1.ディスプレイを物理的に近づける
2.HUDサイズを小さくする

この2点です.
2をやらないとレーダーやキルログなどの重要な情報が見れなくなってしまうので結構重要だなと思います.
HUDサイズはビデオ設定のHUDサイズから設定できます.



あとは下図の暗部を見ないようにするだけ :D



CS1.6で大変有名なSionさんもこういう意図で画面と近いようなプレイスタイルでプレイされていたのかもしれませんね.

【ニコニコ動画】Counter-Strike1.6 Sion -all view-

2014/11/29

レンズ距離とセンサの関係 ~ソール・オン・ソールにするとマウスに何が起きるのか?~

ゲーミング界隈では,いわゆる「純正ソール」の上に自分の好きなソールを重ね張りするというセッティングを使用している人がそれなりに居るようです.
詳しくはソール・オン・ソールの語源(?)ともなった下記事を参照下さい.
4Gamer.net ― DHARMAPOINTに聞く新型マウス「DRTCM37&38」。これが「俺達のIE 3.0」だ!?

また,重ね張りでなくとも自前のソール(トスベールや各メーカがラインナップしているマウス用のソール)を使っている人は多いでしょう.この時,純正ソールと厚さが違えばレンズと滑走面の距離は変化します.また,純正ソールを使っていてもソールの摩耗によってレンズと滑走面の距離は変化します.

レンズと滑走面の距離はデータシートで指定されており,メーカは純正ソールを貼った時にデータシートの距離と等しくなるように筐体の設計を行っているはずです.基本的にはデータシートの指定値で最もパフォーマンスが高くなるはずです.また,レンズと滑走面の距離によってDPIが異なる事を述べましたが,DPIの設定値が真に"Dot Per Inch"を意味するのもこの距離になります.


そこで,
ソールを重ね張りした時マウスはトラッキング面をどのように見ているのか?
そして,逆に純正ソールを剥がして薄いソールに張り替えた場合にどのようにマウスはトラッキング面を見ているのか?
というのを先日作成したシステムを用いて視覚的に解き明かしていきたいと思います.


装置概要

下記事参照.
#LogicalGaming: マウスの光学センサが見ている世界を見てみる

今回はマウスパッドをSteelSeries QcKとして滑走面とレンズの距離を変化させます.
そして各距離でのピクセルアレイの様子を観察します.

高さを変化させるのに使用するのは一円玉で,一枚の厚さは約1.5mmです.
rafa様のようにすきまゲージがあれば良かったのですが...

今回は筺体を外して基板とレンズのみの構成にします.
これでデータシート通りの寸法で測ることが出来ます.
ADNS-5090 Low Power Optical Mouse Sensor Datasheet
Figure 5. Distance from lens reference plane to tracking surface (Z)


結果

0枚から4枚までの順に下に示します.
0枚(0mm)
1枚(1.5mm)
2枚(3.0mm)
3枚(4.5mm)
4枚(6mm)
この結果を見ると,もう少し詳細に調べたほうが良さそうにも思えますね.

1.5mmが一番良好な結果になりました.標準の距離は2.4mmなので,差が小さい3.0mmの方が良い結果になると思ったのですが.
これから考えると,ソールが多少薄くなる分には性能には大きく影響しない可能性が考えられます.
逆に厚めのソールを重ね張りする場合は性能に影響がありそうです.一時期ソールの重ね張りをしていた時,高速動作時のトラッキングエラーが頻発した経験の裏付けが取れた感じですね.

また4.5mm程度,つまり標準の距離から2.1mm程度で暗くなり始めます.6.0mm(標準の距離から3.6mm)程度では真っ暗になるという結果になりました.
これから考えると,前に示唆した通りLoDが長い機種は「特にカットオフのアルゴリズムは使用していない」という可能性が高いということが分かります.

2014/11/28

サーバーのPingが高いので何とかしてもらった話

近頃のGO界隈で流行りのVPSサービスはFOREVER.NETですが,仙台からこのVPSに繋ごうとするとPingが140ms程度になっており中々困っていました.他の国内のサーバは10~15msなのですが.

「そのうちに治るかな」と1,2週間様子見していましたが変化がありません.
コマンドプロンプトにてサーバのIPでtracertしてみたところVPSの運営会社のノードまで到達した後100ms遅延しています.(何故かオーストラリアへ行っている模様?)

とりあえずサイトの問い合わせ欄からコマンドプロンプトでtracertしたログを添付してお願いした所,翌日には改善しておりPingが10msになっていました.


今回の場合,直接お願いして改善して頂きましたが,こういう時普通ならどうすれば良いのでしょう?とかネットワークの知識は全然ないので思ったりもしました.

2014/11/25

マウスの光学センサが見ている世界を見てみる


1 概要

今回作成したのは,AVAGO製光学センサが有する機能の1つであるPixel Grabberの可視化システムです.
--------------------------------------------------------------------------------------
2014/11/25 初出
2015/01/25 COUGAR CONTROL Mouse Pad 追加
2015/05/20 Artisan 紫電改 MID 追加
2015/11/23 HORI EDGE 401 追加,レイアウトを調整
2016/01/24 DHARMAPOINT DRTCPWシリーズ 7種 追加
--------------------------------------------------------------------------------------

2 このシステムの意義

通常のマウスのセンサシステムでは単一光源(通常はLED)から光源用レンズを通して単色光が照射され,それをレンズを通してセンサは受け取っています.これは顕微鏡や虫眼鏡等の通常の光学機器での表面の観察と大きく異るので,マウスパッドの滑走面の状態がどのようにセンサ性能に影響するかについて評価する時にはあまり意味がありません.

本システムを用いることで,「マウスパッドの滑走面の状態がセンサの視点ではどのように見えているのか?」ということを直感的に理解することが出来ます.これによってセンサの性能を引き出すようなセッティングを模索する補助や,悪いセッティングであることを認識し校正する手段としての使用が期待できます.

3 マウスに搭載されている光学センサについて

マウスに搭載されているセンサを大まかに例えるとモノクロのデジタルカメラのようなものです.このカメラは解像度が19x19や30x30で,19x19の場合だとTwitterのアイコンにもならないくらいです.このように,普通のデジタルカメラと比較すると圧倒的に低解像度です.
今回使用するADNS-5090では画素数19x19のピクセルアレイを有するセンサです.

マウスが滑走面に覆いかぶさるように置いてあるので,何も照射しないままだと滑走面が暗くて何も見えません.なので,搭載されているLED(もしくはレーザ)をカメラのフラッシュ代わりにして滑走面を照らします.そして前の画像と現在の画像を比較して移動距離を算出します.移動量の算出は毎秒数千~数万枚の画像を撮影して行われます.そしてMCUと呼ばれる制御チップが適宜動いた距離を転送するように要請してくるのでそれに応じて移動距離を転送します.

4 Pixel Grabber

Pixel GrabberはAVAGOの光学センサに搭載されている機能の1つで,センサの保有するピクセルアレイの1ピクセル毎の値を読み出すことが出来ます.これによってセンサが現在どのような画像を見ているかを知ることが出来ます.

5 使用ツール

PC側で主に使用したものは以下になります.
• Python3.4
    • PySerial
    • matplotlib

MCU側では,いつものように以下の物を使用しました.
• PSOC Creator3.0 SP1
• PSoC4 4 Pioneer Kit
• 光学センサ : ADNS-5090


6 動作

システムは大まかに分けてMCU側とPC側に分けられます.

MCU側では
  1. センサへPixel Grabberの指令を出す
  2. レジスタから1pixel毎に361 ( =19x19 ) 回読み出す
  3. 読み出した値をUART通信でPCへ転送する
というステップを繰り返します.

対して,PC側では
  1. UART通信で転送されてきたデータを読み出す
  2. データを元に描画する(必要であれば動画・画像の保存を行う)
というステップを繰り返します.この時の"2"のステップ時に表示を拡大するのですが,今回は補間フィルタとしてガウシアンフィルタを使用しました.

7 結果 : ピクセルアレイの様子

各マウスパッド上で撮影したピクセルアレイの様子の画像を以下に示します.
画像は原寸から10~20%程度へ縮小表示した方が見やすいです.

Steelseries QcK


Artisan 飛燕(Hien) VE MID


Artisan 紫電改(Shiden-Kai) MID


G-Pad 小間久商店(Koma-Q)



ROCCAT Tait (Taito)



Power Support AirPad ProIII



COUGAR CONTROL Mouse Pad ( 3D Texture Surface )



HORI EDGE 401



DHARMAPOINT DRTCPW30C



DHARMAPOINT DRTCPW30S



DHARMAPOINT DRTCPW35CS



DHARMAPOINT DRTCPW35GR



DHARMAPOINT DRTCPW35HB



DHARMAPOINT DRTCPW35RS



DHARMAPOINT DRTCPW35SD


Appendix. 滑走時の動画

Steelseries QcKの表面の様子を撮影した動画は以下のようになります.埋め込みサイズが小さいですが,小さい方がわかりやすいと思うのでこのままどうぞ.



動画を見ていただければ分かる通り,フレームレートは低めです.PC側ではなくマイコン側でデータの取得やら転送でかなり時間がかかっています.
前は速度を出すために色々やっていたのですが,ガリガリに最適化して書いていたらちょっと転けてしまって開発中断したので今回は手堅く行きました.


1-Day Projectにするつもりが丸々2日かかってしまいました.
最後にやったのが6月でソースコードや環境が散逸してしまい,それの回収と復旧の方にかなりの時間がかかった気がします XD

2014/11/19

俺流Aimの向上方法・マイブームなサーバ

5月くらいからAimが良くないなぁと感じていたのですが,ここ数日は調子がいい感じなので今度Aimを見失った時のメモ程度に.

1日目 : 4時間デスマッチ(うち3時間はピストルオンリー)
2日目 : 3時間デスマッチ(うち1時間はピストルオンリー)
3日目 : つよい(1時間デスマッチ1時間ピストル) → フリックショットが当たりやすい.

まあ要するにそれなりに速く撃ち返してくる敵とどれだけの回数撃ち合えるかですね.
大事なのは「○○時間DM行って~」とか,「毎日○○体Bot撃てば~」とかそういう目標を決めてルーチンワーク的にやるのではなく,「デスマッチを出来るだけ楽しんで一つ一つの撃ち合いで撃ち勝とうという明確な意思を持ちながらやる」ことなのかなと思います.
とりあえず今はこれでいいですがそのうち慣れて来てしまうので,多分このモチベーションの維持が難しいです.

自分の場合,Aim調整にはなってもAimが向上するわけではない事が判明したのでBot撃ちはしてません.自分は相手がBotだとAccuracy重視で戦ってしまうので,精度を度外視して出来るだけ速く倒すことが要求される実際のマッチとは剥離しています.
そういうところであまり実践的ではないので練習になっていないのかなと気が付きました.

「撃ち合いに強くなるという」のはフラッシュバンやOne Way Smoke,裏取り,有利ポジション等を利用してイージーなフラグを稼ぐことではありません.イージーキルは取れて当たり前で,むしろ際どい勝負でどれくらい打ち勝てるかという話なので.
先ほど上げたフラッシュバン等は,撃ち合いを出来るだけ有利にする為にやる下準備で,違ったメニューで頑張るトピックです.


最近出没しているサーバを幾つか.クリックで接続します.
紹介するサーバはどれもPingが100以上と国内のサーバと比較してかなり高いですが,国内のサーバとMMで繋がる北米/シンガポールのサーバでやるゲームはレイテンシでかなりのビハインドを背負っています.そういう意味で別ゲーな実感があるので「ラグい」ものにも慣れた方が良いのかなと.機会があればネットワークのレイテンシによって撃ち合いにどんな影響があるのかも自分なりに考えていきたいですね.


-[US/West/128]- FFA DM Pistol Only | iEpic.net - EOReality connect 162.251.165.3:27015
いつも建っているピストルサーバ.CZは使用制限があるのでそこまでストレスは無い感じです.
ランダムでヘルメット所持でリスポーンするのがちょっと微妙.おそらくヘルメットが無いとGlockとUSPが強すぎるからそこら辺のバランス調整なのかなと思います.

(出来るかどうかはともかく)ピストルラウンドで1on2な状況でも勝てそうな自信がついたのでおすすめ.USPやGLOCKの胴撃ちがいかに弱いかが味わえるので,USPやGLOCKで胴体を狙ってしまうビギナーにもかなりオススメです.といいつつ最近のマイブームはCTの1stにCZ買うことなんですけどね.


-[US/West/128]- FFA Deathmatch | iEpic.net - EOReality  connect 162.251.165.27:27015
同系統のFFA DM.極普通な感じですが,チャットから呼び出せるメニューが色々あるので結構快適です.本数制限がありますがAWPが使えるのは嬉しいかも.
国内に建っている某サーバはルーティングが悪いのか何故かPingが北米サーバと同じくらいなので最近は北米サーバに繋いで遊んでいます.


[HG] 24/7 Dust2 Deathmatch #1 - HeLLsGamers.com | gameME connect 67.228.181.70:27015
GOでは珍しいTDMサーバ.リスポンポイントがエリア毎に分かれていて,友だちと遊ぶ楽しさを思い出しそうになるのがポイント高いです.
TDMなので向い合っての撃ち合いが多く,実践的な練習になります.
このサーバはPingがかなり高いのでこちらが「待ち」だと余程敵がミスをしない限り確定的に撃ち負けるという事態を見せつけられます.これによって「飛び出し有利」というこのゲームの基本的な仕様に慣れることが出来ます.

何故か敵陣のど真ん中で湧いた時のクラッチ感と,敵が大量に居るのでどう捌くか考えるのが面白いです.ラウンド時間が凄まじく長いのでドロップを期待している人には微妙かもしれません.

2014/11/16

USB HIDデバイスのクリックの最速応答を考える

rafa様が公開されている超有益かつ膨大なデータである下記事ですが,つい最近最速のマウスが更新されました.

rafalog: ゲーミングマウスのクリック応答特性を比較する The measurement of gaming mouse button lag
http://utmalesoldiers.blogspot.jp/2013/02/114.html

記事によると,TL8のG300と比較して1.2ms高速というのが最速値です.

「じゃあ,ただのデバイスオタクがファームウェアを書いたらどうなるの?というか限界まで簡略化すればどこまで速くなるの?」という疑問があるわけでして,レッツトライでございます.


ファームウェア

ソースはこんな感じ.
-------------------------------------------------------
ここまで初期化(USB,Clockのスタート等)
while(1)
    {

        //USBのACK待ち
        while(!USBFS_1_GetEPAckState(MOUSE_ENDPOINT));


        //Pin_1を読んで,Lowなら右クリックが押されたとして記録
        mouseData[0] = (!Pin_1_Read())*2;


        //USBコンポーネントに右クリックの状態のデータを送る
        USBFS_1_LoadInEP(1u, mouseData, MOUSE_DATA_LEN);
    }

-------------------------------------------------------
3行,というかACK待ちとかUSBのコンポーネントへデータ転送する処理以外は一行というファームウェアです.アセンブラで考えるとざっと数~十数クロックでしょうか.APIの処理時間は良くわかりませんが:D
これならCPUは33MHzで動いているので1μs以下で終わるはずです.

これでスイッチのON/OFFを読んでUSBで転送するだけのマウスの出来上がり.


測定方法,スイッチングについて

基本的な測定方法はrafa様の記事と同様ですので割愛.都合でマウスはG300rですがリネーム品なので変わらないはず.

しかし,私の書いたファームウェアの方はチャタリング処理を入れていないのでスイッチングはPSoC5LPで電子的にやってもらいます.

Pin_1が入力,つまり右ボタンです.G300の方を左ボタンとします.
Pin_2はスイッチです.1秒間に一度ONになります.(構成の都合で1024Hzを1024で割っています.)
このクロックは初期化時にClock_1_Start();を呼べば後はMCUのCPUを介さず勝手に動くので処理時間に影響はありません.


測定結果

生データです.良きに計らって下さい.
G300r vs LogicalGaming Advanced Technological Demonstrator Mouse
https://docs.google.com/spreadsheets/d/14YjSU0z3lwasOa2duRpI_JlFT0zq0COzGRFpRNL1nhQ/edit?usp=sharing

平均はG300rと比較して,0.76ms高速という結果になりました.

データを見ると0.1~0.3msのものと1.0~1.2msのものが多いですね.これはポーリングのタイミングにたまたまあぶれた時のばらつきだと考えられます.
ここで1ms以上差がある場合に関してのみデータを拾って平均を取ると,1.09msとなります.
これはIkariと同じくらいの値です.ここから考えると,TL8とIkariはおそらく割り込みを使っていて,スイッチが押された瞬間に最優先でボタンが押された旨を転送するルーチンを持っていそうです.
ここらへんの機種は,かなり気合が入っていると思います.



まとめ

測定結果から考えると以下のことが分かります.

・上位陣のIkariやTL8はおそらく割り込みを使って最優先で処理している
・G300から-1.1ms程度がUSBの仕様上の最速で,IkariとTL8より劇的に速い機種は存在しないはず

上位の機種はチャタリング対策は転送した後にやっているんだと思います.
おそらく,「押されたらまず転送,その後の十数msはスイッチの状態に関わらず押したままにする」という感じでしょう.確かに毎秒100連射出来る人なんていませんしこれでも良いです.
というか私も最近こういうコード書きました.

2014/11/15

レビュー:G302 MOBA ゲーミングマウス - ロジクール ( Logitech )

Review : G302 MOBA Gaming Mouse Logicool ( Logitech )

Logitechファンボーイ化が著しい昨今ですが,G302着弾からの即分解でレビューを行います.

Roccat Lua,G402,Perixx MX-2000Ⅱ等々,マウスパッドも含めると10発以上の弾はあるのですが,ブログ更新へのモチベーションは唐突なものです.
今回の場合,G300sへの期待が高まるばかりなのでG302で予行演習をしておこう的な :D

--------------------------------------------------------------------------------------
2014/11/15 初出
2014/11/16 DPI設定等のスクリーンショットとコメントを追加
2014/11/23 1週間での使用感を追記
--------------------------------------------------------------------------------------

Overview

[JP]G302 MOBAゲーミングマウス - ロジクール
http://gaming.logicool.co.jp/ja-jp/product/moba-gaming-mouse-g302

[EN]Daedalus Prime G302-MOBA-Gaming Mouse-Logitech
http://gaming.logitech.com/en-us/product/moba-gaming-mouse-g302


特徴的なのは後部の蜂の巣状のイルミネーションでしょう.カタログ上ではG402の方が横幅が大きい(72mm)ですが最大幅の部分は底面付近のスカートの部分ですので,持つ部分の横幅はG302の方が大きいです.持つ部分の横幅は,おおよそG402が60mm,G302が65mmです.横幅に関して言えばG302の方が大きいと感じる方が多いと思います.


底面デザインはGx02系は六角形を基調としたデザイン統一されています.センサー周りのソールは理由が気になるところです.配置から推測すると埃の侵入防止なのかなと思います.
分解は先端(画像左)に2つと後端(画像右)1つの小さめのプラスネジを外せば上蓋が外れます.


Internal Structure

内観の全体像はこん感じになります.後部のLEDが目立ちますが,他は妙な部品が生えている訳でもなく極普通の構成と言った感じです.手前のボケている部分はサイドスイッチ用の小型基板です.

写真のLEDの光が当たっている部分がポイントで,上半分は半透明の樹脂て覆われています.これによって使用者には眩しくないように見せて,下半分は下の写真のようなマウスパッドへの照明効果を作っています.ユーザビリティを考慮したギミックですね.



ロゴと後部の光は細かく制御出来ます.ブリージング効果のON/OFF,周期と最大輝度を変更
出来ます.

ブリージング効果をOFFにすると双方の明るさを個別に設定できます.
輝度を最小にすれば点灯しなくなりますのでロゴのみを光らせる,とか全部消灯するみたいな設定も可能です.

光源の制御は約10ms周期のPWMのDuty比を変えるというスタンダードなもの.輝度が最大以外の場合,高速に振ると光が分身するのでPWM周期をもう少し短くしたほうが良いと思うんですけどね.


・新機構
巷で噂のスイッチ部.バネのおかげがスイッチ部の筐体のおかげか押した感じはカチカチ感が少なく,若干「しっとり」とした感じです.ストロークはG402やG300(r)と比較すると少し深め.
個人的にはこのスイッチの感触はかなり好みです.
G300rとG402とG302で連射速度を比較したのですが回数はほぼ同じでした.連写してる時のフィーリングはかなり良いです.

最近のLogitech製品でよく見かける謎の樹脂片は健在.
個人的な推察では表面を滑らかにしたいからだと思います.見ての通り,周囲のような通常の成形だと表面がザラザラしていたりヒケがあったりするので,別に専用の樹脂を取り付ける事でマイクロスイッチのキートップとの接触面の品質を安定させたいのではないかと思います.

 分解で注意したいのがこの絶縁パーツ.初めは製造で混入したゴミだと思ったのですがUSBコネクタ部の絶縁パーツです.
これがないとネジでUSBコネクタがショートしてマザーボードごと持っていかられるかもしれません.

LED部. G402もロゴ用のLEDって緑と青の2色のチップLEDが使われていた記憶がします.ロゴ色にこだわりがありそうです.
左の①~⑫まで印刷してあるシルクには③にチェックが入っていました.


Switch

メインはF2FC-F-7N(20M)で,OMRONの2000万回耐久モデルです.

中ボタンはいつものゴミタクトスイッチと思いきや・・・見た目は極普通のタクトスイッチですが押した感じがマイクロスイッチっぽいです.従来機種と比較して中ボタンの感触がかなり良くなりました.DPIサイクルがバインドされている背面中央のボタンはKailh製.

サイドボタンもKailh製.擦れていて微妙なのですがNF 16ZA(?)という印字があります.
基板裏面を見たらヤニの後があったのでサイドボタンは手半田みたいですね.

サイドも含め全て日本製OMRONのマイクロスイッチ搭載!みたいな謳い文句でPro版とか出ると面白いですよね.私は欲しいです.


Main Control Unit



いつも通りのSTMicroelectronicsのARM®-based Cortex®-M3搭載32ビットマイコン.
[PDF]STM32L100R8のデータシート
Ultra-low-power 32-bit MCU ARM®-based Cortex®-M3, 128KB Flash, 10KB SRAM, 2KB EEPROM, LCD, USB, ADC, DAC
L100なので超低消費電力モデルですが採用理由はローコストだからだと思います.
今年(2014年)の6月頃に製造されたもののようです.

これのポイントの高いところは2KBのEEPROM(いわゆる内部メモリ)がMCU内に搭載されていることですね.はじめから内臓されていればパーツ代や実装コストがカットが出来そうなので今後はこういったMCU内のEEPROMが主流になっていくような気がしますね.

下の水晶発振子はH8.000H4Cという印字がありますが詳細不明.
Internal Clockが搭載されているのに外部のものを用意する理由が気になります.基板に金属パーツが付いていると気合が入っている感じがしてすごく好きですが :D


Sensor

噂通りのAM010です.データシートが無いので推測ですが,M1421TはサブコンがM,製造時期は2014年21週(5月頃),センサーダイのソースがTという意味だと思います.018はロットかな.


「A」のロゴがあるので純正レンズです.レンズにも印字があるんですがよく分からないんですよね.多分ロットなのかな・・・
LEDはおそらくG402と同じで直視すると少しだけ赤く見える程度の赤外線LEDです.普通に見るだけなら害はないですが光学機器で見てはいけません.

DPI / ボタン / ポーリングレートの設定はこんな感じです.いつもどおりのLGSですね.
噂(rafa様の記事参照)通り,1プロファイルのみです.前述のEEPROMが2KBが関係しているかもしれません.2KBも何書いているのかは謎ですが,マクロ機能で何が入力されるか分からないので多めに取っている感じかもしれません.

2000DPI以降は補間らしいので事実上2000DPI以下の運用が基本となります.補間のON/OFFに関わらず240~4000まで80刻みで設定可能です.
DPI設定は5つまで設定できますが自分は感度レベルの個数を1にして完全に固定DPIで運用しています.

メイン・ホイール・サイドの5ボタンを抜くと余っているボタンが1つなので,DPIを頻繁に変えたい人はDPIサイクルを割り当てるしか選択肢がなさそうです.


使用感

良いです.G402とG302のどちらかを選べと言われたらG302を選ぶでしょう.
なぜならそっちのほうが軽いから.以上.

持ち上げやすさ(ホールド感)では別系統の形状ですがどちらも支障がないレベルですね.G302は形状が特殊なので持ち方によってはかなり相性が出ると思います.
購入を検討している方は一度店頭で触ってみることを強く推奨します.
私の場合は横幅が一番太くなっている山の部分に親指と薬指を引っ掛ける感じでホールドしています(伝われ).
今までラインナップされていた製品のホールド感とは別物です.G300でもないしG100でもないです.大まかな形状はどちらかと言えばG100に近いですが,大きく張り出した横の山と増量された重量があるので別物に感じるような気がします.前から見ると逆三角形になっていて持ち上げやすい形状はG300のコンセプトを意識しているとも言えるかも.

上述しましたが,スイッチの感触はかなり好みです.

G300と選べと言われたら,考える時間がもう一週間必要です:D
センサー性能はこちらのほうが良いですが,ホールド感や小ささではG300に軍配が上がります.重量差は気になりません.
※個人の感想であり,個人差があります.

しばらく使ってみようと思います.Logitechが過剰に広い横幅に設計した意図を自分なりに見つけたいので.
なにはともあれG300sへの期待が高まりますね.


・一週間使ってみて
ちょっと早いですが,「自分の場合に限っては」G300の方がベターという結論が出たので試用終了.

最終的に,左の山は親指の先に,右の山は薬指の第一関節付近に引っ掛ける感じでのホールドとなりました.小指は薬指の更に後ろで筐体側面に軽く触れる程度です.
手のサイズ的には親指と薬指で大きな物を持っている感じではあるのですが「一応可」というレベルでしたが,センサー性能とマウスを大きく感じるホールド感,重量を勘案した結果G300の方が良さそうだという感じでした.

要するに,「性能も質感も上位互換な感じなのだけれど,G300より大きくて少し重いのでG300の方が良いよね」という感じです.G300にも不満がないわけではないのですがあの軽さと小ささに慣れると戻れないものがあります.

こだわりがある人でなければオススメ出来そうですが,問題は価格でしょうか.全体的な実装・性能・質感やクリックの新機構などを考えると軽量級マウスの中では高いレベルにあると思います.筐体サイズに関しては間違いなく大型機ではないですが小型だと思えるかどうかは持ち方とオペレータの感覚に大きく依ると言えます.個人的には形状は大きく違いますがG402と同等クラスのサイズ感のように思われます.

これで更新は終了予定です.


おまけ:

・軽量化
DPIサイクルとロゴへのクリアパーツは簡単に外せるので軽量化出来ます.ボタンがひとつ使えなくなりますが,さらなる高みへを目指す方は是非.


・クイックスタートガイド
 
 
Unboxで笑ったのは始めてです.

・基板の画像
個人的メモとして基板の画像を貼り付けておきます.
 

2014/11/03

CS:GOでのウィンドウモード,フルスクリーン,フルスクリーンウィンドウの遅延

またも遅延ネタで行きます.

このネタ,すべてのゲームでの各パラメタのとりうる組み合わせすべてに関して遅延時間を測ると「ゴール」なのですが,このとりうる組み合わせの数は文字通り無限なので,遅延界のグローバルエリート的な人にプロジェクトファイルを差し上げるので後はやって頂きたいのですが...我こそは遅延界のザ・グローバルエリートだ!という方は連絡して下さい :D

本記事では,下図に示したディスプレイモードの各設定について,[マウスの入力→ディスプレイの描画]までの描画遅延時間を計測し,最も短い描画遅延を達成できるセッティングを明らかにしていきます.

今回はCS:GOに関して検証・計測を行いますが,SourceEngineである各タイトルに関しては大きな差はないと思われます.また,その他のFrostbite等のゲームエンジンに関してもある程度の参考情報にはなると思うので,是非活用して下さい.

●検証方法

下記参照.

#LogicalGaming: ゲーム毎の描画遅延を測定してみる
http://logical-gaming.blogspot.jp/2014/10/blog-post.html

今回は本記事最初の図のディスプレイモードの項のみを変更して遅延時間を計測します.


・DWMについて
DWMに関して詳しくはまたいずれ.
今回の場合,コンペティティブなプレイヤーでDWMが有効であるのはあり得ないので,いわゆるWindows AeroとDWMはOFFにして検証します.


●結果

今回はグラフありです.


Window             17.3 ms
FullscreenWindow   17.8 ms
Fullscreen         16.1 ms
予想通り,僅かにフルスクリーンが速いという結果になりました.
しかし,差は1ms程度なのでフルスクリーンウィンドウと大きな差があるわけではありません.また,自分でもプレイしてみて知覚できる程の差は感じられませんでした.
万全を期したい場合はフルスクリーンでプレイする方が無難でしょうが,基本的にはフルスクリーンウィンドウで享受できるメリットも多々あるので,好きな方を使うと良いと思います.

ちなみに自分は基本的にフルスクリーンでプレイしています.

2014/10/21

描画遅延について思うこととか

図なし文字だけの、半ば愚痴じみたメモ。新しい情報とかは特に無いのでひっそりと更新。


・遅延の定義
そもそも描画遅延って表現がどうなんでしょう。
諸々の定義や測定手法とかを自分なりに「ゲーミング環境における入力-描画遅延の定量的評価」なんて名前のPDFファイルにしていたのですが、ファイルの海に沈んでしまいました。

とりあえず、最近私が言っている描画遅延は、
【手での入力→マウス→PC→ディスプレイ→カメラ】へ動作が反映されるまでの時間としています。
しかし人体の表面は弾性体ですし、加速特性が緩やかという特徴があるので、とりあえず
【マイコン→PC→ディスプレイ→カメラ】という流れにして、当該間の所要時間を測ったというのが前回の記事でした。

現実世界では、動作させたい物(普通は人体ですね :D)と実際に作動する物が同じですので、例えば手の動きが手に反映される時間は0になります。
もちろん作動させるシステム(銃・機械等)の動作にかかる時間があるので、現実世界においても無遅延では無いのですが、こちらは完全にメカニカルエンジニアリングの世界ですし、機械においてはバックラッシ等が必要なので理論的に0には出来ません。



・昔もトライした話
実は過去に人の手と電飾付きゲーミングマウスでトライした事はあったのですが、マウスの動き始めは一桁カウントになる場合が多く、ミリ秒単位の精度を出すにはそれなりの根気と工作が必要だということで休止させていました。
その時はUSB HID制御無しで精度を出すそうと思っていて、マウス自体に物体を衝突させて一気に加速させる手法あたりを考えていました。
後はマイコン制御のモータを使って制御するとか、こっちは結構遠回り感があります。

今後のことを考えると、センサ+マイコンの速度・加速度応答の特性を測るにはどちらにしろそれなりに速いモータを制御しないといけないので、機械加工とモータドライバ作りは必須なのですが。「やりたいこと」と「技術力」と「時間管理能力」がチグハグな感じです。



・システムのコンフィギュレーションについて
rafaさんから、デバイスやゲームエンジン等のシステム全体のコンフィギュレーションを変えてテストすればより低遅延な設定を模索出来るのではないかというコメントを頂いて、とりあえず自分の環境ではトライしてみようかなと思っています。
とりあえずCS:GOのグラフィックの設定をいじくり回す所からですね。あとはオンボードの不使用デバイスを無効化したり、ぶら下がってるHID達を取り除いてみたりモニタの固有機能のON/OFFとかは調べたいです。



・より網羅的に遅延を考える
遅延時間を変えうる要素として、入力側から順に

マウス
OS
Raw Input
ゲームタイトル
各タイトル内でのコンフィグ
GPUベンダー
GPUのアーキテクチャ・機種
各デバイスのドライバのバージョン
各デバイスのファームウェア
ディスプレイそのものの
各ディスプレイの固有機能

などなどがパッと思いつくだけでも挙げられます。
勿論、財力的にも人的リソース的にも私だけで全部テスト出来ませんし、そもそもする気は初めからありません。
そういう意味ではゲーミング環境における遅延測定のフレームワークが必要なのかなといった感想を抱きます。更に先を見ると、最も遅延が少ない状態へ自動でチューニングしたりとか出来ると極低遅延環境実現への夢が広がります。
また、複雑なシステムの測定では、厳密にレギュレーションをして評価する必要があるので「ベンチマークレギュレーション」的なものも合わせて必要なのかもしれません。
まあ、同一システム内での相対値だけ見れば違うシステムでも大体は適用出来ると思うのですが。とりあえず自分で測った分は公開したいと思います(私がトライすれば、ですが)。

遅延自体は、ある程度ゲームをやっている方なら体感して、注意していると思うのですが、日本だとあまりフォーカスされない話題ですね。やはり、昔は機材も高価でしたしミリ秒単位の定量的に測れない物だったということも関係しているかもしれません。
VRの辺りからはチラホラ話が出ているような気もしますし、もう少し盛り上がると良いのですね。



・Ask.fmはじめました
URLはこちら。
http://ask.fm/systema_

デバイスに関しては大した台数持っていませんし、やっている事が低レイヤの部分ばかりなので「このマウスどうですか?」的な質問には全然答えられません。またゲーミングデバイスに関しては偏見的かつ、かなりラジカルな思想なのでその点に関しても微妙。
左利きなのに右手でマウスを使っていて、射撃キーをキーボードにバインドしていてG300rが最強だと主張するゲーマーに聞くことでもないと思います。

「G402に載ってる加速度センサの詳細を教えて下さい」とか「マウスに付いているLEDが増えると遅延が増えるの?」的な質問なら嬉々としてお答えできるのですが。

また、匿名性を上げることで、ブログの内容についての質問とか誤りの指摘を期待しています。
自分は記述を端折る癖があるので、わかりづらい所とか可視化出来ると良いなと思っています。こんな感じで結構ネガティブなモチベーションですが、分かりづらかったり、嘘を書いてそれを公開していても仕方ないですからね。

2014/10/19

ゲーム毎の描画遅延を測定してみる

---------------------------------------------------------------------------------
2015/05/20 : Baselineを追加 (当該記事参照)
2014/10/20 : QUAKE LIVEを追加
2014/10/19 : 初出
---------------------------------------------------------------------------------

                「このゲーム、視点移動がモッサリしてね?」

こんな感想を抱く事ありませんか?
良く「ヌルヌル」しているというポジティブな表現が用いられますが、私的にはせめて視点移動は「サクサク」している方が良いのです。
特にシューターだと、視点移動の描画遅延が少ない方が競技性的にも、ユーザビリティのためにも良いことだと思います。

本記事の目的は、体感では評価しにくいミリ秒単位の描画遅延を定量的に測定して公開することで、ゲーミングにおける描画遅延低減への取り組みを促進する事を意図しています。

このトピックは2年程前からやりたかったのですが、ひょんな事からUSB Mouseのcountを自由に制御出来る環境が整ったので実施。

測定方法

・撮影機材 : Nikon 1 V1 (レンズ : 1 NIKKOR 10mm f/2.8)
・MCU : CY8CKIT-050 PSoC® 5LP Development Kit

PSoC 5LP上にフルスピードUSBのHIDデバイスを作成し、3-button Mouseと設定。
今回はX軸のみに左右30 Countsを転送します。
また、MCUから0位外のカウントを送る際にLEDを点灯するようにプログラムしています。LEDの点灯からデータ転送間の遅延はμsオーダになっているはずなので無視できる範囲だと思います。


流れはこんな感じ。
・右に30countを128回(128ms)
・128回(128ms)停止
・左に30countを128回(128ms)
・128回(128ms)停止
これを繰り返して、LEDと画面の様子を撮影します。

Nikon 1 V1 のハイスピード撮影を使用して、ゲーム中の視点移動の様子を1200fpsでの撮影を行います。
そして、撮影データを1フレーム毎に表示し、LED点灯から描画の開始までのフレーム数を数え10回の平均を取り遅延時間を算出します。


最後に動画を載せるので雰囲気を掴んでいただければと思います。

結果

 結果は以下の通り。



Warsowがかなり優秀ですね。1.5系はかなり綺麗な描画ですので、「(体感は出来ないにしても)結構遅延がありそうだな」と予想していたのですが。

 BF4に関しては予想通り。自分が初めてBFBC2をプレイした時「何だこの描画遅延!?」と動揺したのですが、Battlefieldシリーズは描画遅延が多めな印象でした。特に3以降は輪にかけて遅延しているような。BF3とBC2も計測すべきですね。

もっと色々なタイトルで測定したいのですが、とりあえずプレイしている(していた)タイトルだけで計測しました。CoD:Gはかなり描画遅延があるようなので気になりますがゲームを持っていないのでフリーウィークエンド待ちだったり。

追記(2014/10/20) : 似たような事をしている方が居らっしゃいました。
rafa様、情報ありがとうございます。
ESR - Input lag tests QL/CSGO/Q3A - Hardware Forum
http://www.esreality.com/post/2640619/input-lag-tests-ql-csgo/

こちらとデータが違うのはシステムのコンフィギュレーションが原因なのか測定方法が違うことに依るのかは不明です。こちらとしては、最低でも±2msくらいの精度は出せる計測システムだと自負していますが :D

色々なマルチプレイヤー対応タイトルを計測して一覧でグラフを出せればよいのですが。
ゲームを買うお金がありません。gg.

おまけ

撮影した動画は以下。