When The Past Was Around

スマホゲーの移植かな?と思ったくらいシンプルなPoint and Click。
ストーリーでゲーム内での目的があって進むために仕掛けを解いていくようなアドベンチャー的ではなくて、あくまで脱出ゲーム的なレベルクリア型。難易度も簡単でゲーム性は乏しい。

会話やダイアログによるストーリーテリングは一切無くて、情景から感じられるnarrativeが全て。ゲーム性も相まってFlorenceのようなゲームだ。二時間もあれば十分終わるボリュームなので、10ドル前後の定価だとちょっと高いかなと思う(Florenceは飛行機搭乗時に始めてから離陸前に終わったけれど…)。

特筆すべきは、アートスタイルだろう。濃くもなく、媚びてもいない淡い柔らかいアートが直感的な購入動機になったが、そこは期待通りだった。
一方で、インタラクションの際に鳴るSEがフリー素材感が強く、チープな印象を受ける。

Cyberpunk 2077 #2 Realtime Raytracing

TL;DR
Ray-Traced Reflectionsのみを有効にするのがオススメ。

Ray-Traced Reflections

鏡面反射による周囲の映り込みがレイトレースで処理されるようになる。
これまでのラスタライズでは、環境マッピングやScreen Space Reflectionsなどで映り込みが処理されていたのだが、どの方法も一長一短で前者はリアルタイムでのデータ更新が難しく、後者は視界外の物体は映り込みようがないという欠点がある。リアルタイムで現実的に実行できるようになったレイトレースではこういった欠点は無く、原理的に視界外や遮蔽された動的な物体の映り込みを実現できる。

Ray-Traced Reflections ON:

Ray-Traced Reflections OFF (Screen Space Reflections):

比較:

しかし、Cyberpunk 2077はパフォーマンスの都合上なのか、Ray-Traced Reflectionsにおいてもキャラクターなどの動的な物体は視界外に出るとカリング(非表示)されてしまうようだ。折角のレイトレースである恩恵が一つ無くなってしまっている。
以下は、Ray-Traced Reflectionsが有効な状態で上記の図のカメラを下にパンしてキャラクターを視界外にしたときの図だが、キャラクターは消えて持っているバットだけが宙に浮いて映り込んでいる。

また、Cyberpunk 2077ではRay-Traced Reflectionを有効にすると、Screen Space Reflectionsは必要なくなるため、適用されなくなる。そちらの設定を変更しても見た目やパフォーマンスに変化は無い。

Ray-Traced Shadows

影(落ち影)がレイトレースで処理されるようになる。
具体的にはソフトシャドウが距離が遠い物体の影はよくぼけて、近くの物体の影はあまりボケなくなる。これまでのShadow Mapでもそういう距離に応じたソフトシャドウ処理はあるのだが、Ray-Traced Shadowsでは”パラメータが適切であれば”、以前の方法よりも理にかなった影になる。

Cyberpunk 2077ではおそらく平行光源のみ、通常は太陽光のみがRay-Traced Shadowsで処理されているようで、スポットライトなどの局所的な光源によって生じる影は変化が無く、適用されていないように見える。

Ray-Traced Shadows ON:

Ray-Traced Shadows OFF (Shadow Map):

上の図は太陽光からの影だが、この影は主観的な感覚ではボケ過ぎているようにも見える。太陽光のレイトレースでのソフトシャドウは地球からの見かけ上の太陽の大きさによって影のボケ幅は変わってくるが、それが適切に設定されているのかどうかは解析しないと分からない。基本的にShadow Mapよりもディティールが失われがちなので、個人的にはShadow Mapの方が好みの状況が多い印象だ。

Ray-Traced Lighting

これは実際に内部処理を覗いてみないと確証が無いのだが、恐らく間接照明(Indirect Illumination)と遮蔽(Ambient Occlusion)がレイトレース処理されるようになると思われる。
これまでのラスタライズでは、間接照明はライトマップやSHなどの事前計算によるものと、最近ではさらにいくつかリアルタイムな方法を組み合わせている。遮蔽も事前計算やリアルタイムなScreen Space Ambient Occlusionなどを組み合わせていて、いずれも一長一短である。レイトレースでは間接照明も遮蔽も正攻法で求めることができる。

Ray-Traced Lighting ON:

Ray-Traced Lighting OFF:

比較:

間接照明は、特に電光板の発光体の照り返しが分かりやすく、遮蔽は車両の下が分かりやすいだろう。こちらも、Ray-Traced Lightingが有効になっている場合、Screen Space Ambient Occlusionは適用されなくなるようだ。

個人的には、Ray-Traced Lightingの有無で”より正確な”ライティングに切り替わっているかどうかというのは、Ray-Traced ReflectionsやRay-Traced Shadowsに比べて気が付きにくい。直接照明が間接照明よりも支配的な状況ではその影響度はさらに小さくなるだろう。
また、例えばJudyのバンに乗り込んだ時に遭遇したが、予期していない発光体と光源の所為か、明らかに不自然なライティングになっているシーンも見られた(画像無し…)。

Cyberpunk 2077 #1 DLSS

ものすごく久しぶりの旬でハイエンドな一人称ゲームなので没入感が凄い。

DLSSは、サブピクセルのないイメージからDeep Learningに推論させてSuper Sampleする技術だ。
単純にイメージに適用するとアンチエイリアスが期待できるが、ゲーム的な使い方としてレンダリング解像度を下げた状態でレンダリングしてパフォーマンスを稼ぎつつ、実レンダリング解像度にアップスケーリングするときにDLSSを適用することで通常のアップサンプルフィルタよりも高いクオリティを期待できる。Cyberpunk 2077でもそのように使用されているようだ。

実際のところ、Cyberpunk 2077のDLSSは一見してアップスケーリングしているのか分からないようなクオリティであるが、解像度の低い不完全な情報からの推論である以上完璧にはならないし、状況によっては人間の目を誤魔化せないエラー(正解との差)が生じることもある。

これが一番分かりやすいのは、一番最初のキャラクター作成画面だろう。このゲーム特有の画面であり、あまり訓練されていない苦手なシチュエーションだと思う。
プレイしていると動画越しに画面を見ているような感じがして、肌のテクスチャ解像度が不足しているのかと思ったが、さすがに最新のゲームだしそんなことはないだろうと困惑しつつDLSSを切った。

DLSS ON:

DLSS OFF (Ground Truth):

特にヒゲの剃り跡や髪の刈り上げの部分が分かりやすいが、明らかに解像度の不足した結果になっているのが見て取れる。

原寸大比較:

 

では、実際のインゲームではどうかというと、エラーが気になるシチュエーションもあれば、それほど気にならない十分なシチュエーションもある。
エラーが気になる状況は主にオブジェクトやカメラに動きがあるシーンだ。推論に前フレームの情報も使用されているのだと思うが、画面に動きがあるとそれが欠落しやすいので、Deep Leraningによって生成した画像特有の独特な揺らぎのようなノイズが生じやすい。また、反射が強く周囲で細かい変化が多いシチュエーションも苦手なように見える。

特に、ゲーマーが嫌いそうなMotion BlurやChromatic Aberrationなど画面をはっきり見せないようにする、つまり粗を誤魔化せる類のエフェクトを切っているとDLSSのエラーは露見しやすい。

次の画面は、左右に動きながら撮影したものだ。

DLSS ON:

DLSS OFF (Ground Truth):

原寸大比較:

それでも、DLSSは圧倒的にパフォーマンスに恩恵をもたらすので、エラーを許容できる人にとっては有効だろう。

Visual Studio 2019 Version 16.7以降でディレクトリ生成を伴うシェーダコンパイルに失敗する

8月頃にリリースされた16.7.1から、現在リリースされている16.7.5まで確認済み。
そう、二か月以上Visual Studio 2019でシェーダがコンパイルできない致命的な状態なのである。

再現手順はとても簡単で、DirectX-Graphics-SamplesのVS2019に対応した適当なリビジョン(タグ10.0.19041.0以降あたり)を取得してきて、VS2019でModelViewerをビルドするだけ。シェーダコンパイル時に大体次のような意味不明なエラーを吐く。プロファイルによってはfxcである場合もある。

dxc failed : error code 0x80070459.

詳細な条件は次の通り。

  • hlslファイルをソリューションエクスプローラーに設定して、本来なら正常にコンパイルできる設定にしてある
  • 「ヘッダー ファイル名」または 「オブジェクトファイル名」にディレクトリ生成を伴うパスを指定している
    • 例えば、CompiledShaders\%(Filename).h や $(OutDir)CompiledShaders\%(Filename).cso は該当する
    • 一方、 $(OutDir)%(Filename).cso  はディレクトリを生成しないので該当しない

この原因は以下に報告されている。

Typo in FXC Target in VS 16.7.1 (Developer Community)

要するに、「 FxcOutputs 」と記述されるべき設定が「 _FxcOutputs 」とタイポされているというあまりにもお粗末で下らないバグだ。

幸いにも、プログラムによるバグではなく、設定ファイルによるバグであるため、手元で修正することが出来る。
Visual Studio 2019のインストール場所を変更していない場合、次のファイルをテキストエディタ開く。Community以外の場合も適宜読み替えてほしい。

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\
Microsoft.CppBuild.targets

「 _FxcOutputs 」で検索すると一か所該当する箇所があるので、これを「 FxcOutputs 」に変更し保存する。ただし、管理者権限が必要である。

重複した別の報告(HLSL Shader Compiler fails to create output directory for header files)のリプライによると、Preview版では修正されたようだが、こんな致命的で馬鹿げたバグは即座にhotfixがリリースされるべきだろう。

The Witcher 3: Wild Hunt #2 With Mod

序盤で放ったらかしにしていたので、GOTY版で最初からやり直している。長時間のプレイ時間を要するゲームなので快適にプレイしたいのだが、当時はそうではなかったのだ。

発売してある程度時間が経った今となっては、主に2から引き続き採用された良くないデザインを、modで変更しながらプレイできるのでストレスは溜まりにくい。

  • 重量制限の事実上無制限化
    • 大量に素材をかき集めるゲームなのに重量制限なんているか?
  • ルート画面を出さない自動ルート
    • 大量に素材をかき集めるゲームなのにボタン連打数増やしてどうするんだ?
  • 落下ダメージ無し
    • お前超人だろ?
  • Gwent自動勝利
    • ミニゲーム興味ない人間にとっては苦痛でしかない。本筋に専念させてくれ。
  • 選択中以外のクエストマーカーも表示させる
    • これは多分、マーカーが増えすぎると邪魔に感じるからという判断だろうけれど、近くにあったマーカーを見落とすし、切り替えるのも手間になるだけ。
  • Durability無効化
    • 必要性が分からない。ただ手間を増やすだけのGold Sink。
      耐久度落ちてきたから修理しようというフレーバーは理解できるが、現地でさらに修理キットを持ち合わせていない場合、武器・防具を換えて進めることになる。一番強い武器・防具以外も売らずにとっておいて持ち歩かなくてはならず、何個も武器・防具を持ち歩いているのはLore Unfriendlyだ。重量制限も相まって訳が分からない。
  • トーチの点け消しをボタン長押しに
    • こんなバカげたデザインを2から引き継ぐなよ!
      近くのものをインタラクトしようとして点けたり消したりする間抜けな行動をおかしいと思ってくれ。このゲームにステルス要素は無いし、暗部はCat Eyeがあるんだから、本当に照明を点けたり消したりする必要性がある状況は極稀だろう。
  • ツールチップの即出現
    • デフォルトで表示待ち時間を調整できればいいのだが。

気になるがどうにかするのが難しい:

  • カメラがGeraltから遠すぎて没入感を削いでいる
    • modはあるが、古くて不具合が多い
  • 書物とかソートされずに無秩序に並んでいる項目がある
    • ソートさせるmodはあるが、日本語下だと文字コードの都合で役に立たないソート結果になる
  • 売り値でのBuybackが無い
    • modも無いかも。うっかり間違えて売ったら、高値で買い戻すかロードしなおすしかない。
  • 窃盗の無効化か明示化
    • このゲームは素材集めのために民家から盗みまくるのに、よく分からない基準で衛兵に怒られることもある。かと思えば近くに衛兵がいても怒られないこともあるのがよく分からないし、アイテムアイコンでそれが分かるわけでもなく、盗みになるぞという一文がワンテンポ遅れて表示される。ボタン連打してたら一文を見る前に盗むので役に立たない。
      窃盗という概念を無くすか、もっと分かりやすくしてほしい。