우주선 평점을 매기기 위해 사용자 여러분의 플레이 기록을 분석하고 있습니다.
DB에는 '우주선 해시'로만 우주선을 구분하게 되어 있어서, 이 해시 값이 실제로 어떤 우주선에 대응되는지를 알아야 하는데요.
문제는 게임을 실행하는 운영체제마다 '우주선 해시'가 달라질 수 있다는 점입니다! 😕
바로 line endings 문제인데요.
Windows에서는 CRLF(\r\n)을 사용하고 Android와 macOS와 Linux에서는 LF(\n)을 사용하죠.
그래서 같은 우주선을 플레이했어도 어디서 플레이했느냐에 따라 다른 우주선으로 분류될 가능성이 있었습니다.
이것을 고려해서 이들이 하나의 우주선 플레이 기록으로 묶이도록 했습니다.
그런데... 전체 우주선 개수가 600개를 조금 넘는데 행이 1000개가 넘게 생겼고, 그 중 700개 이상은 우주선 이름을 매치하지 못했습니다.
제가 알고 있던 우주선 해시와 다른 해시가 기록된 것이죠.
왜일까요...??
몇 시간을 쏟아 문제를 분석하다가 엄청난 사실을 발견했습니다! 🩺
애초에 Unity 클라이언트에서 DB에 우주선 해시를 기록할 때, 잘못된 내용으로부터 해시를 뽑고 있었던 거에요! 😱
셔터가 포함된 우주선에서만 이러한 현상이 나타났습니다...
5월의 PlayX4 전시 전부터 지금까지 쭉 이렇게 잘못된 해시로 기록하고 있었다니...
이러니까 제가 가지고 있는 우주선 목록과 해시가 안 맞죠.
다행히도 하위호환성을 지키면서 수정할 수 있는 버그였습니다... 후...
앞으로는 제대로 된 내용으로부터 해시를 뽑으면서, 과거의 잘못된 내용에서 뽑은 해시도 같은 우주선으로 인식하게 만들 수 있다는 소리이죠.
그런데, 이 패치를 적용해도 여전히 행 수가 800여 개였고, 그 중 300여 개는 이름 매치에 실패했습니다.
아직도 뭐가 남았을까요?
몇 시간을 더 쏟아 또 한 번 문제를 발견했습니다! 🔔
도전 모드에서는 우주선이 매번 다르게 회전되어 등장하는데, 이 회전 상태에 따라 우주선 해시가 변할 수 있던 문제였어요. 😨
스펙 상으로는 변하지 않아야 합니다...
이것도 5월부터 지금까지 계속 모르고 있었던 버그네요...
이 버그 때문에, 같은 우주선에 대한 플레이라도 서로 다른 우주선을 플레이한 것처럼 기록되었었죠.
다행히 이 버그도 하위호환성을 지키면서 수정할 수 있었습니다!

드디어...! 전체 행의 개수가 565개가 되었고, 그 중 16개 빼고는 모두 이름을 매치할 수 있었습니다!! 😊
남은 16개는 현재 1.8.4 도전 모드에서 등장하지 않는 우주선들입니다.
전체 600여개보다 행 수가 모자란 이유는 70개 가량의 Insane 우주선들을 거의 아무도 플레이하지 못했기 때문입니다.
이제 우주선의 난도를 데이터에 기반해 매길 수 있겠군요!!
---
우주선을 사람들이 처음 깰 때 걸렸던 런타임 시간 기록의 중앙값을 난도 측정의 핵심 지표로 사용합니다.

가로 축은 런타임 시간 기록 중앙값을 바탕으로 한 로그 스케일의 '우주선 평점'이고, 세로 축은 기존 1.8.2(PlayX4 때 전시한 버전)에서의 도전 난도입니다.
대체로 난도가 오를수록 해결에 요구되는 런타임 시간도 오르지만, 그 경계가 겹치는 구간이 많이 보이네요...!
목표는 이러한 구간을 잘게 자르고 사용자의 실제 실력에 가장 잘 맞는 우주선들을 추천하는 것에 있습니다.
게다가 위 그래프에는 나타나지 않지만, 사용자의 이탈률이나 피지컬적인 요소 등도 분석하고 있습니다.
여러분이 쾌적하게 게임을 즐기실 수 있도록 경험 설계에 만전을 기하겠습니다!
이전 포스트
댓글 0개
첫 번째 댓글을 작성해 보세요!