sside.net

Windowsでハイバネーション後、キーリピート間隔が初期設定に戻る問題について

ノートPCを持ち歩くとき、そんなに頻繁に開けたり閉めたりしないので、スリープの代わりにハイバネーションを使ってるんですが、これ復帰時にコントロールパネル > キーボードから設定してたキーリピート設定が、OSのデフォルトに置き換わるのな…。

症状自体は確かThinkPad X301でVista使ってた頃から存在してたし、その頃は「まあ仕方ねえか」で諦めてたんですが、Windows 10のこのご時世になっても全く直ってねえのには閉口する。

どうやって対処するんだよと軽く調べたら、世間では大体こんな感じの模様。

  • OSのキーリピートデフォルト値のレジストリを書き換える [HKEY_CURRENT_USER\Control Panel\Keyboard]
  • OSのアクセシビリティ設定でキーリピート間隔を設定する [HKEY_CURRENT_USER\Control Panel\Accessibility\Keyboard Response]
  • キーボード設定を更新してくれるユーティリティを常駐させる

んで、レジストリ書き換えてもいいんだけど、本来違う目的のアクセシビリティ設定変更するのもなんか抵抗あるなー、と思ったので別の方法調べてたら、Windowsには昔からmodeなるコマンドが存在しており、キーリピート間隔も普通にそこから設定できる模様。

mode con rate=32 delay=0

で、コントロールパネルのキーボード設定でリピートレートとリピート待ち時間を最速にしたのと同じ設定になる、というか設定できる段階数もキーボード設定と一致してる。実行後キーボード設定を開くと、値も書き換わってるので、実質的に同じ設定のCUI版っすね。

多分同じことで困ってる人もいるだろうから、ハイバネーション復帰時に実行させる場合は、上記に@echo off追加したうえで拡張子.batにして保存、タスクスケジューラで新規タスクを作成して以下の設定に。

  • 全般
    • ユーザーがログインしているときのみ実行
    • 表示しない(これ設定してもプロンプト出た気がするが、あんまり気にしてない)
  • トリガー
    • ワークステーション アンロック時
    • 特定のユーザ: 自分のアカウント
    • 停止するまでの時間: 30分(別に設定してもしなくてもいい)
  • 操作
    • プログラムの開始
    • プログラム/スクリプト
      • 保存した.batファイル
    • 開始
      • .batファイルの保存先のパスを指定しておく(不要かも知れないけど、ないと動かなかった)
  • 条件
    • 電源接続時のみ実行する類のオプションは外す
  • 設定
    • 既存のインスタンスの停止(別に設定しなくてもいい)

こんな感じでタスクを登録して、手動で設定して問題が起きなければ(実行結果はタスクスケジューラの表示のリフレッシュが必要)、実際にハイバネーションして適切にキーリピート間隔が設定されてるか確認したら終わり。

レジストリも弄らず、ノンプログラミングでできる対処法があるのに、何故か軽く検索しても日本語で紹介してる向きが見当たらなかったので、とりあえずエントリーに。にしても、同じ問題で困ってるケースってそんなにねえのかなあ。ハイバネーションが使われてないか、そもそもキーリピート間隔の設定とかそうそう弄られてないのか。

GeForce Experienceとgeforce.comで始めるPCゲームTweaking

modified: 2017-11-22

皆さん、PCゲームやってますか。まあここを見るような向きはそりゃあやってるんでしょうけど、今回はPCゲーミングの楽しみの一つ、tweakの話をします。

ゲームコンソールと比べたPCのメリットといえば、性能が青天井なことですが、大抵のPCゲームではそのパフォーマンスを

  • レンダリング解像度の拡大
  • フレームレートの増加
  • 描画品質の改善
  • より強力なグラフィックスエフェクト

等がユーザーの好みで改善可能です。144Hzディスプレイ使ってるからグラフィックスクオリティ下げてでもフレームレート上げたいとか、フレームレートは45fps程度でいいのでとにかく表示されるグラフィックスがリッチになればいいとか、クオリティはコンソール並みでいいけれどオブジェクトのポップインだけは許せねえとか、コンソールだと諦めないといけないゲーム体験を設定次第で改善することが出来ます。

最近だとコンソールとPCでマルチプラットフォームなゲームも山ほど出てますが、PCでプレイするのが一番良い体験を得られるゲームが多いです。例えばFar Cry 3だとPC版のみ車のフロントガラス汚れがライティングされたり、Watch_Dogs 2だとサンフランシスコ名物の霧エフェクトが有効にできたりします。一方でPC版は外注による開発と並行した移植が行われて、クオリティも下がったSaints Row 2(絶望的な低フレームレート)やArkham Knight(コンソール版にあるエフェクトがない)、最近だとNieR: Automata(フルスクリーンにすらできない)みたいなのもあるので一概には言えないんですが、それはさておき。

Watch_Dogs 2の”サンフランシスコの霧(geforce.comのインタラクティブ比較)“。ちなみに有効にするとフレームレートが30%以上下がる。(引用元: geforce.com)

ただ、PCでゲームやってても「どの設定変えたらどこの描写が変わるのか分からん」「設定は起動時の自動設定のまま」みたいな人は一杯いるそうですし、「誰もがアンタみたいに設定弄るのを楽しんでいるわけじゃない」と言われたこともあります。

ということで、今回はGeForceを使ってれば明示的に外さない限りドライバのパッケージに含まれているGeForce Experienceを使ったPCゲームtweakの方法です。

GeForce Experienceとは

GeForce ExperienceはGeForce Driverのインストール時に特にインストールするコンポーネントを選択しなければ、デフォルトでインストールされてます。Windowsのスタートメニューを見てみれば我が物顔でアイコンがいるはずです。

Version 1の頃は「PCゲームの設定とかいちいち面倒でしょ、nVIDIAでは無数のゲームに対してパフォーマンス指標持ってるから、目標のフレームレートを突っ込んだらいい感じに設定してやる」「nVIDIAのShieldタブレットにPCゲームの画面をリアルタイムで送信して、タブレットでPCゲームできるようにしてやる」というツールだったんですが、その後Xbox OneとかPlayStation 4とかが出て、コンソールで簡単にゲーム配信出来るようになったら追従するようにガンガン機能追加されて「Steamみたいなオーバーレイで簡単にゲームの録画、配信を出来るようにしてやる」「GeForce Driverの新しい奴が出たら勝手にダウンロードしておいてやる(インストールはユーザーが明示的にやる)」などが出来るようになったかと思うと、最近だと「Playerunknown’s BattlegroundでKill取ったりドン勝したら、直前の数分間の動画を勝手に保存しておいてやる」とか、訳の分からないことになっています。

GeForce Experienceでゲームをtweakする

とりあえずGeForce Experience起動直後の画面です。

2017-11-20
GeForce Experienceホーム画面。ゲームは”Program Files”以下、並びにOriginとかSteam、UplayやGOG Galaxyといったプラットフォームのライブラリも自動検出。

「詳細」を選ぶと、元々GeForce Experienceは自動最適化ツールなので、推奨される設定が表示されます。

2017-11-20 (1)
GeForce Experienceのゲーム詳細

「最適」設定がGeForce Experienceの推奨設定ですが、ここで「最適化」ボタンは押しません。この手の自動設定ツールにconfigファイルの書き換えを任せると、大抵碌なことが待っていません。想像するだけでも

  • ゲームの最新バージョンと異なるフォーマットの設定ファイルを書き込んで壊れる
  • GeForce Experience側で認識していない設定項目が壊れる
  • GeForce ExperienceがGeForce Control Panelのグローバル設定を勝手に変更する(DSR設定はGeForce Experienceから勝手に変更される)

等々の問題が生じる恐れがあるので、ここはここは大人しく各設定項目にマウスオーバーすると、上記スクリーンショットのように、実際のゲーム画面をイメージした画像に「この設定を変更するとこの部分のクオリティが変わる」旨が説明されるため、強化したいグラフィックス設定をここで確認しましょう。また、「この部分は下げても問題ねえな」というのもここで確認しておきましょう。

後は実際にゲームを起動し、オプションからグラフィックス設定を変更するだけですが、変更したグラフィックスオプションによって、フレームレートがダダ下がりしたら目も当てられません。GeForce Experienceにはゲームのフレームレート検出機能もあるので、事前にEnableにしておきましょう。

GeForce Experienceのフレームレート検出機能は、設定画面の「全般」「ゲーム内のオーバーレイ」を有効にした後、「Alt + Z」でオーバーレイを表示、設定画面から「HUDレイアウト」の「FPSカウンター」から有効にできます。

2017-11-20 (4)
GeForce Experienceのオーバーレイ。Alt + Zで表示。
2017-11-20 (5)
GeForce ExperienceのHUD設定。

後は、目的の設定を変更した後、どのくらいフレームレートが変動したかを見て、各自のプレイアブルだと感じるフレームレートが出ているかを確認してください。ゲームによってはベンチマークモードが付いているので、そちらでフレームレートを確認するのもアリです。ただし、ベンチマークモードは大抵の場合ベンチマークの範疇ではフレームレートが安定する上、ゲーム内のワーストケースより軽いことが多いので、ベンチマーク上のターゲットは、自分が遊ぶときに想定するフレームレートの15%くらい上(ある程度安定して60fpsが欲しいなら70fpsくらい)を狙った方が無難です。15%以上にヘッドルームを取る場合は、そもそもワーストケースは特定のシーンだけ普段の倍の描画負荷とかになることがあるため、ゲーム全体の体験とワーストケースのバランスを取って各自考えてください。

geforce.comのガイドでグラフィックス設定の効果と負荷を知る

さて、GeForce Experienceを使うとゲーム内のそれぞれの設定項目の意味が分かったとは思います。でも、その設定を変更した場合にどれくらいフレームレートが変動するのかは、実際に試さないと分からないのか?というのは尤もな話だと思います。GeForce Experienceの推奨設定では、デフォルトで40fpsをターゲットにした設定が推奨されるようになっています。ただ、それぞれの設定項目がどれだけフレームレートにインパクトを与えるかは分かりません。実際に変更してはフレームレート確認するのも、ゲームによっては再起動を要求されたりとあまり楽しい作業ではないでしょう(まあおれは何度も変更して確認してますが)。

ということで、nVIDIAもgeforce.comでグラフィックス設定の効果と、フレームレートの変動をガイドする記事を上げてくれています。流石に世の全てのゲームとはいきませんが、それでも年に数本は上がっているので、トレンドや設定項目の意味を知るには十分でしょう。

2016年から2017年でガイドが投稿されてるゲームは

と、デベロッパも使用しているゲームエンジンも多彩。これらの記事では「この設定を変更したらこれくらいフレームレートが変動する」「この設定を変更するとこのように描画結果が変わる」が分かりやすく記載されてます。また、グラフィックスエフェクトがどのようなことを行っているのかも簡易に説明されているため、重い処理か軽い処理かも分かってくるようになります。全部英語なのが難ですが、図表が充実しているので大体の意味は分かります。

実際に自分が遊んでるゲームのGuideがなくても、これらの記事を参考にしていれば「同じゲームエンジンだからAAの負荷は似たようなものだろう」「このエフェクトはこのくらいの負荷だろう」が予想できるようになります。もし、予想と外れていざ設定してみたら重かった場合は、その時初めて設定を見つめればいいので、トライアンドエラーの手間が圧倒的に変わります。

終わりに

おれ自身、コンソールでばっかりゲームをやってて、初めてPCでゲームやって魂消たのはPC版「セガラリー2」。これはネット対戦が楽しかった奴ですが、コンソールとPCでグラフィックスクオリティが目に見えて変わったゲームといえばTom Clancy’s Splinter Cell。コンソール版も相当だったんですが、PC版は別物のビジュアル。そもそもVGA解像度のコンソール(当時はXbox / PlayStation 2世代)と、その気になればUXGAも出せるPCでは格が違った。Need for Speed Underground 2もPC版だと60fps以上。

その後もXbox 360 / PlayStation 3世代だとArkham Asylumの(GeForceかPhysX搭載)PC版オンリーなPhysXエフェクトを使った物理エフェクトや、Far Cry 3の文字通り描画してる内容が違うビジュアル、リブートTomb RaiderのTress FX Hair髪表現等、コンソールとPCのマルチプラットフォームでも、単に「Steamで安く買える」とかではなく、PC版ならではの魅力というものがあります。

こういうと角が立ちますが、クリエイターの作り込んだ(勿論コンソール版も最大限に最適化されているけれど)ゲームの生に一番近い体験が出来るのもPC版なので、一度コンフィグのtweakと苦闘してみたり、「この設定はこんなに重いからコンソール版にはなかったのか」と思いを馳せてみたりしてみてください。

ところでGeForce ExperienceのないRadeonやIntel Iris Graphicsはどうすんの?

AMD選ぶ向きは覚悟して臨んでるんだろうから、各自頑張ってください。

IntelのiGPUでいいと思った向きは、そもそもがゲームなんてやろうとする時点で間違ってるので、さっさとGaming rig組んでください。