첫 클릭 안전은 어떻게 보장되나
'첫 클릭에 죽었다'는 옛날 지뢰찾기의 대표적 불만이었습니다. 지금은 두 가지 방식으로 이를 없앱니다.
재배치 방식(자유 플레이)
자유 플레이는 판을 만들 때 지뢰를 두지 않습니다. 첫 좌클릭이 들어온 순간 그 칸과 이웃 여덟 칸을 제외한 나머지에서 지뢰를 뽑습니다. 클릭한 칸의 주변 지뢰 수가 0이 되므로 첫 클릭은 항상 넓게 연쇄해서 열립니다.
지뢰를 고르는 과정은 시드 기반의 결정적 셔플이라, 같은 시드와 같은 첫 클릭이면 언제나 같은 배치가 나옵니다. 무작위지만 재현 가능한 무작위입니다.
미리 열기 방식(오늘의 판·위클리)
오늘의 판과 노가드 위클리는 전 세계가 완전히 같은 배치를 풀어야 순위가 공정합니다. 그래서 첫 클릭에 재배치를 하지 않습니다. 대신 판을 만든 뒤 가장 넓은 빈칸 영역 하나를 골라 처음부터 열어 둔 상태로 시작합니다.
덕분에 첫 클릭 폭사가 원천적으로 불가능하면서도 배치는 한 치도 달라지지 않습니다. 노가드 위클리의 '찍기 없이 풀린다'는 증명도 이 시작 칸을 전제로 계산된 것이라, 재배치를 했다면 증명이 깨졌을 것입니다.
시드가 무엇인가
시드는 배치를 만들어 내는 출발 숫자입니다. 같은 시드를 넣으면 같은 난수열이 나오고, 같은 난수열은 같은 지뢰 배치를 만듭니다. 오늘의 판은 '날짜와 난이도'라는 문자열을 숫자로 바꿔 시드로 쓰기 때문에, 서버가 판을 나눠 주지 않아도 전 세계가 같은 판을 풉니다.
그래서 판을 미리 볼 수도, 남의 판을 바꿀 수도 없습니다. 서버에는 여러분이 순위표에 올린 기록만 남고 판 자체는 어디에도 저장되지 않습니다. 운영비가 들지 않는 구조이기도 합니다.
첫 클릭이 항상 빈칸인 이유
안전만 보장하면 첫 클릭이 숫자 칸일 수도 있습니다. 그러면 아무것도 열리지 않아 두 번째 클릭이 사실상 찍기가 됩니다. 그래서 자유 플레이는 클릭한 칸의 이웃 여덟 칸까지 지뢰에서 제외합니다. 주변 지뢰 수가 0이 되어 반드시 연쇄가 일어납니다.
고정 판에서도 같은 목표를 위해, 처음부터 열어 두는 칸을 '가장 넓은 빈칸 영역의 대표 칸'으로 고릅니다. 어느 판에서든 시원한 오프닝으로 시작하도록 맞춘 것입니다.
고정 판의 시작 칸을 고르는 순서
오늘의 판은 시드로 지뢰를 먼저 깐 뒤, 주변 지뢰가 0인 칸들이 서로 이어진 덩어리를 전부 찾아 크기를 잽니다. 그중 가장 큰 덩어리의 칸을 시작 칸으로 정하고, 크기가 같은 덩어리가 여럿이면 판의 왼쪽 위에서부터 읽어 먼저 나오는 쪽을 고릅니다. 모든 브라우저가 같은 순서로 계산하므로 시작 위치도 전 세계가 같습니다.
드물게 빈칸이 하나도 없는 배치가 나오면, 정해진 규칙으로 시드를 바꿔 다시 깔아 봅니다. 이 재시도도 날짜와 난이도만으로 결정되므로 공정성이 깨지지 않습니다. 노가드 위클리는 이 과정을 쓰지 않고, 무추측 검증을 통과할 때 사용한 시작 칸을 시드와 함께 그대로 저장해 둡니다.
시작 칸이 정해지면 그 칸에서 연쇄가 퍼져, 이어진 빈칸 덩어리 전체와 그 테두리의 숫자 칸까지 한꺼번에 열린 상태로 판이 나옵니다. 오늘의 판을 열자마자 보이는 넓은 열린 영역은 누군가 대신 눌러 준 결과가 아니라 모두에게 똑같이 주어지는 출발선입니다. 타이머 역시 이 영역이 열린 시점이 아니라 여러분의 첫 입력부터 시작하므로, 열린 화면을 충분히 살펴본 뒤 움직여도 됩니다.
구석 첫 클릭과 가운데 첫 클릭의 차이
자유 플레이에서 지뢰가 빠지는 범위는 클릭한 칸과 그 이웃입니다. 판 안쪽을 누르면 아홉 칸이 제외되지만, 모서리를 누르면 이웃이 세 칸뿐이라 네 칸만 제외되고, 가장자리는 여섯 칸이 제외됩니다. 그래서 같은 첫 클릭이라도 가운데 쪽이 보장된 빈 공간이 더 넓습니다.
제외된 칸만큼 나머지 칸의 지뢰 밀도는 조금 올라갑니다. 고급에서 안쪽을 첫 클릭하면 남은 471칸에 지뢰 99개가 들어가 약 21.0%가 되고, 원래 밀도 약 20.6%와 거의 차이가 없습니다. 첫 클릭 안전 장치가 판 전체의 난이도를 눈에 띄게 바꾸지 않는다는 뜻입니다.