👊

MacでもSF6したい

2024/07/06に公開
16

Game Porting Toolkit 2とは?

Game Porting Toolkit 2(以下 GPTK2)は、Apple が開発したソフトウェアツールキットです。
これは、Windows ゲームを macOS に移植するプロセスを簡素化することを目的としています。

  • 発表時期と概要
    前進の Game Porting Toolkit は 2023 年 6 月 5 日に開催された WWDC23(Worldwide Developers Conference 2023)で初めて発表されました。
    2024 年 06 月 10 日に開催した WWDC24 でアップデート内容が発表されました。

https://applech2.com/archives/20240611-game-porting-toolkit-2.html

  • 主な特徴

    1. Windows ゲームを macOS で動作させるためのトランスポート層を提供する。
    2. DirectX 12 を Metal API に変換する機能がある。
    3. パフォーマンス分析ツールが含まれており、移植プロセスを最適化できる。
  • 扱う上での注意点

    1. 趣旨: ゲーム開発者向けに移植を促進する為の開発ツールである。
    2. 互換性:すべてのゲームが完全に互換性があるわけではありません。一部のゲームは追加の調整が必要。
    3. パフォーマンス:移植されたゲームは、ネイティブな macOS ゲームほどのパフォーマンスを発揮しない可能性がある。
    4. 技術的知識:効果的に使用するには、ゲーム開発と macOS プラットフォームに関する一定レベルの技術的知識が必要。
    5. Apple Silicon の最適化:M1 チップ以降の Apple Silicon デバイスで最適なパフォーマンスを得るには、追加の最適化が必要。

このツールキットは、macOS ゲームライブラリを拡大し、クロスプラットフォーム開発を促進することを目的としています。
ただし、その使用にはいくつかの技術的およびその他考慮事項があることに注意が必要です。
詳細な情報や最新のアップデートについては、Apple のデベロッパーウェブサイトを確認することをお勧めします。

命令セットのサポート拡大による期待

GPTK2 から AVX2 命令セットがサポートされたことによって、今まで動かなかった Windows 用ゲームをプレイできる可能性が出てきました。

https://applech2.com/archives/20240613-apple-game-porting-toolkit-2.html

こちらの記事にもありますが、動画もアップされていたので此れは!と思った次第です。

https://x.com/katzchum/status/1801928289528713501

参考にした記事

以降で試したことをまとめていきます。
ただ参考記事の方がどんどん情報更新されていきますので、最新情報がほしい方はそちらを参考にしていただけると🙏。

https://www.applegamingwiki.com/wiki/Game_Porting_Toolkit

推奨環境

macOS Sonoma 以降を使用する必要があります。
筆者は Sequoia で検証しています。

手順

  1. macOS Sequoia インストール(スキップ可)
    macOS Sequoia BETA Full Installer をダウンロードしてインストール
    InstallAssistant.pkg
  2. Homebrew(X86 版)インストール
    arch -x86_64 zsh 
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    alias brew86=/usr/local/bin/brew
    
    既存の arm 版の brew とは別にインストールされる形となります。
    パスが arm 版と異なる為、brew86 という alias を作成しています。
  3. GPTK2 ( Prebuild 版) インストール
    brew86 install --cask --no-quarantine gcenx/wine/game-porting-toolkit
    
    オフィシャル版があるのですが、こちらはビルド出来なかったので大人しく Prebuild を使いましょう。インストールも早いし。
  4. ツールキットの準備
    Apple Developer Downloads site から Evaluation environment for Windows games 2.0 beta をダウンロードして dmg をマウントしておいてください。(要 Apple アカウント)
    以下のコマンドでライブラリディレクトリを Wine のライブラリディレクトリにコピーしてください。
    ditto /Volumes/Evaluation\ environment\ for\ Windows\ games\ 2.0/redist/lib/ `brew86 --prefix game-porting-toolkit`/lib/ 
    cp /Volumes/Evaluation\ environment\ for\ Windows\ games\ 2.0/gameportingtoolkit* /usr/local/bin
    
  5. Steam インストール
    Steam のインストールと初回ログインがうまくいかないケースがある為、OS の言語設定を English にしてください。
    Steam のオフィシャルサイトから Windows 版のインストーラー をダウンロードしてください。
    WINEPREFIX=~/Steam wine64 winecfg
    WINEPREFIX=~/Steam MTL_HUD_ENABLED=0 WINEESYNC=1 wine64 ~/Downloads/SteamSetup.exe
    
    1 つ目のコマンドで WINEPREFIX のディレクトリが作成されます。
    Windows バージョンが 10 になっていることを確認してください。
    winecfg
    2 つ目のコマンドで Steam のインストールを行います。
    steam setupの最初の画面
    言語設定は English で OK です。
    言語設定
    インストールパスはそのままで。
    インストールパス
    以下の画面が表示されれば OK です。Run Steam のチェックを外して Finish で終わりです。
    コンプリート画面
  6. Steam 起動
    取り敢えず以下のコマンドで Steam が起動できます。
    WINEPREFIX=~/Steam MTL_HUD_ENABLED=1 WINEESYNC=1 wine64 'C:\Program Files (x86)\Steam\Steam.exe'
    
    真っ黒な画面が表示されてログイン出来ない場合は、OS の言語設定を English になっているか?確認してみてください。
    ログインが出来たらあとはお目当てのゲームをダウンロードして実行してみてください。

wine の起動オプションについて(検証中)

検証したのが貧弱なマシン環境(MacBook Air(M2, 2022) 16 GB)だったので、 SF6 のデモ版では 60 FPS は出ませんでした。
25-35 FPS ぐらいな感じでした。エフェクトが少ない状態であれば、 60 FPS がでる瞬間もありますが、動くぞ。という程度で Playable な感じではありませんでした。
今は、 Wine の設定や起動オプションを最適化して模索している最中です。
今の所、以下のコマンドに落ち着いています。

MTL_HUD_ENABLED=1 WINEESYNC=1 DXVK_ASYNC=1 ROSETTA_ADVERTISE_AVX=1 WINEPREFIX=~/Steam wine64 'C:\Program Files (x86)\Steam\Steam.exe'

他にもいくつかオプションがありそうですが、違いがわかっていません。

  • WINEDLLOVERRIDES
    DDL読み込み方法を変更して、パフォーマンスに影響があることはわかっていますが、どうするのが正解なのかわかっていません。
    設定すると変わらないか、遅くなる一方です。
  • DXVK_HUD
  • METAL_CAPTURE_ENABLED
  • WINEMSYNC

最後に

色々調べていますが、M3 以降のマシンであれば、もう少しましに動くと考えています。ただ現状では環境が手元になく検証できない状況です。
もし試してみて頂けた方がいらっしゃいましたら、利用した起動オプション・FPS 等を教えて頂けますと幸いです。

Discussion

katzumikatzumi

ROSETTA_ADVERTISE_AVXオプションを有効にするとAVXが有効になるっぽいです。
SteamのSystem Informationで確認すると ⬇️みたいな感じでした。

Computer Information:
Manufacturer: The Wine Project
Model: Wine
No Touch Input Detected
Processor Information:
CPU Vendor: GenuineIntel
CPU Brand: VirtualApple @ 2.50GHz
CPU Family: 0x6
CPU Model: 0x2c
CPU Stepping: 0x0
CPU Type: 0x0
Speed: 2400 MHz
4 logical processors
4 physical processors
Hyper-threading: Unsupported
FCMOV: Supported
SSE2: Supported
SSE3: Supported
SSSE3: Supported
SSE4a: Unsupported
SSE41: Supported
SSE42: Supported
AES: Supported
AVX: Supported
AVX2: Supported
AVX512F: Unsupported
AVX512PF: Unsupported
AVX512ER: Unsupported
AVX512CD: Unsupported
AVX512VNNI: Unsupported
SHA: Unsupported
CMPXCHG16B: Supported
LAHF/SAHF: Supported
PrefetchW: Unsupported
Operating System Version:
Windows 10 (64 bit)
Wine Version: wine-7.7
NTFS: Supported
Crypto Provider Codes: Supported 311 0x0 0x0 0x0
Video Card:
Driver: NVIDIA GeForce 8800 GTX
DirectX Driver Name: nvd3dum.dll
Driver Version: 30.0.14023.3004
DirectX Driver Version: 26.16.13.4052
Driver Date: 1 18 2022
Desktop Color Depth: 32 bits per pixel
DirectX Card: NVIDIA GeForce 8800 GTX
VendorID: 0x10de
DeviceID: 0x191
Revision Not Detected
Number of Monitors: 2
Number of Logical Video Cards: 2
No SLI or Crossfire Detected
Primary Display Resolution: 1470 x 956
Desktop Resolution: 1920 x 2036
Primary Display Size: 11.42" x 7.40" (13.58" diag), 29.0cm x 18.8cm (34.5cm diag)
Primary Bus Type Not Detected
Primary VRAM: 0 MB
Supported MSAA Modes: 2x 4x
Sound card:
Audio device: MacBook Air Speakers
Memory:
RAM: 16383 Mb
VR Hardware:
VR Headset: None detected
Miscellaneous:
UI Language: English
Media Type: CD-ROM
Total Hard Disk Space Available: 710364 MB
Largest Free Hard Disk Block: 364698 MB
OS Install Date: May 08 2010
Game Controller: Xbox 360 Wireless Controller detected
MAC Address hash: miserarenaiyo
Storage:
Disk serial number hash: 0
Number of SSDs: 0
Number of HDDs: 0
Number of removable drives: 0
katzumikatzumi

低スペックマシンでもSF6を行う為の設定

入力遅延の軽減をOFFにして、グラフィック基本設定を変更
グラフィック基本設定

クォリティ詳細設定でNORMALか、LOW設定にする
クォリティ詳細設定

takenokotakenoko

こんにちは、日本語記事でGPTK2について書かれているものは少ないので非常に助かります。ひとつ質問させてください、Steamのインストールまで終わった段階でStep.6の起動コマンドを入力しても黒い画面が出るでもなくそもそも起動しませんでした。おそらくこれがエラーコードだと思われますが、どこかで導入ミスが発生していると考えた方がいいでしょうか?「fixme:thread:NtSetInformationThread info class 49 not supported yet」

katzumikatzumi

自分も色々試している際に黒い画面で止まった時がありました。

その際は以下の記事を参考に対処していました。
https://www.applegamingwiki.com/wiki/Game_Porting_Toolkit

A common issue is that Steam will present with a blank black window. Try the #Steam login black screen section.

以下のセクションの部分になります
https://www.applegamingwiki.com/wiki/Game_Porting_Toolkit#Steam_login_black_screen

あとは変にwineのプロセスが残っていてうまく立ち上がらないケースもあったので、
プロセスをkillするか、Mac OS自体を再起動してから再実行してみるともしかしたら解消するかも知れません。

takenokotakenoko

迅速な返信ありがとうございます。一度環境を再構築してGPTK1の方も導入してみたところ動作しました。OS設定をENにし忘れてしまったことも原因の一つかもしれません、ありがとうございました。

takenokotakenoko

度々すみません、Steamでゲームを起動した時に右上にメモリの使用量やGPU使用率などのインジケーターが表示され続けますが、ショートカットキーや起動時のコマンドによって消すことはできるのでしょうか?

takenokotakenoko

本当に助かります、ありがとうございます!
ご存知かもしれませんが、一部のゲームでフォントが表示されなかったり、文字化けしてしまう場合は"Winetricks"を用いて、Cドライブ/windows/Regidit.exeを起動してHKEY_LOCAL_MACHINE -> Software -> Microsoft -> Windows NT -> CurrentVersion -> FontSubstitutesのMS Shell Dlgを編集し一般的なフォントに変更した後、"winetricks settings fontsmooth=rgb"コマンドを実行することで改善される可能性があります。

takenokotakenoko

度々すみません、Steamの一部のゲームが起動しなくなってしまったのですが、ターミナルを見てみるとどうやらd3d11が悪さをしているようです。DirectX 11の環境が消えてしまったそうで再構築をしても起動しなくなってしまいました。DXVKを手動でインストールしようとしたのですが記事が少なく、dllファイルを単に上書きするだけだと起動はしますがエラーでDirectX 11がインストールされていないかグラフィックドライバーが当たってないと出てしまいます。DXVKのインストール方法かこの問題の解決策として思い当たることはありますでしょうか?
追記:evaluation environment for windowsの中身のlibフォルダは64bit用のd3d11.soファイルのみがあり、起動できないアプリはx86_32on64-unixからopengl32をロードしてるようで、そもそもmetalの動作環境がないように思えます。
追記2:steamからsystem informationを確認したところどうやらROSETTA_ADVERTISE_AVXのオプションが反映されずAVX,AVX2がunsupportedになっていました。
追記3:AVXが反映されていない原因はOSが15.0になっていないからでした。AVXは有効化されましたが以前として起動しません。

katzumikatzumi

DirectX周りの確認は追記されている様にSteamのSystem Informationを確認するので良いかと考えています。

出力例としてはこちら
https://zenn.dev/katzumi/articles/wanted-to-play-with-sf6#comment-b69860c70c4809

その出力内容と動かそうしているゲームのシステム要件に合致しているか?確認する流れになります。

Steamライブラリを確認頂くか
https://yuruiblog.com/entry/2018/02/24/120000#3ゲームの整合性を確認しよう

PCGamingWikiでシステム要件を確認する感じになります。
https://www.pcgamingwiki.com/wiki/Street_Fighter_6#API

takenokotakenoko

本当にありがとうございます、どうやらWine側の問題だったようでwine-crossoverを用いると描画はされませんが起動はしました。
結局結論としてはWhiskyを用いることで解決しましたが根本的な改善策は見つかりませんでした...ビルドミスの可能性が高いですがひとまずはWhiskyがGPTKもビルドされているのでいいかと思います。

katzumikatzumi

Sequoiaの正式版と、Game Porting Toolkit 2のbeta3が出たので、環境を更新してみました。
Sequoiaはいつも通り、OSアップデートで完了
Game Porting Toolkit 2のbeta3は 手順 の4をやり直すだけ

  • SteamのSystem Information
Computer Information:
Manufacturer: The Wine Project
Model: Wine
No Touch Input Detected
Processor Information:
CPU Vendor: GenuineIntel
CPU Brand: VirtualApple @ 2.50GHz
CPU Family: 0x6
CPU Model: 0x2c
CPU Stepping: 0x0
CPU Type: 0x0
Speed: 2400 MHz
4 logical processors
4 physical processors
Hyper-threading: Unsupported
FCMOV: Supported
SSE2: Supported
SSE3: Supported
SSSE3: Supported
SSE4a: Unsupported
SSE41: Supported
SSE42: Supported
AES: Supported
AVX: Supported
AVX2: Supported
AVX512F: Unsupported
AVX512PF: Unsupported
AVX512ER: Unsupported
AVX512CD: Unsupported
AVX512VNNI: Unsupported
SHA: Unsupported
CMPXCHG16B: Supported
LAHF/SAHF: Supported
PrefetchW: Unsupported
Operating System Version:
Windows 10 (64 bit)
Wine Version: wine-7.7
NTFS: Supported
Crypto Provider Codes: Supported 311 0x0 0x0 0x0
Video Card:
Driver: NVIDIA GeForce 8800 GTX
DirectX Driver Name: nvd3dum.dll
Driver Version: 30.0.14023.3004
DirectX Driver Version: 26.16.13.4052
Driver Date: 1 18 2022
Desktop Color Depth: 32 bits per pixel
DirectX Card: NVIDIA GeForce 8800 GTX
VendorID: 0x10de
DeviceID: 0x191
Revision Not Detected
Number of Monitors: 2
Number of Logical Video Cards: 2
No SLI or Crossfire Detected
Primary Display Resolution: 1470 x 956
Desktop Resolution: 1920 x 2036
Primary Display Size: 11.42" x 7.40" (13.58" diag), 29.0cm x 18.8cm (34.5cm diag)
Primary Bus Type Not Detected
Primary VRAM: 0 MB
Supported MSAA Modes: 2x 4x
Sound card:
Audio device: MacBook Air Speakers
Memory:
RAM: 16383 Mb
VR Hardware:
VR Headset: None detected
Miscellaneous:
UI Language: English
Media Type: CD-ROM
Total Hard Disk Space Available: 710364 MB
Largest Free Hard Disk Block: 364006 MB
OS Install Date: May 08 2010
Game Controller: None detected
MAC Address hash: miserarenaiyo
Storage:
Disk serial number hash: 0
Number of SSDs: 0
Number of HDDs: 0
Number of removable drives: 0

特に変わってないように見えます。

Evaluation environment for Windows games 2.0Read Me.rtf

Environment Variables

Environment variables can be used to control some aspects of translation and emulation in the evaluation environment.

D3DM_SUPPORT_DXR - Defaults to 0 (OFF). On M3 Macs, setting this environment variable to 1 (ON) enables DirectX Raytracing (aka DXR) features in D3DMetal’s DirectX 12 translation layer, so games querying for DXR support will find the support level and expected interfaces of DXR.

ROSETTA_ADVERTISE_AVX - Defaults to 0 (OFF). On macOS 15 Sequoia, setting this environment variable to 1 (ON) causes the CPU instruction translation layer to publish cpuid information to translated applications when running in the evaluation environment, so games querying instruction set extension capabilities before utilizing them can conditionally control their use of instruction extensions. This setting does not modify the availability of the instruction set in Rosetta; it only controls whether the processor advertises its support for these extensions.

の記載あり。
D3DM_SUPPORT_DXRのオプションというものが追加?されたらしい。
当方の環境がM2なので未検証。

unniunni

こんにちは、質問があります。 M1 mac を使用しています。ステップ6にあるように、steamを開いた後、"steamwebhelper.exe, a critical Steam component, is not responding. The Steam UI will not be usable."と表示されました。前に質問されてる方と同じく、” fixme:thread:NtSetInformationThread info class 49 not supported yet " とコードが出ます。steamやmacを再起動しても解決しませんでした。何か解決方法はありますか?

katzumikatzumi

OS の言語設定を English にされていますでしょうか?

unniunni

お返事ありがとうございます。はい。Englishと日本語でも試しましたが同じ結果でした。

katzumikatzumi

手順5を以下のような感じでやり直したら如何でしょうか?

  • Steam install
    gameportingtoolkit ~/my-game-prefix ~/Downloads/SteamSetup.exe
    
  • Steam起動
    ROSETTA_ADVERTISE_AVX=1 gameportingtoolkit ~/my-game-prefix 'C:\Program Files (x86)\Steam\steam.exe'
    

~/my-game-prefixWINEPREFIX=~/my-game-prefix と同じでwine環境のパスとなります。