2019年07月09日

Linuxで遊ぶRemasteredでないCall of Duty 4: Modern Warfare

現状はProtonのValveサポート対象ソフトには含まれていません。
動かなかったから返金申請(はできるがこの場合非常識)、などどいう軽い気持ちでは絶対に試さないようにお願いします。
試す場合は損する覚悟の自己責任でお願いします。


天空の城ラピュタを観て思ったの。
親方、空からRadeon RX5700XTが!
なんて素敵なことがないかしら。

と、いうわけでSteamサマーセールの時に勢いで買ってみたRemasteredでないCall of Duty 4: Modern Warfare(長いので以下CoD4MW)を今更Linuxでプレイしてみた。
もっとも、ProtonDBではPlatinumなので動く確信があって買ったのだが。


動作環境は……

CPU: Core i5 750
MEM: DDR3-12800 4GBx2
GPU: Sapphaire Radeon HD6770 Flex Edition
OS: Fedora 30
Driver: Mesa 19.0.8

こんな産業廃棄物(´・ω・`)
今やこのサブPCは、この手の実験場と化しています。
空からRyzen7 3700xも一緒に降ってこないかな、カナッ?

Call of Duty 4: Modern Warfare
Linux上で動作しているCoD4MW


使用するProtonはこの時点で最新の4.2-9、当然先にインストール。
Steam→設定からSteam Playを選択、他のタイトルに使用するツールにお好みのProtonを選択。
対象ソフトを起動する時にProtonも自動インストールされるが、ライブラリ→ツールを選び、一覧からインストールさせることも可能。

CoD4MWを起動すると使用許諾が出て、その後Punk Buster→DirectX9をインストール。
Punk Busterインストール時Downloading a global config file failed(略)と出る。
その後は普通に起動、終了後再度起動すると、またも使用許諾が出た後に何事もなくPunk Busterが起動する。
問題ないのか、な?オンラインだと問題出るのかも?
おいらはオフ専でオンラインのプレイ予定はないのでこの件は判断しかねます。

起動した後のデフォルト設定でテストプレイ。

Video Mode: 1024x768
Anti-Aliasing: 4x
Shadows: Yes
Specular Map: Yes
Glow: Yes
Number of Dynamic Lights: Normal
Soften Smoke Edges: Yes
Ragdoll: Yes
Bullet Impacts: Yes
Model Detail: Normal
Water Detail: Normal
Number of Corpses: Medium

事前にコンソールからr_fullscreen 0→vid_restartでウィンドウ表示に切り替え。
この状態でプレイした結果だが……
Charlie Don't Surf冒頭でヘリ旋回時に20fpsを下回る。
The Bog冒頭で放置してみたら、20〜30fpsを行ったり来たり。。。

o...rz

Windows環境だとフル設定で40〜70fps出るとのことなので、これは悲しすぎる。
mesa_glthread=trueでも変わらず。
これがRadeon用オープンソースドライバの現実である。
おいらは選択肢がないから使ってるだけだが、こんなもんを好んで使うオープンソース原理主義者がいるのもまた事実。
皮肉な話だよね、自由なソフトウェアで不自由にハードウェアを使うんだから。

設定をかなり落とせば60fps前後は出るものの……悲しいなあ。
あーあ、やっぱビデオカード買わんといかんなあ。

……………………
………………
…………
……

まだだ!まだ物語は終わらない。

OpenGLを経由せずにDirectXから直接ドライバに渡すGallium Nineというものがあります。
で、これを試してみた。
しかし、なんだか苦労は買ってでもしろ、を体現してる気がするな、うん。

事前にd3dadapterをインストールしておかないと起動時にコケる。
必要なのは32bitライブラリだがついでに64bitのもいれる。

Redhat系
$ sudo dnf install mesa-libd3d mesa-libd3d.i686

Debian系(試してない)
$ sudo apt-get install libd3dadapter9 libd3dadapter9:i386

続いてProtonにGallium Nine Standaloneをインストール。
protontricksというのがあるが、おいらの環境で使うとエラーで落ちたりするので使用を断念。
winetricksで直接インストールした。

$ WINEPREFIX=(※Steamライブラリのディレクトリ)/steamapps/compatdata/(※SteamID)/pfx winetricks

CoD4MWのSteamIDは7940です。
起動後はSelect the default wineprefix→Install a Windows DLL or Componentを選び、
一覧から「galliumnine Gallium Nine Standalone(latest)」を選択してOKを選ぶとインストール。

インストール後起動すると、環境変わった?的なダイアログが出るので適当に選択。

Gallium Nine適応後に上記と同じ設定でプレイしてみると……
Charlie Don't Surf冒頭は落ちるところも30fpsはキープ。
The Bog冒頭で放置すると50〜70fpsを行ったり来たり。

((((;゚Д゚))))

なにこれすごい。
つーか、これパフォーマンス出過ぎだろ。
まさかオープンソースドライバでここまで性能出せるとは。。。
どうもこれそれなりにGPUを使ってくれるようで、CPU負荷が減りました。


*現状判明している問題点
ステージ終了時にDirectXがエラーを吐いて落ちることがある。
Gallium Nineが原因かは不明。

プレイから30分程度経過すると極度の処理落ちが発生するようになりました。
操作すると処理落ちが起こる、動かなければフレームドロップは発生しない。
CoD4MW自体を再起動することで元には戻る。
原因がソフト側なのかProtonなのかGallium Nineなのかは不明。

更にGallium Nine適応後はSteamオーバーレイが使えなくなります。
これが原因かは不明だけど、ゲーム上の機能でスクリーンショットが取れません。
上記スクリーンショットはMATEのスクリーンショットを使って無理矢理撮ったもの。


公式ProtonがGallium Nineを取り込んでくれればいいんだけどね。
Vulkan対応から見捨てられたRadeon環境に残された希望であることは間違いないです。

なお、他シリーズを試す予定はありません。
ProtonDBを見ても動作は厳しい上にソフトの価格も決して安くないので気楽には試せません。
とどめにModern Warfare 2がおま国でね、どこかのファイナルなんたらとか、かんたらクエストとかいうゲーム出してる会社のせいでしたっけ。
(※これ書いてた時点でCrysisがセール中だったので試そうかと思ったけどクソDRMに萎えて断念した模様。
GoG辺りで売られてるDRMフリーのやつをセールの時にでも買ってみようか、な?)


*おまけの日本語化

こちらを参照。

http://mod4life.gg-blog.com/%E6%97%A5%E6%9C%AC%E8%AA%9E%E5%8C%96mod/call%20of%20duty%204-%20modern%20war

めんどくさかったのでゲーム用のみ適応。
Proton下で動かしていても、問題なく日本語化できています。
posted by えとかみ at 21:14| Comment(0) | TrackBack(0) | Linux de ゲーム