← 문서 묶음 · 기획서 · 경제 · 캐릭터 · 적·보스 · 장비·아이템

01 전투 구조와 상수 · 02 틱 판정 순서 · 03 행동·필살기·행동 불가 · 04 타깃 표기 전체 · 04 옛 표기 대응과 동시 발생 · 05 데미지·회복 공식 · 06 속성 상성표와 색 전환 · 07 버프 전체 목록 · 08 디버프 전체 목록 · 08 상태 id 통일 (1) — 정의 충돌·characters · 08 상태 id 통일 (2) — enemies·bosses · 09 중첩 규칙·즉시 효과·제어 · 10 능력치 계산 순서와 전투력 · 11 전투 시뮬레이션 검증 · 11 판별 추천 전투력과 검사 · 12 적 곡선 결정과 진행 속도 검증 · 12 곡선을 고른 까닭과 경제 대조 · 13 동료 레벨 비용 (Lv1~51) · 13 동료 레벨 비용 (Lv51~100) · 14 브루니 레벨 경험치 (Lv1~150) · 15 승급 (★) 비용 · 16 각성·스킬 강화 비용 · 17 장비 강화 비용 (+0~+20) · 17 끝없는 지출처 — 색 다듬기·방울 교환 · 18 물감 항아리 레벨 비용 (Lv1~30) · 19 유물 레벨·인연 경험치 · 19 유물 숫돌 공급 계산 · 20 바이블 추가 제안과 구현 기준

bruni · 게임전투·성장 명세서
Combat / Growth Specification

브루니 키우기: 바랜 섬
전투·성장 명세서

만든 날 2026-10-13 · 고친 날 2026-10-15 — 깃 이력에서 자동으로 박혀요

자동 전투 판정 · 데미지 공식 · 상태 효과 · 성장 비용 표 전체

항목내용
문서 번호2 / 15 (systems)
기준설계 바이블 2026-10-13 초판 — 이름·id·수치는 바이블과 같음. 단 적 판 배율 m(s) 는 12장에서 결정한 곡선(바이블 6-4 갱신 대상)
적 곡선m(s) = 1 + 0.125 × (s − 1) + 0.00005 × (s − 1)² — game-design/gen/curve.py 한 줄이 원본. enemies·stages·economy 가 같은 함수를 읽는다
데이터game-design/data/combat.json · game-design/data/growth.json (게임에 그대로 들어가는 파일)
생성game-design/gen/systems_data.py → systems.py. 표의 숫자는 모두 스크립트가 계산한 값
참조 구현game-design/gen/combat_sim.py — 02~05장 틱 판정을 파이썬으로 옮긴 것. Godot battle.gd 는 같은 시드에서 같은 로그를 내야 함
어휘 원본game-design/gen/vocab.py → combat.json statuses·instant·targeting. characters·enemies·bosses JSON 의 효과 id·타깃 표기는 이 원본 id 로 생성됨 (04·08장 대응표)
엔진Godot 4.7.2 · GDScript · 고정 틱 100ms

이 문서가 정하는 것 / 넘기는 것

범위이 문서다른 문서
전투틱 순서, 행동·게이지, 타깃, 동시 발생, 데미지·회복·보호막 공식, 상성, 상태 효과 전체동료별 스킬 수치 → 캐릭터 명세서 · 적·보스 패턴 → 적·보스 명세서
성장브루니·동료 레벨, 승급, 각성, 스킬 강화, 장비 강화, 물감 항아리, 유물 레벨, 인연, 색 전환 — 1~최대 비용 표장비 84종 기본 능력치·유물 효과 → 장비·아이템 명세서 · 항아리 확률 → 뽑기·상점 명세서
수치 점검전투 시뮬레이션으로 필요 배율·진행 속도 검증재화 수입·지출 시뮬레이션 → 재화·성장 속도 명세서 · 판별 추천 전투력 → 스테이지 명세서
bruni01
bruni · 게임전투·성장 명세서
01 / Overview

전투 구조와 상수

전투는 자동 실시간입니다. 화면은 매 프레임 그리지만 판정은 100ms 고정 틱에서만 일어납니다. 프레임 속도가 달라도(30·60·120fps) 결과가 같고, 같은 시드를 넣으면 같은 전투가 재현됩니다. 2배속은 실제 100ms 마다 틱을 2번 돌리는 방식이라 판정은 1배속과 똑같습니다.

상수값비고
틱100ms_physics_process 가 아니라 누적 시간 → 틱 횟수로 돌림 (배속·프레임 독립)
배속1배 · 2배2배는 무료. 판정 동일
행동 간격round(100000 ÷ 속도) ms속도 100 → 1,000ms · 110 → 909ms · 90 → 1,111ms
첫 행동행동 간격 × 0.5웨이브 시작 순간 모두가 동시에 치지 않게
필살기 게이지0~100 · S1 +20 · 피격 +5바이블 6-3. 웨이브가 바뀌어도 유지
치명기본 5% · 피해 ×1.5치명률 상한 100%
피해 난수×0.95~1.05 균등전투 시드로 뽑음
시간 제한일반 판 60초 · 보스 판 90초넘기면 패배
판 구성일반 = 웨이브 3 · 보스 판 = 웨이브 2 + 보스 웨이브적 수·배치는 stages 문서
웨이브 전환1000ms (시간 정지)아군 상태 그대로 이어짐
파티5칸 = 전열 1·2 + 후열 3·4·5. 브루니 필수적도 같은 칸 번호 (1·2 전열)

스킬 3개의 판정 자리

스킬언제게이지판정 단계
S1 기본기행동 타이머가 0 이 될 때마다+20 (광역도 1회분)⑧-2
S2 필살기게이지 100 — 자동이면 즉시, 수동이면 초상 터치0 으로⑧-1 (행동 타이머를 쓰지 않는 끼어들기)
S3 패시브상시 능력치 / 조건 반응(피격·처치·체력 %)—상시는 능력치 계산(10장), 반응은 ⑧-3
방치 화면의 전투는 연출입니다방치 사냥 화면은 같은 엔진으로 최고 판을 되풀이해 보여 주지만 보상은 전투 결과가 아니라 시간 공식으로 계산합니다(바이블 8장 · 재화·성장 속도 명세서). 그래서 방치 전투는 결과를 저장하지 않고, 꺼 둔 동안 시뮬레이션하지도 않습니다.
bruni02
bruni · 게임전투·성장 명세서
02 / Tick Order

틱 판정 순서

한 틱 안의 순서는 아래 열두 단계로 고정합니다. 순서가 바뀌면 같은 편성에서 결과가 달라지므로, 구현은 이 순서를 함수 단위로 그대로 옮깁니다(오른쪽 열이 battle.gd 함수 이름).

①~②입력 · 시간
100ms
③~⑤지속 효과 · 만료 · 쓰러짐
그다음
⑥~⑦타이머 · 정렬
⑧-1필살기 끼어들기
그다음
⑧-2 · ⑧-3기본기 · 맞을 때마다 반응
끝에
⑨ → ⑩웨이브(승리 먼저) · 시간 제한
단계이름판정함수
①입력수동 필살기 요청을 큐에 넣음 (게이지 100 인 동료 초상 터치). 배속 전환·일시정지 반영battle.gd _poll_input()
②시간전투 시각 += 100ms. 웨이브 전환 중(1.0초)이면 ②~⑩ 을 건너뜀_advance_clock()
③지속 효과부여 시점부터 1000ms 마다 발동하는 효과 처리. 순서: 아군 칸 1→5, 적 칸 1→5. 한 유닛 안에서는 피해(화상→중독) 다음 회복(재생)_tick_periodic()
④지속시간모든 상태의 남은 시간 −100ms, 0 이하 제거. 행동 불가가 끝난 유닛에 「버팀」 2초 부여_tick_durations()
⑤쓰러짐 1③ 으로 체력 0 이 된 유닛 처리 (부활 → 아니면 퇴장). 퇴장한 유닛은 이번 틱 행동하지 않음_resolve_deaths()
⑥행동 타이머살아 있는 유닛 타이머 −100ms. 0 이하가 된 유닛을 「차례 목록」에 넣고 타이머 += 행동 간격_tick_timers()
⑦정렬차례 목록 정렬: 속도 높은 순 → 아군 먼저 → 칸 번호 작은 순_sort_ready()
⑧-1필살기게이지 100 + 행동 가능 + 침묵 아님인 유닛이 S2 를 씀 (자동: 해당자 전원 / 수동: 큐에 든 동료만, 적은 항상 자동). 같은 정렬 규칙. 행동 타이머를 쓰지 않음_cast_ultimates()
⑧-2기본기정렬된 차례 목록 순서로 S1. 행동 직전에 생존·행동 불가·타깃을 다시 확인 (타깃은 이 순간에 고름)_run_actions()
⑧-3반응각 피해·회복 직후 그 자리에서: 보호막 흡수 → 체력 감소 → 게이지(+5) → S3 반응 패시브 → 반사·흡색 → 쓰러짐 2_apply_hit()
⑨웨이브 판정적 전멸을 먼저 봄 → 다음 웨이브(1.0초 전환) 또는 승리. 그다음 아군 전멸 → 패배_check_wave()
⑩시간 제한전투 시각 ≥ 제한(일반 60초·보스 90초)이면 패배(시간 초과). ⑨ 에서 승리했으면 보지 않음_check_timeout()
왜 지속 효과가 행동보다 먼저인가화상·재생이 같은 틱의 행동보다 먼저 들어가야 「화상으로 쓰러진 적이 마지막 한 대를 치는」 일이 없습니다. 반대로 행동으로 쓰러진 유닛은 ⑧-3 에서 바로 빠지므로 같은 틱 뒷순서 유닛이 그 유닛을 겨누지 않습니다.
bruni03
bruni · 게임전투·성장 명세서
03 / Actions

행동·필살기·행동 불가

행동 타이머

유닛마다 타이머(ms)를 하나 둡니다. 웨이브 시작 때 행동 간격 × 0.5로 놓고, 틱마다 100 을 뺍니다. 0 이하가 되면 그 틱의 차례 목록에 들어가고 타이머에 간격을 더합니다(0 으로 되돌리지 않음 — 남은 ms 가 다음 차례로 넘어가 속도 차이가 정확히 반영됩니다). 속도 버프로 간격이 바뀌면 다음에 더할 때부터 적용합니다.

필살기

게이지가 100 이 된 동료는 ⑧-1 에서 S2 를 씁니다. 자동 모드는 조건이 되는 즉시, 수동 모드는 초상을 누른 다음 틱에 씁니다. 적은 늘 자동입니다. S2 를 쓰면 게이지가 0 이 되고, S2 자체는 게이지를 올리지 않습니다. 침묵 중에는 게이지가 100 에 머물렀다가 풀리는 틱에 바로 씁니다. 각성 3 단계는 웨이브 1 을 게이지 20 에서 시작합니다(16장).

행동 불가

기절·빙결 중에는 S1·S2 모두 못 씁니다. 타이머는 계속 흐르고, 그 사이 돌아온 차례는 사라집니다(밀리지 않음). 행동 불가가 끝나면 「버팀」 2초가 자동으로 걸려 연속 기절을 막습니다.

로그 예시 — 참조 구현 실제 출력

참조 파티(돌격 R · 브루니 SSR · 사격 SR · 술사 SSR · 치유 SR, 모두 Lv1 기준 능력치) 대 s001 첫 웨이브, 시드 7, 첫 2.6초입니다. 이 전투는 16.5초에 승리했습니다. Godot 구현은 같은 입력에서 같은 줄을 내야 합니다.

시각(ms)사건
0웨이브 1 시작 (적 4)
500브루니→적1 91 (남은 509)
500사격→적1 77 (남은 432)
500치유→적1 27 (남은 405)
600술사→적1 52 (남은 353)
600술사→적2 77 치명 (남은 523)
600술사→적3 49 (남은 551)
600술사→적4 53 (남은 547)
600적1→돌격 27 (남은 1125)
600적2→돌격 29 (남은 1096)
600적3→돌격 27 (남은 1069)
600적4→돌격 26 (남은 1043)
600돌격→적1 22 (남은 331)
1,500브루니→적1 91 (남은 240)
1,500사격→적1 83 (남은 157)
1,600술사→적1 52 (남은 105)
1,600술사→적2 51 (남은 472)
1,600술사→적3 49 (남은 502)
1,600술사→적4 50 (남은 497)
1,600적1→돌격 27 (남은 1079)
1,600적2→돌격 28 (남은 1051)
1,600적3→돌격 27 (남은 1024)
1,600적4→돌격 28 (남은 996)
1,700돌격→적1 22 (남은 83)
2,400브루니→적1 98 (남은 0)
2,400적1 쓰러짐
bruni04
bruni · 게임전투·성장 명세서
04 / Targeting

타깃 표기 전체

타깃 표기 — 데이터에 쓰이는 21개 전부

스킬·적 기술 데이터의 target 칸(동료는 효과 튜플의 둘째 칸)에 아래 id 중 하나를 적습니다. characters·enemies·bosses JSON 은 이 id 로만 생성되고, 표에 없는 표기는 생성기(vocab.canon_target)가 오류로 멈춥니다. 모든 표기는 시전자 기준입니다 — 적이 쓰면 「상대」가 우리 편, 「아군」이 적 편입니다. 타깃은 행동하는 순간에 고릅니다. 무작위 표기(rand2·3·4)는 전투 시드의 난수로 뽑으므로 같은 시드면 같은 대상이 나옵니다(재현성 유지).

표기대상 집합고르는 규칙같을 때도발숨음
front상대 1상대 전열(칸 1·2) 생존자 중 칸 번호가 가장 작은 유닛. 전열 전멸이면 후열에서 같은 규칙칸 번호 작은 쪽○○
back상대 1상대 후열(칸 3·4·5) 생존자 중 칸 번호가 가장 작은 유닛. 후열 전멸이면 전열에서 같은 규칙칸 번호 작은 쪽○○
lowest상대 1상대 생존자 중 현재 체력 ÷ 최대 체력이 가장 낮은 유닛칸 번호 작은 쪽○○
high_atk상대 1상대 생존자 중 현재 전투 공격력이 가장 높은 유닛칸 번호 작은 쪽○○
mark상대 1상대 중 표식(d_dmg_taken_up) 걸린 유닛 가운데 체력 비율 최저. 없으면 lowest칸 번호 작은 쪽○○
pierce상대 2front 규칙으로 고른 유닛 1 + 그 유닛보다 칸 번호가 큰 생존자 중 가장 작은 유닛 1 (뒤가 없으면 1명)칸 번호 작은 쪽○ (첫 대상)○
rand2상대 2회2번 뽑음. 매번 상대 생존자 중 균등 무작위 1명(같은 유닛이 또 뽑힐 수 있음). 앞 뽑기로 쓰러진 유닛은 다음 뽑기에서 빠짐—×○
rand3상대 3회rand2 와 같은 규칙으로 3번—×○
rand4상대 4회rand2 와 같은 규칙으로 4번—×○
row상대 전열 전원상대 전열 생존자 전원. 전열 전멸이면 후열 전원칸 번호 순으로 하나씩 판정××
back_all상대 후열 전원상대 후열 생존자 전원. 후열 전멸이면 전열 전원칸 번호 순××
all상대 전원상대 생존자 전원칸 번호 순××
attacker상대 1이 패시브를 일으킨 공격을 한 유닛 (on_hit 계열 발동 조건 전용). 이미 쓰러졌으면 효과 없음—××
target앞 효과와 같음같은 스킬의 바로 앞 효과가 고른 대상 중 아직 살아 있는 유닛 전부. 스킬 첫 효과에 쓰면 발동 조건의 주체(쓰러진·체력 낮은·약화 걸린 아군 등)앞 효과 순서 그대로——
self자신시전자 자신———
a_all아군 전원시전자 편 생존자 전원 (자신 포함)칸 번호 순——
a_others아군 (자신 외)자신을 뺀 시전자 편 생존자 전원칸 번호 순——
a_low아군 1시전자 편 생존자 중 체력 비율이 가장 낮은 유닛 (자신 포함)칸 번호 작은 쪽——
a_low2아군 2시전자 편 생존자를 체력 비율 낮은 순으로 2명 (자신 포함)칸 번호 작은 쪽——
a_atk아군 1자신을 뺀 시전자 편 생존자 중 현재 공격력이 가장 높은 유닛. 그 버프가 이미 걸려 있으면 다음 순위칸 번호 작은 쪽——
a_attr아군 (같은 속성)시전자와 같은 속성인 시전자 편 생존자 전원 (자신 포함)칸 번호 순——

도발 ○ = 상대 편에 도발(b_taunt) 유닛이 있으면 이 규칙 대신 그 유닛(여럿이면 칸 번호 작은 쪽). 숨음 ○ = 숨음(b_stealth) 유닛을 후보에서 빼고, 후보가 모두 숨었으면 숨음을 무시. 광역(row·back_all·all)은 둘 다 무시합니다.

bruni05
bruni · 게임전투·성장 명세서
04 / Targeting

옛 표기 대응과 동시 발생

옛 표기 → 원본 id

문서마다 따로 쓰던 표기를 아래처럼 합쳤습니다. 같은 이름이 뜻이 달랐던 front1(enemies: 전열 중 체력 비율 낮은 쪽 / combat enemy_front: 칸 번호 작은 쪽)은 칸 번호 작은 쪽 하나로 정하고 front 로 이름을 바꿨습니다 — 우리 편 전열 2칸 중 늘 1번 칸(돌격)이 먼저 맞아야 돌격 역할이 성립합니다. 체력 낮은 쪽을 노리는 기술은 lowest 를 씁니다.

옛 표기원본 id쓰던 곳
front1frontenemies·bosses
enemy_frontfrontcombat
back1backenemies·bosses
low_hplowestcombat
front_allrowenemies·bosses
e_backback_allcharacters
ally_alla_allenemies·bosses·combat
ally_lowesta_lowenemies·bosses
ally_low_hpa_lowcombat
ally_high_atka_atkcombat
target 은 한 가지 뜻target = 같은 스킬의 바로 앞 효과가 고른 대상 중 살아 있는 유닛 전부입니다. 예: 「dmg front 0.70 → debuff target 둔함」은 방금 맞은 앞 적에게 둔함을 겁니다. 스킬의 첫 효과에 쓰이면(조건 발동 패시브) 발동 조건의 주체 — 쓰러진 아군·체력이 낮아진 아군·약화가 걸린 아군·나를 친 적 — 입니다. 구현은 효과 목록을 돌며 직전 결과를 ctx.last_targets 에 넣고, 패시브 발동 때 이 값을 조건 주체로 미리 채웁니다.

동시 발생 처리

상황처리
같은 틱에 여러 유닛 차례속도 높은 순 → 아군 먼저 → 칸 번호 작은 순. 속도는 버프·디버프 반영한 현재 값
같은 틱에 필살기와 기본기필살기(⑧-1) 전원이 먼저, 그다음 기본기(⑧-2)
차례가 오기 전에 타깃이 쓰러짐타깃은 행동 순간에 고름 — 미리 고른 타깃이 없음. 상대가 전멸했으면 행동을 건너뛰고 게이지도 오르지 않음
행동 순서가 온 유닛이 같은 틱 앞 행동으로 쓰러짐행동하지 않음. 타이머는 이미 넘어갔으므로 부활해도 다음 간격을 기다림
광역 도중 대상이 쓰러짐칸 순서대로 하나씩 판정. 이미 쓰러진 대상은 건너뜀. 광역 1회는 시전자 게이지를 한 번만 올린다(+20)
마지막 적과 마지막 아군이 같은 틱에 쓰러짐승리. ⑨ 에서 적 전멸을 먼저 봄
시간 제한 틱에 마지막 적 처치승리. ⑨ 가 ⑩ 보다 먼저
지속 피해로 쓰러진 유닛③ 에서 쓰러지고 ⑤ 에서 퇴장 → 그 틱 행동·필살기 없음
보호막 두 개큰 값 하나만 남음 (규칙 max)
같은 능력치 버프와 디버프%를 더한 뒤 한 번에 곱한다: 공격·방어 배율 0.30~3.00, 속도 배율 0.50~2.00 으로 자름
반사 피해가 또 반사됨없음. 반사 피해는 반사·흡색·게이지·치명을 일으키지 않음
회복이 최대 체력을 넘음넘는 양은 버림. 쓰러진 유닛은 회복 대상이 아니다(부활 효과만 예외)
웨이브 사이아군 체력·게이지·상태는 그대로 이어짐. 전환 1.0초 동안 상태 지속시간·시간 제한도 멈춤. 수동 필살기 큐는 비움
난수전투마다 시드 = hash(판 id, 도전 횟수). 뽑는 순서 고정: 대상마다 치명 → 피해 난수 → 상태 부여 확률. 같은 시드·같은 편성이면 같은 결과(재현 가능)
bruni06
bruni · 게임전투·성장 명세서
05 / Damage

데미지·회복 공식

피해 공식 (바이블 6-3 + 상태 효과 자리) 피해 = max(1, ⌊ A × K × E × Cr × A ÷ (A + D) × R × (1 + 주는 피해%) × (1 + 받는 피해%) ⌋)
A = 공격자 전투 공격력 · K = 스킬 계수 × (1 + 0.06 × (스킬 Lv − 1)) · E = 상성 배율(06장) · Cr = 치명이면 1.5 + 치명 피해 버프, 아니면 1 · D = 대상 전투 방어력 · R = 0.95~1.05 · 주는 피해% = 「기세」 등 합 · 받는 피해% = 「표식」·「빙결」 − 「단단함」 합 (「무른 급소」는 Cr 의 0.5 를 줄임) (곱 0.5~2.0 으로 자름)

방어 보정 A ÷ (A + D)는 공격과 방어의 비율만 봅니다. 그래서 양쪽이 같은 배율로 커지면 판정이 같습니다 — s001 과 s300 에서 필요한 배율이 거의 같게 나온 11장의 검증이 이 성질을 확인한 것입니다. 반올림은 마지막에 한 번 내림합니다.

회복·보호막·지속 피해

종류공식규칙
회복⌊ 시전자 공격 × 치유 계수(스킬 Lv 반영) × (1 + 받는 회복%) × (1 − 메마름%) ⌋방어·상성·치명 없음. 최대 체력 초과분 버림
보호막시전자 공격 × 계수 또는 대상 최대 체력 × %피해를 체력보다 먼저 받음. 규칙 max (09장)
화상부여 순간 시전자 공격 × 0.25 / 초방어 무시 · 치명 없음 · 시전자마다 따로 (최대 3)
중독부여 순간 시전자 공격 × 계수(기본 0.10) × 중첩 / 초방어 무시 · 최대 5중첩 · 회복 감소 없음
얼룩·감전부여 순간 시전자 공격 × 계수 / 초 (감전은 게이지 −5/초 추가)방어 무시 · 치명 없음 · 시전자마다 따로 (최대 3). 화상과 따로 셈
반사 (가시)받은 피해(보호막 흡수 전) × 스킬 %(기본 20%)공격자에게. 반사 피해는 연쇄·게이지·치명 없음
재생동료: 시전자 공격 × 계수 / 초 · 적: 대상 최대 체력 % / 초방어·상성 무관. 편으로 값의 뜻이 갈림(08장 통일 표)
흡색준 피해(보호막 흡수분 포함) × 15%회복으로 처리 → 메마름 영향 받음

계산 예시 — 파이썬 실행값

경우AD방어 보정KE피해 (R=0.95~1.05)대상 체력 · 필요 타수
브루니 Lv1 ★3 S1(계수 1.0) → s001 적, 같은 속성150400.7911112 ~ 124 (중간 118)600 · 6타
같은 공격, 상성 유리 (녹 → 청)150400.7911.3146 ~ 161 (중간 153)600 · 4타
같은 공격, 상성 불리 + 치명 (녹 → 홍)150400.7910.8135 ~ 149 (중간 142)600 · 5타
SSR 타격 Lv60 ★4 S2(계수 3.0, 스킬 Lv5 ×1.24) → s150 적1,025829.40.553.7212,003 ~ 2,214 (중간 2,108)12,441 · 6타
위 + 대상 「갈라짐」(방어 −30%)1,025580.60.643.7212,313 ~ 2,557 (중간 2,435)12,441 · 6타
위 + 「표식」 +15% (받는 피해)1,025580.60.643.7212,660 ~ 2,940 (중간 2,800)12,441 · 5타

브루니 Lv1 ★3 공격 150 = 100 × 1.00(SSR) × 1.25(타격) × 1.20(★3). s150 적 = 바이블 6-4 기준 공 60·체 600·방 40 × m(150) = 1 + 0.125 × (150 − 1) + 0.00005 × (150 − 1)² = ×20.74 (12장 결정 곡선). SSR 타격 Lv60 ★4 공격 = 125 × 6.31 × 1.3.

bruni07
bruni · 게임전투·성장 명세서
06 / Elements

속성 상성표와 색 전환

바이블 4-2 그대로입니다. 순환 홍 → 녹 → 청 → 홍, 맞물림 황 ↔ 묵(서로 유리). 유리 ×1.30, 불리 ×0.80. 무속성은 없습니다. 행은 공격하는 쪽, 열은 맞는 쪽입니다.

공격 \ 방어홍 방어녹 방어청 방어황 방어묵 방어
홍 공격×1.00×1.30×0.80×1.00×1.00
녹 공격×0.80×1.00×1.30×1.00×1.00
청 공격×1.30×0.80×1.00×1.00×1.00
황 공격×1.00×1.00×1.00×1.00×1.30
묵 공격×1.00×1.00×1.00×1.30×1.00
황·묵만 서로 유리한 이유순환 3속성은 늘 「이기는 상대 하나, 지는 상대 하나」가 있지만 황·묵은 서로에게만 강하고 지는 상대가 없습니다. 대신 서로 만나면 양쪽 다 ×1.30 이라 판이 빨리 끝납니다 — 5장(황)·6장(묵) 보스전이 짧고 날카로워지도록 일부러 둔 대칭입니다.

속성이 쓰이는 곳

자리규칙
피해공격자 속성 → 대상 속성 배율 E. 광역은 대상마다 따로
회복·보호막·버프속성 영향 없음
지속 피해부여할 때의 E 를 곱해 둠 (화상: 홍 시전자 → 녹 대상이면 ×1.30 고정)
보스 b008 잿빛 왕관페이즈마다 속성 전환 — 전환 틱의 ⑧-1 이전에 바뀜 (패턴은 enemies 문서)

브루니 색 전환 (바이블 6 · color)

브루니만 속성을 바꿀 수 있습니다. 전투 밖(편성 화면)에서 비용 없이 고르고, 전투 중에는 못 바꿉니다. 바뀌는 것은 브루니의 속성(S1·S2 의 E 와 맞을 때의 E)과 전투 그림 팔레트뿐이고 능력치·스킬 계수는 그대로입니다. 방치 사냥에는 영향이 없습니다(보상은 시간 공식).

색해금그림 (art 문서가 확정)
녹시작char/c001_battle_green.png (팔레트 bruni_green)
홍s030 클리어 (1장 10화)char/c001_battle_red.png (팔레트 bruni_red)
청s060 클리어 (2장 10화)char/c001_battle_blue.png (팔레트 bruni_blue)
황s170 클리어 (5장 10화)char/c001_battle_yellow.png (팔레트 bruni_yellow)
묵s210 클리어 (6장 10화)char/c001_battle_ink.png (팔레트 bruni_ink)
bruni08
bruni · 게임전투·성장 명세서
07 / Buffs

버프 전체 목록

상태 효과는 이 표(combat.json statuses)가 유일한 원본입니다. 동료·적·보스 데이터는 여기 id 만 쓰고, 정의 문구를 따로 두지 않습니다(enemies.json 의 status 사전은 이름과 참조만 남김). 스킬은 id 와 수치·지속·확률만 바꿔 씁니다(예: 「공격 강화 +30% 10초」). 표에 없는 효과가 필요하면 game-design/gen/vocab.py 에 행을 먼저 더합니다. 「기본 수치」는 스킬이 값을 따로 적지 않았을 때 쓰는 값입니다.

버프 (22종)

id이름구분효과스킬이 적는 값기본 수치지속중첩최대제거
b_atk_up공격 강화버프공격력 증가% (20 = +20%)+20%8초refresh1해제 가능
b_def_up방어 강화버프방어력 증가%+30%8초refresh1해제 가능
b_spd_up가속버프속도 증가 (행동 간격 단축)%+20%8초refresh1해제 가능
b_crit_up날카로움버프치명률 증가%p+20%p8초refresh1해제 가능
b_critdmg_up급소 노림버프치명 피해 증가 (기본 150% 에 더함)%p+30%p8초refresh1해제 가능
b_dmg_up기세버프주는 피해 증가% / 중첩+5% / 중첩10초stack3해제 가능
b_dmg_reduce단단함버프받는 피해 감소%−20%8초refresh1해제 가능
b_crit_taken_down무른 급소버프치명으로 받을 때 치명 배율의 추가분(×1.5 의 0.5)을 줄임%−30%8초refresh1해제 가능
b_heal_up생기버프받는 회복량 증가%+25%8초refresh1해제 가능
b_heal_power_up따뜻한 손버프자신이 주는 회복·재생·보호막 양 증가%+20%8초refresh1해제 가능
b_hp_up튼튼함버프 (상시)최대 체력 증가. 걸리는 순간 현재 체력도 같은 양만큼 늘고, 풀리면 넘는 체력만 잘림%+10%즉시refresh1해제 불가 (상시 패시브 전용)
b_shield보호막버프피해를 체력보다 먼저 흡수시전자 최대 체력 % (동료) · 대상 최대 체력 % (적)15%10초max1해제 불가
b_regen재생버프1초마다 회복 (방어·상성 무관)동료: 시전자 공격 × 계수 / 적·보스: 대상 최대 체력 %공격 × 0.306초per_src3해제 가능
b_taunt도발버프상대 편 단일 지정 타깃(04장 「도발 적용」 ○)이 이 유닛으로 바뀜——5초refresh1해제 불가
b_stealth숨음버프상대 편 단일 지정·무작위 타깃 후보에서 빠짐 (광역은 맞음). 후보가 모두 숨음이면 숨음을 무시. 숨은 유닛이 공격하면 그 행동 뒤 풀림——4초refresh1해제 가능
b_reflect가시버프받은 피해(보호막 흡수 전)의 일부를 공격자에게 되돌림. 지속 피해·반사 피해는 되돌리지 않음%20%6초refresh1해제 가능
b_lifesteal흡색버프준 피해 일부만큼 회복%15%8초refresh1해제 가능
b_cc_resist꿋꿋함버프자신에게 걸리는 기절·빙결·침묵 지속 시간 감소%−30%8초refresh1해제 가능
b_debuff_dur_down털어내기버프자신에게 걸리는 모든 디버프 지속 시간 감소 (기절·빙결·침묵 포함, 꿋꿋함과 곱함)%−20%8초refresh1해제 가능
b_immune맑은 마음버프다음 디버프 1개 무효횟수1회15초count2해제 불가
b_revive다시 피는 색버프쓰러질 때 최대 체력 n% 로 1회 일어남%30%전투 끝까지unique1해제 불가 · 전투 끝까지
b_endure버팀버프 (자동)행동 불가(기절·빙결) 면역 — 행동 불가가 끝나면 자동 부여——2초refresh1해제 불가
bruni09
bruni · 게임전투·성장 명세서
08 / Debuffs

디버프 전체 목록

디버프 (15종)

id이름구분효과스킬이 적는 값기본 수치지속중첩최대제거
d_atk_down무딘 손디버프공격력 감소%−20%8초refresh1정화 가능
d_def_down갈라짐디버프방어력 감소%−30%8초refresh1정화 가능
d_spd_down둔함디버프속도 감소 (행동 간격이 늘어남)%−20%6초refresh1정화 가능
d_dmg_taken_up표식디버프받는 피해 증가. 타깃 표기 mark 가 이 상태를 찾음%+10%6초refresh1정화 가능
d_heal_down메마름디버프받는 회복량 감소%−50%8초refresh1정화 가능
d_burn화상디버프 (지속 피해)1초마다 피해 (방어 무시, 치명 없음)부여 시점 시전자 공격 × 계수공격 × 0.256초per_src3정화 가능
d_stain얼룩디버프 (지속 피해)1초마다 피해 (방어 무시, 치명 없음). 화상과 따로 셈(둘 다 걸릴 수 있음). 「얼룩 상태」 조건(vs_stained)이 이 id 를 봄부여 시점 시전자 공격 × 계수공격 × 0.256초per_src3정화 가능
d_poison중독디버프 (지속 피해)1초마다 피해 (방어 무시, 치명 없음) × 중첩. 회복 감소 없음 — 회복을 줄이려면 메마름을 따로 건다부여 시점 시전자 공격 × 계수공격 × 0.108초stack5정화 가능
d_shock감전디버프 (지속 피해)1초마다 피해 (방어 무시, 치명 없음) + 필살기 게이지 −5부여 시점 시전자 공격 × 계수공격 × 0.154초per_src3정화 가능
d_stun기절디버프 (행동 불가)S1·S2·특수기 사용 불가. 행동 타이머는 흐르고 그 사이 차례는 사라짐(그래서 S1 게이지 +20 도 없음). 피격 게이지 +5 는 받음. 적의 특수기 쿨타임도 흐름——2초refresh1정화 가능
d_freeze빙결디버프 (행동 불가)기절과 같음 + 받는 피해 +10%%+10%2초refresh1정화 가능
d_silence침묵디버프S2(필살기)·적 특수기 사용 불가. 게이지는 계속 참(100 에 머묾), 적 특수기 쿨타임도 계속 흐름 → 풀리는 틱에 바로 씀. S1·기본 공격은 함——5초refresh1정화 가능
d_blind눈부심디버프S1 이 빗나감 (피해 0, 게이지 +20 은 받음)확률 %30%5초refresh1정화 가능
d_fade바램디버프색을 잃음 — 이 유닛이 주는 피해의 상성 유리 배율 ×1.30 이 ×1.00 이 됨 (불리 ×0.80 은 그대로). 브루니 면역——5초refresh1정화 가능
d_stagger휘청디버프 (보스 대체)보스가 기절·빙결·침묵 재적용 면역(6초) 중에 또 걸리면 대신 행동 타이머 +0.5초ms+500ms즉시instant1—

「바램」은 바랜것(적·보스)이 우리 편에 거는 디버프이고 브루니는 면역입니다 — 세계관(2-4) 「브루니만 색을 잃지 않는다」를 전투로 옮긴 것입니다. 아이콘은 ui/status/<id>.png (크기는 art 문서).

bruni10
bruni · 게임전투·성장 명세서
08 / Status IDs

상태 id 통일 (1) — 정의 충돌·characters

정의가 서로 달랐던 것 — 하나로 통일

상태전에는이렇게 정함
기절 d_stuncombat: 타이머는 흐르고 차례가 사라짐 / enemies: 행동·게이지 정지combat 쪽. 타이머·적 특수기 쿨타임은 흐르고, 그 사이 차례는 사라짐. 게이지는 S1(+20)을 못 하니 그만큼 안 오르고 피격 +5 는 받음
침묵 d_silencecombat: S2 불가·게이지 계속 참 / enemies: 게이지 충전 정지combat 쪽. 게이지·적 특수기 쿨타임은 계속 차고, 풀리는 틱에 바로 씀
바램 d_fadecombat: 공·체·방 −6% 중첩 / enemies: 상성 유리 ×1.30 → ×1.00enemies 쪽. 적·보스 기술 9곳과 보스 공략(b003·b020 등)이 「상성이 사라진다」를 전제로 짜여 있다. 능력치 감소는 무딘 손·갈라짐으로 따로 건다
중독 d_poisoncombat: 지속 피해 × 중첩 / enemies: 지속 피해 + 받는 회복 −30%combat 쪽. 중독은 지속 피해만. 회복 감소가 필요한 기술은 메마름(d_heal_down)을 같이 적는다
보스 제어combat: 기절·빙결·침묵 면역 → 휘청 / enemies: 지속 50% + 6초 재적용 면역둘을 합침. 보스는 지속 50% 로 걸리고, 그 뒤 6초 안에 다시 걸리면 휘청(타이머 +0.5초)으로 바뀜. 보스 공략(b002 「황 공격에 1.5초 기절」)이 기절을 전제로 함
재생 b_regencombat: 시전자 공격 × 0.30 / enemies: 최대 체력 %값의 뜻을 편으로 나눔: 동료가 걸면 시전자 공격 × 계수, 적·보스가 걸면 대상 최대 체력 %
표식 d_dmg_taken_upcombat: +5%/중첩 3 / characters: 받는 피해 +v% (10·15)characters 쪽. 스킬이 적은 % 하나, refresh(큰 값). 중첩하지 않음

옛 키 → 원본 id (characters.json)

characters.json 의 buff/debuff 효과 키는 아래 원본 id 로 다시 생성했습니다. 「(연산자)」 줄은 효과 튜플의 첫 칸(DSL 연산자) 이름이 어느 상태를 거는지 적은 것입니다 — 연산자 이름은 그대로 두고, 판정은 오른쪽 id 의 정의를 씁니다.

옛 키원본 id이름
atk_upb_atk_up공격 강화
def_upb_def_up방어 강화
spd_upb_spd_up가속
crit_upb_crit_up날카로움
critdmg_upb_critdmg_up급소 노림
dmg_taken_downb_dmg_reduce단단함
crit_taken_downb_crit_taken_down무른 급소
heal_recv_upb_heal_up생기
heal_power_upb_heal_power_up따뜻한 손
hp_upb_hp_up튼튼함
thornsb_reflect가시
cc_resistb_cc_resist꿋꿋함
debuff_dur_downb_debuff_dur_down털어내기
atk_downd_atk_down무딘 손
def_downd_def_down갈라짐
spd_downd_spd_down둔함
markd_dmg_taken_up표식
stund_stun기절
silenced_silence침묵
heal_downd_heal_down메마름
stain (연산자)d_stain얼룩
shield (연산자)b_shield보호막
regen (연산자)b_regen재생
taunt (연산자)b_taunt도발
revive (연산자)b_revive다시 피는 색
gauge (연산자)x_gauge_up게이지 충전
heal (연산자)x_heal즉시 회복
cleanse (연산자)x_cleanse정화
dispel (연산자)x_dispel해제
bruni11
bruni · 게임전투·성장 명세서
08 / Status IDs

상태 id 통일 (2) — enemies·bosses

옛 키 → 원본 id (enemies.json · bosses.json)

적·보스 기술의 effects 첫 칸은 아래 원본 id 로 다시 생성했습니다. 값의 뜻(%, 계수, 최대 체력 %)은 07~08장 「스킬이 적는 값」 열을 따릅니다.

옛 키원본 id이름
atk_downd_atk_down무딘 손
def_downd_def_down갈라짐
slowd_spd_down둔함
stund_stun기절
silenced_silence침묵
burnd_burn화상
poisond_poison중독
shockd_shock감전
faded_fade바램
gauge_downx_gauge_down게이지 감소
tauntb_taunt도발
shieldb_shield보호막
atk_upb_atk_up공격 강화
def_upb_def_up방어 강화
spd_upb_spd_up가속
regenb_regen재생
stealthb_stealth숨음
reflectb_reflect가시
cleansex_cleanse정화
healx_heal즉시 회복
dispelx_dispel해제
bruni12
bruni · 게임전투·성장 명세서
09 / Stacking

중첩 규칙·즉시 효과·제어

중첩 규칙 7가지

규칙처리
refresh같은 id 가 다시 걸리면 수치는 큰 쪽, 지속은 새 값으로 갱신. 1개만 유지
stack같은 id 가 걸릴 때마다 중첩 +1 (최대까지). 지속은 마지막 부여 기준으로 전체 갱신. 최대에서 또 걸리면 지속만 갱신
per_src시전자마다 따로 1개. 같은 시전자가 다시 걸면 그 1개를 갱신. 대상 1명당 최대 개수 초과 시 가장 먼저 걸린 것을 지움
max1개만. 새 값이 남은 값보다 크면 교체(지속도 교체), 작으면 무시
count횟수형. 중첩 = 남은 횟수. 지속이 끝나거나 횟수를 다 쓰면 사라짐
unique전투당 1번. 발동하면 사라지고 같은 전투에서 다시 걸리지 않음
instant지속 없는 즉시 효과. 상태 칸에 남지 않음

즉시 효과 (상태 칸에 남지 않음)

id이름효과한계
x_gauge_up게이지 충전대상 필살기 게이지 +N (스킬별, 보통 +5~+50)최대 100
x_gauge_down게이지 감소대상 필살기 게이지 −N (적 대상이면 특수기 쿨타임 진행을 N÷10 초 되돌림)최소 0
x_cleanse정화대상 디버프 N개 제거 — 가장 최근에 걸린 것부터「정화 가능」만
x_dispel해제대상 버프 N개 제거 — 가장 최근에 걸린 것부터 (적 기술은 N = 전부)「해제 가능」만
x_heal즉시 회복시전자 공격 × 계수 만큼 회복최대 체력 초과분 버림
x_timer_push밀어내기대상 행동 타이머 + N ms보스는 절반

제어 효과와 보스·정예

대상규칙
보스기절·빙결·침묵 지속 ×0.5. 걸린 뒤 6초 동안 같은 3종 재적용 면역 — 그 사이 또 걸리면 대신 「휘청」(행동 타이머 +500ms)
정예행동 불가 지속 ×0.5
모두행동 불가가 끝나면 「버팀」 2초 — 그동안 기절·빙결 무효

능력치 변화의 합산

같은 능력치에 걸린 버프·디버프·패시브의 %는 모두 더한 뒤 한 번 곱합니다(곱하기를 겹치지 않음). 그다음 범위로 자릅니다: 공격 ×0.3~3.0, 방어 ×0.0~3.0, 속도 ×0.5~2.0, 받는 피해 ×0.5~2.0. 예: 공격 강화 +20% 와 무딘 손 −20% 가 같이 걸리면 ×1.00 입니다.

상태 부여 확률

스킬이 「확률 n%」를 적으면 대상마다 그 확률로 굴립니다(저항 능력치는 없음). 「맑은 마음」이 있으면 굴림 전에 1회를 써서 막습니다. 이미 쓰러진 대상에는 걸지 않습니다.

bruni13
bruni · 게임전투·성장 명세서
10 / Stats & Power

능력치 계산 순서와 전투력

능력치 계산 순서

순서계산
1기초 = 기준(공100·체1000·방60) × 등급 배율 × 역할 배율 × 개성(±10%, characters)
2× 레벨 배율 (동료 1+0.09(Lv−1) / 브루니 1+0.06(Lv−1))
3× ★ 배율 (1+0.10(★−1)) × 각성 배율 (1+0.05×각성)
4+ 장비 고정치 (브루니만, 장비 기본값 × (1+0.10×칸 강화))
5× (1 + 유물 %합 + 인연 % + 상시 패시브 %합)
6내림 → 표시 능력치 (전투력 계산에 씀)
7전투 중: × 버프·디버프 배율(잘라냄) → 전투 능력치

속도는 역할 값(90~110)을 그대로 쓰고 레벨·★·각성으로 오르지 않습니다. 속도를 바꾸는 것은 버프·디버프와 패시브뿐입니다. 레벨 배율은 바이블 6-2(동료 Lv100 ×9.91 · 브루니 Lv150 ×9.94), ★ 은 단계당 +10%, 각성은 단계당 +5%, 인연은 Lv 당 공격·체력 +1%(이 문서가 정함)입니다.

전투력개인 = round((공격 × 5 + 체력 × 0.5 + 방어 × 3) × (1 + 스킬 레벨 합 × 0.01)) — 바이블 6-2. 파티 = 출전 5명의 합. 바이블의 「+ 유물 보정」은 유물 능력치 효과가 순서 5에서 개인 능력치에 이미 들어가므로 따로 더하지 않습니다(두 번 세지 않기 위해). 능력치가 아닌 유물 효과(방치 보상 증가 등)는 전투력에 넣지 않습니다.

예시 — 파이썬 실행값 (개성 ±10%·장비·유물 없음)

유닛등급역할Lv★각성스킬 합인연공격체력방어속도전투력
브루니 (시작)SSR타격130311501,140641051,557
R 돌격 (시작)R돌격11031501,15269901,064
SR 치유 Lv40 ★2SR치유4020933223,8712271004,607
SSR 술사 Lv70 ★3SSR술사70301551,2146,2983379511,764
SSR 사격 Lv100 ★5 각성5SSR사격1005530102,45714,17772810028,025
브루니 Lv150 ★5 각성5 (장비 제외)SSR타격1505530102,37018,01293910530,775
bruni14
bruni · 게임전투·성장 명세서
11 / Verification

전투 시뮬레이션 검증

참조 구현(combat_sim.py)으로 「이 판을 95% 확률로 넘으려면 아군 능력치가 적의 몇 배여야 하는가」를 이분 탐색했습니다. 아군은 표준 편성(돌격 R · 브루니 SSR · 사격 SR · 술사 SSR · 치유 SR, 시뮬레이션용 표준 스킬 — 실제 스킬은 characters 문서, 상성 ×1.00), 배율 1.0 = 각자 Lv1 ★1 기준 능력치입니다. 아래 첫 표는 바이블 6-4 기준값 적으로 잰 일반화 값, 둘째 표는 stages.json 의 실제 판 구성(enemies.json·bosses.json 능력치·특수기·보스 페이즈)으로 잰 값입니다.

판 종류 (기준값 적)필요 배율 c (s001)s300 에서 잰 c스킬 Lv10 일 때 c
일반 판 (웨이브 3)0.640.650.51
보스 판 (웨이브 2 + 보스)0.740.730.58

s001 과 s300 의 c 가 같게 나옵니다 — 방어 보정이 비율이라 판정이 크기에 무관하다는 05장 성질이 실제로 성립합니다. 그래서 어려움 난이도(공·체·방 ×3)의 추천 전투력은 정확히 보통의 3배입니다.

판 시간 (시드 30개, 기준값 적)

아군 배율판승률평균 시간최대 시간
0.8일반100%19.7초20.5초
0.8보스100%30.0초31.2초
1일반100%16.5초16.7초
1보스100%24.5초24.6초
1.5일반100%10.2초10.5초
1.5보스100%14.7초15.0초
2일반100%8.5초8.5초
2보스100%11.3초11.9초
bruni15
bruni · 게임전투·성장 명세서
11 / Verification

판별 추천 전투력과 검사

추천 전투력 — 실제 판 구성, m(s) = 1 + 0.125 × (s − 1) + 0.00005 × (s − 1)²

stages.json 의 req_cp(추천 전투력)는 손으로 맞춘 식이 아니라 표준 편성이 그 판을 시드 20개 중 95% 이상 이기는 최소 파티 전투력입니다(curve.stage_req). 같은 방법의 승률 50% 값이 clear_cp 로, 경제 시뮬레이션의 돌파 판정에 씁니다. 아래 표의 추천 전투력 열은 growth.json 이 stages.json 에서 그대로 옮긴 값이고, systems_data.py 가 두 파일이 같은지 검사합니다.

판m(s)c = 배율 ÷ m필요 배율 95%필요 배율 50%추천 전투력 (95%)돌파 전투력 (50%)곡선 B였다면 m · 추천
s00110.580.580.563,1343,0571.0 · 3,134
s010 보스2.130.591.251.226,7486,6131.63 · 5,169
s030 보스4.670.673.113.0516,81616,4913.03 · 10,918
s060 보스8.550.615.255.1628,45227,9315.13 · 17,074
s090 보스12.520.688.468.2845,79044,8447.23 · 26,441
s130 보스17.960.610.7210.4258,02756,43410.03 · 32,411
s150 보스20.740.6613.6713.5174,02673,15511.43 · 40,805
s170 보스23.550.6314.8314.1480,28276,58712.83 · 43,733
s210 보스29.310.6318.5417.96100,36697,22015.63 · 53,524
s250 보스35.230.6723.4123.17126,748125,44118.43 · 66,314
s300 보스42.850.6326.8625.9145,402140,22521.93 · 74,423
검사 (systems_data.py 가 매번 돌림)stages.json지금 다시 계산같음
s001 추천 / 돌파3,134 / 3,0573,134 / 3,057○
s150 추천 / 돌파74,026 / 73,15574,026 / 73,155○
s300 추천 / 돌파145,402 / 140,225145,402 / 140,225○

판마다 적 종류·정예 수가 달라 이웃한 판끼리 추천 전투력이 오르내릴 수 있습니다(c 열 0.5~0.7). 「곡선 B」 열은 같은 구성에서 적 배율만 바꿨을 때의 값으로, 판정이 크기에 무관하므로 배율 비로 환산했습니다. 아군 끝 배율은 레벨 ×9.91 · ★5 ×1.4 · 각성5 ×1.25 · 인연10 ×1.09 = ×18.9, 여기에 스킬 Lv10 계수 ×1.54 입니다 — s300 필요 배율 ×26.86 은 장비·유물 없이 전원 최대 육성으로 넘는 크기입니다.

bruni16
bruni · 게임전투·성장 명세서
12 / Pacing Check

적 곡선 결정과 진행 속도 검증

결정 — 적 판 배율 m(s) = 1 + 0.125 × (s − 1) + 0.00005 × (s − 1)²적 능력치·추천 전투력·경제 돌파 판정이 모두 이 곡선 하나에서 나옵니다. 원본은 game-design/gen/curve.py 의 CURVE 한 줄이고, enemies_data.py(적 80·보스 24 능력치, 토벌 단계) → stages_data.py(본판 300·어려움·시련의 탑 추천 전투력) → economy_sim.py → systems_data.py 가 같은 함수를 읽습니다. s300 배율 ×42.85 (이전 곡선 1 + 0.07 × (s − 1) 은 ×21.93). 바이블 6-4 에 반영했습니다(2026-10-14).

무과금 이용자의 수입을 추정하고(아래 가정), 그 수입으로 13~14장 비용 표를 따라 살 수 있는 레벨을 구한 뒤, 그 파티로 stages.json 의 실제 보스 판을 시드 12개(11승 이상 = 통과)로 돌려 몇 판까지 넘는지 쟀습니다. 재화 수입의 확정 시뮬레이션은 재화·성장 속도 명세서가 하고, 여기서는 비용 곡선과 적 곡선이 서로 맞는지만 봅니다.

일차도달 판 가정누적 물감 방울누적 골드누적 브루니 경험치
1일차s0203,61021,70014,100
7일차s06043,500261,000170,000
30일차s150658,0003,950,0002,570,000
90일차s30022,100,000132,000,00086,100,000

가정 (추정 — 설계 가정이며 실측 아님): 방치 하루 30시간분(24시간 + 빠른 방치 무료 1·광고 2회 × 2시간), 수입은 그 시각 최고 판의 바이블 8장 공식, 1일차 s020 은 이 문서의 가정. 물감 방울의 16% 를 주력 1명이 받음(5명 80%). 브루니 경험치는 방치분 + 판 클리어·장비 판매 30%. 장비·유물·각성은 넣지 않음(보수적).

결정 곡선 C — m(s) = 1 + 0.125 × (s − 1) + 0.00005 × (s − 1)²

일차목표 (바이블 6-4)동료 Lv (브루니)★ / 스킬 / 인연넘는 보스 판목표 대비목표 보스에 필요한 배율
1일차s0208 (브루니 17)+0 / 1 / 1s010-10판×1.27
7일차s06026 (브루니 48)+0 / 3 / 3s030-30판×1.4
30일차s15055 (브루니 86)+1 / 5 / 5s080-70판×1.75
90일차s30088 (브루니 137)+2 / 7 / 7s140-160판×1.97

비교: 곡선 B — m(s) = 1 + 0.07 × (s − 1)

일차목표 (바이블 6-4)동료 Lv (브루니)★ / 스킬 / 인연넘는 보스 판목표 대비목표 보스에 필요한 배율
1일차s0208 (브루니 17)+0 / 1 / 1s020+0판×0.87
7일차s06026 (브루니 48)+0 / 3 / 3s070+10판×0.83
30일차s15055 (브루니 86)+1 / 5 / 5s150+0판×0.97
90일차s30088 (브루니 137)+2 / 7 / 7s270-30판×1.01
bruni17
bruni · 게임전투·성장 명세서
12 / Pacing Check

곡선을 고른 까닭과 경제 대조

왜 이 곡선인가 (2026-10-14 밸런스 수정)

이전 결정 곡선 B(1 + 0.07 × (s − 1))은 위 표처럼 장비·유물·각성·모집을 뺀 계산에서는 목표와 맞았습니다(s070 · s150 · s270). 그런데 그것들을 모두 넣은 경제 시뮬레이션에서는 무과금이 5일 만에 s300에 닿았습니다. 원인은 브루니 장비였습니다 — 장비 1부위 기준값이 등급마다 ×2.8(태초 38,550)이라 6부위 +20 이면 약 70만으로, 동료 5명 끝 전투력 합의 몇 배였고, 추천 전투력(장비 없는 표준 편성 기준)을 한참 앞질렀습니다.

그래서 두 가지를 한 쌍으로 바꿨습니다. ① 장비 기준값을 등급마다 ×1.7(80 → 태초 1,931)로 줄여 최대 파티 중 장비 몫을 약 23% 로 낮췄습니다(장비·아이템 명세서 02장). ② 적 곡선을 C(1 + 0.125 × (s − 1) + 0.00005 × (s − 1)²)로 바꿔, 유물·각성·SSR 모집·장비가 모두 들어간 경제 시뮬레이션의 무과금 중앙값이 7일 s060 · 30일 s150 · 90일 s300 에 닿게 계수를 격자 탐색으로 골랐습니다. 직선 항이 초반을, 작은 제곱 항이 유물·각성으로 성장이 가팔라지는 후반을 맞춥니다.

위 「결정 곡선」 표가 목표보다 뒤처지는 것(s030 · s080 · s140, 90일차 ×1.97 부족)은 의도한 것입니다 — 이 표는 레벨·스킬·★·인연만 넣은 하한이고, 빠진 몫(유물 Lv10 전원 대상 공격·체력 +22% · 각성 5 ×1.25 · SSR 비중 · 장비 약 23%)을 경제 시뮬레이션이 채웁니다. 진도 판정의 원본은 재화·성장 속도 명세서 10장입니다.

곡선을 바꿀 때

순서할 일결과물
1gen/curve.py 의 CURVE 를 바꾼다 (또는 새 곡선을 CURVES 에 더함)—
2python3 game-design/gen/enemies_data.pyenemies.json stat_first·stat_last · bosses.json appear.stats·raid_tiers·event_levels
3python3 game-design/gen/stages_data.py (약 4분 — 판 300 + 탑 100 을 전투 시뮬레이션, 어려움 최대 파티 검증 포함)stages.json m·req_cp·clear_cp·hard·tower
4python3 game-design/gen/items_data.pyitems.json 장비 능력치 (economy.json assume.gear.piece_cp — 곡선과 한 쌍)
5python3 game-design/gen/economy_sim.py (약 1분) → items_data.py 한 번 더(장비 몫 표가 시뮬레이션 결과를 읽음)economy_sim.json (stages.json req_cp 를 읽음)
6python3 game-design/gen/systems_data.py → systems.py · economy.py · stages.py · enemies.py · items.pygrowth.json checks · 문서 HTML
bruni18
bruni · 게임전투·성장 명세서
13 / Companion Level

동료 레벨 비용 (Lv1~51)

동료 59명 공통입니다(등급·역할 무관). 공식: 물감 방울 = r3(28 × 1.115^(Lv−1) + 10 × Lv), 골드 = r3(물감 방울 × 2.5) — r3 는 유효숫자 3자리 반올림. 레벨 상한은 ★ 으로 정해집니다(★1 40 · ★2 55 · ★3 70 · ★4 85 · ★5 100, 바이블 6). 상한에 닿은 동료는 승급 전까지 레벨업 버튼이 「승급 필요」로 바뀝니다. 레벨업은 1회·5회·최대(가진 재화로 가능한 만큼) 세 버튼입니다.

레벨물감 방울골드누적 방울누적 골드능력치 배율상한
1 → 2389538951.09
2 → 351128892231.18
3 → 4651621543851.27
4 → 5791982335831.36
5 → 6932323268151.45
6 → 71082704341,0851.54
7 → 81243105581,3951.63
8 → 91403506981,7451.72
9 → 101573928552,1371.81
10 → 111754381,0302,5751.90
11 → 121934821,2233,0571.99
12 → 132135321,4363,5892.08
13 → 142335821,6694,1712.17
14 → 152556381,9244,8092.26
15 → 162796982,2035,5072.35
16 → 173037582,5066,2652.44
17 → 183308252,8367,0902.53
18 → 193588953,1947,9852.62
19 → 203899723,5838,9572.71
20 → 214221,0604,00510,0172.80
21 → 224571,1404,46211,1572.89
22 → 234951,2404,95712,3972.98
23 → 245371,3405,49413,7373.07
24 → 255821,4606,07615,1973.16
25 → 266321,5806,70816,7773.25
26 → 276861,7207,39418,4973.34
27 → 287451,8608,13920,3573.43
28 → 298092,0208,94822,3773.52
29 → 308802,2009,82824,5773.61
30 → 319582,40010,78626,9773.70
31 → 321,0402,60011,82629,5773.79
32 → 331,1402,85012,96632,4273.88
33 → 341,2403,10014,20635,5273.97
34 → 351,3603,40015,56638,9274.06
35 → 361,4803,70017,04642,6274.15
36 → 371,6204,05018,66646,6774.24
37 → 381,7804,45020,44651,1274.33
38 → 391,9504,88022,39656,0074.42
39 → 402,1405,35024,53661,3574.51★1 상한
40 → 412,3505,88026,88667,2374.60
41 → 422,5906,48029,47673,7174.69
42 → 432,8507,12032,32680,8374.78
43 → 443,1407,85035,46688,6874.87
44 → 453,4608,65038,92697,3374.96
45 → 463,8209,55042,746106,8875.05
46 → 474,21010,50046,956117,3875.14
47 → 484,66011,60051,616128,9875.23
48 → 495,15012,90056,766141,8875.32
49 → 505,69014,20062,456156,0875.41
50 → 516,30015,80068,756171,8875.50
bruni19
bruni · 게임전투·성장 명세서
13 / Companion Level

동료 레벨 비용 (Lv51~100)

레벨물감 방울골드누적 방울누적 골드능력치 배율상한
51 → 526,98017,40075,736189,2875.59
52 → 537,73019,30083,466208,5875.68
53 → 548,57021,40092,036229,9875.77
54 → 559,51023,800101,546253,7875.86★2 상한
55 → 5610,60026,500112,146280,2875.95
56 → 5711,70029,200123,846309,4876.04
57 → 5813,00032,500136,846341,9876.13
58 → 5914,40036,000151,246377,9876.22
59 → 6016,00040,000167,246417,9876.31
60 → 6117,80044,500185,046462,4876.40
61 → 6219,80049,500204,846511,9876.49
62 → 6322,00055,000226,846566,9876.58
63 → 6424,50061,200251,346628,1876.67
64 → 6527,30068,200278,646696,3876.76
65 → 6630,30075,800308,946772,1876.85
66 → 6733,80084,500342,746856,6876.94
67 → 6837,60094,000380,346950,6877.03
68 → 6941,800104,000422,1461,054,6877.12
69 → 7046,600116,000468,7461,170,6877.21★3 상한
70 → 7151,900130,000520,6461,300,6877.30
71 → 7257,800144,000578,4461,444,6877.39
72 → 7364,400161,000642,8461,605,6877.48
73 → 7471,700179,000714,5461,784,6877.57
74 → 7579,800200,000794,3461,984,6877.66
75 → 7689,000222,000883,3462,206,6877.75
76 → 7799,100248,000982,4462,454,6877.84
77 → 78110,000275,0001,092,4462,729,6877.93
78 → 79123,000308,0001,215,4463,037,6878.02
79 → 80137,000342,0001,352,4463,379,6878.11
80 → 81153,000382,0001,505,4463,761,6878.20
81 → 82170,000425,0001,675,4464,186,6878.29
82 → 83190,000475,0001,865,4464,661,6878.38
83 → 84212,000530,0002,077,4465,191,6878.47
84 → 85236,000590,0002,313,4465,781,6878.56★4 상한
85 → 86263,000658,0002,576,4466,439,6878.65
86 → 87293,000732,0002,869,4467,171,6878.74
87 → 88327,000818,0003,196,4467,989,6878.83
88 → 89364,000910,0003,560,4468,899,6878.92
89 → 90406,0001,020,0003,966,4469,919,6879.01
90 → 91452,0001,130,0004,418,44611,049,6879.10
91 → 92504,0001,260,0004,922,44612,309,6879.19
92 → 93562,0001,400,0005,484,44613,709,6879.28
93 → 94627,0001,570,0006,111,44615,279,6879.37
94 → 95699,0001,750,0006,810,44617,029,6879.46
95 → 96779,0001,950,0007,589,44618,979,6879.55
96 → 97868,0002,170,0008,457,44621,149,6879.64
97 → 98968,0002,420,0009,425,44623,569,6879.73
98 → 991,080,0002,700,00010,505,44626,269,6879.82
99 → 1001,200,0003,000,00011,705,44629,269,6879.91★5 상한
레벨 초기화동료 레벨을 되돌리는 기능은 1차판에 넣지 않습니다. 넣는다면 쓴 물감 방울·골드 100% 반환을 원칙으로 합니다(손해 없는 되돌리기는 키우기 장르에서 결제 압박을 줄이는 장치) — 바이블 추가 제안 ⑨.
bruni20
bruni · 게임전투·성장 명세서
14 / Bruni Level

브루니 레벨 경험치 (Lv1~150)

브루니는 물감 방울을 쓰지 않고 브루니 경험치로 자동으로 오릅니다(방치·판 클리어·장비 판매, 바이블 6). 공식 = r3(480 × 1.072^(Lv−1)). 능력치 배율 = 1 + 0.06 × (Lv − 1) → Lv150 ×9.94. 브루니 레벨은 장비 강화 상한(17장)도 정합니다.

Lv필요누적Lv필요누적Lv필요누적
1→248048051→5215,500224,517101→102502,0007,470,417
2→351599552→5316,600241,117102→103538,0008,008,417
3→45521,54753→5417,800258,917103→104577,0008,585,417
4→55912,13854→5519,100278,017104→105618,0009,203,417
5→66342,77255→5620,500298,517105→106663,0009,866,417
6→76803,45256→5722,000320,517106→107711,00010,577,417
7→87284,18057→5823,600344,117107→108762,00011,339,417
8→97814,96158→5925,300369,417108→109817,00012,156,417
9→108375,79859→6027,100396,517109→110876,00013,032,417
10→118976,69560→6129,000425,517110→111939,00013,971,417
11→129627,65761→6231,100456,617111→1121,010,00014,981,417
12→131,0308,68762→6333,400490,017112→1131,080,00016,061,417
13→141,1109,79763→6435,800525,817113→1141,160,00017,221,417
14→151,19010,98764→6538,300564,117114→1151,240,00018,461,417
15→161,27012,25765→6641,100605,217115→1161,330,00019,791,417
16→171,36013,61766→6744,000649,217116→1171,420,00021,211,417
17→181,46015,07767→6847,200696,417117→1181,530,00022,741,417
18→191,57016,64768→6950,600747,017118→1191,640,00024,381,417
19→201,68018,32769→7054,300801,317119→1201,750,00026,131,417
20→211,80020,12770→7158,200859,517120→1211,880,00028,011,417
21→221,93022,05771→7262,400921,917121→1222,020,00030,031,417
22→232,07024,12772→7366,800988,717122→1232,160,00032,191,417
23→242,22026,34773→7471,7001,060,417123→1242,320,00034,511,417
24→252,38028,72774→7576,8001,137,217124→1252,480,00036,991,417
25→262,55031,27775→7682,3001,219,517125→1262,660,00039,651,417
26→272,73034,00776→7788,3001,307,817126→1272,850,00042,501,417
27→282,93036,93777→7894,6001,402,417127→1283,060,00045,561,417
28→293,14040,07778→79101,0001,503,417128→1293,280,00048,841,417
29→303,36043,43779→80109,0001,612,417129→1303,520,00052,361,417
30→313,60047,03780→81117,0001,729,417130→1313,770,00056,131,417
31→323,86050,89781→82125,0001,854,417131→1324,040,00060,171,417
32→334,14055,03782→83134,0001,988,417132→1334,330,00064,501,417
33→344,44059,47783→84144,0002,132,417133→1344,640,00069,141,417
34→354,76064,23784→85154,0002,286,417134→1354,980,00074,121,417
35→365,10069,33785→86165,0002,451,417135→1365,340,00079,461,417
36→375,47074,80786→87177,0002,628,417136→1375,720,00085,181,417
37→385,86080,66787→88190,0002,818,417137→1386,130,00091,311,417
38→396,29086,95788→89203,0003,021,417138→1396,580,00097,891,417
39→406,74093,69789→90218,0003,239,417139→1407,050,000104,941,417
40→417,230100,92790→91234,0003,473,417140→1417,560,000112,501,417
41→427,750108,67791→92250,0003,723,417141→1428,100,000120,601,417
42→438,300116,97792→93269,0003,992,417142→1438,680,000129,281,417
43→448,900125,87793→94288,0004,280,417143→1449,310,000138,591,417
44→459,540135,41794→95309,0004,589,417144→1459,980,000148,571,417
45→4610,200145,61795→96331,0004,920,417145→14610,700,000159,271,417
46→4711,000156,61796→97355,0005,275,417146→14711,500,000170,771,417
47→4811,800168,41797→98380,0005,655,417147→14812,300,000183,071,417
48→4912,600181,01798→99408,0006,063,417148→14913,200,000196,271,417
49→5013,500194,51799→100437,0006,500,417149→15014,100,000210,371,417
50→5114,500209,017100→101468,0006,968,417
bruni21
bruni · 게임전투·성장 명세서
15 / Promotion

승급 (★) 비용

승급은 기억 조각(동료별) + 골드로 ★ 을 하나씩 올립니다. 모든 등급이 ★5 까지 오릅니다(바이블 4-1). 기억 조각이 모자라면 무지개 조각을 1:1 로 대신 쓸 수 있습니다. 브루니는 기억 조각이 없어 무지개 조각만 씁니다. 조각을 얻는 길은 중복 모집(아래 표)과 stages·events 문서의 보상입니다.

태생★기억 조각중복 환산골드누적 조각누적 골드승급 후 레벨 상한★ 배율
R★1 → ★2102장5,000105,00055×1.1
R★2 → ★3204장20,0003025,00070×1.2
R★3 → ★4408장80,00070105,00085×1.3
R★4 → ★56012장250,000130355,000100×1.4
SR★2 → ★3302장20,0003020,00070×1.2
SR★3 → ★4604장80,00090100,00085×1.3
SR★4 → ★5906장250,000180350,000100×1.4
SSR★3 → ★4802장80,0008080,00085×1.3
SSR★4 → ★51203장250,000200330,000100×1.4
브루니★3 → ★4무지개 100—80,000——150 (브루니)×1.3
브루니★4 → ★5무지개 200—250,000——150 (브루니)×1.4

중복 모집 환원 (바이블 9-2)

등급기억 조각무지개 조각★5 까지 필요한 중복 (조각만)
R5126장
SR15512장
SSR50204장
등급별 길이★5 까지 중복이 R 26장 · SR 12장 · SSR 4장입니다. R 은 길지만 확률이 높고(상시 80%), 무지개 조각으로 메울 수 있습니다 — 「R 도 끝까지 쓸 수 있게, 대신 길이 길게」(바이블 4-1). 골드는 등급과 무관하게 ★ 단계로만 정해집니다.

바이블 추가 제안 ②: 브루니 승급에도 같은 ★ 단계 골드를 받습니다(바이블은 「무지개 조각만」이라고만 적음 — 조각 종류를 말한 것으로 읽었습니다).

bruni22
bruni · 게임전투·성장 명세서
16 / Awaken & Skill

각성·스킬 강화 비용

각성 (★5 동료·브루니, 0 → 5)

깨움돌 + 속성 정수(상) + 골드. 단계마다 능력치 +5%(바이블). 2·3·4 단계에는 능력치 밖의 효과를 하나씩 붙여 단계마다 체감이 있게 했습니다. 표의 「정수(상)」은 동료 속성의 정수(상) 아이템을 뺍니다 — 홍 i111, 녹 i114, 청 i117, 황 i120, 묵 i123 (growth.json awaken_essence). 브루니는 색 전환과 상관없이 녹(i114)을 씁니다. 이벤트 상점의 정수(상)는 「속성 선택 정수(상) 1」로, 살 때 속성을 고릅니다(원정 상점과 같은 규칙, events.json shop).

단계깨움돌정수(상)골드누적 깨움돌누적 정수누적 골드배율효과
0 → 12010300,0002010300,000×1.05능력치 +5%
1 → 24020600,0006030900,000×1.1능력치 +5% · S3 패시브 수치 +10%
2 → 360301,000,000120601,900,000×1.15능력치 +5% · 필살기 시작 게이지 +20
3 → 490451,500,0002101053,400,000×1.2능력치 +5% · S3 패시브 수치 +10% (누적 +20%)
4 → 5120602,500,0003301655,900,000×1.25능력치 +5% · 각성 테두리·전투 그림 색 강조

스킬 강화 (스킬 3개 각각, Lv1 → 10)

비결서(하·중·상) + 골드. 강화하면 그 스킬의 계수(피해·회복·보호막·패시브 수치)가 × (1 + 0.06 × (Lv − 1)) 로 커집니다 — Lv10 ×1.54. 지속시간·확률·게이지 값은 레벨로 바뀌지 않습니다. 동료 레벨 조건이 있어 레벨을 앞질러 스킬만 올릴 수 없습니다.

스킬 Lv비결서수량골드필요 동료 Lv누적 골드계수 배율
1 → 2하22,000102,000×1.06
2 → 3하45,000207,000×1.12
3 → 4하610,0003017,000×1.18
4 → 5하1020,0004037,000×1.24
5 → 6중440,0005077,000×1.3
6 → 7중670,00060147,000×1.36
7 → 8중10120,00070267,000×1.42
8 → 9상4200,00080467,000×1.48
9 → 10상8350,00090817,000×1.54

한 스킬 Lv10 까지: 비결서 하 22 · 중 20 · 상 12, 골드 817,000. 동료 1명 3스킬이면 그 3배(골드 2,451,000). 스킬 레벨 합은 전투력에 +1%씩 들어갑니다(최대 30 → ×1.30).

bruni23
bruni · 게임전투·성장 명세서
17 / Gear Enhance

장비 강화 비용 (+0~+20)

장비는 브루니만 씁니다(6부위 × 7등급 × 2계열 = 84종, 목록·기본 능력치는 장비·아이템 명세서). 강화는 장비가 아니라 부위 칸에 붙습니다. 물감 항아리에서 더 좋은 장비가 나와 갈아 끼워도 그 칸의 강화 단계가 그대로 남습니다 — 장비를 자주 바꾸는 키우기 구조에서 강화가 헛돌지 않게 하려는 결정입니다(바이블 추가 제안 ③).

항목규칙
능력치장비 기본 능력치 × (1 + 0.10 × 칸 강화) → +20 = ×3.00
성공 확률100%. 실패·파괴·하락 없음 (확률형 요소를 강화에 두지 않음)
상한칸 강화 ≤ 브루니 Lv ÷ 7 (내림), 최대 +20 → 브루니 Lv140 에서 +20
강화석+1~+8 하 · +9~+15 중 · +16~+20 상
일괄「6부위 모두 +1」 버튼 — 낮은 칸부터, 재화가 떨어지면 거기서 멈춤
강화강화석수량골드필요 브루니 Lv누적 골드 (1칸)누적 하/중/상배율
+0 → +1하22,00072,0002/0/0×1.1
+1 → +2하32,700144,7005/0/0×1.2
+2 → +3하43,650218,3509/0/0×1.3
+3 → +4하54,9202813,27014/0/0×1.4
+4 → +5하66,6403519,91020/0/0×1.5
+5 → +6하78,9704228,88027/0/0×1.6
+6 → +7하812,1004940,98035/0/0×1.7
+7 → +8하916,3005657,28044/0/0×1.8
+8 → +9중422,1006379,38044/4/0×1.9
+9 → +10중629,80070109,18044/10/0×2.0
+10 → +11중840,20077149,38044/18/0×2.1
+11 → +12중1054,30084203,68044/28/0×2.2
+12 → +13중1273,30091276,98044/40/0×2.3
+13 → +14중1498,90098375,88044/54/0×2.4
+14 → +15중16134,000105509,88044/70/0×2.5
+15 → +16상6180,000112689,88044/70/6×2.6
+16 → +17상9243,000119932,88044/70/15×2.7
+17 → +18상12329,0001261,261,88044/70/27×2.8
+18 → +19상15444,0001331,705,88044/70/42×2.9
+19 → +20상18599,0001402,304,88044/70/60×3.0

6칸 모두 +20: 골드 13,829,280, 강화석 하 264 · 중 420 · 상 360.

bruni24
bruni · 게임전투·성장 명세서
17 / Endless Sinks

끝없는 지출처 — 색 다듬기·방울 교환

+20 이 끝난 뒤에도 골드가 갈 곳이 있어야 합니다. 경제 검토에서 무과금 90일째 골드 약 10억·물감 방울 7,400만이 남는다고 나왔고, s300 하루 골드 수입은 방치만으로 10,736,033(시간당 223,667 × 24시간 × 광고 2배)입니다. 그래서 상한 없는 지출처 둘을 둡니다.

색 다듬기 — 장비 칸마다, 골드만

항목규칙
해금칸 강화 +20
규칙장비 칸 강화 +20 이 된 칸부터. n단계 비용 = r3(2,500,000 × 1.15^(n−1)) 골드, 재료 없음. 단계마다 그 칸 장비 기본 능력치 +1% (강화 배율 ×3.00 에 더함 → (3.00 + 0.01n)). 상한 없음
일괄「6칸 모두 +1단계」 버튼 — 낮은 칸부터, 골드가 떨어지면 멈춤
단계골드1칸 누적6칸 누적칸 능력치 배율 (강화 ×3.00 에 더함)
12,500,0002,500,00015,000,000×3.01
22,880,0005,380,00032,280,000×3.02
33,310,0008,690,00052,140,000×3.03
43,800,00012,490,00074,940,000×3.04
54,370,00016,860,000101,160,000×3.05
65,030,00021,890,000131,340,000×3.06
75,780,00027,670,000166,020,000×3.07
86,650,00034,320,000205,920,000×3.08
97,650,00041,970,000251,820,000×3.09
108,790,00050,760,000304,560,000×3.10
1517,700,000118,960,000713,760,000×3.15
2035,600,000256,060,0001,536,360,000×3.20
2571,600,000531,960,0003,191,760,000×3.25
30144,000,0001,086,860,0006,521,160,000×3.30
35290,000,0002,203,860,00013,223,160,000×3.35
40582,000,0004,447,860,00026,687,160,000×3.40
451,170,000,0008,963,860,00053,783,160,000×3.45
502,360,000,00018,053,860,000108,323,160,000×3.50
554,740,000,00036,323,860,000217,943,160,000×3.55
609,530,000,00073,073,860,000438,443,160,000×3.60
6칸 모두 n단계필요 골드s300 하루 수입으로 며칠
10단계304,560,00028.4일
20단계1,536,360,000143.1일
30단계6,521,160,000607.4일
40단계26,687,160,0002485.8일
50단계108,323,160,00010089.7일
60단계438,443,160,00040838.5일

물감 방울 → 무지개 조각 (원정 상점 한 줄)

항목값
교환물감 방울 → 무지개 조각 1개
값이번 주 n번째 교환 = 물감 방울 100,000 × 2^(n−1) → 100,000 · 200,000 · 400,000 · 800,000 · 1,600,000 · 3,200,000 · 6,400,000 · 12,800,000 · 25,600,000 · 51,200,000
한도주 10회 (매주 월요일 04:00) · 10회 합계 방울 102,300,000
해금동료 1명 이상 Lv100 (방울을 더 쓸 곳이 없어진 뒤)
까닭s300 하루 방울 수입(방치 24시간 × 광고 2배)의 약 일주일치를 10번째 교환이 혼자 받음 — 남는 방울이 쌓이지 않게 하면서 무지개 조각은 주 10개로 묶는다

s300 하루 방울 수입 1,789,339 기준. 이 줄은 뽑기·상점 문서의 원정 상점 표에 들어가야 합니다(바이블 추가 제안 ⑯ — gacha 문서 반영 필요). 색 다듬기는 경제 시뮬레이터의 지출 규칙에도 들어가야 남는 골드가 줄어듭니다(economy 문서 반영 필요).

bruni25
bruni · 게임전투·성장 명세서
18 / Paint Pot

물감 항아리 레벨 비용 (Lv1~30)

물감 항아리는 계정 하나에 하나이고 Lv1~30 입니다. 레벨을 올리면 높은 등급 장비가 나올 확률이 오릅니다 — 레벨별 확률표는 뽑기·상점 명세서가 공개 형식으로 싣습니다. 여기서는 올리는 비용만 정합니다. 골드를 내면 대기가 시작되고, 대기가 끝나야 레벨이 오릅니다. 대기 중에도 항아리는 쓸 수 있습니다.

Lv골드대기빛구슬 즉시 완료누적 골드누적 대기
1 → 22,0005분12,0000.0일
2 → 32,8407분24,8400.0일
3 → 44,0309분28,8700.0일
4 → 55,73012분214,6000.0일
5 → 68,13016분322,7300.0일
6 → 711,50021분434,2300.0일
7 → 816,40028분550,6300.1일
8 → 923,30037분773,9300.1일
9 → 1033,10049분9107,0300.1일
10 → 1146,9001시간 5분11153,9300.2일
11 → 1266,7001시간 27분15220,6300.2일
12 → 1394,7001시간 55분20315,3300.3일
13 → 14134,0002시간 33분26449,3300.4일
14 → 15191,0003시간 24분34640,3300.6일
15 → 16271,0004시간 31분46911,3300.7일
16 → 17385,0006시간 0분601,296,3301.0일
17 → 18547,0007시간 59분801,843,3301.3일
18 → 19776,00010시간 37분1072,619,3301.8일
19 → 201,100,00014시간 8분1423,719,3302.4일
20 → 211,560,00018시간 48분1885,279,3303.1일
21 → 222,220,00025시간 0분2507,499,3304.2일
22 → 233,160,00033시간 15분33310,659,3305.6일
23 → 244,480,00044시간 13분44315,139,3307.4일
24 → 256,360,00058시간 48분58821,499,3309.9일
25 → 269,040,00072시간 0분72030,539,33012.9일
26 → 2712,800,00072시간 0분72043,339,33015.9일
27 → 2818,200,00072시간 0분72061,539,33018.9일
28 → 2925,900,00072시간 0분72087,439,33021.9일
29 → 3036,700,00072시간 0분720124,139,33024.9일

공식: 골드 = r3(2000 × 1.42^(Lv−1)), 대기 = min(4320, round(5 × 1.33^(Lv−1))) 분(최대 72시간). 즉시 완료 = 남은 분 ÷ 6 올림 개의 빛구슬 — 바이블 추가 제안 ④(바이블 9-4 광고 자리 16개에는 대기 단축 광고가 없어 광고 단축은 두지 않았습니다. 빛구슬 단가는 economy·gacha 문서가 최종 확인).

bruni26
bruni · 게임전투·성장 명세서
19 / Relic & Bond

유물 레벨·인연 경험치

유물 레벨 (24종 공통, Lv1 → 10)

유물은 장착 없이 가지고만 있어도 효과가 납니다. 효과 수치는 장비·아이템 명세서의 Lv1 값에 아래 배율을 곱합니다. 재료는 「필요 중복 n」 또는 「숫돌 n×10」 중 하나만 냅니다(둘 다 내지 않습니다). 섞어 낼 수도 있고, 그때는 중복 1개를 숫돌 10개로 셉니다. 예: 필요 중복 2 → 중복 2 / 중복 1 + 숫돌 10 / 숫돌 20 중 하나. 골드는 따로 늘 냅니다.

Lv필요 중복 n (또는 숫돌 n×10)골드누적 중복 (또는 숫돌)누적 골드효과 배율
1 → 21 (또는 숫돌 10)5,0001 (또는 10)5,000×1.2
2 → 31 (또는 숫돌 10)20,0002 (또는 20)25,000×1.4
3 → 42 (또는 숫돌 20)45,0004 (또는 40)70,000×1.6
4 → 52 (또는 숫돌 20)80,0006 (또는 60)150,000×1.8
5 → 63 (또는 숫돌 30)125,0009 (또는 90)275,000×2.0
6 → 73 (또는 숫돌 30)180,00012 (또는 120)455,000×2.2
7 → 84 (또는 숫돌 40)245,00016 (또는 160)700,000×2.4
8 → 94 (또는 숫돌 40)320,00020 (또는 200)1,020,000×2.6
9 → 105 (또는 숫돌 50)405,00025 (또는 250)1,425,000×2.8

바이블 6 표는 유물 비용 담당을 items 로 적었습니다. 이 표는 성장 비용을 한곳에서 보도록 둔 것이고, items 문서와 값이 다르면 items 쪽을 고치지 말고 메인이 하나로 정합니다(바이블 추가 제안 ⑤ — 유물 효과 배율 Lv 당 +20%).

인연 (동료 59명, Lv1 → 10)

Lv필요 경험치누적능력치 보너스 (공격·체력)해금
1 → 22020+1%개인 이야기 1화
2 → 34060+2%
3 → 460120+3%
4 → 590210+4%개인 이야기 2화
5 → 6120330+5%
6 → 7160490+6%
7 → 8200690+7%개인 이야기 3화
8 → 9250940+8%
9 → 103001,240+9%초상 테두리 「단짝」
인연 경험치 얻는 곳경험치한도
선물 (보통)10—
선물 (좋아함 — 동료마다 2종)20—
선물 (아주 좋아함 — 동료마다 1종)40—
메인·이벤트 판 클리어에 출전 (방치 사냥 제외)2—
방치 사냥 출전 1시간1하루 12
본편 선택지 「인연 +1」10—

개인 이야기 해금 Lv 2·5·8 은 바이블 6 그대로입니다(내용은 캐릭터 개인 이야기). 바이블 2-7 의 「선택지 인연 +1」은 인연 경험치 +10으로 구현합니다 — 레벨 +1 로 읽으면 본편 선택만으로 개인 이야기가 다 열려 버립니다(바이블 추가 제안 ⑥). 선물 10종의 좋아함·아주 좋아함 지정은 characters 문서.

bruni27
bruni · 게임전투·성장 명세서
19 / Relic & Bond

유물 숫돌 공급 계산

유물 숫돌 공급 — 핵심 유물 6종 Lv10 을 90일 안에

숫돌만으로 유물 1종 Lv1→10 은 250개, 출전 핵심 6종이면 1,500개입니다. 예전 공급(토벌 회당 1~2 + 원정 상점 주 10)으로는 수백 주가 걸려, 아래처럼 공급처를 늘렸습니다. 각 값의 원본은 bosses.json(보스 첫 처치·토벌)과 stages.json(탑·어려움)입니다.

공급처양
메인 보스 판 첫 클리어장 보스 40 · 중간 보스 20 · 강화판(+) 20 — bosses.json reward_first(_plus)
주간 토벌 100% 구간단계 k 1~4: 3 · 5~9: 4 · 10 이상: 5 — bosses.json raid_reward.whetstone (주 3회)
주간 토벌 단계 첫 100%단계마다 1번 20 (20단계)
시련의 탑 10층마다30 (10·20·…·100층) — stages.json tower reward
어려움 보스 판 첫 클리어20 (W6 완성판부터 — 90일 계산에는 넣지 않음)
원정 상점증표 200 → 1, 주 10 (gacha 문서 — 90일 계산에는 넣지 않음)

바이블 6-4 목표 진도(7일 s060 · 30일 s150 · 90일 s300)로 걸었을 때의 누적입니다. 중복·원정 상점·어려움은 넣지 않은 하한입니다.

일차판보스 첫 처치토벌 100%토벌 단계 첫 처치탑 10층마다누적
7일s060160000160
14일s0872009400249
30일s1503803416060634
45일s18846066220120866
60일s225560962801801,116
75일s2626601313402401,371
90일s3007601614003001,621

90일차 누적 1,621 ≥ 필요 1,500 → 충족. 경제 시뮬레이터(economy_sim.py)의 토벌 숫돌 규칙은 아직 옛 값(100% 구간 1~2)이라 bosses.json raid_reward.whetstone 을 읽게 고쳐야 합니다(economy 문서 반영 필요).

bruni28
bruni · 게임전투·성장 명세서
20 / Proposals

바이블 추가 제안과 구현 기준

바이블과 다르게 정했거나 새로 정한 것

No내용영향 문서성격
①적 판 배율 m(s) = 1 + 0.125 × (s − 1) + 0.00005 × (s − 1)² (12장) — 데이터 반영 끝, 바이블 6-4 문구 갱신은 메인바이블 6-4 · enemies · stages · economy결정됨
②브루니 승급에도 ★ 단계 골드 (15장)바이블 6 star해석
③장비 강화는 부위 칸에 붙음 · 상한 브루니 Lv ÷ 7 · 성공 100% (17장)items · screens새로 정함
④항아리 대기 즉시 완료 = 빛구슬 1개당 6분 (18장)economy · gacha새로 정함
⑤유물 효과 배율 Lv 당 +20% 와 유물 레벨 비용 표 (19장)items (바이블상 유물 비용 담당)겹침 — 하나로
⑥선택지 「인연 +1」 = 인연 경험치 +10 (19장)story · script-ch1해석
⑦스킬 Lv 계수 +6%/Lv, 스킬 Lv 에 동료 Lv 조건 (16장)characters새로 정함
⑧인연 Lv 당 공격·체력 +1%, 각성 2~5 단계 부가 효과 (10·16장)characters · screens새로 정함
⑨동료 레벨 초기화는 1차판 제외, 넣으면 100% 반환 (13장)screens새로 정함
⑩파티 전투력의 「+ 유물 보정」을 따로 더하지 않음 (10장)바이블 6-2해석
⑪디버프 「바램」 = 상성 유리 ×1.30 → ×1.00 (enemies 정의로 통일), 적이 걸고 브루니 면역 (08장)enemies통일
⑫필살기는 행동 타이머를 쓰지 않는 끼어들기 · 첫 행동 = 간격 × 0.5 · 웨이브 전환 1초 정지 (01·03장)tech세부 확정
⑬상태 효과 id 는 combat.json 하나 — characters·enemies·bosses 효과 키를 원본 id 로 다시 생성, 새 id 8개(b_crit_taken_down·b_heal_power_up·b_hp_up·b_stealth·b_cc_resist·b_debuff_dur_down·d_stain·d_shock) (07·08장)characters · enemies · tech통일
⑭타깃 표기 21개로 통일, front1 = 칸 번호 작은 쪽 (04장)characters · enemies · tech통일
⑮보스 제어: 지속 ×0.5 + 6초 재적용 면역 중 또 걸리면 휘청 (09장)enemies통일
⑯끝없는 지출처: 색 다듬기(골드) · 방울 → 무지개 조각 교환(주 10회) (17장)economy · gacha · screens새로 정함
⑰유물 재료는 중복 또는 숫돌 중 하나 · 숫돌 공급 확대(보스 첫 처치·토벌·탑·어려움) (19장)enemies · stages · economy · items새로 정함
⑱추천 전투력 = 표준 편성 승률 95% 파티 전투력 · 돌파 판정 = 50% (11장)stages · economy새로 정함

구현 체크리스트 (tech 문서로 넘기는 것)

항목기준
재현성같은 시드 + 같은 편성 → combat_sim.py 와 같은 로그. CI 에서 시드 10개 로그 비교
정수화타이머·시각은 int ms, 피해·회복은 마지막에 한 번 내림. float 누적 금지
데이터res://data/combat.json (상태·타깃·상성) · growth.json (비용 표) 를 DB 오토로드에 상주
치트 방지 연결성장 비용은 클라이언트 표 그대로 서버도 가짐 → 저장 파일의 레벨·재화가 누적 비용과 맞는지 대조 (기술 명세서)
근거: 설계 바이블(game-design/bible.md, 2026-10-13) 4·5·6·7·8·9 장 고정값 · 바이블이 인용한 game-design/research/competitors.md(2026-10-13 조회) 의 성장 구조 — 버섯커 키우기 램프 최대 28~30레벨(나무위키·krasia 역기획서), 블루 아카이브 신비 해방 1→5★ 엘레프 30·80·100·120(나무위키), 쿠키런: 킹덤 승급 영혼석 20~100(나무위키) 은 단계 수·구조만 참고했고 이 문서의 수치는 그 값을 옮기지 않았습니다. 이 문서의 비용·확률 외 수치는 모두 설계값이며 game-design/gen/systems_data.py(전투 시뮬레이션은 combat_sim.py · curve.py)를 돌린 결과입니다. 12장 수입 모델은 추정(설계 가정)이고 실측이 아닙니다. 12장의 경제 대조 값은 game-design/gen/economy_sim.py 를 2026-10-13 에 이 문서 담당이 읽기 전용으로 돌린 결과(무과금 시드 7개 중앙값)이며, 경제 문서가 고쳐지면 바뀝니다.
29