Home / How it works
How Bridgeplay works
When you press Play on a Windows game in Mac Steam, a library Bridgeplay placed inside Steam hands the launch to a Steam Play compatibility tool. That tool starts the game in CodeWeavers’ open-source WineCX under Rosetta 2, and Apple’s D3DMetal turns the game’s DirectX 11 or 12 calls into Metal for your Mac’s GPU.
Most of these pieces come from other projects. Bridgeplay ties them together, fits them into Steam and keeps them updated.
What happens when you press Play
- Steam loads Bridgeplay’s library. Setup copies a library (
notproton.dylib) into/Applications/Steam.appand makes Steam load it at startup. The library switches on Steam Play, which is present but inactive in Mac Steam, and registers Bridgeplay’s compatibility tools, so Windows games show Install and Play like Mac games. The approach comes from NotProton. [1] [3] - Steam starts the game through Bridgeplay’s run script. The script picks the engine and graphics backend set for that game, applies its per-game fixes and loads the small helper libraries that run inside the game. [3]
- The game runs in Wine under Rosetta 2. The default engine is WineCX 11.17: CodeWeavers’ open-source Wine changes from CrossOver 26.3, rebased by dappermint onto upstream Wine, with CrossOver’s msync. It is an x86-64 build, so Rosetta 2 translates it for Apple Silicon. A WineHQ 11.15 build from Gcenx is the other free engine, and if you own CrossOver, Bridgeplay can run games on your copy instead. [2] [4]
- Steam calls go back to Mac Steam. Inside the game, Steam calls reach the Steam client you’re signed in to through
lsteamclientandsteam.exe, macOS ports of pieces from Valve’s Proton. [2] [5] - DirectX becomes Metal. D3DMetal, from Apple’s Game Porting Toolkit 4.0 beta 3, runs DirectX 11 and 12. Per game you can pick DXMT instead (DirectX 10–11 straight to Metal), or DXVK-macOS (DirectX 10 and 11 to Vulkan) on top of MoltenVK (Vulkan to Metal). [2]
- Metal draws the frame on your Mac’s Apple Silicon GPU, and it appears on screen.
Other pieces along the way
- DLSS requests go to MetalFX. Games on D3DMetal see an NVIDIA GeForce RTX 4090 by default, so they offer DLSS, and Apple’s Game Porting Toolkit does the upscaling with MetalFX. Setting
NVAPI=0turns this off. See the DLSS and frame generation guide. [2] - Frame generation (experimental). Bridgeplay generates frames in the game’s own process, on its
CAMetalLayer, for up to 3× the displayed frames with a little added latency. It’s off by default and turned on per game. - Controllers. A controller layer for HID pads and SDL inside Wine let DualSense, Xbox, GameSir and other controllers work without a mapping screen. sn0wst0rm’s DualSense Bluetooth bridge and Steam rumble forwarding, shipped in Bridgeplay 0.7.51 and earlier, are paused until NotProton merges the same work.
- Function hooks. Bridgeplay uses the Dobby hooking library.
- Updates. Sparkle updates the Bridgeplay app. Bridgeplay also updates its patch in Steam and the engine, and re-applies the patch when Steam updates itself. [3]
Each game’s settings for these (graphics backend, Metal HUD, DLSS, frame generation, High Resolution, controllers) live in Steam: right-click the game, then Properties… › Bridgeplay.
The components
The credits on the home page list each license. Apple’s Game Porting Toolkit is Apple software under Apple’s license, which allows non-commercial distribution only; everything else here is open source except Steam and macOS themselves.
| Component | What it does | Who makes it | License | Link |
|---|---|---|---|---|
| Steam for macOS | The Steam client you already use | Valve | Steam | steampowered.com |
| lsteamclient · steam.exe | Connect Steam calls inside the game to Mac Steam | Valve (Proton) | Steamworks · BSD-3 | ValveSoftware/Proton |
| Bridgeplay | Steam integration, setup, updates | Raymond Chin and contributors | GPL-3.0 | raymondchins/Bridgeplay |
| NotProton | Steam hooks, Steam Play interface patches, run script, steamclient bridge | NotProtonNot and contributors | GPL-3.0 | NotProtonNot/NotProton |
| NotProton-WineHQ | The NotProton fork Bridgeplay came from; added a free WineHQ engine | Leon Seemann | GPL-3.0 | leonseemann |
| DualSense and Steam rumble (paused) | DualSense Bluetooth bridge, Steam rumble forwarding | sn0wst0rm | GPL-3.0 | sn0wst0rm/NotProton |
| Dobby | Function hooks | jmpews | Apache-2.0 | jmpews/Dobby |
| Sparkle | App updates | Sparkle Project | MIT | sparkle-project/Sparkle |
| WineCX 11.17 | Main engine: runs the Windows game, with msync and D3DMetal support | CodeWeavers · dappermint | LGPL-2.1+ | dappermint/winecx |
| Wine 11.15 | Second free engine | WineHQ · Gcenx builds | LGPL-2.1+ | Gcenx/macOS_Wine_builds |
| SDL | Controllers in Wine | SDL project | zlib | libsdl-org/SDL |
| D3DMetal · MetalFX | DirectX 11 and 12 on Metal; DLSS requests upscaled with MetalFX | Apple (Game Porting Toolkit) | Apple license | Game Porting Toolkit |
| DXMT | DirectX 10–11 on Metal | 3Shain | LGPL-2.1+ | 3Shain/dxmt |
| DXVK-macOS | DirectX 10–11 via Vulkan | Gcenx | zlib | Gcenx/DXVK-macOS |
| MoltenVK | Vulkan on Metal | Khronos Group | Apache-2.0 | KhronosGroup/MoltenVK |
| Metal | Draws on the Apple Silicon GPU | Apple | macOS | developer.apple.com/metal |
Contributors
Everyone with commits in the Bridgeplay repository, from GitHub’s contributor list as of . Commit counts include history from NotProton and the other projects Bridgeplay is forked from. Each name links to that person’s GitHub profile.
raymondchins354 commitsMaintainer
Raystorms31 commitsMaintainer
NotProtonNot156 commits
LaganYT11 commits
kevicebryan6 commits
leonseemann5 commits
natbro5 commits
temamumtaza5 commits
Ni-zav4 commits
Ghostkwebb4 commits
sn0wst0rm3 commits
xmb92 commits
Dino00052 commits
schroedernils2 commits
Alex00071 commit
KameraZhao1 commit
louisboii7471 commit
Nael-Nathanael1 commit
epsimatic1 commit
woahitsraj1 commit
jacobbinnie1 commit
matthewwynne1 commit
What Bridgeplay itself adds
- The Mac app and Setup Assistant, which installs Rosetta, downloads Apple’s graphics files and the engine, checks each download against Bridgeplay’s signature, and walks you through Steam sign-in and the macOS permission prompts.
- Updates for the app, its patch in Steam and the engine, including re-patching Steam after Steam updates itself.
- Per-game settings in Steam’s Properties window, plus per-game fixes for specific games.
- The free WineCX engine package, pinned by hash and patched so the Steam bridge loads, and the DLSS-to-MetalFX routing, frame generation, High Resolution switch and controller layer described above.
- One-tap game reports that feed the compatibility list.
What comes from upstream
- NotProton (NotProtonNot and contributors): the idea and the code for running Steam Play inside Mac Steam. The Steam hooks, the Steam Play interface patches, the run script and the steamclient bridge all started as their work. Runtime names inside Bridgeplay, such as
notproton.dylib, still carry NotProton’s name. - Leon Seemann: NotProton-WineHQ, the fork Bridgeplay came from, which added a free WineHQ engine.
- CodeWeavers and the Wine project: Wine itself, and the CrossOver changes in WineCX (msync and the hooks D3DMetal needs). CodeWeavers is the biggest contributor to Wine.
- dappermint: the WineCX rebase onto upstream Wine and the winecx-gptk build Bridgeplay’s engine uses.
- Apple: D3DMetal and MetalFX in the Game Porting Toolkit, plus Rosetta 2 and Metal.
- Valve: Steam, and the Proton pieces
lsteamclientand steam-helper that the Steam bridge is ported from. - 3Shain (DXMT), Gcenx (DXVK-macOS and the WineHQ builds), the Khronos Group (MoltenVK), the SDL project, Dobby and Sparkle.
- sn0wst0rm: the DualSense Bluetooth bridge, Steam rumble forwarding and game-mode host that earlier Bridgeplay versions shipped.
NotProton in turn thanks the people who worked on the same idea before it, among them Nat Brown’s Kaon, mont127’s Neutron and Gio’s work on Steam Play in Mac Steam. [5]
Sources
- NotProton: README (checked 29 October 2026)
- Bridgeplay: README, How it works and Credits (checked 29 October 2026)
- Bridgeplay: docs/ARCHITECTURE.md (checked 29 October 2026)
- Bridgeplay: docs/WINECX.md (checked 29 October 2026)
- Bridgeplay: docs/UPSTREAM.md, the NotProton-WineHQ and NotProton READMEs kept for history (checked 29 October 2026)