世界を動かす技術を、日本語で。

Wine 11がLinux上でWindowsゲームをカーネルレベルで動作させる方法を刷新し、大幅な速度向上を実現

概要

  • Linuxゲーム環境の進化とWine 11の大規模アップデート
  • NTSYNCによるカーネルレベルの同期処理の実現
  • WoW64アーキテクチャの完成で32bitアプリの互換性向上
  • Waylandドライバやグラフィック関連の多彩な改善
  • Wine 11がもたらす幅広いユーザー体験の向上

Linuxゲーミングの進化とWine 11の登場

  • ValveのProton登場 (2018年)以降、Linuxでのゲーム体験が大幅に向上
  • Wineのバージョンアップ (Wine 10、Wine 9など)で互換性とパフォーマンスが徐々に改善
  • Wine 11 は従来のアップデートとは異なり、NTSYNCやWoW64完成など根本的な刷新
  • Waylandドライバの成長 や細かな改善点も多数搭載
  • ProtonやSteamOS などの下流プロジェクトにも恩恵が波及

これまでの同期処理の課題とNTSYNCの意義

  • esyncやfsync はWineやProtonの設定でよく見かけるワークアラウンド
  • Windowsゲーム はマルチスレッド処理が主流で、同期処理が重要
  • 従来のWine はwineserverを介したRPCで同期を実現し、オーバーヘッドやパフォーマンス低下の原因
  • esync はeventfdを利用した改善策だが、ファイルディスクリプタの上限問題あり
  • fsync はfutexを活用し高速化したが、カスタムカーネルが必要で一般ユーザーには敷居が高かった
  • esyncやfsyncは本質的にはワークアラウンド で、WindowsのNT同期動作を完全には再現できなかった

NTSYNCによるカーネルレベル同期の実現

  • NTSYNC は独自のカーネルドライバによるWindows NT同期APIの実装
  • /dev/ntsyncデバイス を介してWineがカーネルと直接通信
  • wineserver不要・正確な同期動作・カーネル内での処理 が可能
  • Elizabeth Figura (esync・fsync開発者)が長年取り組み、Linux 6.14でメインラインに統合
  • パフォーマンス向上例
    • Dirt 3:110.6 FPS → 860.7 FPS(678%向上)
    • Resident Evil 2:26 FPS → 77 FPS
    • Call of Juarez:99.8 FPS → 224.1 FPS
    • Tiny Tina's Wonderlands:130 FPS → 360 FPS
  • fsync使用時との違い
    • fsync利用者は劇的な向上は限定的
    • NTSYNCは特に多スレッド同期がボトルネックなゲームで効果大
  • カーネル6.14以降のディストリビューション (Fedora 42、Ubuntu 25.04など)で標準対応
  • SteamOSやProton GEでもサポート開始
    • Valve公式ProtonがWine 11にリベースされれば、Steam Deck全ユーザーが恩恵を受ける

WoW64アーキテクチャの完成

  • WoW64 (Windows 32-bit on Windows 64-bit)のWine実装がついに完成
  • 32bitアプリ実行時に32bitシステムライブラリ不要
  • Wineが内部で32/64bitを自動判別し、単一バイナリで処理
  • マルチリブパッケージや32bit依存関係の煩雑な設定が不要
  • OpenGLメモリマッピングやSCSIパススルー、16bitアプリ対応も実現
  • レトロゲームや古い業務ソフトの動作性向上

Wine 11のその他の改善点

  • Waylandドライバの強化
    • クリップボードの双方向連携
    • WaylandアプリからWineウィンドウへのドラッグ&ドロップ対応
    • 低解像度切り替え時の表示崩れ対策
  • グラフィック面の強化
    • X11でのOpenGLレンダリングにEGLをデフォルト採用
    • Vulkan API 1.4対応
    • Direct3D 11経由でのH.264ハードウェアデコード初期サポート
  • 周辺機器・音楽・システム面の改善
    • レーシングホイールやフライトスティックのフォースフィードバック対応強化
    • Bluetooth BLEサービス対応・ペアリング改善
    • MIDIサウンドフォント管理強化
    • Zip64圧縮、Unicode 17.0.0、TWAIN 2.0、IPv6 pingなどの新機能追加
    • Linux/macOSでのスレッド優先度管理強化
    • ARM64での4Kページサイズエミュレーション

まとめ:Wine 11の意義

  • NTSYNCとWoW64の実装完了 により、Linux上のWindowsアプリ・ゲーム互換性が飛躍的に向上
  • パフォーマンス・安定性・使い勝手 の全方位的な進化
  • ProtonやSteamOSを通じて、すべてのLinuxゲーマーに恩恵
  • 今後のLinuxゲーミングの新たな基盤 として期待

Hackerたちの意見

Wineって、なんか逆効果な気がする。Linuxのゲームサポートが広がると、デスクトップとしてのLinuxの可能性が高まって、市場シェアも増える。それが開発者にLinux用のポートを作らせるかもしれないけど、それはWineなしで動くものになるかもね。

これこそ「持ってて嬉しい問題」の定義だね。

WineのAPIはLinuxのAPIより安定してるから、Wineが第一級のターゲットになるのもあり得ると思う。

自分自身への解決策

実際、逆になると思う。ネイティブポートがあるゲームでも、私はほとんどいつもProtonでWindows版を動かしてる。そっちの方が安定してるからね。みんなWindows APIに対して開発するのは、馴染みがあって変わらないからで、それでいいと思う。Protonがそれをうまく動かしてくれるし。

ゲームやアプリがWineで動くなら、Linuxポートを開発するプレッシャーが減るんじゃない?

逆に静かだね。Wineが良いと、ゲームスタジオがネイティブLinuxポートを作るインセンティブが減っちゃうんだよね。

なんとかしてそこにたどり着かなきゃ。

Windows APIが事実上のLinuxゲームSDKになる可能性が高い気がする。ゲームをLinuxに移植するアイデア自体が意味を持たなくなるかもね。

もし自分にとって重要なすべてのWindowsアプリがWineで動くって保証があったら、次の日には切り替えるよ。今はWindowsを使って、ビジネスバックエンドがLinuxのアプリも開発してる。

これは大きな懸念じゃないと思う。Linuxネイティブのゲームがそこそこ揃っても、Wineの需要はまだまだあるだろうし。人々はゲーム以外の目的でもWineを使ってるし、もし明日すべての新しいゲームがネイティブLinux版になったとしても、少なくともあと20年は古いWindows専用ゲームをプレイし続けると思う。あと、WindowsのABIはLinuxのABIよりもまだ安定してるしね。Linux(非SteamDeck)のゲームシェアが50%以上になったとしても、Windows専用で開発する方が手間が少ないだろうし、Linux+Wineでのパフォーマンス差は大したことないから。

こういう投稿を読むと、いつも自分が偽物みたいに感じる。みんなはすごく低レベルなことに取り組んでるのに、私はここでシンプルなCRUDを作ってるだけ。

Hacker Newsで議論の続きを見る