- Wenn Spiele auf einem MacBook im Vollbildmodus ausgeführt werden, rendern die meisten Spiele aufgrund des Problems mit der Display-Notch unscharf
- Der Mechanismus des Systems zur Auswahl der Auflösung berücksichtigt den Notch-Bereich nicht und führt dadurch zur Auswahl eines falschen Ausgabebereichs
- Die Auswahl einer 16:10-Auflösung ist ein provisorischer Workaround, die eigentliche Ursache liegt jedoch in Apples API-Design und fehlender Anleitung
- Das Problem lässt sich in bekannten Spielen (Shadow of the Tomb Raider, No Man’s Sky usw.) reproduzieren; einige neuere Spiele (Cyberpunk 2077) behandeln es korrekt
- Apple sollte die Entwicklerhinweise und den Support durch Updates an HIG und API verbessern
Problem: Ursache für unscharfes Rendering bei Mac-Vollbildspielen
- Dieses Problem wurde Apple seit September 2023 als Issue FB13375033 gemeldet
- Wenn Spiele auf einem MacBook-Display im Vollbildmodus ausgeführt werden, berücksichtigen die meisten Spiele den Notch-Bereich nicht korrekt, wodurch Rendering-Fehler entstehen
- Viele Spiele übernehmen die vom System unterstützte Liste der Auflösungen und wählen daraus die erste aus (die Auflösung des gesamten Display-Bereichs), obwohl der in AppKit tatsächlich nutzbare Vollbildbereich auf den Bereich unterhalb der Notch beschränkt ist
- Gibt ein Spiel in der vollen Display-Auflösung aus, ist der tatsächlich nutzbare Zeichenbereich kleiner, sodass das Bild vertikal gestaucht wird und es zu Unschärfe kommt
Struktur der Bereiche eines Mac-Displays
- Ein Mac-Display mit Notch hat drei Hauptbereiche
- die vollständigen Display-Grenzen (einschließlich Notch und Menü)
- die Safe Area (unterhalb der Notch)
- den in AppKit nutzbaren Vollbildbereich (unterhalb der Menüleiste)
- In der von der Funktion
CGDisplayCopyAllDisplayModes zurückgegebenen Auflösungsliste sind die volle Display-Auflösung und die Auflösung unterhalb der Menüleiste (meist im 16:10-Format) vermischt enthalten
- Die meisten Spiele verwenden den ersten Eintrag der Liste (den Vollbildbereich) und erzeugen dadurch eine ungenaue Ausgabe
- Beispiel: Shadow of the Tomb Raider startet standardmäßig mit der vollen Display-Auflösung (3456x2234), der tatsächlich nutzbare Zeichenbereich beträgt jedoch 3456x2160 (durch den Unterschied von 74 Pixeln wird das Bild gestaucht und unscharf gerendert)
Solution: Korrekte Auflösungsauswahl und temporäre Ausweichlösung
- Nutzer: Wenn ein Vollbildspiel auf einem Mac-Display mit Notch ausgeführt wird, ist es wichtig, manuell eine 16:10-Auflösung auszuwählen (das Spiel passt dies nicht automatisch an)
- Entwickler: Mit der Eigenschaft
safeAreaInsets von NSScreen sollte die Auflösungsliste etwas präziser gefiltert werden
- Es wird ein Algorithmus in Code bereitgestellt, der nur Auflösungen herausfiltert, die den Kriterien der Safe Area entsprechen (mit dem Nebeneffekt, dass einige Auflösungen wie 4:3 zu stark herausgefiltert werden)
- Im Kern ist jedoch eine Verbesserung durch Apple erforderlich
Affected Games: Typische betroffene Spiele und aktueller Stand
- Shadow of the Tomb Raider, Control Ultimate Edition, No Man’s Sky, Riven, Stray usw. zeigen meist gestauchtes und unscharfes Rendering aufgrund falscher Standard-Auflösungen
- Control: legt die Auflösung selbst willkürlich fest, sie stimmt jedoch nicht mit der tatsächlichen Mac-Auflösung überein
- No Man’s Sky: bietet sowohl falsche Seitenverhältnisse als auch Safe-Area- und Non-Safe-Area-Auflösungen an
- Riven, Stray: verwenden standardmäßig gestauchte Auflösungen beim Rendering
- Cyberpunk 2077 wählt korrekt eine 16:10-Auflösung (die interne Filtermethode ist nicht bekannt)
- World of Warcraft: kann über eine Legacy-API bis in den Notch-Bereich zeichnen, daher funktioniert die volle Auflösung korrekt
What Apple could do: Warum Apple handeln sollte
- In der HIG-Dokumentation (Human Interface Guidelines) sollten Hinweise und Regeln zur Auflösungsbehandlung für Displays mit Notch ergänzt werden
- Für AppKit/Cocoa ist ein Update von
CGDisplayMode nötig, damit sich Auflösungen leichter filtern lassen
- Es wird eine neue API speziell für Spieleoptimierung benötigt, um Auflösungslisten und Boilerplate zu vereinfachen
- Entwicklern sollte empfohlen werden, statt einer direkten Auflösungsabfrage entweder eigene Auflösungslisten zu erzeugen oder ein „Render-Scale“-Verfahren zu verwenden
- Wenn solche Verbesserungen umgesetzt werden, sollten zugleich auch Apples offizielle Dokumentation und Beispielcode aktualisiert werden
Noch keine Kommentare.