Loading...
  OR  Zero-K Name:    Password:   

Zero-K on MacOS (Native)

1 posts, 39 views
Post comment
Filter:    Player:  
sort
2 hours ago
I finally got Zero-K running natively on macOS with GPU acceleration!

Getting it to launch was one thing. Getting it to render properly, work with the lobby, support Steam login, and behave like a reasonably normal Mac application turned out to be a slightly bigger project.

The result is ZkMacOS. The tweaks involved are pretty experimental, so I’m releasing the macOS port in a permanent beta state. It works well enough for me to share, but please expect bugs and breakage.

This is an unofficial third-party client. It is not endorsed by or officially supported by the Zero-K developers. Please report port-specific issues on my GitHub repository rather than sending them upstream. If you decide to put Elo on the line and the client crashes, that risk is yours.

Performance


I’ve been testing this on my M3 MacBook Pro, where I get:

• 40–60 FPS on the Low preset with Full Retina rendering.
• 60–90 FPS on the Low preset with UI-only Retina rendering.

UI-only Retina keeps the text and interface crisp while rendering the game world at standard resolution. Full Retina renders the world at the higher resolution too. Both modes are configurable, so you can choose how much you care about sharp terrain versus having a few more frames.

Those numbers have been consistent in my testing, but they aren’t a promise about performance on every map, Mac, or enormous late-game battle.

The current build requires Apple Silicon and macOS 26 or newer.

Downloads and source code


GitHub repository, installation guide, and build instructions
Download the latest release

You can install through Homebrew or download the DMG and drag Zero-K into Applications. The README covers both methods, along with the macOS approval process. The app is not Developer ID signed or notarized, so macOS will probably have something to say about opening it.

The application is self-contained. You don’t need Wine, Rosetta, Mono, or a separately installed .NET runtime to play. It uses Zero-K’s own Chobby lobby, and Steam login is supported if you have Steam running.

As a small additional reassurance, here’s a VirusTotal scan of the .app. That scan is for the application, not the DMG. It’s an extra point of reference, rather than a guarantee of safety.

I’ve fully open sourced the work on this port, including the engine changes, lobby changes, launcher changes, and build tooling. All of the tweaks can be audited through the repositories linked on GitHub. If you don’t trust the prebuilt releases, you can compile your own .app using the documented build process.

There was also substantial OpenAI Codex assistance involved in putting this together. I’d rather be upfront about that. The source is available for review, and the permanent-beta warning is there for a reason.

A few Mac-specific features


I’ve added trackpad camera controls, since playing an RTS on a MacBook trackpad without them was not particularly pleasant:

• Two-finger movement pans the camera.
• Pinching zooms.
• Option + two-finger movement tilts the camera.
• Three-finger tilt is available, but disabled by default to avoid accidental palm gestures.
• Two-finger secondary clicks still issue right-click commands.

There are sensitivity controls, optional camera momentum, three Retina modes, and a native FPS counter. Fresh installations default to windowed mode, Low graphics, UI-only Retina, and an unlocked cursor.

There are still rough edges. In particular, the lobby can use far too much GPU time while idle, and some optional graphics effects and UI rendering paths need more work. I also haven’t thoroughly validated long multiplayer sessions or synchronization across platforms. Please keep that in mind before treating this as your daily ranked client.

Technical details


The main obstacle was the renderer. Recoil relies on OpenGL functionality that Apple’s OpenGL implementation doesn’t provide, and the engine doesn’t have a native Metal backend.

The current rendering path is:

Recoil OpenGL → Mesa Zink → Vulkan → Mesa KosmicKrisp → Metal

Zink provides the OpenGL implementation over Vulkan, and KosmicKrisp handles the Vulkan-to-Metal side. That Metal 4 dependency is why the current build requires macOS 26 or newer.

So the engine runs natively as ARM64 code, but there is still graphics API translation involved. This isn’t a new Metal renderer for Recoil.

The port uses a custom Recoil build based on the actual engine release required by Zero-K, with macOS graphics integration and additional fixes for Retina sizing, framebuffer handling, water rendering, reflections, and input. CircuitAI also needed an Apple ARM64 calling-convention fix to get local AI games working.

Retina support required separating the resolution used for the game scene from the resolution used for text and UI. That gives us the UI-only mode without paying the full cost of rendering the entire world at Retina resolution. The presentation path still involves frame readback, so there’s room for improvement.

The lobby is a Chobby fork with the macOS settings integrated into it. Steam authentication is handled by a bundled ARM64 .NET helper using Steamworks.NET. Mono is still involved in building some shared launcher code, but it isn’t required on the player’s machine.

Finally, the app keeps its static resources inside the bundle and stores writable data under ~/Library/Application Support/Zero-K. Updating the application therefore preserves your settings and downloads. The central repository pins the component revisions and builds the app and DMG, while GitHub Releases feed a versioned Homebrew cask.

If anyone wants to audit the changes, improve the rendering path, or test on other Apple Silicon hardware, contributions and testing reports would be very welcome.
+1 / -0