콘텐츠로 이동

BuzzBuild-Achievement — 설정

설정 파일은 서버의 plugins/BuzzBuild-Achievement/에 있습니다. 변경 후 /업적 리로드로 적용합니다. 예시는 해당 파일·블록에 병합하며 기존 업적 목록 전체를 덮어쓰지 마세요.

파일실제 사용
config.ymldisplay 설정. 구형 achievements는 신규 카탈로그 최초 생성 시 같은 ID의 점수 이관에만 사용
achievements.yml현재 업적 정의, 그룹, 조건, 자동 칭호 보상
integrations.yml작물 수확 산출물·성숙도 및 던전 보스 매핑
design.yml웹 화면의 허용된 색상 키
reward-examples.yml참고용. 파일 자체는 로딩하지 않음
키타입기본값설명
display.score-per-achievement정수10완료 개수당 성장 점수. 음수는 0으로 보정
display.ranks객체 목록아래 네 등급점수순 정렬 후 최대 4개 사용. 첫 기준이 0이 아니면 기본 등급 사용
display.ranks[].name문자열아래 참조빈 이름 제외, 최대 24자로 제한
display.ranks[].points숫자아래 참조등급 최소 점수. 음수는 0으로 보정
display.ranks[].icon정수아래 참조, 생략 시 88~11 범위로 보정
achievements.<id>.reward-points정수기본 리소스 0구형 설정의 최초 이관 대상. 이후에는 새 카탈로그에서 수정
display:
score-per-achievement: 10
ranks:
- {name: '새내기 기록가', points: 0, icon: 8}
- {name: '탐구하는 모험가', points: 50, icon: 9}
- {name: '지식 수집가', points: 100, icon: 10}
- {name: '박학다식', points: 200, icon: 11}

성장 점수는 현재 카탈로그에 있는 완료 업적 수로 계산합니다. 수령한 업적 점수나 서버 화폐와 별개이며, 이 값을 바꾸면 기존 완료 업적의 성장 점수도 달라집니다.

다음 기본값은 키 생략 시 로더 값입니다. 배포 카탈로그는 업적마다 다른 제목·목표·활성 상태를 지정합니다.

키타입기본값설명
groups.<name>문자열 목록빈 목록여러 조건에서 참조할 내부 ID 집합
achievements객체필수업적 ID별 정의
achievements.<id>.category문자열기타화면 분류
achievements.<id>.title문자열업적 ID표시 이름
achievements.<id>.description문자열빈 문자열설명 문구. 판정식이 아님
achievements.<id>.metric문자열빈 문자열직접 지표 판정. 조건이 있으면 condition.<id>로 대체
achievements.<id>.target정수1완료 목표. 활성 업적은 1 이상 필요
achievements.<id>.enabled불리언false완료 판정 활성 여부
achievements.<id>.secret불리언false완료 전 제목·설명·진행 숨김
achievements.<id>.first-only불리언false동일 DB에서 최초 기록자만 완료 인정
achievements.<id>.reward-points정수0완료 후 수동 수령하는 업적 점수. 음수는 0으로 보정
achievements.<id>.condition객체없음아래 이벤트 조건
achievements.<id>.rewards객체없음아래 자동 칭호 보상

schema-version(배포값 2), source.*, sheet-id, source-condition, pending-reason, retired는 현재 로더의 판정 키가 아닙니다. 설명·출처·관리용 메타데이터이며 source.timezone을 수정해도 날짜 계산은 바뀌지 않습니다. retired: true만으로 업적을 끄지 못하므로 enabled: false를 사용합니다.

condition 아래 키타입기본값설명
type문자열COUNT아래 유형. 대문자로 변환해 해석
event문자열빈 문자열활성 조건에 필요한 활동 이름
subjects문자열 목록빈 목록허용 대상 ID. 일반 조건에서 비어 있으면 전체 대상
group문자열빈 문자열groups.<name>을 subjects와 합침
each정수11 이상. 의미는 유형별로 다름
reset-event문자열빈 문자열실패·종료 등에 사용할 활동 이름
where문자열 값 객체빈 객체활동 context와 모두 정확히 일치해야 통과

조건 업적 ID는 소문자 영문·숫자·_·-로 32자 이내를 권장합니다. ID 검사와 별개로 생성된 condition.<id> 지표는 소문자만 허용하므로 대문자 ID는 조건 검증에 실패합니다. 직접 metric은 [a-z0-9_.-]{1,64} 형식입니다.

유형판정주요 제약
COUNT누적 수량을 each로 나눈 정수 몫보통 each: 1
MAX전달된 수량의 최고값과거 최고 진행 유지
EACH각 대상이 each 이상이면 달성한 종류 수 증가대상 필수, target을 대상 수로 자동 대체
PER_SUBJECT한 대상에 누적된 최고 수량각 대상의 수량을 합산하지 않음
STREAK연속 수량, reset 이벤트에서 현재 연속 수 초기화reset-event 필수, 최고 기록 유지
DAYS하루 수량이 each 이상인 날짜 수Asia/Seoul 고정, 연속 출석 조건이 아님
SEQUENCEreset 직전 누적이 정확히 each면 진행 1reset-event 필수, 일반적으로 목표 1
INVENTORY한 시점의 owned 목록에 대상 전체가 있으면 진행 1대상 필수, 시간차 소지품을 합치지 않음
SESSION_EACH같은 scope에서 대상별 달성 종류 수대상·scope 필요, 목표는 대상 수
SESSION_BELOW같은 scope의 종료 시 누적이 each 미만이면 진행 1reset-event·scope 필요

세션 유형에는 실제 활동 생산자가 동일한 scope와 시작·종료 이벤트를 보내야 합니다. 평가기가 존재한다는 이유만으로 이용권·던전별 모든 시나리오가 연동된 것은 아닙니다. 완료와 최고 진행은 실패 이벤트만으로 취소되지 않습니다.

별도 연동 없이 기존 지표를 사용하는 신규 업적 예시입니다. example_deaths_10은 가상 ID이며 기존 achievements 아래에 병합합니다.

achievements:
example_deaths_10:
category: 기타
title: 다시 일어서기
description: 사망 횟수 10회 달성
metric: player.deaths
target: 10
enabled: true
secret: false
first-only: false
reward-points: 0

플러그인 설치 전 기록을 소급 수집하지 않습니다. 다만 이미 DB에 같은 지표가 누적되어 있으면 새 정의도 그 지표를 사용하며, 다음 지표 적용 때 완료될 수 있습니다. 의미를 바꾸는 조건에는 새 ID를 사용하세요.

rewards 아래 키타입기본값설명
mode문자열automatic이 값만 지원
titles문자열 목록블록을 쓰면 필수칭호 ID 목록, 빈 목록은 지급 계획 없음, 중복 ID 제거

칭호 ID는 [a-zA-Z0-9_:-]{1,64} 형식이며 Title에 실제 등록되어 있어야 합니다. 다른 보상 키는 로딩 오류입니다. 아이템·화폐·명령어 실행 보상은 지원하지 않습니다. 적용 예시는 칭호 지급 절차를 참고하세요.

키타입생략 시 값설명
crops.<crop-id>.min-point정수2147483647수확으로 인정할 최소 CustomCrops point
crops.<crop-id>.products문자열 목록[]수확 수량에 포함할 ItemManager 내부 ID
crops.<crop-id>.high-quality문자열 목록[]고품종 수량에 포함할 내부 ID
dungeon-bosses.<dungeon-id>문자열빈 문자열던전 완료를 boss.clear 대상 ID로 변환

배포 파일은 여러 작물 매핑을 제공하며 예를 들어 potato는 min-point: 7, products: [POTATO, potato], high-quality: []입니다. dungeon-bosses의 배포 기본값은 {}입니다. 아래는 감자 매핑의 실제 형식을 보여주는 부분 예시입니다.

crops:
potato:
min-point: 7
products: [POTATO, potato]
high-quality: []
dungeon-bosses: {}

작물 ID와 수확 아이템 ID는 서로 다를 수 있습니다. 표시 이름이 아니라 이벤트와 ItemManager가 반환하는 ID를 사용합니다. high-quality와 products는 각각 검사하므로 고품종도 총수확에 넣으려면 두 목록에 모두 등록합니다.

모든 값의 타입은 문자열이며 '#RRGGBB' 형태만 허용합니다. #가 주석이 되지 않도록 따옴표를 사용합니다.

colors 아래 키배포 기본값용도
page#E8DFF2전체 배경
panel#F5F0FA패널
panel-alt#DED0EB보조 패널
cover#49335F표지
border#AD93C6테두리
text#49345F본문
muted#81708F보조 글자
accent#9166B8강조
accent-soft#D5BFE8옅은 강조
track#D6C7E3진행 배경
gold#B18A45금색 강조
complete#647E69완료 표시
bookmark#BC678A북마크
colors:
page: '#E8DFF2'
accent: '#9166B8'

알 수 없는 키·잘못된 형식은 경고 후 무시합니다. 웹 화면이 다음 상태를 받을 때 반영되며 고정 PNG 아이콘 색상은 바뀌지 않습니다.

2026-10-05 기본 리소스와 설정 로더·조건 평가 코드를 대조했습니다. 예시의 게임 내 동작은 미검증입니다.