- MacBook에서 전체 화면 게임 실행 시, 대부분의 게임이 디스플레이 노치 문제로 인해 흐릿하게 렌더링됨
- 시스템의 해상도 선택 메커니즘이 노치 영역을 고려하지 않아, 잘못된 출력 영역 선택을 야기함
- 16:10 해상도 선택이 임시 방편이지만, 근본적으로 Apple의 API 설계 및 안내 부족이 원인임
- 대표적 게임들(Shadow of the Tomb Raider, No Man’s Sky 등)에서 문제 재현됨; 일부 최신 게임(Cyberpunk 2077)은 정상 처리
- Apple이 HIG 및 API 업데이트로 개발자 지침과 지원 개선 필요함
Problem: 맥 전체 화면 게임에서의 흐릿한 렌더링 원인
- 이 문제는 2023년 9월부터 FB13375033 이슈로 Apple에 제출되어 있음
- MacBook 디스플레이에서 게임을 전체 화면으로 실행하는 경우, 대부분의 게임이 노치(notch) 영역을 제대로 고려하지 않아 렌더링 오류가 발생함
- 많은 게임이 시스템에서 지원하는 해상도 목록을 받아 그 중 첫 번째(전체 디스플레이 영역 해상도)를 선택하지만, 실제로 AppKit에서 사용할 수 있는 전체 화면 영역은 노치 아래에 제한됨
- 게임이 전체 디스플레이 해상도로 출력할 경우, 실제 그릴 수 있는 영역이 더 작으므로 프레임이 세로로 압축되고 블러 처리 문제로 이어짐
맥 디스플레이의 영역 구조
- 맥 노치 디스플레이에는 세 가지 주요 영역이 있음
- 전체 디스플레이 경계(노치와 메뉴 포함)
- Safe area(노치 아래)
- AppKit에서 활용 가능한 전체 화면 영역(메뉴바 아래)
- CGDisplayCopyAllDisplayModes 함수가 반환하는 해상도 목록에는 전체 디스플레이 해상도와 메뉴바 아래 해상도(주로 16:10 비율) 가 혼재되어 있음
- 대부분의 게임이 목록의 첫 항목(전체 화면 영역)을 사용하여 부정확한 출력을 함
- 예시: Shadow of the Tomb Raider는 기본적으로 전체 디스플레이 해상도(3456x2234)로 시작하지만, 실제로 그릴 수 있는 영역은 3456x2160임(74픽셀 차이로 인해 화면이 압축되고 흐릿하게 렌더링됨)
Solution: 올바른 해상도 선택 및 임시 회피방안
- 사용자: Mac 노치 디스플레이에서 전체 화면 게임 실행 시, 16:10 해상도를 직접 선택하는 것이 중요함(게임이 자동으로 맞추지 않음)
- 개발자: NSScreen의 safeAreaInsets 속성을 이용하여 해상도 목록을 조금 더 정교하게 필터링 필요
- Safe area 기준에 부합하는 해상도만 걸러내는 알고리듬을 코드로 제공(4:3 등 일부 해상도가 과하게 필터링되는 부작용 있음)
- 본질적으로는 Apple 차원의 개선이 필요함
Affected Games: 대표적 영향 게임 및 처리 현황
- Shadow of the Tomb Raider, Control Ultimate Edition, No Man’s Sky, Riven, Stray 등 대부분이 잘못된 해상도 기본값으로 인해 압축 및 블러 렌더링 현상
- Control: 자체적으로 해상도를 임의로 지정하지만 실제 Mac 해상도와 맞지 않음
- No Man’s Sky: 올바르지 않은 비율과 safe area, non safe area 해상도를 모두 제공함
- Riven, Stray: 압축된 해상도로 렌더링 디폴트 적용
- Cyberpunk 2077은 16:10 비율로 정상 해상도를 선택(내부 필터링 방식 미공개)
- World of Warcraft: 레거시 API로 노치까지 그릴 수 있어 전체 해상도 적용이 정상임
What Apple could do: Apple의 대처 필요성
- HIG(Human Interface Guidelines) 문서에 노치 디스플레이 관련 해상도 처리와 안내 추가 필요
- AppKit/Cocoa에서 해상도 필터링을 손쉽게 할 수 있도록 CGDisplayMode 업데이트 요구
- 게임 최적화 전용 새 API 설계 필요(해상도 리스트 및 보일러플레이트 해소)
- 개발자에게는 해상도 질의 대신 자체 해상도 목록을 산출하거나 “렌더 스케일” 방식 사용 권장 고려
- 이러한 개선 적용 시, Apple의 공식 문서와 샘플 코드 업데이트 병행 필요