무료 퍼즐은 언제 지게 만들까: 블록 블라스트에서 발견된 광고 단가 규칙

광고 단가와 최고 기록을 함께 보고 풀 수 없는 조각을 요청하는 규칙이 블록 블라스트에서 발견됐습니다. 공개 코드의 경계값 검사와 아이폰 시험 영상을 구분해 살펴봅니다.

블록 블라스트 시험 영상의 막힌 보드와 남은 가로 막대, 놓을 곳 없는 마지막 블록 문구
시험 영상 기반 편집 이미지. 화면: Ayo Omolewa. 로고: Hungry Studio.

무료 블록 퍼즐에서 최고 기록을 넘긴 뒤 갑자기 판이 막혔다면, 놓는 순서만 되짚어서는 설명되지 않을 수 있다. 데이터 과학자이자 앱 개발자인 아요 오몰레와(Ayo Omolewa)는 10월 15일 공개한 블록 블라스트 분석에서, 준비된 광고의 단가가 높아지면 풀 수 없는 조각 묶음을 요청하는 규칙을 찾아냈다. 분석 대상은 안드로이드 10.8.2와 아이폰 7.4.9다.

여기서 말하는 ‘풀 수 없다’는 단순히 어렵다는 뜻이 아니다. 조각을 놓는 순서와 위치, 그 과정에서 줄이 지워지는 경우까지 따져도 세 조각을 모두 놓을 방법이 없는 상태다. 게임은 그런 묶음을 만드는 알고리즘을 따로 두고 있었다.

광고가 비싸지면 어떤 조건에서 판을 막을까

원문이 분석한 RewardHighValueAdHarvestTrait 규칙은 세 조건을 함께 확인한다. 최근 보상형 광고 세 번에서 모두 보상을 받았는지, 지금 재생할 수 있는 보상형 광고의 단가가 직전 광고의 3.5배 이상인지, 점수가 판을 시작할 때의 최고 기록보다 1,000점 이상 높은지다. 보상형 광고는 끝까지 보면 부활 같은 혜택을 주는 광고를 말한다.

모두 맞으면 다음 조각을 정하는 목록을 ‘치명적 퍼즐’ 생성기로 바꾼다. 이 규칙이 비교하는 것은 이용자의 손놀림이나 빈칸 활용 능력이 아니라 광고 시청 이력과 단가, 최고 기록 대비 점수다. 원문이 공개한 다운로드 모듈을 합성 입력으로 실행한 검증 스크립트는 28개 검사를 통과했다. 광고 단가가 3.5배 바로 아래이거나 점수가 기준보다 1점 낮으면 발동하지 않고, 경계값에 도달하면 해당 생성기를 요청한다.

공개 모듈 실행에서 광고 단가 3.5배와 최고 기록 대비 1000점 조건의 경계를 확인한 결과
공개 모듈을 합성 입력으로 실행한 경계값 검사. 광고 시청 이력과 준비 상태는 동일하게 유지했다. 출처: Ayo Omolewa

1,000점은 모든 이용자에게 적용되는 고정값이 아니다. 분석자의 안드로이드 설치본이 받은 설정값이며, 앱에 포함된 다른 변형에는 500점과 750점도 있다. 부활하면 다음 발동 점수선이 다시 올라간다. 같은 판에서 한 번 살아났다고 규칙이 끝나는 구조도 아니다.

당장 놓이는 두 조각이 있어도 해답은 없을 수 있다

‘치명적 퍼즐’ 생성기는 현재 놓을 수 있는 조각 두 개와 놓을 수 없는 조각 하나를 후보로 잡는다. 두 조각을 먼저 놓아 줄을 지운 뒤 마지막 조각이 들어가는 경우까지 탐색하고, 모두 놓는 방법이 없는 묶음을 고른다. 처음에는 두 조각이 들어가므로 이용자 눈에는 아직 풀 수 있는 판처럼 보인다.

공개된 시험판에서는 세로 두 칸, 가로 두 칸, 3×3 정사각형이 선택됐다. 이 보드와 조각으로 배치를 전수탐색한 결과, 줄 지우기를 포함한 탐색 171개 노드에서 완성 해답은 0개였다. 원문에 담긴 게임 생성기 코드를 실행해도 같은 조각 ID가 나왔다. 이 시험판은 합성 보드이며, 실제 플레이 영상의 판과는 별개다.

아이폰 영상에 잡힌 패배는 다른 규칙에서 나왔다

광고 단가 규칙과 실제로 관찰된 패배 장면은 구분해서 볼 필요가 있다. 분석자가 아이폰 시뮬레이터의 시험용 앱에서 확인한 광고 단가는 직전 값의 약 1.94배였다. 3.5배 조건에 못 미쳐 광고 단가 규칙은 그때 발동하지 않았다.

영상에서 풀 수 없는 조각을 요청한 쪽은 PersonalMarginBreakTrait라는 다른 규칙이었다. 해당 설정은 최고 기록을 10% 넘긴 뒤 매 조각 묶음 배정 때 20% 확률로 같은 생성기를 요청한다. 분석자는 저장된 최고 기록을 낮춰 조건에 빨리 도달하도록 했고, 3,356점에서 가로 다섯 칸 막대와 세로 다섯 칸 막대, 지그재그 조각이 배정된 기록을 공개했다.

아이폰 시뮬레이터 시험 영상의 3356점 화면과 가로 막대·세로 막대·지그재그 세 조각
최고 기록 초과 규칙이 호출된 시험 영상의 조각 배정 장면. 출처: Ayo Omolewa

원문은 이 배정의 호출자와 사용된 알고리즘을 기록했고, 두 전수탐색에서 완성 해답이 없었다고 설명한다. 이어지는 장면에는 광고 아이콘을 붙인 부활 버튼이 나타난다. 따라서 ‘광고 단가 규칙을 코드로 확인했다’와 ‘광고 단가가 높아져 패배하는 장면을 촬영했다’는 서로 다른 주장이다. 이 분석이 보여 준 것은 전자와, 별도 규칙에 의한 실제 시험 플레이의 패배다.

같은 시험 플레이가 끝난 뒤 광고 영상 아이콘과 Revive 버튼이 나타난 화면
같은 시험 플레이에서 패배 뒤 나타난 부활 제안. 출처: Ayo Omolewa

같은 앱이라도 서로 다른 규칙을 받을 수 있다

규칙은 설치 파일 안에만 고정돼 있지 않았다. 분석자가 계정 없이 실행한 안드로이드 에뮬레이터에서는 서버 설정이 약 700개 모듈 중 254개를 선택했고, 그중 101개는 설치 뒤 내려받았다. 게임이 어떤 변형을 받았는지에 따라 점수선과 부활 조건이 달라질 수 있다. 원문이 확인한 아이폰의 V2 변형에는 최근 광고를 모두 완료해야 한다는 검사를 끄는 설정도 있다.

인터넷을 끊어도 이미 내려받은 규칙 자체는 남는다. 광고 단가 규칙은 준비된 광고가 없으면 발동할 수 없지만, 광고와 무관하게 조각을 바꾸는 규칙까지 없어지지는 않는다. 오프라인이나 광고 차단을 ‘공정한 무작위 모드’로 받아들이기는 어렵다.

판이 어려워지는 시점을 실력에 맞춰 조절하는 것과, 광고 수익 조건에 맞춰 해답 없는 조각을 요청하는 것은 다른 제품 설계다. 블록을 더 잘 놓는 연습으로 나아질 수 있는 부분이 어디까지인지 판단하려면, 이용자에게 보이지 않는 조각 배정 규칙도 알아야 한다.

출처: Ayo Omolewa, How Block Blast harvests its players for ad money