🧐

wine-crossover-21 on M1 Mac

2022/03/24に公開

背景

UTM on M1 Mac の反応性だと思ったよりゲームするにはちょっとしんどい。
——ので、いっそwineでゲーム環境作って遊びたいと思った。

Windowsマシンを捨てたのにWindowsのゲームやりたいという思い、だいぶ意地が悪いな、と思う。

ちなみにsteamで売ってる人気のゲームは意外にmac対応されてることが多くて、特にwineを介さなくても、rosetta2だけでアレコレ動くみたい。

試してないけど。
Vampire Survivors とか、Mac対応してたので普通に遊べた。wine整備に試行錯誤した時間くらいは遊んだ。

準備

  • M1 Mac
    • 一説には、wineの動作にはUS配列の方が有利らしい。
  • homebrew
    • 言わずもがな。入ってて当然なやつ。
  • homebrew-wine
    • 公式が配布しているGPL配布のソースコードをビルドしてhomebrewでインストールできるようにしてくれている方がいる。
    • いくつか選べるバージョンがあって、今回使うものは便宜的に「wine-crossover-21」と呼称する。
  • dxvk
    • DirectXを、より高速化して動作するようにしてくれる魔法。
    • 今回は重いゲームやらないと思うから使わない
  • dxvk-async
    • 場合によってはこちらを使うことになるらしいが、今回は使わない。
  • Winetricks
    • 便利ツール。

なぜWineskinServerを使わずに試行したか

最初は、ぼんやりと「環境を分けるまでもないかなー」という気持ちと、RPGツクールMVで作られたゲームをプレイするには、wine自体の起動に対して引数が必要で、それをWineskin側でどうやって設定すれば良いか、全くわからなかったため、かなりネガティブな理由で。

結局やってみて、実際はいろいろDLLをインストールしすぎると逆に動かないアプリが出てきたりしたので、環境レベルで切り分けた方がよさそうだな、とは思った。
(前述の問題は多分解決しないから、諦める方向に倒した)

手順

install wine

とりあえず、日本語フォントを入れた状態まで。
この状態を「ほぼ無印」として初めて、まずは好きなアプリやゲームを動かしてみるのが良い。

brew install --cask --no-quarantine gcenx/wine/wine-crossover
brew install winetricks
winetricks fakejapanese_ipamona

install wine-mono

入れておいて損はないので入れておく。

一応、wine-crossover-21がwine 6.xベースなので、メジャーバージョンを合わせておく。

curl -o wine-mono.msi https://dl.winehq.org/wine/wine-mono/6.4.0/wine-mono-6.4.0-x86.msi
wine64 msiexec /i wine-mono.msi

[opt] install dvxk

調べた手順だけメモしておく。正しく動かないと思うので、どうしても使いたい時が来たら、また調べる。
dvxk-async もほぼ同じ手順のはず

  1. Mac側でvulkan APIが呼び出せる状態にするためにいくつかのライブラリを入れる
    - 入れないと実行中に呼び出しエラーログが出る

brew install molten-vk vulkan-headers

  1. Releaseから最新の tar.gz を落として解凍する。

cd dxvk
export WINEPREFIX=/Users/[MyName]/.wine
./setup_dxvk.sh install
curl https://raw.githubusercontent.com/doitsujin/dxvk/master/dxvk.conf --output /Users/[MyName]/.wine/dxvk.conf
export DXVK_CONFIG_FILE=/Users/[MyName]/.wine/dxvk.conf

dvxk で使う定数は、.zshrcに予め書いて永続化しておくのが良いと思われる。

./setup_dxvk.sh uninstall
で簡単に取り外せるので、あまり気負わなくても良さそう。

片道勇者でテストしようと思って立ち上げたら画面がブラックアウトしたので、以降の検証はしてない。
vulkan APIがちゃんと呼ばれなかったのか、単にゲーム側の相性か。

:err:module:import_dll Library vulkan-1.dll (which is needed by L"C:\windows\system32\d3d11.dll") not found

——と思ったら、有益な記事があったので張っておく。片道勇者とdxvkの相性問題っぽい

試行したゲームについて

  • RPGツクールMVのゲーム
    • wine [RPGツクールMVのGame.exe] --ignore-gpu-blacklist --use-gl=desktop --disable-webgl

    • ——だけど、動かして数分でスクリプトロードでエラーが頻発してゲーム続行不可能になる。
      • てか、RPGツクールMVって、JavaScript で動いてるんですね。この構成を逆手にとって無理矢理safari上で遊んでいる猛者がいた。
  • レミュオールの錬金術師
    • ほぼ無印状態で起動すると、BGMとボイスが鳴らない。ゲーム自体はできる。
    • どれを入れれば良いか、試行錯誤中。
      • gmdls directmusic dsdmo dinput directshow quartz あたりを入れてもだめだった。違うAPIをたたいているのだろう
  • 片道勇者
    • 前述の通り dxvk を混ぜると動作しない。
      • 入れ方も悪いけど、多分、dvxkに対応していないと思われる。
    • なので dxvk を入れない状態では普通にプレイできる。
  • ゲーム内でムービー再生が発生する系のやつ
    • winetricks 経由で directX9 と directshow を入れないとだめそう。
      • というか、ゲーム要件に directX9 が書かれてるのは、事前にdirectX9系はなるべく入れておくべき

所感

  • 環境1つでなんとかなると思っていたけど、入れるDLLの問題(特にグラフィック周り)で動く動かないが発生するのはダルい。
    • 加えて、MIDIが鳴らない、ボイスが再生されない、といった問題は、古い仕様で作られたWindowsゲームで起こりそう。
  • もうちょっとゲーム試して、個人的なサンプル数稼いでおきたいけど、ゲームをするためにゲームのプレイ時間以上に環境構築してるのギャグ。
    • なので、とりあえず片道勇者で1時間遊んでほくほくしている。
      • ちなみに、課金済なのでプラス版で遊んでる。何回もリセットしては遊んでいるので、はやく次回作をば。
  • 今回はゲーム用途なので特に気にしていなかったけど、ビジネスアプリとかを動かすと変なAPIたたいたりすることがあるので、そういう視点からも環境分けはしたほうが幸せになると思う。

5/6 追記

ランタイムがマイナーアップデートしていたので、Wineskinで新規作成しなおした。
(既存のWine環境をアップデートできるらしかったが、試したら破壊されたので、泣く泣く。)

これくらい分解してインストールすればバグらないっぽいと思って並べてみた。

[✓] Custom... winetricks [ gdiplus ]
[✓] Custom... winetricks [ directshow ]
[✓] Custom... winetricks [ gmdls ]
[✓] Custom... winetricks [ d3dx9 d3dx10 d3dx11_43 ]
[✓] Custom... winetricks [ dinput8 devenum dmscript directplay directmusic dinput dmband ]
[✓] Custom... winetricks [ allcodecs wmp9 wmp10 wmp11 ]

[✓] Custom... winetricks [ sdl mdx ]
[✓] Custom... winetricks [ vcrun6 vcrun2003 vcrun2005 vcrun2008 vcrun2010 vcrun2012 vcrun2013 vcrun2019 ]
[✓] Custom... winetricks [ fakejapanese_ipamona ]
[✓] Custom... winetricks [ steam ]

allcodecs、mdx、vcrun系がabortを誘発しがちっぽい。加えてwmp10が非対応パッケージなので、それ以外をワンライナーで処理するのが良さそうと思った。

[✓] Custom... winetricks [ gdiplus directshow gmdls d3dx9 d3dx10 d3dx11_43 dinput8 devenum dmscript directplay directmusic dinput dmband wmp9 wmp11 sdl fakejapanese_ipamona steam ]

5/8追記

ゲームの日本語設定周りはfakejapaneseでなんとかなるけど、そもそも日本語フォントがあるべき箇所でレンダーされてない場合、fakejapaneseの設定範囲外の領域となる。

多分、游ゴシックとかだと思う

自分で、設定を拡張する必要がある。
ここはメモなので手順は割愛する。

5/28 追記

いくつかのゲームを動かした。

スタンドアロンのノベルゲームはインストールさえ出来れば動かせて遊べた。(作品は伏せる
ただ、アプリ内でBGMやSEの音量を下げるとビットレートが落ちたようなノイズになるバグ?がある模様。(winetricksで入れるライブラリが正確なら直りそうなんだけど、そこまではやってない)

Steamは普通に動いて、購入したシロナガス島への帰還をインストール、プレイ、クリアできた。
セール250円で遊べる名作だった。未プレイなら、今買って、ボイス付きアップデート来たら遊ぶと良い。2022年現在進行で見たとき、キャストが豪華。採算付いてんのかこれ。
ただ、フルスクリーンにすると、ノッチのところが隠れる。これは、wine自身がMacbook向けに専用の対応をしない限りどうしようもなさそう。

Epic Games Launcher は画面が黒くなる問題で使い物にならなかった。(リフレッシュレートのバグ?)
legendaryで代用しようとしたら、代替cmdでexeがうまく動かなかった。公式のれあどめを見ながらpythonを整備してガチャガチャしまけど、結局はブラウザ認証のアプリ間連携がうまく流れないので、諦めた
GOGはインストールがうまくいかなかった。

参考記事

Discussion