1:22 · broadcast N² · AOI · view radius · boss fight

보스가 뜨면 왜 렉이 걸릴까?

이 영상에 나오는 용어 14개.

광역기
한 번에 여러 대상을 맞히는 범위 공격이다. 피격 판정과 결과 알림이 피격 인원과 관전 인원의 곱만큼 생긴다.
다운링크
클라이언트가 서버로부터 받는 방향의 회선이다. 수신량이 회선 속도를 넘으면 느린 회선부터 밀리고 끊긴다.
델타 압축
이전에 보낸 상태와 비교해 바뀐 값만 보내는 방식이다. 패킷 크기를 줄인다.
브로드캐스트
한 플레이어의 상태 변화를 그 플레이어를 볼 수 있는 다른 플레이어 모두에게 복제해서 보내는 것이다. 인원이 N이면 한 명의 변화가 N − 1개의 갱신이 된다.
시야 반경
AOI의 크기를 정하는 거리다. 반경이 2배면 면적은 4배, 보이는 인원은 밀도가 고르면 약 4배가 된다.
아웃바운드
서버에서 클라이언트 방향으로 나가는 트래픽이다. 브로드캐스트가 늘면 인바운드보다 훨씬 크게 증가한다.
어그로
몬스터가 누구를 공격할지 정하는 위협 수치다. 보스는 참가자 N명의 위협 목록을 계속 다시 계산한다.
인스턴스 · 채널 분리
같은 지역을 여러 사본(채널, 인스턴스)으로 나눠 한곳에 모이는 인원을 줄이는 방식이다. 보스전을 별도 서버나 스레드로 떼는 것은 부하를 격리할 뿐 인원은 줄이지 않는다.
존 (zone)
한 서버 프로세스나 스레드가 담당하는 게임 세계의 구역이다. 보스가 있는 존에 인원이 몰리면 그 존 서버만 부하가 튄다.
틱
서버가 게임 세계를 한 번 갱신하는 주기다. 20Hz면 50ms마다 한 번이고, 이 시간이 한 틱의 처리 예산이다.
AOI (Area of Interest)
플레이어 주변에서 서버가 정보를 보내 줄 범위다. 보통 시야 반경으로 정하고, 그리드로 나눠 주변 대상을 찾는다.
LOD (Level of Detail)
거리나 중요도에 따라 상세도를 낮추는 기법이다. 서버는 갱신 빈도를, 클라이언트는 그래픽 품질을 낮춘다.
N × (N − 1)
N명이 모두 서로를 볼 때 한 틱에 필요한 전송 수다. 인원의 제곱에 비례해서 늘어난다.
pps (packets per second)
초당 패킷 수다. 작은 패킷이 많을 때는 대역폭보다 pps가 먼저 NIC나 커널 처리 한계에 걸리기도 한다.