Il rapporto tra Apple e il gaming è da sempre complicato, e un episodio lo riassume bene: alla WWDC 2025, CD Projekt RED presentò Cyberpunk 2077 come esempio di quanto fosse semplice portare un gioco su Mac, mostrando MetalFX Frame Interpolation e Denoising su un MacBook Air M4 a 60 fps. La patch promessa per l'autunno 2025 non è però mai arrivata, e oggi, a ottobre 2026, il gioco continua a usare la frame interpolation di AMD con risultati deludenti. Apple insiste sui porting nativi, ma il mondo dei giochi risponde ad altre logiche e segue Sony, NVIDIA e Microsoft.
La soluzione alternativa: GameToMac
Mentre Apple costruisce strumenti sofisticati come Game Porting Toolkit e Metal Shader Converter, c'è chi ha preso una strada diversa. GameToMac, progetto amatoriale di Marc Ibrahim nato per far girare Age of Empires IV al meglio, è diventato un prodotto commerciale a circa 20 euro all'anno. L'obiettivo è offrire un'applicazione plug & play che permetta di giocare a titoli Windows senza armeggiare con Wine, prefix e script. La libreria conta oggi 20 giochi, da Elden Ring a GTA V Enhanced, con nuovi arrivi al ritmo di uno al giorno.
Abbiamo chiesto a Ibrahim cosa succede quando si preme "Play". "GameToMac prepara le impostazioni e le correzioni di compatibilità, poi avvia il gioco tramite il suo launcher, di solito Steam", spiega. Sotto il cofano c'è un runtime Wine 11 modificato con fix e ottimizzazioni aggiuntive. La scelta architetturale chiave è l'isolamento: ogni gioco ha il suo ambiente, la sua installazione di Steam e le sue correzioni, permettendo di ottimizzare un titolo senza penalizzare gli altri.
Sul fronte grafico, GameToMac usa D3DMetal 3.0 per tradurre DirectX in Metal in tempo reale, con l'app nativa ARM64 ma Wine e D3DMetal ancora via Rosetta. Ibrahim sta però sperimentando con Wine ARM64 e FEX per rendere il progetto indipendente da Rosetta, che non sarà più utilizzabile con la prossima versione di macOS. La stabilità sorprendente deriva da fix specifici per ogni gioco: "Identifico il lavoro ripetuto inutilmente dagli strumenti e lo metto in cache, che sia codice generato, pipeline grafiche o informazioni richieste di frequente". Un esempio? In Age of Empires II: Definitive Edition, selezionare le unità causava un crollo di prestazioni perché lo stesso controllo veniva ripetuto migliaia di volte al secondo.