14.2.7
개념

차단 모델

보고된 시드는 일정 시간 SLMAPS에서 조회되지 않습니다. 그 시간이 어떻게 정해지고 언제 끝나는지 설명합니다.

용어

용어
차단한 시드가 조회되지 않는 시간입니다. 첫 보고에 시작되고 round_end 또는 상한에서 끝납니다.
상한차단 한 번의 최대 길이입니다. 게임 서버에서 직접 보내는 등록은 1시간, 디스코드 HTTP 키는 20분입니다.
예산한 시드가 지금까지와 앞으로 차단될 수 있는 총 시간입니다. 상한과 같은 값이며, 차단이 끝날 때마다 실제로 차단된 시간만큼 줄어듭니다.
쿨다운 (시드 기준)차단이 끝난 시드는 5분 동안 다시 차단되지 않습니다. 어느 서버 키로 보고해도 같습니다.
서버당 차단 하나 (서버 기준)한 서버 키는 한 번에 시드 하나만 차단합니다. 다음 시드는 이전 차단이 끝나고, 이전 차단을 시작한 지 5분이 지나야 차단됩니다. 시드 쿨다운과는 별개의 규칙입니다.

차단이 시작되는 조건

round_start 또는 periodic 보고가 차단을 시작합니다. round_end는 차단을 시작하지 않습니다. 차단 길이는 다음과 같이 정해집니다.

규칙
차단 길이 = min(상한, 남은 예산)
상한 = 60분 (직접 등록, 플러그인) 또는 20분 (HTTP 키)
남은 예산 = 상한 − 이 시드가 지금까지 차단된 시간의 합

남은 예산이 0이면 차단되지 않고 응답에 "exhausted": true 가 붙습니다. HTTP 키로 20분을 다 쓴 시드를 직접 등록 키가 이어서 차단하는 것은 됩니다. 60분을 다 쓴 시드는 어느 키로도 다시 차단되지 않습니다.

차단이 끝나는 조건

  • round_end 보고를 받으면 즉시 끝납니다. 실제로 차단된 시간만 예산에서 빠집니다.
  • 시작한 지 차단 길이만큼 지나면 끝납니다.
  • 차단 중에 같은 시드의 보고가 또 와도 그대로입니다. 연장되지 않습니다.
round_startround_end+5분다음 라운드
차단최대 60분, HTTP 키 20분
쿨다운5분
조회 가능예산 남은 만큼 재차단
round_end를 보내지 않으면 차단은 상한까지 이어지고, 그동안 이 서버는 다른 시드를 차단하지 못합니다.

서버당 차단 하나

차단 중에 같은 서버 키로 다른 시드를 보고해도 그 시드는 차단되지 않습니다. 다음 차단은 이전 차단이 끝나고, 시작한 지 5분이 지난 뒤에 가능합니다. 라운드가 끝나면 round_end를 보내 차단을 끝내야 다음 라운드의 시드가 제때 차단됩니다.

두 규칙은 기준이 다릅니다. 시드 쿨다운은 "그 시드"가 5분 동안 다시 차단되지 않는 것이고, 서버당 차단 하나는 "그 서버 키"가 다음 시드를 언제 차단할 수 있는지입니다. 라운드가 20분이었다면 round_end 뒤 바로 다음 시드를 차단할 수 있고(시작한 지 5분이 지났으므로), 라운드가 3분 만에 끝났다면 2분을 더 기다립니다.

보고 응답으로 알 수 있는 것

형식이 맞고 키가 유효한 보고는 모두 200입니다. 차단됐는지는 blockedUntil로 판단합니다.

상황blockedUntilexhausted
차단 시작차단이 끝나는 시각없음
같은 시드, 이미 차단 중그대로없음
round_end로 차단 끝null없음
시드 쿨다운 중null없음
이 서버가 다른 시드를 차단 중null없음
예산 소진nulltrue

조회하는 쪽에서 보이는 것

  • GET /api/maps/{seed}, GET /api/jobs/{seed}: 403 {"error":"blocked","blockedUntil":"…"}. blockedUntil 이후 다시 요청하면 됩니다.
  • GET /api/seeds: 차단 중인 시드는 목록에서 빠지고, 차단이 끝나면 다시 나타납니다.
  • 공개 통계: 수치는 차단과 관계없이 집계됩니다. 차단 중인 시드 값은 어디에도 공개되지 않습니다.
  • 수집: 차단이 시작되는 순간 그 시드로 최근 5분 안에 들어온 감지 기록이 지워지고, 차단이 끝날 때까지 새 감지도 기록되지 않습니다.

예시

상황직접 등록 키 (상한 60분)HTTP 키 (상한 20분)
08:00 round_start, 08:23 round_end08:00부터 08:23까지 차단. 남은 예산 37분08:00부터 08:20까지 차단. 08:20에 상한으로 끝나고 남은 예산 0
round_end 없이 방치09:00까지 차단. 남은 예산 008:20까지 차단. 남은 예산 0
라운드 도중 재시작으로 새 시드이전 차단이 끝날 때까지 새 시드는 보입니다. round_end를 먼저 보냈다면 이전 차단을 시작한 지 5분 뒤에 새 시드가 차단됩니다같음
같은 시드가 다음 날 다시 나옴남은 예산만큼만 차단. 위 첫 줄 뒤라면 37분남은 예산 0이라 차단되지 않고 exhausted: true

설계 의도

차단은 한 라운드 동안 자기 서버의 시드를 숨기는 용도입니다. 예산은 하나의 시드를 영구히 숨기는 것을 막고, 서버당 차단 하나는 키 하나로 여러 시드를 한꺼번에 숨기는 것을 막습니다.

SLMAPS는 SCP: Secret Laboratory의 시드 지도 뷰어입니다. 이 문서는 slmaps.com의 공개 API를 설명합니다.slmaps.com ·