mac の wine と、retina や d3d11 とかの話
iPhone でゲームができるなら、Mac でもゲームができるんですねぇ。
warning
この記事では、wine 関係の情報と、RetinaMode 有効化について書いております。
wine 導入の話は暇だったら別記事で後日書きます。
なぜ mac でゲームをするか
理由はない。浪漫だ。
決して mac 切り替えと同時に windows 機の寿命が切れたわけではない
真面目な理由
ゲーム機を専用で用意するほどゲームをやるわけではないです。 しかし、forest とか raft とか、ああいった遭難系サバイバルゲームはやると面白いので、たまにやりたくなったわけです。
ゲーム機は steam にあるバカゲーいわゆるインディーゲーとかがあまりないですし、
(そもそも〇〇オンラインとかが高そう)
コーディングとか普段使いは mac の方がいいですし。
何より windows ゲーを windows 以外の OS で動作させてみたいという癖があるので、
こんなことしてます。
wine
windows アプリケーションを windows 以外の OS で動作させるには二通りの手段が思い付きます。
- 仮想化
バーチャルマシンとかいうやつ。
gpu 資源の共有が簡単にはできないので、どうしても仮想マシン側のグラフィック処理が劣る。(つまり重い)
そもそも OS が二つ動くから、メモリ二倍必要。
ただし、純粋な windows が動くため、トラブルが少ない。 - wine
変換レイヤーというやつ。仮想化ではない。
windows のアプリケーション、をあたかも unix(linux)アプリケーションとして動かすことができてしまう。
OS 側から見れば、純粋な unix(linux)アプリケーションなので、gpu 資源などの共有が簡単。(できるとは言ってない)
仮想化は、IOMMU やら SR-IOV などの発展によって gpu の資源問題は解決に近づいているらしい。
しかし、仮想マシンはどっちにしろ重い。wine は変換レイヤーに処理コストが多少かかるが、それでもマシ。
問題はDirectX
DirectX
グラフィック API の一つ。 windows 専用
linux だと OpenGL/Vulkan、Darwin(MacOS,IOS,IPadOS など) だと Metal。
これらの変換レイヤーが近年になって登場している。
proton: DirectX -> Vulkan
GPTK: DirectX -> Metal
mac には proton がない
登場しないかな。
上記の通り、proton は wine に加え、DirectX を Vulkan に変換するレイヤーDXVKを持っています。
互換性も向上している模様1
そのため、スムーズにゲームができると想像できます。(私はやったことない)
mac 非対応
対応してると思ってたんだよね。unix(darwin) だし。
linux と darwin は側が似てるだけで中身全然異なるんだよね
GPTK: Game Porting Toolkit
Apple シリコン上で Windows 実行可能ファイルを評価する
シェーダコードを Metal に変換する
と公式ページに書かれている通り、windows ゲームを変換する方法を提供してくれております。
この中にD3DMetalが含まれているそうです。
note
おそらくゲーム開発者向けの kit
MacOS 向けの開発をスムーズに始められるように
D3DMetal と wine の統合
これらを統合したアプリケーションは、確認した中で複数存在しました。
特に、Kegworksは、さまざまな wine のバージョンを試せるため、おすすめ。
corssover という選択肢もあるけれど、普通に高い。
tip
DXMTは D3DMetal と異なり、オープンソースで似たようなことを行うプロジェクト
Retina に対応させる。
せっかく綺麗なディスプレイを搭載してるので(Macbook 系は)、
Retina にも対応させましょう。
wine 付属の regedit で
HKEY_CURRENT_USER\Software\Wine\Mac Driver
この中に、文字列値を追加
値の名前:
RetinaMode
データ:
Y
tip
なければキーを追加してくだされ
これで wine を再起動すると、Retina 対応になります。(解像度が mac のディスプレイと同じになる)
wine 設定(winecfg)の画面設定から DPI を上げておくことを推奨します。
tip
日本語化する際のフォントですが、fakejapanese 系のやつが結構豆腐を消してくれるイメージがあります。