Aller au contenu
Toutes les notes

9 min de lecture

Highball : jouer aux jeux Windows sur Apple Silicon, en toute honnêteté

Comment Highball fait tourner les jeux Windows sur les Mac Apple Silicon : le moteur Wine, les bouteilles, les moteurs de rendu par jeu et une base de compatibilité ouverte. Ce qui marche, ce qui ne marchera jamais, et comment l'installer et l'utiliser.

Faire tourner des jeux Windows sur un Mac pose toujours la même question, et ce n'est jamais « est-ce que Wine démarre ? ». C'est « est-ce que mon jeu va tourner, avec quels réglages, et est-ce que je le saurai avant ou après avoir téléchargé 80 Go ? ». Highball est une application macOS et un outil en ligne de commande, gratuits et open source, créés par Gauthier Piarrette, qui répondent d'abord à cette question puis installent tout pour vous.

Cette note explique ce qu'est Highball, comment il fonctionne en interne, et comment l'installer et l'utiliser.

ÉlémentDétails
QuoiApplication macOS native (SwiftUI) et un CLI qui fait tout ce que fait l'application
CompatibleApple Silicon, macOS 14 ou plus récent
PrixGratuit, sans offre payante prévue
LicenceApplication et CLI en GPL-3.0, données de compatibilité en CC0
LanceursSteam et Epic d'emblée, d'autres avec le moteur Wine 11
StatutBêta, notarisée, mise à jour automatique
LiensSite · GitHub · Base de données

#Le problème qu'il résout

Un jeu Windows parle aux API de Windows et dessine avec DirectX. macOS n'offre ni l'un ni l'autre, et Apple Silicon ajoute une architecture de processeur différente par-dessus. Faire tourner un jeu revient à empiler trois traductions : Rosetta 2 pour le code x86, Wine pour les appels système Windows, et une couche graphique qui transforme Direct3D en Metal.

Les outils pour chaque couche existent déjà. La difficulté, c'est de choisir la bonne combinaison pour chaque jeu et de savoir à l'avance si cela fonctionnera. Jusqu'ici, les options étaient un produit payant (CrossOver), des configurations Wine faites à la main, ou des surcouches communautaires comme Whisky, archivé en 2025. Highball est conçu pour éviter ce qui fait s'essouffler ces projets : il ne fork pas Wine, il n'héberge pas ses propres binaires de moteur, et sa partie la plus précieuse, les données de compatibilité, est publique.

#Comment ça marche, du téléchargement au jeu

Tracé du diagramme

  1. Installation. Vous glissez l'application dans Applications et appuyez sur Get started. Highball installe Rosetta 2 s'il manque.
  2. Moteur. Il télécharge un moteur Wine assemblé à partir de versions amont figées et le vérifie avec une somme de contrôle SHA-256 enregistrée avant de l'utiliser.
  3. Bouteille. Il crée un environnement Windows sur votre propre disque. Aucune licence Windows ni machine virtuelle n'est nécessaire.
  4. Lanceur. Vous installez Steam pour Windows en un clic, connectez votre compte Epic, ou utilisez un installeur Windows que vous possédez déjà. Les environnements d'exécution courants comme .NET et Visual C++ s'installent aussi en un clic.
  5. Verdict. Chaque jeu de votre bibliothèque affiche ce que la base ouverte sait de lui. Quand un correctif vérifié existe, Highball l'applique.
  6. Jouer. Le lancement utilise le moteur de rendu recommandé par la base pour ce jeu, ainsi que la synchronisation en processus plus rapide (msync) quand le jeu la supporte.

#Sous le capot : moteurs, bouteilles, rendus et recettes

L'application et le CLI sont de fines couches au-dessus d'une bibliothèque Swift commune appelée HighballKit. Quatre idées portent toute la conception.

Tracé du diagramme

Moteur. Un ensemble comprenant Wine, ses bibliothèques d'exécution et les surcouches de rendu, rangé dans engines/<id>. Les moteurs sont décrits dans un manifeste et récupérés depuis des versions amont figées et vérifiées. Quand un jeu a besoin d'un correctif que personne ne distribue encore, comme une modification de MoltenVK pour Red Dead Redemption 2, le correctif et son script de build vivent dans le dépôt, le build est publié comme fichier de release vérifié, et le correctif est proposé en amont. Mettre à jour un moteur, c'est une pull request JSON.

Bouteille. Un WINEPREFIX standard accompagné d'un fichier bottle.json qui le décrit. C'est l'environnement Windows dans lequel vit un jeu.

Rendu. Chaque couche de traduction graphique est une surcouche de dossier choisie au lancement via WINEDLLPATH_PREPEND. Changer de moteur de rendu pour un jeu ne reconstruit donc rien.

Recette. Une liste déclarative d'étapes JSON (installeur, registre, winetricks, mode de synchronisation, rendu, épinglage, copie, fichier, note) appliquée à une bouteille. « Steam a besoin de sync: none » ou « ce jeu a besoin de DXVK », ce sont des données, pas du code, et tout le monde peut les réutiliser.

#Les quatre moteurs de rendu

RenduCe qu'il traduitÀ savoir
WineD3DDirect3D vers OpenGLLa solution de repli intégrée à Wine
DXVKDirect3D 9, 10 et 11 vers Vulkan, puis MoltenVK vers MetalCertains correctifs se situent dans la couche MoltenVK
DXMTDirect3D 10 et 11 directement vers MetalOpen source, par 3Shain
D3DMetalDirect3D 11 et 12 vers MetalFait partie du Game Porting Toolkit d'Apple ; vous acceptez sa licence explicitement et Highball ne le redistribue jamais

#Mon jeu va-t-il tourner ? La base ouverte

C'est le cœur du projet. Chaque jeu porte l'un de quatre verdicts, et ils ne sont jamais mélangés :

  • Vérifié : testé à la main sur du vrai matériel Apple Silicon.
  • Signalé : résultats remontés en amont ou par la communauté.
  • Prédit : déduit des rapports ProtonDB croisés avec les données anti-triche.
  • Bloqué : impossible à faire tourner, en général à cause d'un anti-triche noyau.

Au moment où j'écris, le site recense 16 jeux vérifiés à la main, 19 signalés en amont, 77 issus du consensus communautaire, 41 marqués impossibles et plus de 12 000 prédictions. Chaque affirmation indique sa source et sa date, et les recettes vérifiées stockent un champ lastVerified (moteur, version de macOS, puce) pour que les données périmées soient visibles au lieu d'être fausses en silence.

Quelques exemples concrets tirés du projet :

  • Portal 2 se figeait à chaque chargement de carte. La cause a été identifiée dans un bug de MoltenVK sur le chemin HDR du moteur Source ; la recette désactive désormais le HDR automatiquement et le jeu tourne à environ 210 fps.
  • Cyberpunk 2077 tourne entre 60 et 82 fps sur un M5 avec D3DMetal et FSR 2.1.
  • Red Dead Redemption 2 est jouable sur un M1 Pro après un correctif MoltenVK qui est maintenant une pull request en amont.

Les données curées sont en CC0, les prédictions dérivées de ProtonDB en ODbL 1.0, et les données anti-triche viennent d'AreWeAntiCheatYet sous licence MIT. Vous pouvez parcourir la base avant d'installer quoi que ce soit.

#Installer et utiliser Highball

#Prérequis

Un Mac Apple Silicon (M1 ou plus récent) sous macOS 14 ou ultérieur, quelques gigaoctets libres pour le moteur et le lanceur, plus l'espace nécessaire à vos jeux.

#1. Installer l'application

Téléchargez le fichier notarisé Highball.dmg et glissez-le dans Applications, ou passez par Homebrew :

bash
brew install --cask gauthierpiarrette/highball/highball

#2. Lancer la première configuration

Ouvrez Highball et appuyez sur Get started. Soyez patient au premier lancement : le moteur pèse quelques centaines de mégaoctets et Steam décompresse son propre client d'environ 235 Mo sous Rosetta, comptez donc 15 à 25 minutes. Une barre de progression en bas de la fenêtre affiche l'étape en cours, le temps écoulé et la durée habituelle. Si tout se bloque, relancez l'application : elle reprend là où elle s'était arrêtée. Ensuite, les lancements sont instantanés.

#3. Ajouter vos jeux

Choisissez d'où viennent vos jeux :

  • Steam : installe Steam pour Windows en un clic. Vous vous connectez avec votre compte habituel et retrouvez votre bibliothèque.
  • Epic : connectez votre compte et votre bibliothèque se lance via le client open source Legendary.
  • Autre chose : exécutez un installeur Windows que vous possédez, par exemple un installeur hors ligne GOG sans DRM.

#4. Vérifier le verdict, puis jouer

Chaque jeu de la grille affiche sa source et son verdict. Ouvrez un jeu pour voir le moteur de rendu recommandé et le correctif que Highball appliquera. La limite d'images par seconde et la compilation asynchrone des shaders sont à un interrupteur près si un jeu saccade.

#Clavier et fichiers

  • Cmd+C, Cmd+V et Cmd+A fonctionnent dans les applications Windows car Commande est associée à Ctrl, et Option à Alt pour que les raccourcis de jeu basés sur Alt continuent de marcher. Vous pouvez revenir au comportement par défaut de Wine pour chaque environnement dans Réglages, puis Environnements.
  • Tout est rangé dans ~/Library/Application Support/Highball/. Rien n'est écrit dans /usr ou /Library, donc supprimer ce dossier suffit à tout désinstaller.
  • Pas de compte et pas de télémétrie. Highball ne demande aucune connexion et n'envoie rien.

#Utiliser le CLI

Si vous préférez le terminal, le CLI fait tout ce que fait l'application. Clonez l'application et la base côte à côte, compilez, puis créez une bouteille avec la recette Steam :

bash
git clone https://github.com/gauthierpiarrette/highball && cd highball
git clone https://github.com/gauthierpiarrette/highball-db ../highball-db
swift build -c release

# installer le moteur décrit dans le manifeste
.build/release/highball engine install spike/engine-manifest.json

# optionnel : accepter la licence Apple pour activer D3DMetal
.build/release/highball engine accept x64-sikarugir10.0_6-r2 apple-gptk-license-2023-08-17

# créer une bouteille avec la recette Steam et la lancer
.build/release/highball bottle create play --recipe steam
.build/release/highball run play Steam

Lancez toutes les commandes depuis la racine du dépôt highball : les chemins des recettes et de la base sont résolus par rapport au dossier courant, avec highball-db attendu comme dossier voisin.

#Prise en charge des lanceurs

LanceurStatut
SteamFonctionne avec le moteur par défaut
Epic GamesFonctionne via Legendary
RockstarConnexion possible, GTA V et Red Dead Redemption 2 tournent avec le moteur Wine 11
EA appConnexion possible, Les Sims 4 tourne avec le moteur Wine 11
Ubisoft Connect, Battle.netLa fenêtre de connexion s'affiche, aucun jeu confirmé pour l'instant
GOG GalaxyLa fenêtre reste noire ; utilisez plutôt les installeurs hors ligne GOG

Le moteur Wine 11 est compilé à partir de l'arborescence source de CrossOver 26.3. Highball le propose quand un jeu en a besoin, et vous pouvez y basculer un environnement dans les Réglages.

#Ce qui ne marchera jamais : l'anti-triche noyau

Des jeux comme Valorant, Fortnite, Destiny 2 et Call of Duty chargent des pilotes noyau Windows pour leur anti-triche. Aucune couche de compatibilité ne peut les fournir, sur aucun Mac, dans aucune application. Highball marque ces jeux comme bloqués avant que vous les téléchargiez et renvoie vers une explication détaillée, au lieu de vous laisser le découvrir après une longue installation.

#Contribuer

  • Partager un résultat de jeu : après avoir joué, lancez highball report <bottle> "<title>" --rating N. Cela ouvre un rapport pré-rempli sur highball-db, et les rapports acceptés sont intégrés par la CI.
  • Signaler un bug de Highball : utilisez Report a Problem dans le menu Highball, qui joint les infos système et le journal.
  • Proposer une recette : ouvrez une pull request sur highball-db/recipes avec la sortie du CLI jointe.
  • Mettre à jour un moteur : soumettez une pull request sur le manifeste avec une note de vérification.

#Pourquoi je pense que la conception est la bonne

La plupart des outils de compatibilité traitent « est-ce que ça tourne » comme un savoir tribal éparpillé sur des forums. Highball en fait des données versionnées, lisibles par machine, en CC0, avec la provenance de chaque ligne, et garde la couche moteur remplaçable au lieu de tout miser sur une seule version de Wine. C'est le même principe qui rend n'importe quel système maintenable : séparer les données du code, figer et vérifier ses dépendances, et être explicite sur ce qui échoue. Le projet reste aussi généreux envers l'écosystème sur lequel il repose : les bugs remontent en amont, les liens de dons pointent vers Gcenx et DXMT, et il recommande ouvertement CrossOver si vous voulez un support payant.

#FAQ

  • Highball est-il vraiment gratuit ?

    Oui. L'application et le CLI sont en GPL-3.0 et les données de compatibilité en CC0. Pas d'offre payante, pas de compte et pas de télémétrie.

  • Faut-il une licence Windows ou une machine virtuelle ?

    Non. Highball utilise Wine pour exécuter les programmes Windows directement sur macOS, avec Rosetta 2 pour le code x86 et une couche qui traduit Direct3D en Metal.

  • Est-ce compatible avec les Mac Intel ?

    Non. Il faut un Mac Apple Silicon sous macOS 14 ou plus récent.

  • Dois-je racheter mes jeux ?

    Non. Vous vous connectez à Steam pour Windows ou à votre compte Epic et jouez à la bibliothèque que vous possédez déjà.

  • Pourquoi Valorant ou Fortnite ne fonctionnent-ils pas ?

    Ils reposent sur des pilotes anti-triche au niveau du noyau qu'aucune couche de compatibilité ne peut fournir sur macOS. Highball les marque comme bloqués avant le téléchargement.

  • Comment tout désinstaller ?

    Supprimez l'application et le dossier ~/Library/Application Support/Highball/. Rien n'est installé ailleurs.

#Liens

Ça vous a parlé ?

Conversation

Vous construisez quelque chose de ce genre ?

Dites-moi sur quoi vous travaillez. Je réponds sous un jour.

M'écrire