본문 바로가기
alzy.kr
← 개발일지

기존 유저 보호 장치를 넣고 엿새도 안 돼 그 장치가 소진됐다 — 타누비 여우 해금

선을 올리면 이미 넘은 사람의 발밑도 같이 움직입니다. 2026년 7월 25일, 여우 해금 조건을 1500에서 2500으로 올렸습니다. 이 글의 숫자는 그때 값이고 지금은 더 높습니다.

작성일: 2026-07-25

최종 개정일: 2026-08-21

마지막 한 명을 "특별한 마지막"으로 만들고 싶었다 💭

여우는 타누비에서 마지막으로 열리는 영웅입니다.

마지막이라면 도달했을 때의 무게가 좀 더 있었으면 했어요.

그래서 해금 조건을 1500에서 2500으로 올리기로 했습니다.

더하기로 치면 쉬운 변경입니다. 상수 하나 고쳐 쓰면 되니까요.

다만 이 변경에는 받는 사람이 두 종류였습니다.

선을 옮기면 이미 넘은 사람의 발밑도 움직인다 ⚠️

앞으로 할 사람에게는 조건이 조금 멀어지는 것뿐입니다.

문제는 다른 쪽이었습니다. 누적 1500에서 2499 사이에 있는 사람들이요.

그 사람들은 이미 여우를 갖고 있습니다. 조건을 채웠으니까요.

상수만 고치면, 다음에 접속했을 때 여우에 다시 잠금이 걸립니다.

제 커밋에는 이렇게 적혀 있습니다. 리텐션 배신이라고요.

기능 조정이라고 한 일이 기존 플레이어에게는 회귀로 도착합니다. 😖

눈금자 옆에서 수평선이 위로 끌어올려지고, 원래 점선 위에 서 있던 작은 사람들이 선 아래로 남겨지는 연필 스케치
선을 올린 순간, 이미 넘었던 사람이 선 아래로 돌아갑니다.

한 번 열린 건 다시 빼앗지 않는다 🔒

그래서 해금 판정을 점수만으로 하는 걸 그만뒀습니다.

영구 해금 목록을 진척 데이터에 두고, 점수 조건이거나 목록에 있으면 열리게 했어요.

옛 조건 값도 상수로 남겼습니다. 1500이라는 숫자를 버리지 않고 들고 있어야 했거든요.

시작할 때, 옛 조건을 이미 채웠던 캐릭터를 그 목록으로 한 번만 흡수합니다.

다음 목표 표시도 같이 고쳤습니다. 이미 가진 캐릭터는 다음 목표로 안 잡히게요.

해금은 로컬 메타 정보입니다. 시드도 판정도 리더보드도 건드리지 않았습니다.

체크칸이 늘어선 목록 상자에서 뻗은 선이 열린 자물쇠의 고리를 걸어 열린 채로 붙드는 연필 스케치
점수가 아니라 목록이, 열린 자물쇠를 그대로 붙듭니다.

"한 번만"을 보장하는 플래그 🏷️

흡수가 여러 번 돌면 안 됩니다. 돌 때마다 조건이 느슨해지는 동작이 되니까요.

그래서 이관 완료 플래그를 하나 뒀습니다.

플래그가 안 서 있으면 흡수하고 세운다. 서 있으면 아무것도 안 한다.

로드와 흡수와 저장을 한 함수로 묶어서, 몇 번 불러도 결과가 같게 만들었습니다.

진입점은 세 곳입니다. 허브, 게임, 도감. 어디로 들어와도 한 번이면 끝나요.

호출부는 여덟 곳을 갱신했습니다.

경계를 테스트로 못 박았다 ✅

무손실은 주장이 아니라 증명이었으면 했습니다.

딱 1500인 기존 유저는 흡수돼서 영구히 유지된다.

같은 1500이어도 신규면 아직 잠겨 있다. 2500이 필요하다.

1499는 흡수되지 않는다. 경계 한 칸 앞에서 선이 그어진다는 걸 고정했습니다.

다시 돌려도 결과는 같다. 누적이 바뀌어도 재흡수는 안 일어난다.

저장 후 다시 읽어도 유지되고, 그 뒤에 누적이 0이 돼도 안 사라진다.

진척 바 비율이 범위를 벗어나지 않는 것까지 봤습니다.

그리고 엿새도 안 돼서, 선을 또 옮겼다 📈

7월 25일에 2500으로 올렸습니다.

7월 31일, WS20에서 5500으로 다시 올렸어요.

간격은 닷새하고 스물세 시간쯤. 엿새에도 못 미칩니다.

이때 그 지키는 장치는 쓰이지 않았습니다.

"한 번만"을 보장하던 플래그가 첫 상향에서 이미 서 있었기 때문입니다.

안전하게 만든 그 성질이 그대로 일회성이 됐다 🙃

플래그는 흡수가 폭주하는 걸 막으려고 넣었습니다. 그 역할은 하고 있어요.

다만 그 플래그는 전역으로 딱 한 번이었습니다.

즉 "이 이관을 마쳤는가"가 아니라 "이관이라는 걸 마쳤는가"를 들고 있었던 겁니다.

두 번째 상향에 대한 보호는 자동으로 걸리지 않습니다.

이 한계는 코드 주석에 적혀 있습니다.

버전을 갖는 플래그로 다시 만드는 건 별도 작업으로 제안만 남아 있는 상태예요.

아직 안 고쳤습니다. 🙇

같은 깃발이 두 문 앞에 서 있는데 한쪽 문은 열려 있고 다른 쪽은 닫힌 채 빗금으로 막힌 연필 스케치
한 번 오른 깃발은 안 내려옵니다. 두 번째 문에서는 안 걸렸어요.

마무리하며 🏁

기존 유저를 지키는 장치를 만든 것 자체는 옳았다고 생각합니다.

배운 건 그 장치 자체도 버전을 가졌어야 했다는 겁니다.

한 번이면 충분하다고 정한 시점에, 두 번째 변경을 상정에서 뺐던 거죠.

선을 옮길 일이 딱 한 번뿐인 기능은 아마 그렇게 많지 않을 겁니다.

지키는 쪽 장치야말로 반복을 전제로 설계한다. 다음엔 거기서 시작합니다! 🛡️

타누비(Tanubi)