오락실을 찾을 때 가장 가까운 장소가 언제나 첫 번째 후보가 되는 것은 아니다. 예를 들어 자주 하는 게임이 정해져 있다면, 몇 분 더 이동하더라도 그 게임이 있는 곳부터 살펴보게 된다. 친구와 만나기로 한 지역까지 정해졌다면 거리순 목록만으로는 비교할 항목이 여전히 많다.
Beta에서는 오락실이 150곳을 넘으면서 이런 선택을 매번 목록을 읽는 일로 해결하기 어려워졌다. 게임과 지역으로 후보를 줄이고, 자주 쓰는 선택은 다음 접속에도 이어서 사용하도록 필터와 홈 설정을 마련했다.
필터는 전체 목록에서 정한 조건에 맞는 항목을 골라내는 기능이다. Alpha의 게임 선택도 같은 목적이었다. 이용자는 먼저 원하는 게임을 고른 뒤, 그 게임을 가진 장소들의 거리를 비교할 수 있었다. Beta에서는 목록이 커진 만큼 게임뿐 아니라 활동할 지역도 선택에 사용할 필요가 있었다.
이때 중요한 것은 조건이 적용됐다는 사실을 이용자가 이해하는 것이다. 결과가 적다고 데이터가 없는 것은 아닐 수 있다. 선택한 게임이나 지역 때문에 일부 장소가 빠졌다면, 조건을 확인하고 바꿀 수 있어야 다음 탐색으로 이어진다.
Alpha의 게임 선택 화면(2023-06-17 코드 재현 · 합성 예시 데이터). Beta에서는 선택한 조건을 다음 접속에도 보관하도록 확장했다.
자주 하는 게임과 주로 방문하는 지역은 사이트를 열 때마다 달라지지 않는다. 그런데 접속할 때마다 초기 상태로 돌아간다면, 이용자는 이미 정한 선택을 다시 입력해야 한다. 선택값을 기억하는 기능은 이 반복을 줄이기 위한 것이다.
필터와 홈 목록의 표시 설정은 사용 중인 브라우저에 저장한다. 서버의 계정 정보와 연결하는 방식보다 적용 범위가 작지만, 같은 브라우저에서 다시 찾는 상황에는 필요한 선택을 그대로 불러올 수 있다.
브라우저가 종료된 뒤에도 간단한 값을 보관하는 기능이 localStorage다. 게임 필터는 선택 목록을 여기에 저장하고, 다시 열었을 때 읽어 체크 상태를 복원한다. 게임을 추가하거나 해제하면 저장값도 함께 바꾼다.
예를 들어 같은 사이트를 두 탭에서 열었다면 한쪽의 선택이 바뀐 뒤 다른 쪽에는 이전 목록이 남을 수 있다. 이를 줄이기 위해 다른 탭의 저장값 변경을 알리는 storage 이벤트를 받아 선택을 갱신한다. 저장하는 것은 이용자의 조건이며, 어떤 게임이 실제로 설치돼 있는지는 서비스의 오락실 데이터에서 읽는다.
2023-12-25 Beta 코드 재현 · 합성 예시 데이터. 선택한 게임을 가진 장소만 남는다.
같은 조건으로 다시 방문하면 게임과 지역을 고르는 일을 처음부터 반복할 필요가 줄어든다. 홈 목록의 표현도 함께 조정할 수 있어, 장소 수가 늘어난 뒤에도 자주 쓰는 방식으로 목록을 살펴볼 수 있다.
다만 이 값은 브라우저에 속한다. 브라우저 데이터를 지우거나 다른 기기로 접속하면 선택을 다시 해야 할 수 있다. 현장의 게임 정보가 잘못됐다면 필터 결과도 영향을 받으므로 제보와 정보 갱신은 계속 필요하다. 설정 저장이 재방문에 얼마나 영향을 주는지는 이용 기록을 통해 별도로 살펴봐야 한다.
참고: 뮤즈캣 엔지니어링 기록.