게임 렉 백서 › 일부에게만 생기는 문제
백그라운드 창의 처리 제한 Background window throttling
원인 ID pt-background · 주 담당 게임개발팀·클라이언트 개발 · 함께 외부·외부
그림과 실험이 있는 원본 카드로 열기 →
클라이언트 창이 백그라운드에 있으면 게임·엔진·OS가 그 클라이언트의 프레임과 처리를 줄입니다. 받은 패킷을 제때 처리하지 못해 밀리거나 넘칩니다.
왜 게임 옵션이나 그래픽 드라이버의 백그라운드 프레임 제한(예: NVIDIA 드라이버는 초당 20~200 중에서 지정), 절전, 엔진의 백그라운드 정지 설정. OS도 앞에 있는 창(포그라운드)에 CPU·GPU를 우선 배정 → 그러면 프레임마다 처리하는 패킷 수가 줄어 대기열이 쌓이고 수신 버퍼가 넘치면 버려짐 → 화면에서는 창을 앞으로 가져오면 몰아서 나타나거나, 일부 NPC가 끝내 안 보임
증상 안 보임·유령 개체 , 몰아치기 , 접속 끊김
요인 정체, 손실
누가 겪나 같은 PC의 한쪽 클라만
언제 가만히 있다가, 항상
담당 주 담당 게임개발팀·클라이언트 개발 · 함께 외부·외부
게임개발팀 할 일 네트워크 수신은 게임 루프와 별도 스레드에서 계속, 백그라운드에서도 최소 처리량 보장, 엔진의 백그라운드 실행 설정(Unity는 runInBackground) 켜기.
외부 할 일 유저에게 그래픽 드라이버의 백그라운드 프레임 제한과 PC 절전 모드를 끄도록 안내.
수치 감각 Unity는 runInBackground 설정이 꺼져 있으면 창이 포커스를 잃는 순간 게임 루프가 멈춥니다. 수신을 그 루프에서만 하면 그동안 패킷이 전혀 처리되지 않습니다.
그래프에서는 끊겼다가 몰아서 · 클라이언트 프레임 간격, 프레임당 처리한 패킷 수
확인할 곳 같은 PC에서 한쪽 창을 앞에, 다른 쪽을 뒤에 두고 역할을 바꿔 가며 비교. PresentMon으로 두 프로세스의 프레임 간격을 재고 게임 쪽 로그가 있으면 창 포커스 상태와 프레임마다 처리한 패킷 수를 봄 이러면 맞음 백그라운드 창일 때만 프레임 간격이 크게 늘거나(드라이버 제한이면 설정한 프레임 수에 맞는 간격에서 평평해짐) 처리가 멈추고, 창을 바꾸면 문제도 다른 클라이언트로 옮겨 감 이러면 아님 앞에 있는 창에서도 똑같이 생기면 백그라운드 제한 탓이 아님. 창 위치와 상관없이 늘 같은 클라이언트만 이상하면 표시 옵션이나 버전 차이 확인 수단 유저 쪽 환경에서 확인
출처 Application.runInBackground Unity runInBackground 기본값은 false이며 이때 앱은 백그라운드에서 일시 정지 Manage 3D Settings (reference) — NVIDIA Control Panel Help NVIDIA Background Application Max Frame Rate: 백그라운드 게임의 최대 프레임을 초당 20~200으로 제한 Priority Boosts Microsoft Windows는 포그라운드 창의 프로세스 우선순위를 백그라운드 프로세스 이상으로 높임 PresentMon README Intel 윈도우 그래픽 앱의 CPU·GPU·디스플레이 프레임 시간을 앱별로 수집하는 도구
함께 보면 좋은 원인
같은 층: 일부에게만 생기는 문제
같은 증상(안 보임·유령 개체)의 다른 층 원인
그림과 실험이 있는 원본 카드 보기