feat(BT7-Plan·집행): 기획 9파일 v0.2 + 개발팀 Phase 1 — PD 지시 11건 반영
- 기획 9파일 v0.2: VS 순수형·액티브/패시브/각성 3분류·Lv.5 스택·각성 3조건(액티브 Lv.5+필요 패시브+보물상자)·하트 분할 4 HP·적 ATK 1~4 점진·태그 11종 후보(PD 후속 검토 대기)·이동/점프 2종 - 개발팀 Phase 1 (Unity 외부 레포): PlayerAttackTicker 신설·Health maxHearts·Attack 액션 제거·AttackHitbox 쿼터 통합·EditMode 10→13 (Unity GitAutoSync 자동 push 담당) - 대화로그: BT7 전체 9 엔트리 누적 (접수→방향 확정→4건 답변→규모→적 ATK→라이프→태그→Dev Phase 1→집행 종합) - PD 지시 로그: 기획팀 BT7-Plan 11건 확정 비고란 + 개발팀 BT7-Dev 신규 등록(진행중) - C6-1 백업 6종 `bak_20260424_1551` 표준 포맷 - narrative 3파일 미수정 (PD 2026-04-24 "현행 유지" 지시 준수) - 매니페스트: 2026-04-24_BT7-Plan_집행착수 (범위 내 전수) - pm-auditor 감사: 통과 (Critical·Major 0) - C22-6 코어룰 신설: PD 문안 승인 대기 (별건) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
36d5d4d61a
commit
3bdda53104
|
|
@ -0,0 +1,36 @@
|
|||
---
|
||||
name: 세션 시작 교훈 환기 6계층 운영 모니터링 보고서 (2026-04-24_1231)
|
||||
description: BT4 6계층 체계 운영 데이터 누적 분석. pm-auditor 지속 모니터링 SOT 기반. 개선 안건 식별 + PD 보고
|
||||
type: audit_pattern
|
||||
period: 2026-04-24_1231
|
||||
trigger: archive_entry_moved
|
||||
---
|
||||
|
||||
# BT4 6계층 운영 모니터링 보고서 — 2026-04-24_1231
|
||||
|
||||
## 1. 트리거 상태
|
||||
- project_context_조직운영_archive.md 엔트리 수: 2
|
||||
|
||||
## 2. 감사관 E안 자동 윈도우 실측
|
||||
- pm-auditor: 7일
|
||||
- dev-auditor: 7일
|
||||
- plan-auditor: 7일
|
||||
|
||||
## 3. 계층별 발동 통계 (pm-auditor 수동 기입 영역)
|
||||
- 계층 0 고정 주입: 매 세션 1회 (기본 전제)
|
||||
- 계층 1 (1일): (기입)
|
||||
- 계층 2 (2~7일): (기입)
|
||||
- 계층 3 (>7일): (기입)
|
||||
- 계층 4 (--extend=N): (기입)
|
||||
- 계층 5 (내용축 트리거): (기입)
|
||||
|
||||
## 4. 개선 안건 (pm-auditor 수동 기입)
|
||||
- (계층 추가·폐기·통합 / 트리거 조정 / 계층 0 대상 조정 / 감사관 윈도우 튜닝)
|
||||
|
||||
## 5. PD 결정 요청
|
||||
- (pm-auditor 우선순위 기입)
|
||||
|
||||
## 연관
|
||||
- `memory/org/feedback_session_restore_monitoring.md` (모니터링 SOT)
|
||||
- `memory/org/project_context_조직운영.md` (트리거 기반)
|
||||
- `scripts/recent_feedback_brief.sh` (6계층 구현)
|
||||
|
|
@ -33,6 +33,7 @@ C3·C13 위반에 해당. **즉시 자진 보고 후 소급 등록**.
|
|||
|
||||
| # | 일시 | 지시 요지 | 처리 상태 | 산출물 경로 | 중단 사유 | 사후 조치 |
|
||||
|---|------|----------|----------|-----------|----------|----------|
|
||||
| BT7-Dev | 2026-04-24 | **BT7-Plan 개발 집행 Phase 1** — VS 순수형 자동 발동(공격 버튼 제거, PlayerAttackTicker 주기 타이머) + 하트 분할 시스템(Health.maxHearts·QuartersPerHeart·IncreaseMaxHearts·Heal·Decrement(int)) + EditMode 테스트 갱신(10→13) + AttackHitbox 쿼터 단위 피해 통합 + TODO 주석(EnemyController.attackDamage balance v0.2 대기) | **진행중** | Unity 편집 6파일 · BT 산출물 2파일 · 백업 6종. **Unity 외부 레포 `D:/NerdNavis/EerieVillage/`**: `Assets/Scripts/Gameplay/{PlayerAttack.cs(개정), PlayerAttackTicker.cs(신설)+.meta}`·`Assets/Scripts/Mechanics/{Health.cs(전면개정), PlayerController.cs(Attack입력제거·Facing public), AttackHitbox.cs(Decrement(damage)통합)}`·`Assets/Settings/InputSystem_Actions.inputactions(Attack액션·바인딩 완전 제거)`·`Assets/Tests/Editor/PlayerAttackTests.cs(10→13)`. **BT 레포**: `프로젝트/EerieVillage/개발/06_BT7-Plan_VS순수형_재구조.md`(신설) · `공유/개발팀_백업/EerieVillage/*.bak_20260424_1551.*`(6종). PD 수동 검증 2종(Asset import+EditMode Runner 실행·Player.prefab에 PlayerAttackTicker 부착+Play 검증) | — | **PM 수행 대기**: pm-auditor 감사 → BT worktree commit → Unity 외부 레포는 PD Editor 실행 시 GitAutoSync 자동 push → Play 검증 결과(13 tests green + 자동 공격 발동 확인) 수령 → balance/01 v0.2 확정 후 후속 Phase(EnemyController·적 ATK 테이블·HUD 하트 UI) 분리 착수 → 완료 아카이브 이동 |
|
||||
| BT5-Dev | 2026-04-23 | **EerieVillage Phase 3 파일럿 (개발)** — ①Unity git 초기화·자동 sync ②캐릭터 교체·이동·공격·i-frame ③템플릿 분석 ④**PlayerTestGirl 아틀라스 최종 집행** (2026-04-24 추가) | **진행중** | [1·3단계 완료] `9f689c1` 원격 push · `scripts/unity_auto_sync.sh` · `01~03_*.md` 분석 3종 [2단계 v0.2 완료] Player·Enemy prefab 편집 + 8 EditMode tests [**3단계(PlayerTestGirl 아틀라스) 완료 2026-04-24 0003**] PD `PlayerTestGirl.png` 직접 저장 (1536×1024, 4x2 8 sprite, walk 4+attack 4 프레임 신규 캐릭터) → B안 채택 (PlayerIdle·PlayerRun m_PPtrCurves 교체 + PlayerAttack.anim 신설). **meta 재생성** (9→8 sprite, 384×512 grid, guid 유지) · **Idle·Run.anim 전면 재작성** (4 sprite loop) · **PlayerAttack.anim + meta 신설** (guid `c8d7e5a1...`) · **Player.controller 확장** (attack Trigger·Player-Attack State·AnyState/Exit Transition 3종) · **Player.prefab m_Sprite 교체** · **EditMode 테스트 +2** (총 10). C6-1 백업 5종 `bak_20260424_0003`. PD 수동 1건 (Play 검증). `feedback_pm_image_verification_skip.md` 신설 (`tier: constitutional`) + `feedback_pm_dev_task_delegation_failure.md` 3회차 append. 재발 방지 5종 체크리스트 전부 이행 (시각 확인·전수 ls·기존 meta 재활용·guid 충돌 검증·백업 5종) | `프로젝트/EerieVillage/개발/05_PlayerTestGirl_아틀라스_적용.md` · `프로젝트/EerieVillage/개발/04_BT5-Dev_2단계_구현보고.md` v0.2 · Unity `Assets/Character/{Sprites/PlayerTestGirl.png.meta, Animations/{PlayerIdle,PlayerRun,PlayerAttack,Player.controller}}` · `Assets/Prefabs/Player.prefab` · `Assets/Tests/Editor/PlayerAttackTests.cs` · `memory/org/feedback_pm_image_verification_skip.md` (신설) · `memory/org/feedback_pm_dev_task_delegation_failure.md` (3회차) · `공유/대화로그/EerieVillage/2026-04-23.md` `[캐릭터리소스교체최종]` 엔트리 | — | **PM 수행 대기**: pm-auditor 감사 → BT worktree commit → push → Unity 프로젝트는 PD Editor 실행 시 GitAutoSync 자동 push → Play 검증 결과(10 tests green + walk/attack 애니메이션 재생) 수령 → 완료 아카이브 이동 |
|
||||
|
||||
---
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ C3·C13 위반에 해당. **즉시 자진 보고 후 소급 등록**.
|
|||
|
||||
| # | 일시 | 지시 요지 | 처리 상태 | 산출물 경로 | 중단 사유 | 사후 조치 |
|
||||
|---|------|----------|----------|-----------|----------|----------|
|
||||
(활성 지시 없음 — BT6-Plan Phase 3-B 완료 아카이브 이동. Phase 3-C(BM·과금·세부 대사·보스 패턴 확장·아트 톤) PD 지시 수령 시 신규 등록)
|
||||
| BT7-Plan | 2026-04-24 | **카드 시스템 개정** — 1) 세계관(narrative) 현행 유지 2) 덱빌딩 방식 VS 순수형 확정 (공격 버튼 제거, 이동·점프만) 3) 카드 구조 **"액티브 + 패시브 = 각성"** 3분류 확정 4) **"3→4 변경" 폐기** (새 구조가 확정안) 5) **각성 조건 확정** (VS 원조 방식: 액티브 최대 강화 + 특정 패시브 + 보물상자) 6) **규모 확정** (액티브 15~20종·패시브 25종 이내·각성 15~20종) 7) **기본 라이프 4 + 젤다 방식 하트 분할 시스템** (♥ 아이콘 · **하트 1개 = 4 HP 확정** · 기본 시작 하트 1개 · 피해 1 = 1/4조각 감소 · 피해 2 = 반조각 감소 · 피해 4 = 하트 1개 소멸 · 카드/성장으로 최대 하트 수 증가 가능) 8) **적 공격력 1부터 점진 강화** (스테이지·등급 진행에 따라 ATK 수치 증가) 9) **동일 카드 스택 업그레이드 Lv.5까지** (기존 Lv.3 확장) 10) **각성 발동 조건 VS 원작 동일 재확인** (액티브 Lv.5 + 각성에 필요한 특정 패시브 1개 이상 보유 + 보물상자 → 각성 카드 등장·발동) 11) **태그 체계 일반 RPG 용어 사용** (기존 세계관 특화 "오행 불/물/목/금/토" · "결계/부적/주술/소환" 등 임시 일반 RPG 용어로 재작성. 용어 자체는 PD가 나중에 일괄 세계관 재매핑 예정) | **진행중** | [확정 방향] VS 순수형 + 액티브/패시브/각성 구조 + 각성 조건 VS 원조 그대로 + 규모 15~20/≤25/15~20 + 라이프 4 하트 분할 + 적 ATK 점진 강화 · [폐기] T1~T4 빌드업·"비전/각성" 레이블·A/B 선택지·티어 수량 개념·적 ATK 1(즉사) 설계·"라이프 1 고정" 해석·`system/01 §5 기각안 1` "HP 막대 기각"·`04_전투 §8 기각안 1` "HP 막대 변형 기각" · [잔존 참조] `프로젝트/EerieVillage/기획/system/03_덱빌딩_방식_검토.md` 는 방식 비교 근거만 유효 · 대화로그 `공유/대화로그/EerieVillage/2026-04-24.md` | — | **PD 추가 지시 대기 잔존 0건 — BT7-Plan 방향 완전 확정**. 개정 집행 착수 가능 상태 → 확정분은 즉시 `04_전투`·`ux/01`·`balance/01`·`system/01`·`content/01`·`balance/02`·`ux/02`·`01_게임_컨셉`·`02_코어_루프` 순차 개정 착수 가능 + 개발팀 `PlayerAttack.cs` 주기 타이머 전환 + `InputActions` Attack 제거 + `Health.cs` maxHP 가변+쿼터 단위 구조 |
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,92 @@
|
|||
using System.Collections.Generic;
|
||||
using Platformer.Gameplay;
|
||||
using UnityEngine;
|
||||
using static Platformer.Core.Simulation;
|
||||
|
||||
namespace Platformer.Mechanics
|
||||
{
|
||||
/// <summary>
|
||||
/// 플레이어 근거리 공격 판정 박스.
|
||||
/// PlayerAttack 이벤트에서 Fire(direction)를 호출하면 지정 활성 지속 시간 동안
|
||||
/// OverlapBox 로 적을 감지하고, Health 보유 적에 Decrement 적용 → EnemyDeath 체인.
|
||||
/// 기획 04 §5-1 근거리 공격 1종 — 쿨타임·대미지·판정 박스는 Phase 3-B 튠 대상.
|
||||
/// </summary>
|
||||
public class AttackHitbox : MonoBehaviour
|
||||
{
|
||||
[Header("판정 박스 크기 (플레이어 기준 로컬)")]
|
||||
public Vector2 size = new Vector2(1.2f, 0.9f);
|
||||
[Tooltip("플레이어 중심으로부터 공격 방향으로의 오프셋 거리")]
|
||||
public float offsetDistance = 0.7f;
|
||||
[Tooltip("판정 활성 지속 시간 (초). 정적 스프라이트 기반이면 짧게 유지")]
|
||||
public float activeDuration = 0.12f;
|
||||
[Tooltip("대미지 (Health.Decrement 호출 횟수)")]
|
||||
public int damage = 1;
|
||||
|
||||
[Header("타격 대상 레이어 마스크")]
|
||||
public LayerMask targetLayers = ~0; // 전 레이어 기본. 실전에서 Enemy 레이어로 제한 권장
|
||||
|
||||
float activeUntil = -1f;
|
||||
Vector2 lastDirection = Vector2.right;
|
||||
|
||||
// 같은 스윙으로 동일 Health 중복 타격 방지
|
||||
readonly HashSet<Health> alreadyHit = new HashSet<Health>();
|
||||
|
||||
/// <summary>
|
||||
/// PlayerAttack.Execute 에서 호출. direction은 플레이어 facing (x축 ±1 or 0).
|
||||
/// </summary>
|
||||
public void Fire(Vector2 direction)
|
||||
{
|
||||
if (Mathf.Abs(direction.x) > 0.01f) lastDirection = new Vector2(Mathf.Sign(direction.x), 0);
|
||||
activeUntil = Time.time + activeDuration;
|
||||
alreadyHit.Clear();
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
if (Time.time > activeUntil) return;
|
||||
|
||||
// 로컬 오프셋: 플레이어 중심 + facing * offsetDistance
|
||||
var center = (Vector2)transform.position + lastDirection * offsetDistance;
|
||||
|
||||
// OverlapBox로 적 검출
|
||||
var hits = Physics2D.OverlapBoxAll(center, size, 0f, targetLayers);
|
||||
foreach (var col in hits)
|
||||
{
|
||||
if (col == null) continue;
|
||||
// 자기 자신 collider 제외 (PlayerController 부착 GameObject)
|
||||
if (col.transform == transform || col.transform.IsChildOf(transform)) continue;
|
||||
|
||||
var health = col.GetComponent<Health>();
|
||||
if (health == null || !health.IsAlive) continue;
|
||||
if (alreadyHit.Contains(health)) continue;
|
||||
|
||||
alreadyHit.Add(health);
|
||||
// BT7-Plan TODO (2026-04-24): 적 Health도 하트 분할 시스템 대상이지만
|
||||
// i-frame 구조 탓에 Decrement() 반복 호출은 첫 호출 후 무효화된다.
|
||||
// Health.Decrement(int damage) 단일 호출로 쿼터 단위 다중 피해 전달.
|
||||
health.Decrement(damage);
|
||||
|
||||
// Enemy 즉사 시 EnemyController 기반 EnemyDeath 체인 발동 (선택)
|
||||
if (!health.IsAlive)
|
||||
{
|
||||
var enemy = col.GetComponent<EnemyController>();
|
||||
if (enemy != null)
|
||||
{
|
||||
Schedule<EnemyDeath>().enemy = enemy;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Scene view 가시화 — 활성 상태에서 박스 표시
|
||||
void OnDrawGizmos()
|
||||
{
|
||||
Gizmos.color = (Application.isPlaying && Time.time <= activeUntil)
|
||||
? new Color(1f, 0.3f, 0.3f, 0.6f)
|
||||
: new Color(1f, 1f, 1f, 0.2f);
|
||||
var dir = Application.isPlaying ? lastDirection : Vector2.right;
|
||||
var center = (Vector2)transform.position + dir * offsetDistance;
|
||||
Gizmos.DrawWireCube(center, size);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,96 @@
|
|||
using System;
|
||||
using Platformer.Gameplay;
|
||||
using UnityEngine;
|
||||
using static Platformer.Core.Simulation;
|
||||
|
||||
namespace Platformer.Mechanics
|
||||
{
|
||||
/// <summary>
|
||||
/// Represebts the current vital statistics of some game entity.
|
||||
/// </summary>
|
||||
public class Health : MonoBehaviour
|
||||
{
|
||||
/// <summary>
|
||||
/// The maximum hit points for the entity.
|
||||
/// </summary>
|
||||
public int maxHP = 1;
|
||||
|
||||
/// <summary>
|
||||
/// 무적 시간 (i-frame) 지속 초 단위. 기획 04 §3-2 후보 0.4~0.8s.
|
||||
/// 라이프 1 전제에서 연속 히트 인정 금지를 위한 핵심 장치 (BT5-Dev 2단계 신설).
|
||||
/// </summary>
|
||||
public float invulnerableDuration = 0.6f;
|
||||
|
||||
/// <summary>
|
||||
/// 현재 무적 상태 여부 (디버그·UX 피드백용 — 깜박임 제어 등에 사용 가능).
|
||||
/// </summary>
|
||||
public bool IsInvulnerable => Time.time < invulnerableUntil;
|
||||
|
||||
/// <summary>
|
||||
/// Indicates if the entity should be considered 'alive'.
|
||||
/// </summary>
|
||||
public bool IsAlive => currentHP > 0;
|
||||
|
||||
int currentHP;
|
||||
float invulnerableUntil = -1f;
|
||||
|
||||
/// <summary>
|
||||
/// Increment the HP of the entity.
|
||||
/// </summary>
|
||||
public void Increment()
|
||||
{
|
||||
currentHP = Mathf.Clamp(currentHP + 1, 0, maxHP);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Decrement the HP of the entity. Will trigger a HealthIsZero event when
|
||||
/// current HP reaches 0. 무적 시간 (i-frame) 내에는 호출되어도 스킵된다.
|
||||
/// </summary>
|
||||
public void Decrement()
|
||||
{
|
||||
// BT5-Dev 2단계: i-frame 보호 — 무적 시간 내 중복 피격 차단
|
||||
if (Time.time < invulnerableUntil)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
currentHP = Mathf.Clamp(currentHP - 1, 0, maxHP);
|
||||
|
||||
// 피격 성공 시 무적 시간 활성화 (다음 피격 대비)
|
||||
if (invulnerableDuration > 0f)
|
||||
{
|
||||
invulnerableUntil = Time.time + invulnerableDuration;
|
||||
}
|
||||
|
||||
if (currentHP == 0)
|
||||
{
|
||||
var ev = Schedule<HealthIsZero>();
|
||||
ev.health = this;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Decrement the HP of the entitiy until HP reaches 0.
|
||||
/// i-frame 우회하여 즉사 처리 (낙사·승리 이탈 등 시스템 강제 사망).
|
||||
/// </summary>
|
||||
public void Die()
|
||||
{
|
||||
invulnerableUntil = -1f; // i-frame 무효화
|
||||
while (currentHP > 0)
|
||||
{
|
||||
currentHP = Mathf.Clamp(currentHP - 1, 0, maxHP);
|
||||
if (currentHP == 0)
|
||||
{
|
||||
var ev = Schedule<HealthIsZero>();
|
||||
ev.health = this;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Awake()
|
||||
{
|
||||
currentHP = maxHP;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,837 @@
|
|||
{
|
||||
"version": 1,
|
||||
"name": "InputSystem_Actions",
|
||||
"maps": [
|
||||
{
|
||||
"name": "Player",
|
||||
"id": "df70fa95-8a34-4494-b137-73ab6b9c7d37",
|
||||
"actions": [
|
||||
{
|
||||
"name": "Move",
|
||||
"type": "Value",
|
||||
"id": "351f2ccd-1f9f-44bf-9bec-d62ac5c5f408",
|
||||
"expectedControlType": "Vector2",
|
||||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": true
|
||||
},
|
||||
{
|
||||
"name": "Jump",
|
||||
"type": "Button",
|
||||
"id": "f1ba0d36-48eb-4cd5-b651-1c94a6531f70",
|
||||
"expectedControlType": "",
|
||||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": false
|
||||
},
|
||||
{
|
||||
"name": "Attack",
|
||||
"type": "Button",
|
||||
"id": "c9d8e7f6-a5b4-4c3d-2e1f-0a9b8c7d6e5f",
|
||||
"expectedControlType": "",
|
||||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": false
|
||||
},
|
||||
{
|
||||
"name": "Menu",
|
||||
"type": "Button",
|
||||
"id": "660e2b4b-b11a-4b85-9d42-2beada90fd4a",
|
||||
"expectedControlType": "",
|
||||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": false
|
||||
}
|
||||
],
|
||||
"bindings": [
|
||||
{
|
||||
"name": "",
|
||||
"id": "978bfe49-cc26-4a3d-ab7b-7d7a29327403",
|
||||
"path": "<Gamepad>/leftStick",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Gamepad",
|
||||
"action": "Move",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "WASD",
|
||||
"id": "00ca640b-d935-4593-8157-c05846ea39b3",
|
||||
"path": "Dpad",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "Move",
|
||||
"isComposite": true,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "up",
|
||||
"id": "e2062cb9-1b15-46a2-838c-2f8d72a0bdd9",
|
||||
"path": "<Keyboard>/w",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Keyboard&Mouse",
|
||||
"action": "Move",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "up",
|
||||
"id": "8180e8bd-4097-4f4e-ab88-4523101a6ce9",
|
||||
"path": "<Keyboard>/upArrow",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Keyboard&Mouse",
|
||||
"action": "Move",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "down",
|
||||
"id": "320bffee-a40b-4347-ac70-c210eb8bc73a",
|
||||
"path": "<Keyboard>/s",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Keyboard&Mouse",
|
||||
"action": "Move",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "down",
|
||||
"id": "1c5327b5-f71c-4f60-99c7-4e737386f1d1",
|
||||
"path": "<Keyboard>/downArrow",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Keyboard&Mouse",
|
||||
"action": "Move",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "left",
|
||||
"id": "d2581a9b-1d11-4566-b27d-b92aff5fabbc",
|
||||
"path": "<Keyboard>/a",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Keyboard&Mouse",
|
||||
"action": "Move",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "left",
|
||||
"id": "2e46982e-44cc-431b-9f0b-c11910bf467a",
|
||||
"path": "<Keyboard>/leftArrow",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Keyboard&Mouse",
|
||||
"action": "Move",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "right",
|
||||
"id": "fcfe95b8-67b9-4526-84b5-5d0bc98d6400",
|
||||
"path": "<Keyboard>/d",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Keyboard&Mouse",
|
||||
"action": "Move",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "right",
|
||||
"id": "77bff152-3580-4b21-b6de-dcd0c7e41164",
|
||||
"path": "<Keyboard>/rightArrow",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Keyboard&Mouse",
|
||||
"action": "Move",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "1635d3fe-58b6-4ba9-a4e2-f4b964f6b5c8",
|
||||
"path": "<XRController>/{Primary2DAxis}",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "XR",
|
||||
"action": "Move",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "3ea4d645-4504-4529-b061-ab81934c3752",
|
||||
"path": "<Joystick>/stick",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "Joystick",
|
||||
"action": "Move",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "eb40bb66-4559-4dfa-9a2f-820438abb426",
|
||||
"path": "<Keyboard>/space",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "Keyboard&Mouse",
|
||||
"action": "Jump",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "daba33a1-ad0c-4742-a909-43ad1cdfbeb6",
|
||||
"path": "<Gamepad>/buttonSouth",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "Gamepad",
|
||||
"action": "Jump",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "603f3daf-40bd-4854-8724-93e8017f59e3",
|
||||
"path": "<XRController>/secondaryButton",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "XR",
|
||||
"action": "Jump",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "d7e6f5a4-b3c2-4d1e-9f8a-7b6c5d4e3f2a",
|
||||
"path": "<Mouse>/leftButton",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Keyboard&Mouse",
|
||||
"action": "Attack",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "e8f7a6b5-c4d3-4e2f-1a9b-8c7d6e5f4a3b",
|
||||
"path": "<Gamepad>/rightTrigger",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Gamepad",
|
||||
"action": "Attack",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "bf91b079-c2a3-41a7-ab9e-6e5fbc7e9f4b",
|
||||
"path": "<Keyboard>/escape",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Keyboard&Mouse;Gamepad;Touch;Joystick;XR",
|
||||
"action": "Menu",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "ab1194d0-a370-48e0-b510-68e72eba2707",
|
||||
"path": "<Gamepad>/start",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Gamepad",
|
||||
"action": "Menu",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "UI",
|
||||
"id": "272f6d14-89ba-496f-b7ff-215263d3219f",
|
||||
"actions": [
|
||||
{
|
||||
"name": "Navigate",
|
||||
"type": "PassThrough",
|
||||
"id": "c95b2375-e6d9-4b88-9c4c-c5e76515df4b",
|
||||
"expectedControlType": "Vector2",
|
||||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": false
|
||||
},
|
||||
{
|
||||
"name": "Submit",
|
||||
"type": "Button",
|
||||
"id": "7607c7b6-cd76-4816-beef-bd0341cfe950",
|
||||
"expectedControlType": "Button",
|
||||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": false
|
||||
},
|
||||
{
|
||||
"name": "Cancel",
|
||||
"type": "Button",
|
||||
"id": "15cef263-9014-4fd5-94d9-4e4a6234a6ef",
|
||||
"expectedControlType": "Button",
|
||||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": false
|
||||
},
|
||||
{
|
||||
"name": "Point",
|
||||
"type": "PassThrough",
|
||||
"id": "32b35790-4ed0-4e9a-aa41-69ac6d629449",
|
||||
"expectedControlType": "Vector2",
|
||||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": true
|
||||
},
|
||||
{
|
||||
"name": "Click",
|
||||
"type": "PassThrough",
|
||||
"id": "3c7022bf-7922-4f7c-a998-c437916075ad",
|
||||
"expectedControlType": "Button",
|
||||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": true
|
||||
},
|
||||
{
|
||||
"name": "RightClick",
|
||||
"type": "PassThrough",
|
||||
"id": "44b200b1-1557-4083-816c-b22cbdf77ddf",
|
||||
"expectedControlType": "Button",
|
||||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": false
|
||||
},
|
||||
{
|
||||
"name": "MiddleClick",
|
||||
"type": "PassThrough",
|
||||
"id": "dad70c86-b58c-4b17-88ad-f5e53adf419e",
|
||||
"expectedControlType": "Button",
|
||||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": false
|
||||
},
|
||||
{
|
||||
"name": "ScrollWheel",
|
||||
"type": "PassThrough",
|
||||
"id": "0489e84a-4833-4c40-bfae-cea84b696689",
|
||||
"expectedControlType": "Vector2",
|
||||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": false
|
||||
},
|
||||
{
|
||||
"name": "TrackedDevicePosition",
|
||||
"type": "PassThrough",
|
||||
"id": "24908448-c609-4bc3-a128-ea258674378a",
|
||||
"expectedControlType": "Vector3",
|
||||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": false
|
||||
},
|
||||
{
|
||||
"name": "TrackedDeviceOrientation",
|
||||
"type": "PassThrough",
|
||||
"id": "9caa3d8a-6b2f-4e8e-8bad-6ede561bd9be",
|
||||
"expectedControlType": "Quaternion",
|
||||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": false
|
||||
}
|
||||
],
|
||||
"bindings": [
|
||||
{
|
||||
"name": "Gamepad",
|
||||
"id": "809f371f-c5e2-4e7a-83a1-d867598f40dd",
|
||||
"path": "2DVector",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "Navigate",
|
||||
"isComposite": true,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "up",
|
||||
"id": "14a5d6e8-4aaf-4119-a9ef-34b8c2c548bf",
|
||||
"path": "<Gamepad>/leftStick/up",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Gamepad",
|
||||
"action": "Navigate",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "up",
|
||||
"id": "9144cbe6-05e1-4687-a6d7-24f99d23dd81",
|
||||
"path": "<Gamepad>/rightStick/up",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Gamepad",
|
||||
"action": "Navigate",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "down",
|
||||
"id": "2db08d65-c5fb-421b-983f-c71163608d67",
|
||||
"path": "<Gamepad>/leftStick/down",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Gamepad",
|
||||
"action": "Navigate",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "down",
|
||||
"id": "58748904-2ea9-4a80-8579-b500e6a76df8",
|
||||
"path": "<Gamepad>/rightStick/down",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Gamepad",
|
||||
"action": "Navigate",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "left",
|
||||
"id": "8ba04515-75aa-45de-966d-393d9bbd1c14",
|
||||
"path": "<Gamepad>/leftStick/left",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Gamepad",
|
||||
"action": "Navigate",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "left",
|
||||
"id": "712e721c-bdfb-4b23-a86c-a0d9fcfea921",
|
||||
"path": "<Gamepad>/rightStick/left",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Gamepad",
|
||||
"action": "Navigate",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "right",
|
||||
"id": "fcd248ae-a788-4676-a12e-f4d81205600b",
|
||||
"path": "<Gamepad>/leftStick/right",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Gamepad",
|
||||
"action": "Navigate",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "right",
|
||||
"id": "1f04d9bc-c50b-41a1-bfcc-afb75475ec20",
|
||||
"path": "<Gamepad>/rightStick/right",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Gamepad",
|
||||
"action": "Navigate",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "fb8277d4-c5cd-4663-9dc7-ee3f0b506d90",
|
||||
"path": "<Gamepad>/dpad",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Gamepad",
|
||||
"action": "Navigate",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "Joystick",
|
||||
"id": "e25d9774-381c-4a61-b47c-7b6b299ad9f9",
|
||||
"path": "2DVector",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "Navigate",
|
||||
"isComposite": true,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "up",
|
||||
"id": "3db53b26-6601-41be-9887-63ac74e79d19",
|
||||
"path": "<Joystick>/stick/up",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "Joystick",
|
||||
"action": "Navigate",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "down",
|
||||
"id": "0cb3e13e-3d90-4178-8ae6-d9c5501d653f",
|
||||
"path": "<Joystick>/stick/down",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "Joystick",
|
||||
"action": "Navigate",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "left",
|
||||
"id": "0392d399-f6dd-4c82-8062-c1e9c0d34835",
|
||||
"path": "<Joystick>/stick/left",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "Joystick",
|
||||
"action": "Navigate",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "right",
|
||||
"id": "942a66d9-d42f-43d6-8d70-ecb4ba5363bc",
|
||||
"path": "<Joystick>/stick/right",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "Joystick",
|
||||
"action": "Navigate",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "Keyboard",
|
||||
"id": "ff527021-f211-4c02-933e-5976594c46ed",
|
||||
"path": "2DVector",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "Navigate",
|
||||
"isComposite": true,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "up",
|
||||
"id": "563fbfdd-0f09-408d-aa75-8642c4f08ef0",
|
||||
"path": "<Keyboard>/w",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "Keyboard&Mouse",
|
||||
"action": "Navigate",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "up",
|
||||
"id": "eb480147-c587-4a33-85ed-eb0ab9942c43",
|
||||
"path": "<Keyboard>/upArrow",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "Keyboard&Mouse",
|
||||
"action": "Navigate",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "down",
|
||||
"id": "2bf42165-60bc-42ca-8072-8c13ab40239b",
|
||||
"path": "<Keyboard>/s",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "Keyboard&Mouse",
|
||||
"action": "Navigate",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "down",
|
||||
"id": "85d264ad-e0a0-4565-b7ff-1a37edde51ac",
|
||||
"path": "<Keyboard>/downArrow",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "Keyboard&Mouse",
|
||||
"action": "Navigate",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "left",
|
||||
"id": "74214943-c580-44e4-98eb-ad7eebe17902",
|
||||
"path": "<Keyboard>/a",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "Keyboard&Mouse",
|
||||
"action": "Navigate",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "left",
|
||||
"id": "cea9b045-a000-445b-95b8-0c171af70a3b",
|
||||
"path": "<Keyboard>/leftArrow",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "Keyboard&Mouse",
|
||||
"action": "Navigate",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "right",
|
||||
"id": "8607c725-d935-4808-84b1-8354e29bab63",
|
||||
"path": "<Keyboard>/d",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "Keyboard&Mouse",
|
||||
"action": "Navigate",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "right",
|
||||
"id": "4cda81dc-9edd-4e03-9d7c-a71a14345d0b",
|
||||
"path": "<Keyboard>/rightArrow",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "Keyboard&Mouse",
|
||||
"action": "Navigate",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "9e92bb26-7e3b-4ec4-b06b-3c8f8e498ddc",
|
||||
"path": "*/{Submit}",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "Keyboard&Mouse;Gamepad;Touch;Joystick;XR",
|
||||
"action": "Submit",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "82627dcc-3b13-4ba9-841d-e4b746d6553e",
|
||||
"path": "*/{Cancel}",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "Keyboard&Mouse;Gamepad;Touch;Joystick;XR",
|
||||
"action": "Cancel",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "c52c8e0b-8179-41d3-b8a1-d149033bbe86",
|
||||
"path": "<Mouse>/position",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "Keyboard&Mouse",
|
||||
"action": "Point",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "e1394cbc-336e-44ce-9ea8-6007ed6193f7",
|
||||
"path": "<Pen>/position",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "Keyboard&Mouse",
|
||||
"action": "Point",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "5693e57a-238a-46ed-b5ae-e64e6e574302",
|
||||
"path": "<Touchscreen>/touch*/position",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "Touch",
|
||||
"action": "Point",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "4faf7dc9-b979-4210-aa8c-e808e1ef89f5",
|
||||
"path": "<Mouse>/leftButton",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Keyboard&Mouse",
|
||||
"action": "Click",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "8d66d5ba-88d7-48e6-b1cd-198bbfef7ace",
|
||||
"path": "<Pen>/tip",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Keyboard&Mouse",
|
||||
"action": "Click",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "47c2a644-3ebc-4dae-a106-589b7ca75b59",
|
||||
"path": "<Touchscreen>/touch*/press",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "Touch",
|
||||
"action": "Click",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "bb9e6b34-44bf-4381-ac63-5aa15d19f677",
|
||||
"path": "<XRController>/trigger",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "XR",
|
||||
"action": "Click",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "38c99815-14ea-4617-8627-164d27641299",
|
||||
"path": "<Mouse>/scroll",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Keyboard&Mouse",
|
||||
"action": "ScrollWheel",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "4c191405-5738-4d4b-a523-c6a301dbf754",
|
||||
"path": "<Mouse>/rightButton",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "Keyboard&Mouse",
|
||||
"action": "RightClick",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "24066f69-da47-44f3-a07e-0015fb02eb2e",
|
||||
"path": "<Mouse>/middleButton",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "Keyboard&Mouse",
|
||||
"action": "MiddleClick",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "7236c0d9-6ca3-47cf-a6ee-a97f5b59ea77",
|
||||
"path": "<XRController>/devicePosition",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "XR",
|
||||
"action": "TrackedDevicePosition",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "23e01e3a-f935-4948-8d8b-9bcac77714fb",
|
||||
"path": "<XRController>/deviceRotation",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "XR",
|
||||
"action": "TrackedDeviceOrientation",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"controlSchemes": [
|
||||
{
|
||||
"name": "Keyboard&Mouse",
|
||||
"bindingGroup": "Keyboard&Mouse",
|
||||
"devices": [
|
||||
{
|
||||
"devicePath": "<Keyboard>",
|
||||
"isOptional": false,
|
||||
"isOR": false
|
||||
},
|
||||
{
|
||||
"devicePath": "<Mouse>",
|
||||
"isOptional": false,
|
||||
"isOR": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Gamepad",
|
||||
"bindingGroup": "Gamepad",
|
||||
"devices": [
|
||||
{
|
||||
"devicePath": "<Gamepad>",
|
||||
"isOptional": false,
|
||||
"isOR": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Touch",
|
||||
"bindingGroup": "Touch",
|
||||
"devices": [
|
||||
{
|
||||
"devicePath": "<Touchscreen>",
|
||||
"isOptional": false,
|
||||
"isOR": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Joystick",
|
||||
"bindingGroup": "Joystick",
|
||||
"devices": [
|
||||
{
|
||||
"devicePath": "<Joystick>",
|
||||
"isOptional": false,
|
||||
"isOR": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "XR",
|
||||
"bindingGroup": "XR",
|
||||
"devices": [
|
||||
{
|
||||
"devicePath": "<XRController>",
|
||||
"isOptional": false,
|
||||
"isOR": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
using Platformer.Core;
|
||||
using Platformer.Mechanics;
|
||||
using UnityEngine;
|
||||
using static Platformer.Core.Simulation;
|
||||
|
||||
namespace Platformer.Gameplay
|
||||
{
|
||||
/// <summary>
|
||||
/// Fired when the player triggers an attack (mouse left click / touch attack button).
|
||||
/// EerieVillage BT5-Dev 2단계 신설 — 기획 04 §5 근거리 공격 1종 파일럿.
|
||||
/// OnExecute 훅으로 카드 효과·특성 효과가 결합될 확장 지점 (개발 02 §2-1).
|
||||
/// </summary>
|
||||
public class PlayerAttack : Simulation.Event<PlayerAttack>
|
||||
{
|
||||
public PlayerController player;
|
||||
public Vector2 direction; // 플레이어 facing 방향 (±1, 0)
|
||||
|
||||
public override void Execute()
|
||||
{
|
||||
if (player == null) return;
|
||||
|
||||
// 공격 애니메이션 트리거 (Animator에 "attack" trigger 있으면 재생 — 정적 스프라이트면 무시)
|
||||
if (player.animator != null)
|
||||
{
|
||||
var attackHash = Animator.StringToHash("attack");
|
||||
// SetTrigger는 미존재 파라미터여도 예외 없음
|
||||
player.animator.SetTrigger(attackHash);
|
||||
}
|
||||
|
||||
// 공격 효과음 (존재 시)
|
||||
if (player.audioSource != null && player.attackAudio != null)
|
||||
{
|
||||
player.audioSource.PlayOneShot(player.attackAudio);
|
||||
}
|
||||
|
||||
// 플레이어 앞에 판정 박스 발생
|
||||
if (player.attackHitbox != null)
|
||||
{
|
||||
player.attackHitbox.Fire(direction);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,186 @@
|
|||
using System.Linq;
|
||||
using NUnit.Framework;
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
|
||||
/// <summary>
|
||||
/// EerieVillage BT5-Dev 2단계 — Player 근거리 공격 체계 EditMode 테스트.
|
||||
/// Prefab 자산의 컴포넌트 구성이 기획 04 §5-1 (근거리 공격 1종) 을 충족하는지 검증.
|
||||
/// Play 모드 실행 불요 — prefab YAML 직렬화 상태를 직접 검증하여 회귀 방지.
|
||||
///
|
||||
/// 2026-04-23 개정: Platformer.* 네임스페이스 직접 참조 제거 (Scripts/ 하위에 asmdef 부재로
|
||||
/// 테스트 어셈블리가 Assembly-CSharp 를 참조 불가한 구조 — reflection 기반으로 전환).
|
||||
/// </summary>
|
||||
public class PlayerAttackTests
|
||||
{
|
||||
const string PlayerPrefabPath = "Assets/Prefabs/Player.prefab";
|
||||
const string EnemyPrefabPath = "Assets/Prefabs/Enemy.prefab";
|
||||
|
||||
// Platformer.* 는 Assembly-CSharp 에 속함. 테스트 어셈블리에서 직접 타입 참조 불가하므로
|
||||
// GetComponents<Component>() + GetType().FullName 매칭으로 검증.
|
||||
const string AttackHitboxType = "Platformer.Mechanics.AttackHitbox";
|
||||
const string HealthType = "Platformer.Mechanics.Health";
|
||||
const string PlayerControllerType = "Platformer.Mechanics.PlayerController";
|
||||
const string EnemyControllerType = "Platformer.Mechanics.EnemyController";
|
||||
|
||||
static Component FindComponentByFullName(GameObject go, string fullName)
|
||||
{
|
||||
if (go == null) return null;
|
||||
return go.GetComponents<Component>()
|
||||
.FirstOrDefault(c => c != null && c.GetType().FullName == fullName);
|
||||
}
|
||||
|
||||
static object GetFieldOrProperty(object obj, string memberName)
|
||||
{
|
||||
if (obj == null) return null;
|
||||
var t = obj.GetType();
|
||||
var field = t.GetField(memberName,
|
||||
System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
|
||||
if (field != null) return field.GetValue(obj);
|
||||
var prop = t.GetProperty(memberName,
|
||||
System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
|
||||
return prop?.GetValue(obj);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Player_Prefab_Has_AttackHitbox_Component()
|
||||
{
|
||||
var prefab = AssetDatabase.LoadAssetAtPath<GameObject>(PlayerPrefabPath);
|
||||
Assert.IsNotNull(prefab, $"Player.prefab not found at {PlayerPrefabPath}");
|
||||
|
||||
var hitbox = FindComponentByFullName(prefab, AttackHitboxType);
|
||||
Assert.IsNotNull(hitbox,
|
||||
"Player.prefab에 AttackHitbox 컴포넌트가 누락. " +
|
||||
"BT5-Dev 2단계 재위임 집행분 (2026-04-23) 이 prefab YAML 에 반영되어야 함.");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Player_Prefab_Has_Health_Component()
|
||||
{
|
||||
var prefab = AssetDatabase.LoadAssetAtPath<GameObject>(PlayerPrefabPath);
|
||||
Assert.IsNotNull(prefab, $"Player.prefab not found at {PlayerPrefabPath}");
|
||||
|
||||
var health = FindComponentByFullName(prefab, HealthType);
|
||||
Assert.IsNotNull(health, "Player.prefab 에 Health 컴포넌트 누락 (템플릿 기본).");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Player_Prefab_Has_PlayerController_Component()
|
||||
{
|
||||
var prefab = AssetDatabase.LoadAssetAtPath<GameObject>(PlayerPrefabPath);
|
||||
Assert.IsNotNull(prefab);
|
||||
|
||||
var controller = FindComponentByFullName(prefab, PlayerControllerType);
|
||||
Assert.IsNotNull(controller, "Player.prefab 에 PlayerController 컴포넌트 누락.");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AttackHitbox_Default_Damage_Is_One()
|
||||
{
|
||||
var prefab = AssetDatabase.LoadAssetAtPath<GameObject>(PlayerPrefabPath);
|
||||
var hitbox = FindComponentByFullName(prefab, AttackHitboxType);
|
||||
Assert.IsNotNull(hitbox);
|
||||
|
||||
var damage = GetFieldOrProperty(hitbox, "damage");
|
||||
Assert.IsNotNull(damage, "AttackHitbox.damage 필드/프로퍼티 접근 불가");
|
||||
Assert.AreEqual(1, System.Convert.ToInt32(damage),
|
||||
"기본 대미지 1 (기획 04 §5-1, Phase 3-B 튠 전 파일럿 값).");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AttackHitbox_Active_Duration_Is_Positive()
|
||||
{
|
||||
var prefab = AssetDatabase.LoadAssetAtPath<GameObject>(PlayerPrefabPath);
|
||||
var hitbox = FindComponentByFullName(prefab, AttackHitboxType);
|
||||
Assert.IsNotNull(hitbox);
|
||||
|
||||
var duration = GetFieldOrProperty(hitbox, "activeDuration");
|
||||
Assert.IsNotNull(duration, "AttackHitbox.activeDuration 필드/프로퍼티 접근 불가");
|
||||
Assert.Greater(System.Convert.ToSingle(duration), 0f,
|
||||
"activeDuration 가 0 이하면 OverlapBox 판정이 즉시 종료되어 공격 무효.");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Enemy_Prefab_Has_Health_Component()
|
||||
{
|
||||
var prefab = AssetDatabase.LoadAssetAtPath<GameObject>(EnemyPrefabPath);
|
||||
Assert.IsNotNull(prefab, $"Enemy.prefab not found at {EnemyPrefabPath}");
|
||||
|
||||
var health = FindComponentByFullName(prefab, HealthType);
|
||||
Assert.IsNotNull(health,
|
||||
"Enemy.prefab 에 Health 컴포넌트 누락. " +
|
||||
"BT5-Dev 2단계 재위임 집행분 (2026-04-23) 이 prefab YAML 에 반영되어야 함. " +
|
||||
"Health 없으면 AttackHitbox.Update 의 Decrement 호출이 불가 → EnemyDeath 체인 미발동.");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Enemy_Prefab_Health_MaxHP_Is_One()
|
||||
{
|
||||
var prefab = AssetDatabase.LoadAssetAtPath<GameObject>(EnemyPrefabPath);
|
||||
var health = FindComponentByFullName(prefab, HealthType);
|
||||
Assert.IsNotNull(health);
|
||||
|
||||
var maxHP = GetFieldOrProperty(health, "maxHP");
|
||||
Assert.IsNotNull(maxHP, "Health.maxHP 필드/프로퍼티 접근 불가");
|
||||
Assert.AreEqual(1, System.Convert.ToInt32(maxHP),
|
||||
"일반 적 기본 maxHP 1 (코어 룰 7 정합, 첫 세팅).");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Enemy_Prefab_Has_EnemyController_Component()
|
||||
{
|
||||
var prefab = AssetDatabase.LoadAssetAtPath<GameObject>(EnemyPrefabPath);
|
||||
var controller = FindComponentByFullName(prefab, EnemyControllerType);
|
||||
Assert.IsNotNull(controller,
|
||||
"EnemyDeath 체인에 EnemyController 필수 (AttackHitbox.Update 에서 Schedule<EnemyDeath>().enemy = enemy).");
|
||||
}
|
||||
|
||||
// ===== BT5-Dev 3단계 PlayerTestGirl 아틀라스 적용 검증 (2026-04-24) =====
|
||||
|
||||
const string PlayerTestGirlGuid = "44ad58ba82191ca4d818108ab01d3baa";
|
||||
|
||||
[Test]
|
||||
public void Player_Prefab_SpriteRenderer_References_PlayerTestGirl()
|
||||
{
|
||||
// Player.prefab YAML 직접 파싱 — SpriteRenderer.m_Sprite 의 guid 가
|
||||
// PlayerTestGirl.png.meta 의 guid 와 일치하는지 검증. 기존 PlayerIdle(
|
||||
// ba86c7b200abe499cb750833482830b3) 에서 PlayerTestGirl 로 교체되었는지 회귀 확인.
|
||||
var path = System.IO.Path.GetFullPath(PlayerPrefabPath);
|
||||
Assert.IsTrue(System.IO.File.Exists(path), $"Player.prefab 부재 — {path}");
|
||||
var yaml = System.IO.File.ReadAllText(path);
|
||||
|
||||
// m_Sprite: {fileID: ..., guid: <GUID>, type: 3}
|
||||
var match = System.Text.RegularExpressions.Regex.Match(
|
||||
yaml,
|
||||
@"m_Sprite:\s*\{fileID:\s*[-0-9]+,\s*guid:\s*([a-f0-9]{32}),\s*type:\s*3\}");
|
||||
Assert.IsTrue(match.Success,
|
||||
"Player.prefab YAML 에서 SpriteRenderer.m_Sprite guid 추출 실패.");
|
||||
Assert.AreEqual(PlayerTestGirlGuid, match.Groups[1].Value,
|
||||
$"Player.prefab SpriteRenderer.m_Sprite guid 가 PlayerTestGirl({PlayerTestGirlGuid}) 이어야 함. 실제: {match.Groups[1].Value}");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Player_Controller_Has_Attack_Parameter_And_State()
|
||||
{
|
||||
// Player.controller YAML 직접 파싱 — attack Trigger 파라미터 + Player-Attack State 존재 검증.
|
||||
// BT5-Dev 3단계에서 PlayerAttack.cs 의 Schedule<PlayerAttack> 과 연동되는 State Machine 요소가
|
||||
// controller 에 명시되었는지 회귀 확인.
|
||||
var path = System.IO.Path.GetFullPath("Assets/Character/Animations/Player.controller");
|
||||
Assert.IsTrue(System.IO.File.Exists(path), $"Player.controller 부재 — {path}");
|
||||
var yaml = System.IO.File.ReadAllText(path);
|
||||
|
||||
// m_Name: attack 파라미터 + m_Type: 9 (Trigger)
|
||||
Assert.IsTrue(
|
||||
System.Text.RegularExpressions.Regex.IsMatch(
|
||||
yaml,
|
||||
@"m_Name:\s*attack\s*\r?\n\s*m_Type:\s*9"),
|
||||
"Player.controller 에 attack Trigger 파라미터(m_Type:9) 누락. " +
|
||||
"BT5-Dev 3단계 PlayerAttack State 연동 전제.");
|
||||
|
||||
// Player-Attack State 존재
|
||||
Assert.IsTrue(
|
||||
yaml.Contains("m_Name: Player-Attack"),
|
||||
"Player.controller 에 Player-Attack State 누락. " +
|
||||
"PlayerAttack.anim(guid c8d7e5a1f9b24e63a7f5d2c8e1b9a4f7) 모션을 호스트하는 State 가 필요.");
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,189 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using Platformer.Gameplay;
|
||||
using static Platformer.Core.Simulation;
|
||||
using Platformer.Model;
|
||||
using Platformer.Core;
|
||||
using UnityEngine.InputSystem;
|
||||
|
||||
namespace Platformer.Mechanics
|
||||
{
|
||||
/// <summary>
|
||||
/// This is the main class used to implement control of the player.
|
||||
/// It is a superset of the AnimationController class, but is inlined to allow for any kind of customisation.
|
||||
/// </summary>
|
||||
public class PlayerController : KinematicObject
|
||||
{
|
||||
public AudioClip jumpAudio;
|
||||
public AudioClip respawnAudio;
|
||||
public AudioClip ouchAudio;
|
||||
/// <summary>
|
||||
/// Attack sound effect (BT5-Dev 2단계 신설). 미지정 시 무음.
|
||||
/// </summary>
|
||||
public AudioClip attackAudio;
|
||||
|
||||
/// <summary>
|
||||
/// Max horizontal speed of the player.
|
||||
/// </summary>
|
||||
public float maxSpeed = 7;
|
||||
/// <summary>
|
||||
/// Initial jump velocity at the start of a jump.
|
||||
/// </summary>
|
||||
public float jumpTakeOffSpeed = 7;
|
||||
|
||||
/// <summary>
|
||||
/// Cooldown between attacks in seconds (기획 04 §5-1 Phase 3-B 튠 대상).
|
||||
/// </summary>
|
||||
public float attackCooldown = 0.35f;
|
||||
|
||||
/// <summary>
|
||||
/// Attack hitbox component (자동 GetComponent, 없으면 null — PlayerAttack.Execute에서 null 체크).
|
||||
/// </summary>
|
||||
public AttackHitbox attackHitbox;
|
||||
|
||||
public JumpState jumpState = JumpState.Grounded;
|
||||
private bool stopJump;
|
||||
/*internal new*/ public Collider2D collider2d;
|
||||
/*internal new*/ public AudioSource audioSource;
|
||||
public Health health;
|
||||
public bool controlEnabled = true;
|
||||
|
||||
bool jump;
|
||||
Vector2 move;
|
||||
SpriteRenderer spriteRenderer;
|
||||
internal Animator animator;
|
||||
readonly PlatformerModel model = Simulation.GetModel<PlatformerModel>();
|
||||
|
||||
private InputAction m_MoveAction;
|
||||
private InputAction m_JumpAction;
|
||||
private InputAction m_AttackAction;
|
||||
|
||||
// 마지막 공격 시각 — attackCooldown과 비교해 연타 제한
|
||||
float nextAttackTime = 0f;
|
||||
// 현재 facing 방향 (마지막 이동 입력 기반, 정지 시 이전 값 유지)
|
||||
Vector2 facing = Vector2.right;
|
||||
|
||||
public Bounds Bounds => collider2d.bounds;
|
||||
|
||||
void Awake()
|
||||
{
|
||||
health = GetComponent<Health>();
|
||||
audioSource = GetComponent<AudioSource>();
|
||||
collider2d = GetComponent<Collider2D>();
|
||||
spriteRenderer = GetComponent<SpriteRenderer>();
|
||||
animator = GetComponent<Animator>();
|
||||
if (attackHitbox == null) attackHitbox = GetComponent<AttackHitbox>();
|
||||
|
||||
m_MoveAction = InputSystem.actions.FindAction("Player/Move");
|
||||
m_JumpAction = InputSystem.actions.FindAction("Player/Jump");
|
||||
m_AttackAction = InputSystem.actions.FindAction("Player/Attack");
|
||||
|
||||
m_MoveAction.Enable();
|
||||
m_JumpAction.Enable();
|
||||
if (m_AttackAction != null) m_AttackAction.Enable();
|
||||
}
|
||||
|
||||
protected override void Update()
|
||||
{
|
||||
if (controlEnabled)
|
||||
{
|
||||
move.x = m_MoveAction.ReadValue<Vector2>().x;
|
||||
if (jumpState == JumpState.Grounded && m_JumpAction.WasPressedThisFrame())
|
||||
jumpState = JumpState.PrepareToJump;
|
||||
else if (m_JumpAction.WasReleasedThisFrame())
|
||||
{
|
||||
stopJump = true;
|
||||
Schedule<PlayerStopJump>().player = this;
|
||||
}
|
||||
|
||||
// 공격 입력 처리 (마우스 좌클릭 / 게임패드 RT / 모바일 터치 — Phase 3-B UX)
|
||||
if (m_AttackAction != null && m_AttackAction.WasPressedThisFrame() && Time.time >= nextAttackTime)
|
||||
{
|
||||
nextAttackTime = Time.time + attackCooldown;
|
||||
var ev = Schedule<PlayerAttack>();
|
||||
ev.player = this;
|
||||
ev.direction = facing;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
move.x = 0;
|
||||
}
|
||||
UpdateJumpState();
|
||||
base.Update();
|
||||
}
|
||||
|
||||
void UpdateJumpState()
|
||||
{
|
||||
jump = false;
|
||||
switch (jumpState)
|
||||
{
|
||||
case JumpState.PrepareToJump:
|
||||
jumpState = JumpState.Jumping;
|
||||
jump = true;
|
||||
stopJump = false;
|
||||
break;
|
||||
case JumpState.Jumping:
|
||||
if (!IsGrounded)
|
||||
{
|
||||
Schedule<PlayerJumped>().player = this;
|
||||
jumpState = JumpState.InFlight;
|
||||
}
|
||||
break;
|
||||
case JumpState.InFlight:
|
||||
if (IsGrounded)
|
||||
{
|
||||
Schedule<PlayerLanded>().player = this;
|
||||
jumpState = JumpState.Landed;
|
||||
}
|
||||
break;
|
||||
case JumpState.Landed:
|
||||
jumpState = JumpState.Grounded;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
protected override void ComputeVelocity()
|
||||
{
|
||||
if (jump && IsGrounded)
|
||||
{
|
||||
velocity.y = jumpTakeOffSpeed * model.jumpModifier;
|
||||
jump = false;
|
||||
}
|
||||
else if (stopJump)
|
||||
{
|
||||
stopJump = false;
|
||||
if (velocity.y > 0)
|
||||
{
|
||||
velocity.y = velocity.y * model.jumpDeceleration;
|
||||
}
|
||||
}
|
||||
|
||||
if (move.x > 0.01f)
|
||||
{
|
||||
spriteRenderer.flipX = false;
|
||||
facing = Vector2.right;
|
||||
}
|
||||
else if (move.x < -0.01f)
|
||||
{
|
||||
spriteRenderer.flipX = true;
|
||||
facing = Vector2.left;
|
||||
}
|
||||
|
||||
animator.SetBool("grounded", IsGrounded);
|
||||
animator.SetFloat("velocityX", Mathf.Abs(velocity.x) / maxSpeed);
|
||||
|
||||
targetVelocity = move * maxSpeed;
|
||||
}
|
||||
|
||||
public enum JumpState
|
||||
{
|
||||
Grounded,
|
||||
PrepareToJump,
|
||||
Jumping,
|
||||
InFlight,
|
||||
Landed
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,782 @@
|
|||
# 대화로그 — EerieVillage — 2026-04-24
|
||||
|
||||
> **프로젝트**: 기묘한 고을 : 조선퇴마뎐 / EerieVillage: Joseon Exorcist
|
||||
> **조직**: BurningTimes
|
||||
> **기록 근거**: C32 대화로그 기록 의무 (헌법급)
|
||||
|
||||
---
|
||||
|
||||
## [BT7-Plan 접수·위임] 카드 시스템 개정 검토 — 4티어 + 덱빌딩 방식 비교
|
||||
|
||||
**태그**: #BT7-Plan #PD지시 #카드시스템개정 #기획팀장위임 #4티어 #덱빌딩방식비교
|
||||
|
||||
**트리거**: PD 2026-04-24 직접 지시 2건
|
||||
1. 세계관(narrative) 추가 진행 중단 — PD 직접 보완 예정. 기존 narrative/01·02·03 3종 현행 유지
|
||||
2. 카드 시스템 개정 검토 — (a) 티어 3→4 확장 (b) 덱빌딩 방식 Slay the Spire vs Vampire Survivors 비교·제안
|
||||
|
||||
### PM 집행 절차 (C29-1 단계 1 팀 논의 · 단계 2 PM 조율)
|
||||
|
||||
1. **매니페스트 등록**: `2026-04-24_BT7-Plan_덱빌딩검토접수` (target_files: PD 지시 로그 + system/03 검토 문서)
|
||||
2. **PD 지시 로그 등록**: 기획팀 활성 테이블 BT7-Plan 신규 추가 (`진행중` 상태)
|
||||
3. **기획팀장 Agent 위임**: 상세 프롬프트 8섹션 요구사항 + 선행 Read 8개 파일 의무 + 유지 제약 5축 + C5·C11·C14-5·C23·C30·C32·C34-11·P30 규칙 준수 명시
|
||||
|
||||
### 기획팀장 Agent 산출물
|
||||
**`프로젝트/EerieVillage/기획/system/03_덱빌딩_방식_검토.md`** (229 라인, YAML frontmatter 포함)
|
||||
|
||||
#### 핵심 결론
|
||||
- **권장 덱빌딩 방식**: **Vampire Survivors 하이브리드**
|
||||
- 플레이어 이동·점프·근거리 검 공격 수동 유지 (축 2 손맛 보존)
|
||||
- 카드 효과는 태그별 이원화: `[공격]`·`[방호]`·`[속도]` = 수동 강화형 / `[부적]`·`[소환]`·`[주술]`·`[폭발]`·`[회복]` = 자동 발동형
|
||||
- 레벨업 3픽 + 동일 카드 스택 업그레이드 골격 유지
|
||||
|
||||
- **4티어 구조 권장**: T2·T3 **사이에 "비전(祕傳)" 삽입**
|
||||
- T1 기본(普通) → T2 숙련(鍛鍊) → **T3 비전(祕傳) [신규]** → T4 각성(覺醒) [구 T3]
|
||||
- 해제 조건: T2=Lv.3+ / T3=Lv.5+ & 주력 태그 2장 / T4=Lv.7+ & 보스 처치 1회
|
||||
- 32장 재분배: T1 12 · T2 10 · T3 7 · T4 3
|
||||
|
||||
#### 결정적 발견 (실측 기반)
|
||||
현 기획 문서 내부 불일치 실측:
|
||||
- `system/01` 3티어 (T1·T2·T3)
|
||||
- `content/01` 3티어 (1·2·3)
|
||||
- `balance/02` **이미 4티어 확률 테이블 존재** (Common·Uncommon·Rare·Epic)
|
||||
|
||||
→ PD 지시 "3→4 변경"은 기존 balance 선행 설계와 정합 확보 방향. system·content를 balance에 맞춰 통일.
|
||||
|
||||
#### 적합성 평가 (유지 제약 5축 10점 척도)
|
||||
| 제약 축 | STS | VS |
|
||||
|---|---|---|
|
||||
| 모바일 조작 | 3/10 | 9/10 |
|
||||
| 라이프 1 | 4/10 | 8/10 |
|
||||
| 2D 액션 플랫포머 (축 2) | 1/10 | 7/10 |
|
||||
| 재미 축 1 육성 롤러코스터 | 8/10 | 9/10 |
|
||||
| 32장 스코프 | 6/10 | 9/10 |
|
||||
| **종합** | **22/50 (44%)** | **42/50 (84%)** |
|
||||
|
||||
#### 기각안 6건 (C32 최소 3건 초과 달성)
|
||||
1. STS 순수 채택 — 축 2 구조적 포기 (템플릿 선택 전제 부정)
|
||||
2. VS 순수 채택 (이동만) — 근거리 검 조작감 상실
|
||||
3. 4티어 최상위(T3 위) 추가 — balance/02 Epic 확률 테이블 충돌·체감 희박화 과도 (차선)
|
||||
4. 4티어 T1 아래 추가 (초심자 티어) — T1 의미 중복·런 초반 선택지 과다
|
||||
5. 카드 풀 32장 확장 — content/01 §5 기각 계승, 4티어 재분배로 볼륨 조정 충분
|
||||
6. T3 비전 정적 판정 해제 — VS 실시간 성장 감각 약화, 동적 판정 유지
|
||||
|
||||
#### 개정 영향 범위 (PD 방향 결정 후 순차 집행)
|
||||
| 파일 | 개정 요지 |
|
||||
|---|---|
|
||||
| `system/01_카드_시스템.md` | 3→4티어 확장, 픽 알고리즘에 T3 비전 태그 보너스 추가, 카드 발동 분류 컬럼 추가 |
|
||||
| `content/01_카드_풀.md` | 티어 4종 재매핑, 32장 재분배, 자동 vs 수동 분류 신규 |
|
||||
| `balance/01_전투_수치.md` | CardMultiplier 범위 재검토, 자동 발동 DPS 기여도 분석 |
|
||||
| `balance/02_레벨업_곡선.md` | 4티어 확률 테이블 레이블 재매핑, 해제 조건 정합성 검증 |
|
||||
| `ux/02_HUD_설계.md` | 카드별 자동·수동 아이콘 구분, T3 비전 등장 태그 보너스 시각 피드백 |
|
||||
|
||||
### 규칙 준수 검증
|
||||
- **C5 정직성**: STS·VS 장르 특성 사실 기반, 추정 항목 "추정" 명시 (Dead Cells 선례·분당 입력 등)
|
||||
- **C11 개발 관점**: 구현 복잡도 평가 포함 (BT.Framework Tier 1 5종·PlatformerMicrogame Simulation 활용)
|
||||
- **C14-5**: 본문 최신 원칙 준수
|
||||
- **C23**: 선행 Read 8개 파일 실측 기반 판단 (balance/02 4티어 기존 존재 실측 발견)
|
||||
- **C30**: 기존 기획 파일 전수 선행 Read
|
||||
- **C32 기각안**: 6건 기록
|
||||
- **C34-11**: 상대 경로만 사용
|
||||
- **C36**: 본 문서는 제안 단계, PM 재량으로 방향·원칙 수준 축소하지 않음 (PD 결정 대기)
|
||||
- **P30**: 재미 축 3종 기준 판단
|
||||
|
||||
### 공유 상태
|
||||
내부 공유 (C21-① · 로컬 commit 예정). PD 방향 결정 시점에 상세 개정 집행 + "세션 공유" 지시로 main push (C21-②).
|
||||
|
||||
### 다음 단계 (PD 결정 대기)
|
||||
1. 덱빌딩 방식 3안 중 택1 (VS 하이브리드 권장 / VS 순수 / STS 변형)
|
||||
2. 4티어 구조 2안 중 택1 (T2·T3 중간 권장 / T3 위 차선)
|
||||
3. PD 승인 후 system/01·content/01·balance/01·02·ux/02 5개 파일 순차 개정 집행
|
||||
|
||||
---
|
||||
|
||||
## [BT7-Plan 방향 재설정] PD 직접 지시 — VS 순수형 + "액티브+패시브=각성" 확정
|
||||
|
||||
**태그**: #BT7-Plan #PD확정지시 #VS순수형 #액티브패시브각성 #T1-T4폐기 #PM위반자진고지
|
||||
|
||||
### PD 직접 지시 연쇄 (동일 세션 후속)
|
||||
|
||||
1. **VS 순수형 확정**: "공격 버튼은 필요 없이 오직 이동과 점프만 존재하면 돼 따라서 VS(뱀파이어 서바이벌) 방식이 적합할거 같아"
|
||||
→ 공격 버튼 제거. 플레이어 조작 = 이동·점프 2종. 공격은 자동 발동
|
||||
|
||||
2. **"T1~T4 빌드업"은 무엇인가 질의** → PM이 티어 설명했으나 PD가 **"빌드업 형식으로 구성한 이유"** 재질의
|
||||
→ PM 자진 고지: VS 방식 채택 선언해놓고 실제 VS 구조(액티브+패시브=각성)를 반영 않고 기존 3티어 계단 구조의 수량 확장으로만 해석함. **C2-1 근본 원인 재정의 의무 위반**
|
||||
|
||||
3. **카드 구조 확정**: "'액티브 + 패시브 = 각성' 구조를 EerieVillage 카드 시스템의 확정 방향으로 지시한거야"
|
||||
→ 기존 T1~T4 빌드업 구조·"비전/각성" 레이블·A/B 선택지·장수 분배(12·10·7·3)·해제 조건 수치 전부 폐기
|
||||
|
||||
### PM 위반 자진 고지 (C22-6 코어룰 신설 계기)
|
||||
|
||||
PD 직접 지적: "앞으로는 너 혼자 아는 용어나 선택지로 내게 선택을 강요하지 마! 안건 번호도 네 멋대로 부여하지 말고, 규칙에 따라 일정한 넘버링으로 보고하지 않은 안건을 멋대로 넘겨짚고 진행하지 않도록 코어 룰에 반영해"
|
||||
|
||||
**위반 행위 3종**:
|
||||
1. PD 미합의 용어 일방 신설 ("비전(祕傳)"·"각성(覺醒)"·"수동 강화형/자동 발동형" 등)
|
||||
2. 자의 선택지 식별자 부여 ("A안·B안" — C25-1 고정 위계 위반)
|
||||
3. 미보고 안건 넘겨짚기 (해제 조건·장수 분배 PD 확인 없이 기정사실화)
|
||||
|
||||
**위반 규칙**: C5 · C22 · C23 · C25 · C36
|
||||
|
||||
### C22-6 코어룰 신설 초안 제출 (PD 문안 승인 대기)
|
||||
|
||||
`C22. 용어·식별자 일관 사용 의무`에 **C22-6 신설** 초안 제출:
|
||||
- PM·하위 에이전트가 PD 미합의 용어·식별자·선택지·안건을 일방 구성하여 PD께 결정 요구 금지
|
||||
- 신규 용어 도입 시 사전 설명·합의 단계 강제
|
||||
- C25-1 고정 위계(1./1)/A./가)) 선순 적용 의무
|
||||
- 미보고 안건 PM 넘겨짚기 금지
|
||||
- 하위 에이전트 산출물 내 신규 용어도 PM이 PD 보고 전 사전 합의 강제
|
||||
|
||||
**후속 조치 대기** (PD 승인 후):
|
||||
- SKILL.md C22-6 추가
|
||||
- `memory/org/feedback_pm_unilateral_proposal.md` 신설 (2026-04-24 실증 SOT)
|
||||
- C31-J 체크리스트 신설 (용어·식별자 자의 도입 감지)
|
||||
- pm-auditor 감사 영역 7번 신설
|
||||
- C10-6 3중 전파
|
||||
|
||||
### BT7-Plan 현재 상태
|
||||
|
||||
**PD 확정 사항** (즉시 효력):
|
||||
- 세계관(narrative/01·02·03) 현행 유지, 추가 진행 중단
|
||||
- 덱빌딩 방식: VS 순수형 (공격 버튼 제거, 이동·점프만)
|
||||
- 카드 구조: "액티브 + 패시브 = 각성" 3분류
|
||||
|
||||
**PD 추가 지시 대기 (설계 착수 전 필수)**:
|
||||
1. "티어 3→4 변경" 지시의 새 구조 내 재해석
|
||||
2. 각성 발생 조건 (VS 원조 방식 "액티브 만렙 + 특정 패시브 + 보물상자" 그대로인지, 맥락 조정인지)
|
||||
3. 기존 설계 중 유지 여부 (레벨업 3픽·런 사망 시 카드 전손·오행/유형 태그 2축·동일 카드 스택 업그레이드)
|
||||
4. 액티브·패시브·각성 각 카테고리 규모 (몇 종씩)
|
||||
|
||||
**재설계 영향 파일 (PD 방향 확정분만 순차 개정)**:
|
||||
- `프로젝트/EerieVillage/기획/system/01_카드_시스템.md` — 3분류 구조로 전면 재작성
|
||||
- `프로젝트/EerieVillage/기획/content/01_카드_풀.md` — 기존 32장을 새 3분류로 재분배·재설계
|
||||
- `프로젝트/EerieVillage/기획/balance/01_전투_수치.md` — 자동 공격 주기·DPS 공식 재설계
|
||||
- `프로젝트/EerieVillage/기획/balance/02_레벨업_곡선.md` — 확률 테이블 3분류 체계에 맞게 재구성
|
||||
- `프로젝트/EerieVillage/기획/ux/01·02` — 공격 버튼 제거 + 각성 발생 피드백 UI
|
||||
- Unity: `PlayerAttack.cs` 트리거 수동→주기 전환 + `InputSystem_Actions.inputactions` Attack 바인딩 제거
|
||||
|
||||
### 공유 상태
|
||||
내부 공유 (C21-①). BT7-Plan 재설정 반영 commit 대기.
|
||||
|
||||
### 관련 규칙
|
||||
- **C1** 지시=승인 (PD 확정 사항 즉시 효력)
|
||||
- **C2-1** 근본 원인 재정의 의무 (PM 위반 자진 고지)
|
||||
- **C22** 용어·식별자 일관 사용 (C22-6 신설 계기)
|
||||
- **C29** 업무 자율 수행 (PM 재량 vs PD 재확인 경계)
|
||||
- **C32** 대화로그 기록 의무 (본 엔트리)
|
||||
- **C36** PM 자율 판단 범위 상한 (방향·원칙 수준 축소·희석 금지)
|
||||
|
||||
---
|
||||
|
||||
## [BT7-Plan PD 지시 4건 답변] 1·2 확정 + 3·4 PM 조사 보고
|
||||
|
||||
**태그**: #BT7-Plan #PD지시답변 #티어폐기 #각성조건확정 #기존설계분류 #레퍼런스조사
|
||||
|
||||
### PD 지시 답변 수령
|
||||
|
||||
1. **"티어 3→4 변경" 재해석 폐기 확정** — PD 원문: "기존 티어 기준으로 지시한 내용인데 폐기하고 새로 바뀐 구조가 확정된 안이야"
|
||||
→ 티어 수량 개념 자체 소멸. 액티브/패시브/각성 3분류가 유일 구조.
|
||||
|
||||
2. **각성 발생 조건 VS 원조 방식 확정** — PD 원문: "VS 원조 방식(액티브 최대 강화 + 특정 패시브 + 보물상자) 그대로야"
|
||||
→ 각성 트리거 = (액티브 최대 레벨) + (특정 패시브 보유) + (보물상자 획득)
|
||||
|
||||
3. **기존 설계 유지 여부 정리** — PD 지시: "기존 설계안 중 유지 가능한 부분이 뭔지 다시 정리해서 보고해"
|
||||
→ 본 엔트리 하단 분류 보고 수행
|
||||
|
||||
4. **액티브·패시브·각성 각 규모** — PD 지시: "레퍼런스 게임이 몇 종인지 먼저 확인 후 보고해"
|
||||
→ 본 엔트리 하단 레퍼런스 조사 보고 수행
|
||||
|
||||
### 기존 설계 분류 (3번 답변)
|
||||
|
||||
#### ✅ 유지 (변동 없음)
|
||||
- **04_전투**: 라이프 1·피격 즉사·i-frame 0.6s·PlatformerMicrogame 계승·2D 횡스크롤
|
||||
- **balance/01**: MoveSpeed 6.0·JumpHeight 3.5·Gravity Scale 3.5·Coyote 0.12s·Jump Buffer 0.15s·Edge Push 0.3m
|
||||
- **balance/01**: 적 스탯 (HP 40·60·120·보스 400, 이동 2.0~3.5)
|
||||
- **balance/02**: XP 곡선 80+Lv×20·XP 획득량·어뷰징 가드
|
||||
- **system/01**: 사망 시 카드 전손 (코어 룰 7)
|
||||
- **ux/01**: 좌측 가상 스틱·우측 점프 버튼·Safe Area·피격 피드백 3종 (시각·청각·진동)·BT.Framework Tier 2 Neu 구현 3종
|
||||
- **ux/02**: 보스전 HUD·마을 UI·사망/복귀 전환 UI·레벨업 카드 픽 Unscaled Time 시간 정지
|
||||
- **content/01**: 한자 네이밍·조선 퇴마 톤 (narrative 현행 유지 지시 연계)
|
||||
|
||||
#### 🔄 부분 유지 / 재설계 필요
|
||||
- **system/01**: 레벨업 3픽·동일 카드 스택 업그레이드·태그 체계 2축 — VS 각성 조건과 정합성 PD 검토 필요
|
||||
- **content/01**: 32장 풀 볼륨 — 액티브/패시브/각성 3분류로 재분배 필요
|
||||
- **content/01**: 8 카테고리 (공격·부적·주술·소환·방호·속도·회복·특수) — 액티브/패시브 재분류 필요
|
||||
- **balance/02**: 레벨업 드로우 4티어 확률 테이블 — 액티브/패시브 2축 드로우로 재설계 (각성은 별도 트리거)
|
||||
- **balance/02**: 런 내 카드 10장 하드캡 — 액티브·패시브 슬롯 상한 분리 재설계 (VS는 6+6)
|
||||
- **ux/02**: HUD 카드 슬롯 — 액티브·패시브 분리 UI 재설계
|
||||
|
||||
#### ❌ 폐기
|
||||
- **04_전투 §5**: 근거리 공격 1종 (수동 공격 전체)
|
||||
- **ux/01**: 우측 공격 버튼
|
||||
- **balance/01 §3**: BaseDamage 20·AttackRange·AttackCooldown 0.4s·HitStop·AttackBoxOffset·KnockbackForce (수동 공격 수치 전체)
|
||||
- **system/01 §3 규칙 1**: 3티어 구조 + 티어 수량 개념 전체
|
||||
- **content/01**: `[공격]` 태그 5장의 "기본 공격 강화" 효과 설계 (기본 공격 사라져 의미 상실)
|
||||
|
||||
#### 🆕 신규 설계 필요
|
||||
- 액티브 무기 자동 발동 주기 시스템
|
||||
- DPS 공식 (자동 발동 무기 기반 재설계)
|
||||
- 각성(진화) 메커니즘 + 각성 발생 피드백 UI
|
||||
- 기본 시작 무기 (VS 원조처럼 퇴마사 고유 무기 1종 시작)
|
||||
- 보물상자 획득 체계 (VS 원조 각성 트리거 필수 요소)
|
||||
|
||||
### 레퍼런스 게임 규모 조사 (4번 답변)
|
||||
|
||||
WebSearch 실측 기반 (버전별 변동 가능, 베이스 게임 기준):
|
||||
|
||||
| 게임 | 액티브 (무기) | 패시브 | 각성 (진화) | 출처 |
|
||||
|---|---|---|---|---|
|
||||
| **Vampire Survivors 베이스** | ~14종 (WebSearch 확답 없음, 기본 지식 기반 추정) | **21종 (17 일반 + 4 특수)** | ~14종 + Union 소수 (추정) | [Vampire Survivors Wiki - Passive items](https://vampire.survivors.wiki/w/Passive_items) |
|
||||
| **Brotato 베이스** | **64종** | **201종** (아이템) | 없음 (진화 시스템 부재) | [Brotato Wiki](https://brotato.wiki.spellsandguns.com/Weapons) |
|
||||
| **Holocure** | 미확인 (WebSearch 확답 없음) | 미확인 | 스탬프 3단계 업그레이드 (고정) | [HoloCure Wiki - Stamp](https://holocure.wiki.gg/wiki/Stamp) |
|
||||
|
||||
**핵심 관찰**:
|
||||
- VS 베이스(로그라이크 서바이버 원조)가 가장 근접한 레퍼런스 — 액티브 ~14 + 패시브 21 + 각성 ~14
|
||||
- Brotato는 액티브 64·아이템 201로 볼륨 매우 큼. 파일럿 스코프 초과
|
||||
- EerieVillage 기존 32장 볼륨 유지 가정 시 VS 베이스 규모 참고치
|
||||
|
||||
**PM 관점 (판단 아님·PD 결정 대기)**: 파일럿 스코프 고려 시 VS 베이스 규모 또는 그 이하가 관리 복잡도·QA 비용 대비 적정 가능성. 정확한 수량은 PD 지시 대기.
|
||||
|
||||
### 개정 착수 가능 판정
|
||||
|
||||
PD 방향 확정 사항만으로 즉시 착수 가능한 개정 영역:
|
||||
- ✅ 04_전투 §2 공격 액션 삭제 + §5 전체 폐기 → 이동·점프 2종만 재작성
|
||||
- ✅ ux/01 공격 버튼 레이아웃 삭제 + 관련 피드백 부분 제거
|
||||
- ✅ balance/01 §3 공격 수치 섹션 삭제 + §6 대미지 공식 재설계 플레이스홀더
|
||||
- ✅ system/01 3티어 구조 폐기 + 액티브/패시브/각성 3분류 골격 재작성
|
||||
- ✅ 개발팀 PlayerAttack 주기 타이머 전환 + InputActions Attack 바인딩 제거
|
||||
|
||||
PD 추가 결정 후 착수:
|
||||
- ⏳ content/01 32장 재분배 (액티브/패시브/각성 각 규모 확정 후)
|
||||
- ⏳ balance/02 드로우 확률 테이블 재설계 (규모 확정 후)
|
||||
- ⏳ ux/02 HUD 카드 슬롯 재설계 (슬롯 상한 확정 후)
|
||||
|
||||
### 공유 상태
|
||||
내부 공유 (C21-①). PD 지시 3·4 답변 대기 + 규모 결정 대기.
|
||||
|
||||
---
|
||||
|
||||
## [BT7-Plan 규모 확정] PD 직접 지시 — 액티브 15~20 / 패시브 ≤25 / 각성 15~20
|
||||
|
||||
**태그**: #BT7-Plan #규모확정 #PD직접지시 #레퍼런스VS급
|
||||
|
||||
### PD 지시 수령 (2026-04-24)
|
||||
|
||||
> PD 원문: "엑티브, 패시브, 각성은 뱀파이어 서바이벌 정도의 규모로 액티브 15~20종, 패시브 25종 이내, 각성 15~20종으로 구성해."
|
||||
|
||||
**확정 수치**:
|
||||
- **액티브**: 15~20종
|
||||
- **패시브**: 25종 이내
|
||||
- **각성**: 15~20종
|
||||
|
||||
### VS 베이스 레퍼런스와 비교 (참고용)
|
||||
- VS 베이스: 액티브 ~14 + 패시브 21 + 각성 ~14
|
||||
- EerieVillage 확정: 액티브 15~20 + 패시브 ≤25 + 각성 15~20
|
||||
- → VS 베이스 수준 또는 약간 상회. 파일럿 스코프 내 관리 가능한 규모
|
||||
|
||||
### 기존 32장 대비
|
||||
- 기존 content/01: 32장 단일 풀
|
||||
- 개정 후: 액티브(최대 20) + 패시브(최대 25) + 각성(최대 20) = 최대 65장
|
||||
- 약 2배 볼륨 확장. 기존 `content/01 §5 기각안 2` "50장 이상 초기 풀 기각"보다 다소 큰 규모 (단 기존 기각안은 단일 풀 기준, 현 구조는 3분류 합계 기준이라 다른 맥락)
|
||||
|
||||
### 기존 설계 분류 (표 형태 재요약)
|
||||
|
||||
| 영역 | 항목 | 판정 |
|
||||
|---|---|---|
|
||||
| **전투 기본** | 라이프 1 · 피격 즉사 · i-frame 0.6s | 유지 |
|
||||
| | PlatformerMicrogame 템플릿 계승 · 2D 횡스크롤 | 유지 |
|
||||
| **이동·점프** | MoveSpeed 6.0 · JumpHeight 3.5 · Gravity 3.5 · AirControl 0.7 | 유지 |
|
||||
| | Coyote 0.12s · Jump Buffer 0.15s · Edge Push 0.3m | 유지 |
|
||||
| **공격 (수동)** | 근거리 공격 1종 | 폐기 |
|
||||
| | BaseDamage 20 · AttackRange 1.2m · AttackCooldown 0.4s · HitStop · Offset · Knockback | 폐기 |
|
||||
| | `[공격]` 태그 5장 "기본 공격 강화" 효과 | 폐기 |
|
||||
| **적 스탯** | HP 40/60/120/보스 400 · 이동 2.0~3.5 · ATK 1(즉사) | 유지 |
|
||||
| **경험치·레벨업** | XP 곡선 80+Lv×20 · 획득량 (적·엘리트·보스) · 어뷰징 가드 | 유지 |
|
||||
| | 레벨업 3픽 + Unscaled Time 시간 정지 | 유지 |
|
||||
| | 사망 시 카드 전손 (코어 룰 7) | 유지 |
|
||||
| | 4티어 확률 테이블 | 재설계 (액티브/패시브 2축 드로우) |
|
||||
| | 런 내 10장 하드캡 | 재설계 (액티브·패시브 슬롯 분리) |
|
||||
| **카드 풀** | 32장 단일 풀 | 재분배 (액티브 15~20 + 패시브 ≤25 + 각성 15~20) |
|
||||
| | 8 카테고리 (공격·부적·주술·소환·방호·속도·회복·특수) | 재분류 (액티브/패시브) |
|
||||
| | 한자 네이밍·조선 퇴마 톤 | 유지 |
|
||||
| | 태그 체계 2축 (속성 오행·유형) | 부분 유지 (각성 조건 매핑 PD 검토) |
|
||||
| | 동일 카드 스택 업그레이드 (Lv.1→2→3) | 부분 유지 (VS 진화 정합성 PD 검토) |
|
||||
| **카드 구조** | 3티어 구조 · 티어 수량 개념 | 폐기 |
|
||||
| **UX 조작** | 좌 가상 스틱 · 우 점프 버튼 · Safe Area | 유지 |
|
||||
| | 우측 공격 버튼 | 폐기 |
|
||||
| | 피격 피드백 3종 (시각·청각·진동) · 버튼 입력 피드백 | 유지 |
|
||||
| **HUD** | 라이프 · 레벨·경험치 게이지 · 보스전 HP 바 | 유지 |
|
||||
| | 마을 UI · 사망/복귀 전환 UI | 유지 |
|
||||
| | 카드 슬롯 UI | 재설계 (액티브·패시브 분리) |
|
||||
| **프레임워크** | BT.Framework Tier 2 신규 3종 (SafeAreaBorder·UITouchHandler·BackKeyDispatcher) | 유지 |
|
||||
| **신규 설계** | 액티브 자동 발동 주기 시스템 | 신규 |
|
||||
| | DPS 공식 (자동 발동 기반) | 신규 |
|
||||
| | 각성(진화) 메커니즘 + 발생 피드백 UI | 신규 |
|
||||
| | 기본 시작 무기 1종 (퇴마사 고유) | 신규 |
|
||||
| | 보물상자 획득 체계 | 신규 |
|
||||
|
||||
### 판정 집계
|
||||
- **유지**: 14종 (핵심 전투·이동·적·경험치·UX·HUD·프레임워크 대부분)
|
||||
- **부분 유지**: 2종 (태그 체계 · 스택 업그레이드 — PD 검토 대기)
|
||||
- **재설계**: 5종 (드로우 확률 · 슬롯 상한 · 카드 풀 · 카테고리 · 카드 슬롯 UI)
|
||||
- **폐기**: 7종 (공격 관련 전체 + 3티어 구조 + 공격 버튼)
|
||||
- **신규**: 5종 (액티브 주기·DPS 공식·각성 메커니즘·시작 무기·보물상자)
|
||||
|
||||
### 개정 착수 가능 (즉시)
|
||||
PD 확정 방향(VS 순수형 + 3분류 + VS 각성 조건 + 규모 확정)만으로 선행 착수 가능:
|
||||
1) `04_전투_기본_스펙` §2 공격 액션·§5 전체 폐기 재작성
|
||||
2) `ux/01_모바일_터치_UX` 공격 버튼 레이아웃 제거
|
||||
3) `balance/01_전투_수치` §3 공격 수치 삭제 + §6 대미지 공식 재설계 플레이스홀더
|
||||
4) `system/01_카드_시스템` 3티어 폐기 + 액티브/패시브/각성 3분류 골격 재작성 (규모 확정 반영)
|
||||
5) `content/01_카드_풀` 32장 → 3분류 재분배 (액티브 15~20 + 패시브 ≤25 + 각성 15~20)
|
||||
6) `balance/02_레벨업_곡선` 드로우 확률 테이블 재설계
|
||||
7) `ux/02_HUD_설계` 카드 슬롯 UI 재설계 (액티브·패시브 분리)
|
||||
8) Unity: `PlayerAttack.cs` 트리거 주기 타이머 전환 + `InputActions` Attack 바인딩 제거
|
||||
|
||||
### PD 결정 대기 잔존 (1건)
|
||||
- **부분 유지 2항목 처리 방향**: 동일 카드 스택 업그레이드와 VS 진화(각성) 개념의 정합성 + 태그 체계 2축(속성 오행·유형)의 각성 조건 매핑 활용 범위
|
||||
|
||||
### 공유 상태
|
||||
내부 공유 (C21-①). 개정 착수 8건 commit 대기.
|
||||
|
||||
---
|
||||
|
||||
## [BT7-Plan 적 ATK 1 이상 확정] PD 직접 지시 — HP 다변 체계 재설계
|
||||
|
||||
**태그**: #BT7-Plan #적ATK재설계 #PlayerHP성장 #라이프1재해석 #전체분류갱신
|
||||
|
||||
### PD 지시 수령 (2026-04-24)
|
||||
|
||||
> PD 원문: "적 공격은 1 이상으로 구성해야 해 (왜냐하면 플레이어가 스킬 카드 조합이나 성장 요소로 HP를 늘릴 수단이 존재하기 때문이야.)"
|
||||
|
||||
### 설계 영향
|
||||
|
||||
- **기존 balance/01 §5 ATK=1(즉사) 설계 폐기**: "라이프 1 구조에서 모든 피격은 즉사" 전제 소멸
|
||||
- **플레이어 HP 성장 가능 구조**: 카드(패시브 `[방호]`·`[회복]`)·특성(영속 성장)으로 최대 HP 증가
|
||||
- **라이프 1 코어 룰 재해석**: "시작 HP 1" 기본값으로 해석. 카드·성장으로 증가 가능 (기존 `system/01 §5 기각안 1` "HP 막대 도입 기각" 번복)
|
||||
- **대미지 공식 재설계 필수**: 기존 `PlayerResult = DEAD (라이프 1)` → 신 `PlayerHP -= EnemyATK` (i-frame 내 피격 무효 유지)
|
||||
- **적 ATK 테이블 신설**: 일반 적/엘리트/보스별 ATK 수치 차등 (balance-designer 설계)
|
||||
|
||||
### 갱신된 분류 표 (PD "나머지 모두 반영" 지시 수용)
|
||||
|
||||
| 영역 | 항목 | 판정 |
|
||||
|---|---|---|
|
||||
| **전투 기본** | 라이프 1 (시작 HP 기본값, 성장으로 증가 가능) | 부분 유지 (재해석) |
|
||||
| | 피격 = 즉사 조건 (라이프 1 전제) | **재설계** (HP 다변·데미지 누적) |
|
||||
| | i-frame 0.6초 · PlatformerMicrogame 계승 · 2D 횡스크롤 | 유지 |
|
||||
| **이동·점프** | MoveSpeed 6.0 · JumpHeight 3.5 · Gravity 3.5 · AirControl 0.7 | 유지 |
|
||||
| | Coyote 0.12s · Jump Buffer 0.15s · Edge Push 0.3m | 유지 |
|
||||
| **공격 (수동)** | 근거리 공격 1종 · 공격 수치 전체 · 공격 버튼 | 폐기 |
|
||||
| | `[공격]` 태그 5장 "기본 공격 강화" 효과 | 폐기 |
|
||||
| **적 스탯** | HP 40/60/120/보스 400 · 이동 2.0~3.5 | 유지 |
|
||||
| | ATK 1(즉사) | **재설계** (1 이상 다양한 수치) |
|
||||
| **대미지 공식** | `PlayerResult = DEAD (라이프 1)` | **재설계** (`PlayerHP -= EnemyATK`, i-frame 내 무효) |
|
||||
| | `FinalDamage = BaseDamage × CardMultiplier × CritMultiplier` | 재설계 (자동 발동 무기 기반) |
|
||||
| **경험치·레벨업** | XP 곡선 80+Lv×20 · 획득량 · 어뷰징 가드 (일부) | 유지 |
|
||||
| | "체력 회복 스팸" 가드 (라이프 1 전제) | 재설계 (회복 카드 도입 전제) |
|
||||
| | 레벨업 3픽 + Unscaled Time 시간 정지 | 유지 |
|
||||
| | 사망 시 카드 전손 (코어 룰 7) | 유지 |
|
||||
| | 4티어 확률 테이블 | 재설계 (액티브/패시브 2축) |
|
||||
| | 런 내 10장 하드캡 | 재설계 (슬롯 분리) |
|
||||
| **카드 풀** | 32장 단일 풀 | 재분배 (액티브 15~20 + 패시브 ≤25 + 각성 15~20) |
|
||||
| | 8 카테고리 (공격·부적·주술·소환·방호·속도·회복·특수) | 재분류 (액티브/패시브) |
|
||||
| | 한자 네이밍 · 조선 퇴마 톤 | 유지 |
|
||||
| | 태그 체계 2축 (속성 오행 · 유형) | 부분 유지 (PD 검토) |
|
||||
| | 동일 카드 스택 업그레이드 (Lv.1→2→3) | 부분 유지 (PD 검토) |
|
||||
| | `[방호]`·`[회복]` 태그 효과 | **부분 유지 (실효 수치 재설계 — HP 증가·실드 회복 실제 반영)** |
|
||||
| **카드 구조** | 3티어 구조 · 티어 수량 개념 | 폐기 |
|
||||
| **UX 조작** | 좌 가상 스틱 · 우 점프 버튼 · Safe Area | 유지 |
|
||||
| | 우측 공격 버튼 | 폐기 |
|
||||
| | 피격 피드백 3종 (시각·청각·진동) | 유지 |
|
||||
| **HUD** | 라이프 UI (하트 1개) | **재설계** (현 HP / 최대 HP 시각화) |
|
||||
| | 레벨·경험치 게이지 · 보스전 HP 바 | 유지 |
|
||||
| | 마을 UI · 사망/복귀 전환 UI | 유지 |
|
||||
| | 카드 슬롯 UI | 재설계 (액티브·패시브 분리) |
|
||||
| **프레임워크** | BT.Framework Tier 2 신규 3종 (SafeAreaBorder·UITouchHandler·BackKeyDispatcher) | 유지 |
|
||||
| **신규 설계** | 액티브 자동 발동 주기 시스템 | 신규 |
|
||||
| | DPS 공식 (자동 발동 기반) | 신규 |
|
||||
| | 각성(진화) 메커니즘 + 발생 피드백 UI | 신규 |
|
||||
| | 기본 시작 무기 1종 (퇴마사 고유) | 신규 |
|
||||
| | 보물상자 획득 체계 | 신규 |
|
||||
| | **플레이어 HP 증가 메커니즘** (패시브 카드 실효·특성 영속 성장) | **신규** |
|
||||
|
||||
### 갱신된 판정 집계 (표 행 기준, 총 38행)
|
||||
- **유지 13행**: 전투 템플릿·이동·적 HP·경험치 곡선·3픽·카드 전손·한자 네이밍·조작 기본·HUD 기본(레벨/마을/보스)·BT.Framework
|
||||
- **부분 유지 4행**: 라이프 1 재해석 · `[방호]`/`[회복]` 실효 재설계 · 태그 체계 2축 · 스택 업그레이드 (**후 2건 PD 검토 대기**)
|
||||
- **재설계 11행**: 피격 즉사 조건 · 적 ATK · 대미지 공식 2종(`PlayerResult` · `FinalDamage`) · 체력 회복 가드 · 4티어 확률 · 10장 하드캡 · 32장 재분배 · 8 카테고리 재분류 · HUD 라이프 UI · 카드 슬롯 UI
|
||||
- **폐기 4행**: 수동 공격 전체(근거리 1종·수치·버튼 묶음) · `[공격]` 태그 5장 효과 · 3티어 구조 · 우측 공격 버튼
|
||||
- **신규 6행**: 액티브 자동 주기 · DPS 공식 · 각성 메커니즘 · 기본 시작 무기 · 보물상자 획득 체계 · **HP 증가 메커니즘**
|
||||
|
||||
> **분류 경계 주석**: "신규: HP 증가 메커니즘"은 시스템 차원의 HP 변동 로직 자체이며, "부분 유지: `[방호]`/`[회복]` 태그"는 그 메커니즘의 **개별 카드 구현 수단**. 상호 참조 관계로 중복 아님. 개정 시 구조 분리 서술 필요.
|
||||
|
||||
### 갱신된 즉시 착수 가능 (PD 추가 결정 불요)
|
||||
|
||||
1) `04_전투` §2 공격 액션·§5 전체 폐기 재작성 + §3 라이프·피격 판정 재작성 (HP 다변 반영)
|
||||
2) `ux/01` 공격 버튼 레이아웃 제거
|
||||
3) `balance/01` §3 공격 수치 삭제 + §5 적 ATK 재설계 (1 이상 수치 테이블) + §6 대미지 공식 재설계 (`PlayerHP -= EnemyATK`)
|
||||
4) `system/01` 3티어 폐기 · 액티브/패시브/각성 3분류 골격 재작성 (규모 반영 + HP 증가 메커니즘 반영) + §5 기각안 1 "HP 막대 도입 기각" 번복 기록
|
||||
5) `content/01` 32장 → 3분류 재분배 (액티브 15~20 · 패시브 ≤25 · 각성 15~20) + `[방호]`·`[회복]` 태그 실효 수치 설계
|
||||
6) `balance/02` 드로우 확률 테이블 재설계 + 어뷰징 가드 §6 "체력 회복 스팸" 재작성 (회복 카드 도입 전제)
|
||||
7) `ux/02` 카드 슬롯 UI 재설계 (액티브·패시브 분리) + 라이프 UI 재설계 (현 HP / 최대 HP 시각화)
|
||||
8) Unity: `PlayerAttack.cs` 주기 타이머 전환 + `InputActions` Attack 바인딩 제거 + `Health.cs` maxHP 가변 구조 확장
|
||||
|
||||
### PD 결정 대기 잔존 (1건 — 2하위 항목)
|
||||
1) 동일 카드 스택 업그레이드(Lv.1→2→3)와 VS 진화(각성) 개념의 정합성
|
||||
2) 태그 체계 2축(속성 오행 · 유형)의 각성 조건 매핑 활용 범위
|
||||
|
||||
### 공유 상태
|
||||
내부 공유 (C21-①). 개정 착수 8건 commit 대기.
|
||||
|
||||
---
|
||||
|
||||
## [BT7-Plan 라이프 시스템 정정] PD 직접 지시 — 라이프 4 + 젤다 하트 분할 (하트 1개 = 4 HP)
|
||||
|
||||
**태그**: #BT7-Plan #라이프시스템정정 #젤다하트분할 #적ATK점진강화 #하트1개=4HP확정
|
||||
|
||||
### PD 지시 수령 (2026-04-24)
|
||||
|
||||
> PD 원문 1: "기본 라이프는 4 / 적의 최소 공격력은 1부터 점진적으로 강화 하는 형태로 변경해."
|
||||
> PD 원문 2: "기본 라이프의 표현은 ♥로 표현할거야. 적에게 피해 1을 받을 경우 1/4조각이 감소하고 2의 피해를 입으면 하트가 반조각 감소하는 젤다의 전설 형태의 라이프 시스템을 의미해."
|
||||
> PD 원문 3 (추가 확정): "완전한 형태의 하트 1개는 4의 HP를 의미해"
|
||||
|
||||
### 확정 사양
|
||||
|
||||
**라이프 시스템** (Zelda 방식)
|
||||
- 하트 ♥ 1개 = 4 HP (4 쿼터 분할)
|
||||
- **기본 시작 = 라이프 4 = 하트 1개** (4/4 상태)
|
||||
- 피해 1 = 1 쿼터 감소 (3/4)
|
||||
- 피해 2 = 2 쿼터 = 반조각 감소 (2/4)
|
||||
- 피해 3 = 3 쿼터 감소 (1/4)
|
||||
- 피해 4 = 하트 1개 완전 소멸
|
||||
- **카드·성장으로 최대 하트 수 증가 가능** (예: 하트 2개 = 8 HP, 하트 3개 = 12 HP)
|
||||
|
||||
**적 공격력**
|
||||
- 최소 ATK 1 (하트 1/4 조각 감소 = 피해 1)
|
||||
- 스테이지·등급 진행에 따라 점진 강화 (balance-designer 수치 테이블)
|
||||
- 참고 예시(추정): 일반 약 ATK 1 / 일반 중 ATK 2 / 엘리트 ATK 3 / 보스 ATK 4 또는 그 이상
|
||||
|
||||
### 설계 영향 (기존 분류 갱신)
|
||||
|
||||
**폐기 (추가)**
|
||||
- `04_전투 §3-1` "기본 라이프 1. HP 최대값 = 1" → `기본 라이프 4. 하트 1개 = 4 HP` 전면 재작성
|
||||
- `04_전투 §8 기각안 1` "HP 막대 도입 기각" → 번복 기록 (하트 UI 도입)
|
||||
- 코어 룰 7 "라이프 1" 표기 → `01_게임_컨셉`·`02_코어_루프` 전면 개정 필요
|
||||
|
||||
**재설계 (갱신)**
|
||||
- `balance/01 §5` 적 ATK 재설계 — "1 이상 다양" 추상에서 **"1부터 점진 강화" 구체화**. 일반 약/중·엘리트·보스별 수치 차등 + 스테이지 진행 승수
|
||||
- `balance/01 §6` 대미지 공식 `PlayerHP -= EnemyATK` — 단위는 **쿼터(1/4 HP)**
|
||||
- `balance/01 §4` i-frame 0.6초 근거 재검토 — 연속 히트 방지 기준이 다인 히트 구조로 변경됨 (하트 1개를 4회 피격까지 버틸 수 있는 여유 생김, 반대로 강한 공격 1회도 방지)
|
||||
- `system/01` `[방호]`·`[회복]` 태그 효과 실효 단위 — 쿼터 단위 회복/실드 또는 하트 단위
|
||||
- `ux/02 §2-2` HUD 라이프 UI — 하트 ♥ + 쿼터 분할 시각화 (Zelda BotW 방식)
|
||||
- `balance/02 §6` "체력 회복 스팸" 어뷰징 가드 — 회복 단위(쿼터 vs 하트) 결정 후 쿨다운·스택 제한 재설계
|
||||
|
||||
**신규 설계 (갱신)**
|
||||
- 플레이어 HP 증가 메커니즘 → **하트 수 증가 메커니즘**으로 구체화. 패시브 `[방호]`·`[회복]` 카드 or 특성으로 최대 하트 수 +1씩 증가 (상한 제약 필요 — balance-designer)
|
||||
- 하트 UI 스프라이트 시각화 (풀 하트·3/4·반·1/4·빈 하트 5단계 또는 Zelda Original 방식 풀·반·빈 3단계) — UX 세부 결정 사항
|
||||
|
||||
### 직전 PD 대기 2건 중 1건 해소
|
||||
|
||||
- ✅ **"기본 라이프 4" 단위 해석 확인** — PD 직접 명시 "하트 1개 = 4 HP" → 기본 시작 하트 1개로 확정
|
||||
- ⏳ 부분 유지 2하위 항목 여전히 대기
|
||||
|
||||
### 갱신된 분류 집계 (Delta만)
|
||||
|
||||
기존 집계(유지 13·부분 유지 4·재설계 11·폐기 4·신규 6 = 38행) 대비:
|
||||
- **재설계 +1**: 코어 룰 7 "라이프 1" 표기 재작성 (`01_게임_컨셉`·`02_코어_루프`) → 재설계 12
|
||||
- **폐기 +1**: `04_전투 §8 기각안 1` "HP 막대 도입 기각" 조항 자체 → 폐기 5
|
||||
- **신규 세부 구체화 (수량 불변)**: "HP 증가 메커니즘" → "하트 수 증가 메커니즘"으로 명칭 정교화
|
||||
|
||||
### 갱신된 즉시 착수 가능 (PD 추가 결정 불요)
|
||||
|
||||
1) `04_전투` §2 공격 폐기 + **§3 라이프 전면 재작성 (하트 1개 = 4 HP)** + §8 기각안 1 번복 기록
|
||||
2) `ux/01` 공격 버튼 제거
|
||||
3) `balance/01` §3 공격 수치 삭제 + **§5 적 ATK 점진 강화 테이블 재작성** + **§6 대미지 공식 쿼터 단위 재작성** + §4 i-frame 근거 재검토
|
||||
4) `system/01` 3티어 폐기 + 3분류 골격 + HP/하트 증가 메커니즘 + §5 기각안 1 번복
|
||||
5) `content/01` 32장 → 3분류 재분배 + `[방호]`/`[회복]` 쿼터/하트 단위 실효 설계
|
||||
6) `balance/02` 드로우 확률 재설계 + §6 회복 스팸 가드 재작성
|
||||
7) `ux/02` 카드 슬롯 UI (분리) + **라이프 UI 하트 분할 시각화**
|
||||
8) Unity: `PlayerAttack.cs` 주기 타이머 + `InputActions` Attack 제거 + **`Health.cs` maxHP 가변 + 쿼터 단위 구조**
|
||||
9) **`01_게임_컨셉`·`02_코어_루프`** 코어 룰 7 "라이프 1" 표기 전면 갱신 (신규 추가)
|
||||
|
||||
### PD 결정 대기 잔존 (변동 — 1건, 1건 해소로 감소)
|
||||
부분 유지 2항목 처리 방향:
|
||||
1) 동일 카드 스택 업그레이드(Lv.1→2→3)와 VS 진화(각성) 개념의 정합성
|
||||
2) 태그 체계 2축(속성 오행 · 유형)의 각성 조건 매핑 활용 범위
|
||||
|
||||
### 공유 상태
|
||||
내부 공유 (C21-①). 개정 착수 9건 commit 대기.
|
||||
|
||||
---
|
||||
|
||||
## [BT7-Plan 스택 업그레이드·각성·태그 체계 확정] PD 대기 2건 모두 해소 — **방향 완전 확정**
|
||||
|
||||
**태그**: #BT7-Plan #스택5레벨 #각성조건VS원작재확인 #태그일반RPG용어 #PD대기0건 #방향완전확정
|
||||
|
||||
### PD 지시 수령 (2026-04-24)
|
||||
|
||||
> PD 원문 1: "동일 카드 스텍 업그레이드는 5레벨까지 가능하고, 각성에 필요한 패시브 1개 이상 보유 시 각성 카드가 발동되는 형태로(원작과 동일)하게 구성해."
|
||||
> PD 원문 2: "태그 체계는 무슨 의미인지 모르겠고 오행이나 유형은 나중에 일괄 변경할테니 우선 일반적인 RPG에 익숙한 용어를 사용해."
|
||||
|
||||
### 확정 사양 (PD 대기 2건 해소)
|
||||
|
||||
#### 1. 동일 카드 스택 업그레이드 Lv.5까지 + 각성 발동 조건 VS 원작 동일
|
||||
- 기존 `system/01 §3 규칙 4` "Lv.1→2→3 (3단계)" → **Lv.1~Lv.5 (5단계 확장)**
|
||||
- **각성 발동 조건** (VS 원작 동일 재확인):
|
||||
- 액티브 카드 Lv.5 도달 (스택 업그레이드 최대)
|
||||
- 각성에 필요한 **특정 패시브 1개 이상** 보유
|
||||
- **보물상자** 획득 (이전 확정 사항 유지)
|
||||
- 3요소 충족 시 → **각성 카드 등장·발동**
|
||||
- 각성은 별도 카드 풀(15~20종)에 존재. 조건 충족 시 드로우 풀 합류 or 보물상자 드로우로 획득.
|
||||
|
||||
#### 2. 태그 체계 일반 RPG 용어 사용 (임시)
|
||||
- 기존 세계관 특화 용어(오행 불/물/목/금/토 · 결계/부적/주술/소환 등) → **일반 RPG 익숙한 용어로 임시 재작성**
|
||||
- **구체 일반 RPG 용어는 `content/01` 개정 시 기획팀장 제안 → PD 검토**
|
||||
- PD 향후 일괄 세계관 특화 재매핑 예정 (narrative 보완 시점)
|
||||
|
||||
### 태그 개념 간단 설명 (PD 질의 답변용 보존 기록)
|
||||
|
||||
> PD 지적: "태그 체계는 무슨 의미인지 모르겠고"
|
||||
|
||||
**태그**란 카드마다 붙이는 **분류 라벨**입니다. 예를 들어 한 카드에 `[공격]`·`[화염]` 두 태그를 붙이면, 동일 `[화염]` 태그 카드를 여러 장 모았을 때 **시너지 효과가 추가 발동**되는 구조. VS 원작의 무기-패시브 매칭과 별개로, **빌드 방향 표시·시너지 조합 탐색의 기반** 역할.
|
||||
|
||||
활용 범위 (기존 설계 유지):
|
||||
- **시너지 발동 조건**: 동일 태그 K장 이상 보유 시 추가 효과
|
||||
- **카드 분류 라벨**: 빌드 경향 시각화 (내 덱이 공격 중심인지 방어 중심인지 한눈에)
|
||||
- **각성 조건과는 별도**: 각성은 "특정 패시브 1개 이상 + 액티브 Lv.5 + 보물상자"로 트리거되며, 태그 매칭이 각성 조건은 아님 (VS 원작 방식)
|
||||
|
||||
### 설계 영향 갱신
|
||||
|
||||
**재설계 (구체화)**
|
||||
- `system/01 §3 규칙 4` 스택 업그레이드: Lv.3 → **Lv.5**
|
||||
- `system/01` 각성 발동 조건 명확화: 액티브 Lv.5 + 특정 패시브 1개 이상 + 보물상자
|
||||
- `content/01 §2-2` 태그 체계: 오행·결계/부적/주술 등 → **일반 RPG 용어로 임시 재작성** (구체 용어는 기획팀장 제안 → PD 검토)
|
||||
|
||||
**부분 유지 2하위 항목 모두 해소**
|
||||
- ✅ 동일 카드 스택 업그레이드 VS 진화 정합성 → Lv.5 스택 + 각성 조건 VS 원작 동일로 해소
|
||||
- ✅ 태그 체계 2축 활용 범위 → 시너지 발동·카드 분류 용도 유지, 용어만 일반 RPG 임시 재작성
|
||||
|
||||
### 갱신된 분류 집계 (Delta)
|
||||
|
||||
기존 집계(유지 13 / 부분 유지 4 / 재설계 12 / 폐기 5 / 신규 6 = 40행) 대비:
|
||||
- **부분 유지 -2 → 2**: "태그 체계 2축" · "동일 카드 스택 업그레이드" 2항목 해소
|
||||
- **재설계 +2 → 14**: 동일 2항목이 **재설계**로 이동 (Lv.5 확장 · 태그 용어 일반 RPG 재작성)
|
||||
- 합계 40행 유지
|
||||
|
||||
### 갱신된 즉시 착수 가능 (**PD 추가 결정 0건** — 모두 PM·기획팀·개발팀 재량 집행)
|
||||
|
||||
1) `04_전투` §2 공격 폐기 + §3 라이프 전면 재작성 (하트 1개 = 4 HP) + §8 기각안 1 번복
|
||||
2) `ux/01` 공격 버튼 제거
|
||||
3) `balance/01` §3 공격 수치 삭제 + §5 적 ATK 점진 강화 테이블 + §6 대미지 공식 쿼터 단위
|
||||
4) `system/01` 3티어 폐기 + 3분류 골격 + **스택 업그레이드 Lv.5** + **각성 조건 VS 원작 명확화** + HP/하트 증가 메커니즘 + §5 기각안 1 번복
|
||||
5) `content/01` 32장 → 3분류 재분배 + `[방호]`/`[회복]` 실효 설계 + **태그 체계 일반 RPG 용어 재작성** (기획팀장 초안 → PD 검토)
|
||||
6) `balance/02` 드로우 확률 재설계 + §6 회복 스팸 가드 재작성
|
||||
7) `ux/02` 카드 슬롯 UI 재설계 + 라이프 UI 하트 분할 시각화
|
||||
8) Unity: `PlayerAttack.cs` 주기 타이머 + `InputActions` Attack 제거 + `Health.cs` maxHP 가변 + 쿼터 단위
|
||||
9) `01_게임_컨셉`·`02_코어_루프` 코어 룰 7 "라이프 1" → "라이프 4 + 하트 분할" 표기 갱신
|
||||
|
||||
### PD 결정 대기 잔존 **0건 — BT7-Plan 방향 완전 확정**
|
||||
|
||||
모든 PD 확정 사항 정리:
|
||||
- VS 순수형 (공격 버튼 제거, 이동·점프만)
|
||||
- 액티브 + 패시브 = 각성 3분류
|
||||
- 규모: 액티브 15~20 / 패시브 ≤25 / 각성 15~20
|
||||
- 기본 라이프 4 (하트 1개 = 4 HP, 젤다 분할)
|
||||
- 적 ATK 1부터 점진 강화
|
||||
- 스택 업그레이드 Lv.5
|
||||
- 각성 조건: 액티브 Lv.5 + 특정 패시브 1개 이상 + 보물상자
|
||||
- 태그 체계: 일반 RPG 용어로 임시 (나중에 PD 일괄 재매핑)
|
||||
- narrative 현행 유지 (카드명 한자·조선 퇴마 톤)
|
||||
|
||||
### 공유 상태
|
||||
내부 공유 (C21-①). 개정 집행 착수 9건 commit 대기 — **BT7-Plan 재설계 본격 착수 가능 상태**.
|
||||
|
||||
---
|
||||
|
||||
## [BT7-Dev Phase 1 개발 집행 착수] VS 순수형 자동 발동 + 하트 분할 Unity 재구조
|
||||
|
||||
**태그**: #BT7-Dev #Phase1 #VS순수형 #자동발동Ticker #하트분할시스템 #개발팀장집행
|
||||
|
||||
**트리거**: PD 2026-04-24 BT7-Plan 방향 완전 확정 후 PM이 개발팀장 Agent에 Phase 1(개발 영향분) 집행 위임
|
||||
|
||||
### 배경
|
||||
|
||||
BT7-Plan에서 확정된 11건 PD 지시 중 **개발 영향 항목**을 Unity 코드·설정·EditMode 테스트에 반영.
|
||||
|
||||
### 개발 영향 PD 확정 방향
|
||||
|
||||
1. VS 순수형 — 공격 버튼 제거, 이동·점프만
|
||||
2. 플레이어 공격 = 자동 발동 (주기 타이머)
|
||||
3. 기본 라이프 4 (하트 1개 = 4 HP, 젤다 분할) · 카드·성장으로 최대 하트 수 증가 가능
|
||||
4. 적 ATK 1부터 점진 강화 (`PlayerHP -= EnemyATK` 쿼터 단위)
|
||||
5. 동일 카드 스택 업그레이드 Lv.5까지
|
||||
6. 각성 조건 VS 원작 동일 (액티브 Lv.5 + 특정 패시브 1개 + 보물상자)
|
||||
|
||||
### 집행 범위 (Phase 1)
|
||||
|
||||
**Unity 코드·설정·테스트 뼈대**만. 기획 balance/01 v0.2·system/01·content/01·ux/02 미확정 항목은 **TODO 주석 + 후속 Phase 분리**.
|
||||
|
||||
### 편집 산출물 (7파일)
|
||||
|
||||
**Unity 외부 레포 `D:/NerdNavis/EerieVillage/`**:
|
||||
1. `Assets/Scripts/Gameplay/PlayerAttack.cs` — Execute 로직 유지 + 주석 재작성 (수동 입력 → 자동 발동 전환 명시)
|
||||
2. `Assets/Scripts/Gameplay/PlayerAttackTicker.cs` **(신설)** + `.meta` — `[RequireComponent(PlayerController)]` 주기 타이머 컴포넌트. `attackInterval`(기본 0.5s) + `startupDelay`(기본 0.3s) + `ApplyIntervalMultiplier` 확장 API
|
||||
3. `Assets/Settings/InputSystem_Actions.inputactions` — Player 맵 Attack 액션 정의·바인딩 2종(Mouse leftButton · Gamepad rightTrigger) **완전 제거**
|
||||
4. `Assets/Scripts/Mechanics/Health.cs` — 전면 개정. `QuartersPerHeart=4` 상수 · `maxHearts` 필드(기본 1, Inspector) · `maxHP = maxHearts*4` Awake 재산정 · `Heal(int quarters)` · `IncreaseMaxHearts(int delta)` · `Decrement(int damage)` 오버로드 · `CurrentHP` 프로퍼티 (HUD용) · 기존 `Decrement()`·`Die()` 호환 유지
|
||||
5. `Assets/Scripts/Mechanics/PlayerController.cs` — `m_AttackAction`·`nextAttackTime`·`attackCooldown` 전수 제거. `public Vector2 Facing => facing` 노출. Update Attack 입력 블록 제거
|
||||
6. `Assets/Scripts/Mechanics/AttackHitbox.cs` — `for 루프 Decrement()` → `health.Decrement(damage)` 단일 호출 통합 + BT7-Plan TODO 주석 (i-frame 내 반복 Decrement 무효화 문제 대응)
|
||||
7. `Assets/Tests/Editor/PlayerAttackTests.cs` — 10 tests → **13 tests**. 제거 1(`Enemy_Prefab_Health_MaxHP_Is_One` — 하트 분할로 가정 폐기) + 신규 4(`Health_Script_Defines_MaxHearts_And_IncreaseMaxHearts`·`Player_Prefab_MaxHP_Reflects_Heart_Quarters`·`PlayerAttackTicker_Script_Exists_With_AttackInterval`·`InputActions_Player_Map_Has_No_Attack_Action`)
|
||||
|
||||
**BT 레포**:
|
||||
8. `프로젝트/EerieVillage/개발/06_BT7-Plan_VS순수형_재구조.md` **(신설)** — YAML frontmatter + 9섹션 (배경·편집대상·백업·PD수동검증·리스크·기각안 5건·후속Phase·자가검증·변경이력)
|
||||
9. `공유/PD_지시_트래킹/개발팀_PD_지시_로그.md` — BT7-Dev 활성 항목 추가 (진행중)
|
||||
|
||||
### C6-1 백업 6종
|
||||
|
||||
`공유/개발팀_백업/EerieVillage/*.bak_20260424_1551.*`:
|
||||
- `PlayerAttack.cs` · `Health.cs` · `PlayerController.cs` · `InputSystem_Actions.inputactions` · `PlayerAttackTests.cs` · `AttackHitbox.cs`
|
||||
|
||||
**롤백 절차**: `.bak_20260424_1551` 제거 후 Unity 레포 덮어쓰기.
|
||||
|
||||
### EditMode 테스트 갱신 결정
|
||||
|
||||
| 변경 | 수 | 이유 |
|
||||
|---|---|---|
|
||||
| 유지 | 8 | 기존 Player/Enemy/AttackHitbox prefab 컴포넌트 검증 (BT5-Dev 계승) |
|
||||
| 제거 | 1 | `Enemy_Prefab_Health_MaxHP_Is_One` — 하트 분할 시스템으로 Enemy maxHP=1 가정 폐기 (Enemy도 쿼터 단위 HP) |
|
||||
| 신규 | 4 | Health 신규 API·Ticker Script 존재·Attack 액션 제거·Player prefab 하트 직렬화 정합성 |
|
||||
| **총계** | **13** | |
|
||||
|
||||
### PD 수동 검증 요청 (2종)
|
||||
|
||||
1. **Asset import + EditMode Test Runner 실행** — Unity Editor 재실행 후 Console 오류 없음 확인 + `Window > General > Test Runner` → EditMode → Run All → 13 green
|
||||
2. **Player.prefab에 PlayerAttackTicker 컴포넌트 부착 + Play 검증** — Inspector Add Component "Player Attack Ticker" → Prefab 저장 → Play → 공격 자동 발동(0.3s 지연 후 0.5s 주기)·Enemy 피해·Player i-frame 확인
|
||||
|
||||
### 기각안 (5건 — C32 최소 3건 초과)
|
||||
|
||||
1. "PlayerAttack.cs 내부에 타이머 직접 구현" 기각 — SRP 위반. Ticker 분리로 발화 방식 교체 유연성 확보
|
||||
2. "attackInterval을 PlayerController에 통합" 기각 — PlayerController 비대. 전투 시스템 분리 보전
|
||||
3. "Health.maxHP 제거하고 maxHearts만 유지" 기각 — Prefab 직렬화 호환성 파괴. maxHP 유지 + Awake 재산정 방식 채택
|
||||
4. "Decrement 단일 시그니처 통합" 기각 — 기존 호출자 회귀 리스크. 무인자 유지 + 오버로드 신규 추가
|
||||
5. "EnemyController에 attackDamage 필드 추가 + Player 피해 전달" 본 Phase 기각 — balance/01 v0.2 미확정. TODO 주석만, 후속 Phase 분리
|
||||
|
||||
### 규칙 준수 검증
|
||||
|
||||
- **C5 정직성**: 실제 Edit 결과만 보고 — `grep -c "m_AttackAction"` 0건 실측 확인
|
||||
- **C6-1 원본 보호**: 편집 대상 6파일 백업 `*.bak_20260424_1551.*` 6종 확보
|
||||
- **C11 개발 관점**: 자원 효율(Time.deltaTime 누적·Schedule 재사용)·구조 직관성(Ticker 분리 SRP)·범용성(ApplyIntervalMultiplier 확장 API)
|
||||
- **C22**: PD 도입 용어 "액티브·패시브·각성·하트·쿼터·보물상자·Lv.5" 코드 주석·본 문서에 그대로
|
||||
- **C22-6 정신**: 신규 클래스·필드명은 **구현 세부 수준 기술 명명** (PlayerAttackTicker·maxHearts·QuartersPerHeart 등). PD 방향·원칙 수준 결정에 영향 없음 — C36 적용 범위 내 자가 검증
|
||||
- **C23 허위 보고 금지**: 7파일 Edit 실제 수행 + grep으로 결과 실측 입증
|
||||
- **C30 git 최신**: Unity 레포 `git fetch origin` + `main` 브랜치 최신 확인 (기존 modified 7건은 Unity Editor 자동 생성 setting, 본 작업과 무관)
|
||||
- **C32 기각안**: 5건 기록 (본 엔트리)
|
||||
- **C34-11 경로**: Unity 외부 레포 절대 경로 허용 (`D:/NerdNavis/EerieVillage/Assets/...`) · BT 산출물 상대 경로
|
||||
|
||||
### 공유 상태
|
||||
|
||||
내부 공유 (C21-①). PM 수행 대기: pm-auditor 감사 → BT worktree commit → Unity 외부 레포는 PD Editor 실행 시 GitAutoSync 자동 push → Play 검증 결과 수령.
|
||||
|
||||
### 관련 규칙
|
||||
|
||||
- **C1** 지시=승인 (PD BT7-Plan 방향 완전 확정 후 PM 위임 권한 내)
|
||||
- **C6-1** 원본 보호 (6파일 백업)
|
||||
- **C11** 개발 관점 원칙 (Ticker SRP 분리)
|
||||
- **C22** 용어·식별자 일관 사용
|
||||
- **C23** 허위 보고 금지
|
||||
- **C32** 대화로그 기록 의무 (본 엔트리)
|
||||
- **C36** PM 자율 판단 범위 상한 (구현 세부 수준 — 방향·원칙 미변경)
|
||||
- **P13-1** 코드 변경 (공용 모듈 AttackHitbox·Health 인터페이스 영향 — 기획·QA 공유)
|
||||
- **P14** QA 게이트 (13 EditMode 테스트로 회귀 검증)
|
||||
- **P30** 재미 우선 원칙 (기획팀 검토 대상 — 자동 발동 주기 튜닝)
|
||||
|
||||
---
|
||||
|
||||
## [BT7-Plan 기획 9파일 v0.2 개정 집행 완료] 기획팀장 Agent 산출
|
||||
|
||||
**태그**: #BT7-Plan #기획개정완료 #기획팀장집행 #기각안번복7건 #신규기각안20건 #태그임시용어
|
||||
|
||||
**트리거**: PD 2026-04-24 "집행 착수해" 지시 + BT7-Plan 방향 완전 확정 (11건) 후 PM이 기획팀장 Agent 병렬 위임
|
||||
|
||||
### 편집 산출물 (9파일 v0.2)
|
||||
|
||||
1. `01_게임_컨셉.md` — 재미 축 2를 "손맛"에서 "VS 순수형 자동 발동 감상"으로 재정의. 라이프 1 즉사 → 하트 분할 + 성장 2중 축
|
||||
2. `02_코어_루프.md` — 보물상자 획득을 각성 발동 트리거로 추가. 하트 수 증가 런 내 한정
|
||||
3. `04_전투_기본_스펙.md` — 기본 액션 2종(이동·점프만) · 라이프 4쿼터 + 젤다 5단계 분할 · 공격은 액티브 자동 발동 · §8 기각안 1 번복 기록
|
||||
4. `system/01_카드_시스템.md` — 3티어 폐기 · 액티브/패시브/각성 3분류 · Lv.5 스택 · VS 원작 각성 조건 (Lv.5 + 필요 패시브 + 보물상자) · §5 기각안 1·2 번복 기록
|
||||
5. `content/01_카드_풀.md` — 32장 → 50~65장 (A01~A18 액티브 · P01~P25 패시브 · AW01~AW18 각성) · 일반 RPG 태그 5속성+6유형 임시 · 각 각성마다 "필요 액티브 + 필요 패시브" 쌍 명시 · 한자 네이밍 현행 유지
|
||||
6. `balance/01_전투_수치.md` — 수동 공격 수치 전면 삭제 · 자동 발동 액티브 기본 수치(BaseCooldown 1.5s · BaseDamage 10) · 적 ATK 1~4 점진 강화 · i-frame 0.6s 하트 분할 하 유효 재검증
|
||||
7. `balance/02_레벨업_곡선.md` — 4티어 레어리티 폐기 · 액티브·패시브 2축 드로우 비율 (초반 70/30 → 후반 20/80) · 슬롯 6/6 분리 · 보물상자 체계 신설 · 회복 스팸 가드 재작성
|
||||
8. `ux/01_모바일_터치_UX.md` — 공격 버튼 제거 · 점프 버튼 우측 단독 대형 · Attack 액션 제거 · 피해량별 진동 차등 (40/80/120/160ms)
|
||||
9. `ux/02_HUD_설계.md` — 하트 UI 5단계 분할 스프라이트 · 액티브/패시브 슬롯 분리(6/6) · 각성 발동 풀스크린 연출 3초 + 복수 조건 선택 UI · 각성 대기 황금 테두리 + ★ 표시
|
||||
|
||||
### 기각안 번복 기록 7건 (원 기각안 유지 + "번복" 주석, C14-5 히스토리 보존)
|
||||
|
||||
- `04_전투 §8 기각안 1` HP 막대 도입
|
||||
- `system/01 §8 기각안 1·2` 3티어 명칭 · HP 막대
|
||||
- `01_게임_컨셉 §7 기각안 1` 라이프 1 고수
|
||||
- `content/01 §5 기각안 2` 30~35장 MVP
|
||||
- `balance/02 §8 기각안 9` 10장 하드캡
|
||||
- `ux/01 §7 기각안 4` 공격 버튼 복수
|
||||
|
||||
### 신규 기각안 총 20건
|
||||
각 파일 §기각안 섹션 최소 3건 기준 충족. 파일별 2~3건씩 분포.
|
||||
|
||||
### 태그 일반 RPG 용어 후보 (PD 후속 검토 대기)
|
||||
- **속성 5종**: `[물리]` `[화염]` `[냉기]` `[번개]` `[암흑]`
|
||||
- **유형 6종**: `[근접]` `[원거리]` `[범위]` `[지속]` `[회복]` `[방어]`
|
||||
|
||||
narrative-designer가 PD 검토 후 세계관 특화(조선 퇴마·한자) 일괄 재매핑 예정.
|
||||
|
||||
### narrative 완전 보존
|
||||
`narrative/01·02·03_*.md` 3파일 + 카드 한자 네이밍(진언부·화염부·봉황격·학익진 등) 현행 유지. PD 특별 주의 완전 준수.
|
||||
|
||||
### 각성 18종 모두 쌍 명시 완료
|
||||
AW01~AW18 각각 `필요_액티브` + `필요_패시브[]` 쌍 구체 기록 (`content/01 §3-3`).
|
||||
|
||||
### 기본 시작 무기 결정 보류
|
||||
`content/01 §3-1` 말미에 "A01~A18 중 1종 기본 장착 or 별도 카드 설계" 명시. balance·content 협의 대기.
|
||||
|
||||
### C22-6 정신 준수 자가 검증
|
||||
- 자의 용어 신설 없음 (RPG 통용 용어만)
|
||||
- 단일 선택 강요 없음 (후보 5+6개 제시 + PD 검토 대기 명시)
|
||||
- 한자 네이밍 미개입
|
||||
- `system/03_덱빌딩_방식_검토.md` 수정 대상 아님 (참조만)
|
||||
- 상대 경로 사용 (C34-11)
|
||||
|
||||
### 변경 이력 기록
|
||||
9개 파일 모두 §변경 이력 섹션에 `2026-04-24 v0.2 — BT7-Plan 개정 집행 — PD 지시 11건 반영` 엔트리 추가 완료.
|
||||
|
||||
### 공유 상태
|
||||
내부 공유 (C21-①). PM 수행 대기: pm-auditor 감사 → BT 레포 commit → push.
|
||||
|
||||
### 관련 규칙
|
||||
- **C1** 지시=승인 (PD 집행 착수 지시)
|
||||
- **C5** 정직성 · **C11** 개발 관점 · **C14-5** 본문 최신 · **C22** 용어 일관 · **C22-6** (선행 준수) · **C23** 허위 보고 금지 · **C25** 넘버링 · **C32** 기각안 필수 · **C34-11** 경로 · **P30** 재미 우선
|
||||
|
||||
---
|
||||
|
||||
## [BT7-Plan + BT7-Dev 전체 집행 종합] PM 병렬 위임 완결
|
||||
|
||||
**태그**: #BT7-Plan완결 #BT7-Dev완결 #병렬집행 #기획9+Unity6 #commit대기
|
||||
|
||||
**집행 구조**:
|
||||
- 기획팀장 Agent — 기획 9파일 v0.2 (위 엔트리)
|
||||
- 개발팀장 Agent — Unity 6파일 + PlayerAttackTicker 신설 + EditMode 10→13 + BT 보고서 (바로 위 엔트리)
|
||||
|
||||
**총 변경 규모**:
|
||||
- BT 레포 수정: 기획 9 + 개발팀 PD 지시 로그 + 기획팀 PD 지시 로그 = 11파일
|
||||
- BT 레포 신규: 대화로그 (본 파일) + 개발 보고 `06_*.md` + 기각 참조 `system/03_*.md` (기존) = 3파일
|
||||
- BT 백업: Unity 6파일 `bak_20260424_1551.*`
|
||||
- Unity 외부 레포: 6파일 편집 + 1파일 신설 (`PlayerAttackTicker.cs + .meta`) = 7파일
|
||||
|
||||
**PD 수동 검증 대기 (집행 완료 후)**:
|
||||
1. Unity Asset import + EditMode Test Runner (13 tests green)
|
||||
2. Player.prefab에 `PlayerAttackTicker` 컴포넌트 부착 + Play 검증 (자동 공격 주기 발동·이동/점프·Enemy 피해·i-frame·HUD 후속)
|
||||
|
||||
**후속 Phase 분리 대기**:
|
||||
- 기획 balance/01 v0.2 수치 확정 후 `attackInterval`·적 ATK 테이블 튜닝
|
||||
- 기획 system/01·content/01 확정 후 카드 데이터 구조·프리팹 작업
|
||||
- HUD 하트 UI 스프라이트·각성 발동 풀스크린 구현
|
||||
|
||||
### 공유 상태
|
||||
내부 공유 (C21-①). PM 수행: pm-auditor 감사 → commit → push.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -0,0 +1,309 @@
|
|||
---
|
||||
type: 구현_보고서
|
||||
scope: BT7-Dev_Phase1
|
||||
author: 개발팀장
|
||||
date: 2026-04-24
|
||||
version: v1.0
|
||||
project: EerieVillage (기묘한 고을 : 조선퇴마뎐 / EerieVillage: Joseon Exorcist)
|
||||
phase: BT7-Plan 개발 집행 Phase 1 — VS 순수형 자동 발동 + 하트 분할 시스템
|
||||
data_source: Unity 프로젝트 직접 Edit (D:/NerdNavis/EerieVillage) + BT 레포 문서
|
||||
status: 코드·InputActions·테스트 갱신 완료 (PD Unity Editor Play 검증 대기)
|
||||
---
|
||||
|
||||
# 06. BT7-Plan VS 순수형 반영 재구조 (Phase 1 개발 집행)
|
||||
|
||||
## 1. 배경
|
||||
|
||||
2026-04-24 PD 직접 지시 11건 중 **개발 영향 항목**을 Unity 코드·InputActions·EditMode 테스트에 반영.
|
||||
|
||||
### 1.1 PD 확정 방향 (개발 연관)
|
||||
|
||||
1. **VS 순수형 확정** — 공격 버튼 제거, 이동·점프만. 플레이어 공격은 자동 발동(주기 타이머)
|
||||
2. **기본 라이프 4** — 하트 1개 = 4 HP (젤다 분할). 카드·성장으로 최대 하트 수 증가 가능
|
||||
3. **적 ATK 1부터 점진 강화** — `PlayerHP -= EnemyATK` 쿼터 단위
|
||||
4. **동일 카드 스택 업그레이드 Lv.5까지** (Lv.3에서 확장)
|
||||
5. **각성 조건 VS 원작 동일** — 액티브 Lv.5 + 특정 패시브 1개 이상 + 보물상자
|
||||
|
||||
### 1.2 적용 범위 한정
|
||||
|
||||
- 본 Phase 1은 **Unity 코드·설정 뼈대 이행**이 목적. `attackInterval`·`maxHearts`·`적 ATK 테이블` 등 구체 수치는 기획 balance/01 v0.2 확정 후 튠
|
||||
- 카드 시스템(3분류)·각성 메커니즘·보물상자·시작 무기·HUD 하트 분할 UI는 **후속 Phase** — 본 문서 범위 외
|
||||
- 적 ATK 수치 테이블은 **TODO 주석**만 반영 (balance/01 v0.2 미확정)
|
||||
|
||||
## 2. 편집 대상 (Unity 외부 레포 `D:/NerdNavis/EerieVillage/`)
|
||||
|
||||
### 2.1 `Assets/Scripts/Gameplay/PlayerAttack.cs` (개정)
|
||||
|
||||
**변경 요지**: 이벤트 Execute 로직은 유지하되, **발화 트리거가 수동 입력에서 주기 타이머로 전환**됨을 주석에 명시. 본 파일은 이벤트 정의이므로 발화 로직(타이머)은 별도 컴포넌트로 분리 (SRP).
|
||||
|
||||
**주요 변경 라인**:
|
||||
- 파일 상단 XML 주석: "Fired when the player triggers an attack (mouse left click / touch attack button)" → "Player attack event — fires on a periodic timer (no manual input). BT7-Plan PD 지시 2026-04-24 — VS 순수형 자동 발동 전환 (공격 버튼 제거...)"
|
||||
- `direction` 필드 주석: "PlayerController.facing 기반"으로 수정 (Ticker가 참조)
|
||||
- Execute 본문 로직 변경 없음 — Animator Trigger, AudioClip, AttackHitbox.Fire 순차 호출 유지
|
||||
|
||||
### 2.2 `Assets/Scripts/Gameplay/PlayerAttackTicker.cs` (신설)
|
||||
|
||||
**역할**: `[RequireComponent(typeof(PlayerController))]` Player GameObject에 부착되어 `attackInterval` 초마다 `Schedule<PlayerAttack>` 이벤트를 발화.
|
||||
|
||||
**필드 설계**:
|
||||
- `attackInterval` (기본 0.5s, Inspector 노출) — balance/01 v0.2 튠 대상
|
||||
- `startupDelay` (기본 0.3s, Inspector 노출) — Spawn 애니메이션 여유
|
||||
- `attackTimer` (내부) — Time.deltaTime 감산 누적
|
||||
|
||||
**Update 로직**:
|
||||
```csharp
|
||||
if (!player.controlEnabled || attackInterval <= 0f) return;
|
||||
attackTimer -= Time.deltaTime;
|
||||
if (attackTimer <= 0f)
|
||||
{
|
||||
attackTimer += attackInterval; // 오버플로 누적 방지 (= 0 리셋이 아닌 + 연산)
|
||||
var ev = Schedule<PlayerAttack>();
|
||||
ev.player = player;
|
||||
ev.direction = player.Facing;
|
||||
}
|
||||
```
|
||||
|
||||
**확장 API**: `ApplyIntervalMultiplier(float multiplier)` — 카드·특성 효과가 주기 배수 조정할 때 사용. 최소 0.05s clamp.
|
||||
|
||||
**설계 근거** (C11):
|
||||
- PlayerAttack 이벤트(로직) vs Ticker(발화 트리거) 분리 — SRP + 범용성
|
||||
- 타이머 방식을 교체(예: 카드 수에 따라 동적 주기)하려면 Ticker만 교체. 이벤트는 그대로 재사용
|
||||
|
||||
**.meta guid**: `c7d8e9f0a1b20314253647586978a9b0` (충돌 없음 grep 검증)
|
||||
|
||||
### 2.3 `Assets/Settings/InputSystem_Actions.inputactions` (개정)
|
||||
|
||||
**변경 요지**: Player 맵의 Attack 액션 정의·바인딩 **완전 제거**.
|
||||
|
||||
**제거된 섹션**:
|
||||
1. `actions[].name == "Attack"` 객체 (id `c9d8e7f6-a5b4-4c3d-2e1f-0a9b8c7d6e5f`, Button type)
|
||||
2. `bindings[].action == "Attack"` 바인딩 2종:
|
||||
- `<Mouse>/leftButton` (Keyboard&Mouse 그룹)
|
||||
- `<Gamepad>/rightTrigger` (Gamepad 그룹)
|
||||
|
||||
Move·Jump 액션 + UI 맵 전체 유지.
|
||||
|
||||
### 2.4 `Assets/Scripts/Mechanics/Health.cs` (개정)
|
||||
|
||||
**변경 요지**: 하트 분할 시스템(젤다 방식) 전면 도입.
|
||||
|
||||
**신규·개정 API**:
|
||||
- `const int QuartersPerHeart = 4` 정의
|
||||
- `maxHearts` 필드 (기본 1, Inspector 노출) — 카드·특성으로 외부 조작
|
||||
- `maxHP` 필드 기본값 `QuartersPerHeart` (= 4) — `maxHearts * 4`로 Awake에서 재산정
|
||||
- `Heal(int quarters)` 신규 메서드 — 쿼터 단위 회복, maxHP 상한 체크
|
||||
- `IncreaseMaxHearts(int delta)` 신규 메서드 — 최대 하트 수 증감 + currentHP 비례 증가 (음수 delta 허용 + clamp)
|
||||
- `Decrement(int damage)` 오버로드 — 쿼터 단위 피해. 기존 `Decrement()`는 `Decrement(1)`로 위임
|
||||
- `CurrentHP` 공개 프로퍼티 — HUD가 하트 분할 UI 그리기 위해 읽음
|
||||
- i-frame 0.6s 유지 (연속 히트 방지는 하트 분할 후에도 필요)
|
||||
- `Die()` 즉사 로직 단순화 — while 루프 제거, `currentHP = 0` 단일 설정 후 HealthIsZero 이벤트
|
||||
|
||||
**Awake 초기화**:
|
||||
```csharp
|
||||
if (maxHearts <= 0) maxHearts = 1;
|
||||
int expected = maxHearts * QuartersPerHeart;
|
||||
if (maxHP != expected) maxHP = expected;
|
||||
currentHP = maxHP;
|
||||
```
|
||||
|
||||
구식 프리팹 호환 처리(기존 maxHP=1 직렬화 값이 남아있어도 Awake에서 자동 보정).
|
||||
|
||||
**파일 상단 주석**:
|
||||
> BT7-Plan PD 지시 2026-04-24 — 하트 분할 시스템 (젤다 방식). 하트 1개 = 4 쿼터(HP). 카드(패시브)·성장으로 maxHearts를 증가시킬 수 있으며, 그에 따라 maxHP가 `maxHearts * QuartersPerHeart`로 자동 산정된다. 적 ATK는 쿼터 단위.
|
||||
|
||||
### 2.5 `Assets/Scripts/Mechanics/PlayerController.cs` (개정)
|
||||
|
||||
**변경 요지**: Attack 입력 관련 필드·로직 완전 제거. Facing 상태 public 노출.
|
||||
|
||||
**제거 항목**:
|
||||
- `private InputAction m_AttackAction` 필드
|
||||
- `float nextAttackTime` 필드
|
||||
- `public float attackCooldown` 필드
|
||||
- Awake에서 `m_AttackAction = InputSystem.actions.FindAction("Player/Attack")` · `m_AttackAction.Enable()` 호출
|
||||
- Update의 Attack 입력 처리 블록 (WasPressedThisFrame · Schedule<PlayerAttack>) — 단 Ticker 참조 주석 유지
|
||||
|
||||
**신규·개정 항목**:
|
||||
- `public Vector2 Facing => facing` 프로퍼티 (Ticker가 Schedule 시점에 참조)
|
||||
- `attackAudio` 필드 주석: "자동 발동 시 PlayerAttack.Execute가 PlayOneShot으로 재생" 재작성
|
||||
- `attackHitbox` 필드 주석: "공격은 PlayerAttackTicker가 주기적으로 Schedule<PlayerAttack>을 발화하여 실행" 추가
|
||||
|
||||
### 2.6 `Assets/Scripts/Mechanics/AttackHitbox.cs` (부수 개정)
|
||||
|
||||
**변경 요지**: 하트 분할 시스템에 맞춰 적 Decrement 호출 통합.
|
||||
|
||||
**개정 라인**:
|
||||
```csharp
|
||||
// 기존
|
||||
for (int i = 0; i < damage; i++)
|
||||
{
|
||||
health.Decrement();
|
||||
if (!health.IsAlive) break;
|
||||
}
|
||||
|
||||
// 개정
|
||||
// BT7-Plan TODO (2026-04-24): 적 Health도 하트 분할 시스템 대상이지만
|
||||
// i-frame 구조 탓에 Decrement() 반복 호출은 첫 호출 후 무효화된다.
|
||||
// Health.Decrement(int damage) 단일 호출로 쿼터 단위 다중 피해 전달.
|
||||
health.Decrement(damage);
|
||||
```
|
||||
|
||||
**이유**: i-frame 내 `Decrement()` 재호출은 무효화됨. 새 `Decrement(int damage)` 오버로드는 단일 호출에서 damage만큼 쿼터를 즉시 차감.
|
||||
|
||||
### 2.7 `Assets/Tests/Editor/PlayerAttackTests.cs` (개정)
|
||||
|
||||
**테스트 구조** (총 **13개**):
|
||||
|
||||
| # | 테스트 | 상태 | 비고 |
|
||||
|---|---|---|---|
|
||||
| 1 | `Player_Prefab_Has_AttackHitbox_Component` | 유지 | BT5-Dev 계승 |
|
||||
| 2 | `Player_Prefab_Has_Health_Component` | 유지 | |
|
||||
| 3 | `Player_Prefab_Has_PlayerController_Component` | 유지 | |
|
||||
| 4 | `AttackHitbox_Default_Damage_Is_One` | 유지 (주석 업데이트) | "balance/01 v0.2 튠 전 파일럿 값" |
|
||||
| 5 | `AttackHitbox_Active_Duration_Is_Positive` | 유지 | |
|
||||
| 6 | `Enemy_Prefab_Has_Health_Component` | 유지 | |
|
||||
| 7 | `Enemy_Prefab_Has_EnemyController_Component` | 유지 | |
|
||||
| 8 | `Enemy_Prefab_Health_MaxHP_Is_One` | **제거** | BT7-Plan 하트 분할로 maxHP=1 가정 폐기 |
|
||||
| 9 | `Health_Script_Defines_MaxHearts_And_IncreaseMaxHearts` | **신규** | Health.maxHearts·maxHP·IncreaseMaxHearts·Heal 시그니처 검증 |
|
||||
| 10 | `Player_Prefab_MaxHP_Reflects_Heart_Quarters` | **신규** | Player.prefab Health 직렬화 값 점검 (maxHP ∈ {maxHearts*4, 1}) |
|
||||
| 11 | `PlayerAttackTicker_Script_Exists_With_AttackInterval` | **신규** | Ticker 타입·attackInterval float 필드 검증 |
|
||||
| 12 | `InputActions_Player_Map_Has_No_Attack_Action` | **신규** | YAML grep으로 Player 맵 Attack 액션 부재 검증 |
|
||||
| 13 | `Player_Prefab_SpriteRenderer_References_PlayerTestGirl` | 유지 | BT5-Dev 3단계 계승 |
|
||||
| 14 | `Player_Controller_Has_Attack_Parameter_And_State` | 유지 | Ticker → Animator.SetTrigger("attack") 연동 전제 |
|
||||
|
||||
**갱신 집계**: 기존 10 → 제거 1 + 신규 4 = **13개**.
|
||||
|
||||
## 3. C6-1 백업 파일 목록 (편집 전 원본 보존)
|
||||
|
||||
**백업 경로**: `D:/NerdNavis/BurningTimesAi/공유/개발팀_백업/EerieVillage/`
|
||||
**Timestamp**: `20260424_1551`
|
||||
|
||||
| # | 원본 | 백업 파일명 |
|
||||
|---|------|-----------|
|
||||
| 1 | `PlayerAttack.cs` | `PlayerAttack.cs.bak_20260424_1551.cs` |
|
||||
| 2 | `Health.cs` | `Health.cs.bak_20260424_1551.cs` |
|
||||
| 3 | `PlayerController.cs` | `PlayerController.cs.bak_20260424_1551.cs` |
|
||||
| 4 | `InputSystem_Actions.inputactions` | `InputSystem_Actions.inputactions.bak_20260424_1551.inputactions` |
|
||||
| 5 | `PlayerAttackTests.cs` | `PlayerAttackTests.cs.bak_20260424_1551.cs` |
|
||||
| 6 | `AttackHitbox.cs` | `AttackHitbox.cs.bak_20260424_1551.cs` |
|
||||
|
||||
**롤백 절차**: 백업 파일에서 `.bak_20260424_1551` 제거 후 Unity 레포 덮어쓰기.
|
||||
|
||||
## 4. PD 수동 검증 요청 항목
|
||||
|
||||
Unity Editor 실행 GUI 작업이 필수인 항목만 최소화하여 PD 요청:
|
||||
|
||||
### 4.1 Asset import 재처리 + EditMode Test Runner
|
||||
|
||||
1. Unity Editor 재실행 (D:/NerdNavis/EerieVillage 프로젝트 열기)
|
||||
2. Console에 import 오류 없는지 확인 — 특히:
|
||||
- `PlayerAttackTicker.cs` 신규 파일 인식
|
||||
- `InputSystem_Actions.inputactions` Attack 액션 제거 후 재컴파일
|
||||
- `Health.cs` Decrement(int) 오버로드 + IncreaseMaxHearts·Heal 신규 메서드
|
||||
3. `Window > General > Test Runner` → EditMode → **Run All** → 13 tests all green 확인
|
||||
|
||||
### 4.2 Player.prefab에 PlayerAttackTicker 컴포넌트 부착 + Play 검증
|
||||
|
||||
**Unity Editor GUI 필수 작업**:
|
||||
1. `Assets/Prefabs/Player.prefab` 열기
|
||||
2. Inspector → Add Component → "Player Attack Ticker" 선택 (네임스페이스 `Platformer.Gameplay`)
|
||||
3. `attackInterval` 기본 0.5s 유지, `startupDelay` 0.3s 유지
|
||||
4. Prefab 저장 (Ctrl+S)
|
||||
|
||||
**Play 모드 검증**:
|
||||
1. Scene 열기 (`Assets/Scenes/SampleScene.unity`)
|
||||
2. Play 버튼 클릭
|
||||
3. 확인 항목:
|
||||
- (a) 이동·점프 정상 동작 (A/D·Space)
|
||||
- (b) **마우스 좌클릭 / 게임패드 RT 누르지 않아도 공격 주기적 발동** (0.3초 후 첫 발동, 이후 0.5초 간격)
|
||||
- (c) Player 근처 Enemy가 공격 판정에 들어오면 1 쿼터 피해 받고 i-frame 동안 중복 피해 없음
|
||||
- (d) 적 접촉 시 Player도 `Health.Decrement(damage)` 받아 쿼터 1 감소 (i-frame 0.6s)
|
||||
- (e) 하트 UI 부재로 시각 피드백 없음 (HUD 개정은 후속 Phase) — Inspector Health 컴포넌트에서 currentHP 감소 실측으로 확인
|
||||
|
||||
### 4.3 리스크 — Play 검증 전 인지 사항
|
||||
|
||||
| 리스크 | 영향 | 대응 |
|
||||
|---|---|---|
|
||||
| PlayerAttackTicker 미부착 시 공격 자동 발동 안 됨 | Play에서 공격 0회 | §4.2-1~4 컴포넌트 Add 필수 |
|
||||
| 기존 Enemy.prefab의 Health.maxHearts Inspector 값이 0 또는 직렬화 부재 | Awake에서 자동 1로 보정 | Health.cs Awake 보정 로직 신뢰 |
|
||||
| Animator `attack` trigger 미존재 시 SetTrigger warning | Console warning 1회, 동작 무영향 | 기존 BT5-Dev 3단계에서 attack trigger + Player-Attack State 추가됨 (Player.controller YAML 편집 완료) |
|
||||
| 적 ATK 1 수치 미설정으로 Player 피해 계산 실질 무효 | Decrement(damage=1)라도 i-frame으로 방어 | EnemyController 기반 피해 전달 로직은 후속 Phase |
|
||||
|
||||
## 5. 리스크 및 기각안
|
||||
|
||||
### 5.1 기각안 (C32 최소 3건 초과 달성 — 5건)
|
||||
|
||||
1. **"PlayerAttack.cs 내부에 타이머 직접 구현" — 기각**
|
||||
- 이벤트 정의와 발화 트리거가 단일 클래스에 혼재 → SRP 위반 (C11 구조 직관성 훼손)
|
||||
- Ticker 분리로 발화 방식 교체 유연성 확보 (예: 무기 종류별 발동 주기, 일시 정지 등)
|
||||
|
||||
2. **"attackInterval을 PlayerController에 통합" — 기각**
|
||||
- PlayerController는 이미 KinematicObject 상속 + Move/Jump/Facing/Animator 관리 비대
|
||||
- 공격 로직은 전투 시스템 영역으로 분리 보전 — Phase 3-B 카드 효과 훅 편입 시 의존성 깔끔
|
||||
|
||||
3. **"Health.maxHP를 제거하고 maxHearts만 유지" — 기각**
|
||||
- 기존 Prefab 직렬화 호환성 (maxHP Inspector 값) 파괴 → 모든 Health 사용 prefab 재설정 필요
|
||||
- HUD·튜닝 도구·스크립트 참조(`health.maxHP`)의 일괄 갱신 비용 과다
|
||||
- **해결**: maxHP 유지 + Awake에서 `maxHearts * 4`로 재산정 (구식 값 자동 보정)
|
||||
|
||||
4. **"Decrement를 `Decrement(int damage=1)` 단일 시그니처로 통합" — 기각**
|
||||
- 기존 호출자(PlayerEnemyCollision 폐기·다른 스크립트) 회귀 리스크
|
||||
- **해결**: `Decrement()` 무인자 유지 + `Decrement(int damage)` 오버로드 신규 추가 (Decrement(1) 위임)
|
||||
|
||||
5. **"EnemyController에 attackDamage 필드 추가 + 충돌 시 Player Decrement(attackDamage)" — 본 Phase 기각(TODO 주석만)**
|
||||
- balance/01 v0.2 수치 테이블 미확정 상태에서 EnemyController 구조 개정은 돌이킴 리스크
|
||||
- **해결**: 본 Phase에서는 TODO 주석만 (적 ATK 테이블 확정 후 별도 Phase)
|
||||
|
||||
### 5.2 식별된 리스크
|
||||
|
||||
| # | 리스크 | 완화책 |
|
||||
|---|---|---|
|
||||
| 1 | Player.prefab에 PlayerAttackTicker가 부착되지 않은 상태로 Play 시 공격 미발동 | PD 수동 작업 §4.2 명시 + EditMode 테스트 11번이 Ticker Script 존재는 검증(prefab 부착은 Unity GUI 필요) |
|
||||
| 2 | balance/01 v0.2 수치 미확정으로 attackInterval·적 ATK 체감 미측정 | `attackInterval` 기본 0.5s는 파일럿 값 — balance-designer v0.2 확정 후 튠 |
|
||||
| 3 | 기존 PlayerAttack 호출자 (`PlayerController.Update`·`PlayerEnemyCollision`)가 이미 삭제됨을 검증 없이 가정 | PlayerController Update에서 Schedule<PlayerAttack> 호출 라인 제거 확인 · PlayerEnemyCollision 파일 부재 확인 (glob 결과 Scripts/Mechanics에 미존재) |
|
||||
| 4 | Health.Decrement(damage) 오버로드가 i-frame 내 호출 시 완전 스킵 (부분 피해 인정 안 함) | 연타 방지 원칙 유지. 향후 "피해 레벨별 i-frame 차등" 필요 시 별도 설계 |
|
||||
| 5 | AttackHitbox damage=1 기본 + Player 공격 1회당 1 쿼터로 적 Health(maxHP=4)의 적을 4회 연속 타격해야 처치 | balance/01 §5 적 HP 테이블 재검토 대상 (기획팀장 v0.2 확정 시 반영) |
|
||||
|
||||
## 6. BT7-Dev 이후 Phase 예정 (범위 외 — 참고)
|
||||
|
||||
**Phase 2** (기획 balance/01 v0.2 확정 후):
|
||||
- EnemyController에 `attackDamage` 필드 추가 + Player 피해 전달 로직
|
||||
- 적 ATK 테이블 연동 (일반 약/중·엘리트·보스)
|
||||
- attackInterval 튠
|
||||
|
||||
**Phase 3** (기획 system/01·content/01 확정 후):
|
||||
- 카드 3분류 (액티브·패시브·각성) 데이터 구조
|
||||
- Player.attackHitbox가 카드 효과 훅 참조
|
||||
- 보물상자·각성 트리거 로직
|
||||
|
||||
**Phase 4** (기획 ux/02 확정 후):
|
||||
- HUD 하트 분할 UI (♥ 1개 = 4 쿼터 시각화)
|
||||
- 카드 슬롯 UI (액티브·패시브 분리)
|
||||
|
||||
## 7. 자기 검증 (C22-6 정신 준수)
|
||||
|
||||
PD 미합의 용어·식별자 자의 신설 없음 자가 검증:
|
||||
|
||||
| 항목 | 검증 |
|
||||
|---|---|
|
||||
| PD 지시 용어 그대로 사용 | "액티브·패시브·각성·하트·쿼터·보물상자·Lv.5" 모두 PD 원문 그대로 코드 주석·본 문서에 인용 |
|
||||
| 신규 클래스명 `PlayerAttackTicker` | PD 미합의 신설. 단 PD 지시 "자동 발동 주기 타이머"의 직관적 구현 기술 명명이며, 코드 내부 구조 결정(C11 범용성·직관성 적용) |
|
||||
| 신규 필드명 `maxHearts`·`QuartersPerHeart`·`Heal`·`IncreaseMaxHearts` | PD 미합의 신설. 단 기존 `maxHP`·`Decrement` 컨벤션 계승한 영문 기술 명명. PD 한글 용어("하트"·"쿼터")의 영문 직역 |
|
||||
| 안건 넘버링 | 본 문서 섹션 번호는 C25-1 1.·1)·A. 준수 |
|
||||
| 선택지 식별자 | 본 Phase 내부 의사결정 "A안·B안" 자의 부여 없음 (PD 결정 요구 없음 — 전적으로 개발 구현) |
|
||||
|
||||
**판정**: C22-6 정신 위반 없음. 신규 식별자는 **구현 세부 수준의 기술 명명**이며, PD 방향·원칙 수준 결정에 영향 없음 (C36 적용 범위 내).
|
||||
|
||||
## 8. 변경 이력
|
||||
|
||||
| 일시 | 변경 | 사유 | 기안 |
|
||||
|---|---|---|---|
|
||||
| 2026-04-24 | v1.0 BT7-Dev Phase 1 — VS 순수형 자동 발동 + 하트 분할 + 테스트 갱신 | PD 지시 2026-04-24 11건 중 개발 영향분 | 개발팀장 |
|
||||
|
||||
## 9. 참조 문서
|
||||
|
||||
- **기획 방향 근거**: `공유/대화로그/EerieVillage/2026-04-24.md` BT7-Plan 7개 엔트리
|
||||
- **선행 구현 문서**: `프로젝트/EerieVillage/개발/04_BT5-Dev_2단계_구현보고.md` v0.2 · `프로젝트/EerieVillage/개발/05_PlayerTestGirl_아틀라스_적용.md`
|
||||
- **Unity 외부 레포 편집**: `D:/NerdNavis/EerieVillage/Assets/Scripts/Gameplay/{PlayerAttack.cs, PlayerAttackTicker.cs(신설)}`·`Assets/Scripts/Mechanics/{Health.cs, PlayerController.cs, AttackHitbox.cs}`·`Assets/Settings/InputSystem_Actions.inputactions`·`Assets/Tests/Editor/PlayerAttackTests.cs`
|
||||
- **C6-1 백업**: `공유/개발팀_백업/EerieVillage/*.bak_20260424_1551.*` (6종)
|
||||
- **PD 지시 로그**: `공유/PD_지시_트래킹/개발팀_PD_지시_로그.md` BT7-Dev 신규 항목
|
||||
- **대화로그**: `공유/대화로그/EerieVillage/2026-04-24.md` (BT7-Dev 착수 엔트리 신설 예정)
|
||||
|
|
@ -2,29 +2,29 @@
|
|||
type: 초기_기획_골격
|
||||
scope: 게임_컨셉
|
||||
author: 기획팀장
|
||||
date: 2026-04-23
|
||||
version: v0.1 (파일럿)
|
||||
date: 2026-04-24
|
||||
version: v0.2 (BT7-Plan 개정)
|
||||
project: EerieVillage (기묘한 고을 : 조선퇴마뎐 / EerieVillage: Joseon Exorcist)
|
||||
phase: Phase 3 A (파일럿 초기 골격)
|
||||
data_source: PD 핵심 게임 룰 9개 (2026-04-23 지시 원문)
|
||||
status: 초기 골격 — Phase 3-B/C에서 narrative-designer·system-designer 상세 확장 예정
|
||||
phase: Phase 3 A (BT7-Plan 개정 반영)
|
||||
data_source: PD 핵심 게임 룰 9개 (2026-04-23) + BT7-Plan PD 확정 방향 11건 (2026-04-24)
|
||||
status: BT7-Plan 개정 반영 — VS 순수형 덱빌딩·액티브/패시브/각성·하트 분할·공격 자동화
|
||||
---
|
||||
|
||||
# 01. 게임 컨셉
|
||||
|
||||
## 1. 정체성 한 줄
|
||||
|
||||
**"한 번의 죽음이 곧 성장의 한 사이클이 되는, 조선 퇴마사의 빠른 횡스크롤 로그라이크."**
|
||||
**"한 번의 죽음이 곧 성장의 한 사이클이 되는, 조선 퇴마사의 Vampire Survivors 순수형 횡스크롤 로그라이크."**
|
||||
|
||||
## 2. 재미의 축 (P30 — "어떤 재미를 강화하는가")
|
||||
|
||||
재미의 축은 **3가지 중 1·2를 핵심, 3을 보조**로 정의한다. 참신함:일관성 = 3:7 원칙 준수.
|
||||
|
||||
1. **육성 롤러코스터의 카타르시스** — 레벨업마다 3장 중 1장 카드 픽으로 빌드가 급격히 성장 → 보스 격파 직전의 전능감 → 사망 1회로 전부 초기화되는 낙차. 짧은 사이클에서 "쌓고·폭발하고·잃는" 감정 곡선이 핵심.
|
||||
2. **액션 플랫포머의 손맛** — 이동·점프·공격의 즉각적 피드백. 로그라이크 특유의 "숫자 빌드" 재미에 갇히지 않고, 횡스크롤 조작으로 카드 효과를 직접 체험·전달하는 물성감.
|
||||
1. **육성 롤러코스터의 카타르시스** — 레벨업마다 액티브·패시브 카드 픽으로 빌드가 급격히 성장 → 각성 발동 시 전능감 절정 → 사망 1회로 런 내 성장 초기화되는 낙차. 짧은 사이클에서 "쌓고·폭발하고·잃는" 감정 곡선이 핵심. **하트 수 증가·각성 진화 2중 성장 축**으로 빌드 감정 곡선을 고도화한다.
|
||||
2. **"보며 즐기는" 액션 플랫포머** — 이동·점프만으로 적을 회피하며, 장착한 액티브 무기가 **자동 발동**하는 장면을 감상하는 재미. VS 원작 계승. 조작 복잡도 최소화(캐주얼 포지션)이되 회피·포지셔닝·보물상자 획득 타이밍 관리가 플레이어 스킬을 형성.
|
||||
3. **(보조) 영속 성장의 위안** — 특성 시스템으로 "완전 무(無)로 돌아가지 않는다"는 안도감. 1·2의 고조·낙차가 절망으로 굳지 않도록 받쳐주는 축.
|
||||
|
||||
**재미 판단 근거**: 라이프 1·레벨 초기화·카드 전손이라는 가혹한 벌칙을 PD님이 코어 룰 7로 확정한 것은 1의 낙차 극대화가 이 게임의 본질임을 의미. 2는 PlatformerMicrogame 템플릿 선택의 필연적 귀결. 3은 1의 가혹함을 상쇄하는 안전장치로 코어 룰 9가 명시한 유일한 영속성.
|
||||
**재미 판단 근거**: 기본 라이프 4 + 젤다 방식 하트 분할(PD 2026-04-24 확정) 구조는 "피격 즉사"의 가혹함을 유지하면서도 카드·성장으로 **최대 하트 수를 늘리는 육성 보상**을 제공하여 재미 축 1을 2중화한다. 공격 버튼 제거(VS 순수형) 결정은 재미 축 2를 "조작의 물성감"에서 "감상·포지셔닝의 물성감"으로 재정의하되, 이동·점프의 즉각 반응은 유지한다. 3은 코어 룰 9가 명시한 유일한 영속성.
|
||||
|
||||
## 3. 타겟 유저
|
||||
|
||||
|
|
@ -43,9 +43,9 @@ status: 초기 골격 — Phase 3-B/C에서 narrative-designer·system-designer
|
|||
## 5. 세일즈 포인트 (4종)
|
||||
|
||||
1. **한 사이클 3~10분의 압축 카타르시스** — 캐주얼 로그라이크 포지션. 모바일 자투리 플레이 친화.
|
||||
2. **"3장 픽 + 조합"이라는 직관적 빌드 구축** — 스킬 카드 상세는 Phase 3-B 확장.
|
||||
3. **단일 라이프·단일 낙차의 긴장감** — 라이프 1 룰이 만드는 고유 플레이 경험.
|
||||
4. **조선·퇴마 세계관 차별화** — 서양식 판타지 레드오션에서 동아시아 로컬 IP로 포지셔닝. 상세 세계관 SOT는 `narrative-designer` 작업(Phase 3-B).
|
||||
2. **"액티브+패시브=각성" 3분류 덱빌딩** — 액티브 무기 자동 발동 + 패시브 강화 + 조건 충족 시 각성 카드 진화라는 VS 원작 계승 구조.
|
||||
3. **하트 분할·각성 진화의 2중 성장 긴장감** — 기본 라이프 4 + 젤다 방식 하트 분할 + 카드·성장으로 최대 하트 수 증가 구조가 만드는 생존·육성 동시 관리 경험.
|
||||
4. **조선·퇴마 세계관 차별화** — 서양식 판타지 레드오션에서 동아시아 로컬 IP로 포지셔닝. 상세 세계관 SOT는 `narrative-designer` 작업(Phase 3-B, 현행 유지).
|
||||
|
||||
## 6. 상세 보류 — Phase 3-B/C 이관
|
||||
|
||||
|
|
@ -56,12 +56,15 @@ status: 초기 골격 — Phase 3-B/C에서 narrative-designer·system-designer
|
|||
|
||||
## 7. 기각안
|
||||
|
||||
1. **"3라이프·레벨 유지" 변형 — 기각.** PD 코어 룰 7(라이프 1·레벨 초기화) 고수. 낙차가 재미 축 1의 정체성이므로 완화 시 게임 성립 불가.
|
||||
2. **"하드코어 로그라이크" 포지션 — 기각.** 룰 1 "캐주얼 로그라이크" 고수. Dead Cells·Hollow Knight 난이도 방향은 타겟 유저 확장 포기 의미.
|
||||
3. **"탑뷰 로그라이크" 변형 — 기각.** 룰 2 횡스크롤 플랫포머 확정. 템플릿(2D PlatformerMicrogame)과 정합.
|
||||
1. **"라이프 1 즉사 완전 고수" 변형 — 기각 (BT7-Plan 번복).** 원안은 라이프 1 고수였으나 PD 2026-04-24 BT7-Plan에서 "기본 라이프 4 + 젤다 방식 하트 분할 + 카드·성장으로 하트 수 증가"로 전환. 낙차 재미는 "하트 1개 구조의 피격 즉사 가능성"으로 유지하되, 육성 성장 축을 최대 하트 수 증가로 2중화. **기각안 유지(번복 기록)**: 원 기각 사유는 PD 지시로 무효화되었으나 설계 역사 보존 목적으로 본 기각안 섹션에 남긴다 (C14-5 히스토리 보존 정신).
|
||||
2. **"하드코어 로그라이크" 포지션 — 기각 (현행 유지).** 룰 1 "캐주얼 로그라이크" 고수. Dead Cells·Hollow Knight 난이도 방향은 타겟 유저 확장 포기 의미.
|
||||
3. **"탑뷰 로그라이크" 변형 — 기각 (현행 유지).** 룰 2 횡스크롤 플랫포머 확정. 템플릿(2D PlatformerMicrogame)과 정합.
|
||||
4. **"수동 공격 유지" 변형 — 기각 (BT7-Plan 신규).** PD 2026-04-24 BT7-Plan에서 "덱빌딩 방식 VS 순수형 — 공격 버튼 제거, 이동·점프만" 확정. 액티브 카드의 자동 발동 체계로 전환. VS 원작 계승 구조에서 조작 복잡도 최소화 + 카드 시너지 감상 재미 극대화.
|
||||
5. **"4티어 레어리티 체계 유지" 변형 — 기각 (BT7-Plan 신규).** PD 2026-04-24 BT7-Plan에서 "액티브+패시브=각성" 3분류 구조로 전환. 기존 T1/T2/T3 티어·Common/Uncommon/Rare/Epic 레어리티 체계 폐기. 상세: `system/01_카드_시스템.md` v0.2.
|
||||
|
||||
## 8. 변경 이력
|
||||
|
||||
| 일시 | 변경 | 사유 | 기안 |
|
||||
|---|---|---|---|
|
||||
| 2026-04-23 | v0.1 파일럿 초기 골격 작성 | PD 지시 BT5 | 기획팀장 |
|
||||
| 2026-04-24 | v0.2 — BT7-Plan 개정 집행 — PD 지시 11건 반영 (덱빌딩 VS 순수형·액티브/패시브/각성·하트 분할·공격 자동화) | 기획팀장 |
|
||||
|
|
|
|||
|
|
@ -2,12 +2,12 @@
|
|||
type: 초기_기획_골격
|
||||
scope: 코어_루프
|
||||
author: 기획팀장
|
||||
date: 2026-04-23
|
||||
version: v0.1 (파일럿)
|
||||
date: 2026-04-24
|
||||
version: v0.2 (BT7-Plan 개정)
|
||||
project: EerieVillage
|
||||
phase: Phase 3 A
|
||||
data_source: PD 핵심 게임 룰 9개 (2026-04-23)
|
||||
status: 초기 골격 — 상세 페이싱·씬 전환은 Phase 3-B
|
||||
data_source: PD 핵심 게임 룰 9개 (2026-04-23) + BT7-Plan PD 확정 방향 11건 (2026-04-24)
|
||||
status: BT7-Plan 개정 반영 — 보물상자 각성 트리거·하트 수 런 내 성장
|
||||
---
|
||||
|
||||
# 02. 코어 루프
|
||||
|
|
@ -27,15 +27,20 @@ status: 초기 골격 — 상세 페이싱·씬 전환은 Phase 3-B
|
|||
│
|
||||
├─ 일반 구간 진행
|
||||
│ │
|
||||
│ ├─ 적 처치 → 경험치 획득
|
||||
│ ├─ 적 처치 → 경험치 획득 (액티브 무기 자동 발동으로 처치)
|
||||
│ │ │
|
||||
│ │ └─ 레벨업 트리거 → [스킬 카드 3픽]
|
||||
│ │ └─ 레벨업 트리거 → [스킬 카드 3픽: 액티브/패시브 2축 드로우]
|
||||
│ │ │
|
||||
│ │ └─ 1장 선택 → 빌드 강화 → 전투 재개
|
||||
│ │
|
||||
│ ├─ 보물상자 획득 → [각성 발동 판정]
|
||||
│ │ │ (액티브 Lv.5 + 각성 필요 패시브 1개 이상 보유 시)
|
||||
│ │ └─ 조건 충족 시 → [각성 카드 발동] (액티브 진화)
|
||||
│ │
|
||||
│ ├─ 아이템 획득 → [장착 or 교체 or 포기] (파츠별 1개)
|
||||
│ │
|
||||
│ └─ 피격 → 라이프 1이므로 즉시 [사망 분기]
|
||||
│ └─ 피격 → 하트 감소 (피해량만큼 쿼터 단위 차감)
|
||||
│ └─ 하트 전소 시 → [사망 분기]
|
||||
│
|
||||
└─ 최종 구간: [보스 전투]
|
||||
│
|
||||
|
|
@ -48,7 +53,8 @@ status: 초기 골격 — 상세 페이싱·씬 전환은 Phase 3-B
|
|||
[사망 분기]
|
||||
│
|
||||
├─ 캐릭터 레벨 → 1 초기화
|
||||
├─ 습득한 스킬 카드 → 전부 소실
|
||||
├─ 습득한 스킬 카드 (액티브·패시브·각성) → 전부 소실
|
||||
├─ 최대 하트 수 → 기본 1개로 복귀 (런 내 증가분 소실)
|
||||
├─ 장착 아이템 → 유지 (코어 룰 8)
|
||||
├─ 특성 → 유지 (코어 룰 9)
|
||||
│
|
||||
|
|
@ -66,20 +72,22 @@ status: 초기 골격 — 상세 페이싱·씬 전환은 Phase 3-B
|
|||
| 자산 | 사망 시 처리 | 근거 |
|
||||
|---|---|---|
|
||||
| **레벨** | 1로 초기화 | 코어 룰 7 |
|
||||
| **스킬 카드** | 전부 소실 | 코어 룰 7 |
|
||||
| **장착 아이템** | 유지 | 코어 룰 8 |
|
||||
| **특성** | 유지 | 코어 룰 9 |
|
||||
| **HP(라이프)** | 1 (기본값이자 최대값) | 코어 룰 7 — 라이프 1 전제 |
|
||||
| **스킬 카드 (액티브·패시브·각성)** | 전부 소실 | 코어 룰 7 + BT7-Plan |
|
||||
| **최대 하트 수** | 기본 1개로 복귀 (런 내 증가분 소실) | BT7-Plan — 하트 성장은 런 내만 유효 |
|
||||
| **장착 아이템 (기본 무기 포함)** | 유지 | 코어 룰 8 |
|
||||
| **특성** | 유지 (영구) | 코어 룰 9 |
|
||||
| **HP(라이프)** | 기본 라이프 4 쿼터 (하트 1개 만땅) | BT7-Plan — 젤다 방식 하트 분할 |
|
||||
| **메타 재화** (Phase 3-B 결정) | — | balance-designer 영역, 보류 |
|
||||
|
||||
## 5. 분기 포인트 (의사결정 감정)
|
||||
|
||||
본 루프의 재미 리듬 형성 지점. Phase 3-B에서 상세 UI/UX 설계:
|
||||
|
||||
1. **레벨업 카드 3픽** — 매 레벨업마다 발생. 육성 방향 결정의 핵심 긴장.
|
||||
2. **아이템 획득 시 교체·포기** — 파츠 1개 제한의 희소성 부담.
|
||||
3. **보스 처치 후 마을 복귀 vs 다음 스테이지** — 안전 귀환(보상 확정) vs 욕심(더 강한 빌드·더 큰 보상) 선택.
|
||||
4. **스테이지 선택 (마을)** — 특성·아이템 보유 상태 기준 도전 난이도 결정.
|
||||
1. **레벨업 카드 3픽 (액티브·패시브 2축 드로우)** — 매 레벨업마다 발생. 육성 방향 결정의 핵심 긴장. 액티브 강화 vs 패시브 강화 vs 각성 조건 만들기 선택.
|
||||
2. **보물상자 발견·획득 타이밍** — 각성 발동 트리거. 조건 충족(액티브 Lv.5 + 필요 패시브 1개 이상) 전 vs 후 획득 가치 차이. "아직 조건 안 찼으니 보물상자 획득 미루기"의 포지셔닝 긴장.
|
||||
3. **아이템 획득 시 교체·포기** — 파츠 1개 제한의 희소성 부담.
|
||||
4. **보스 처치 후 마을 복귀 vs 다음 스테이지** — 안전 귀환(보상 확정) vs 욕심(더 강한 빌드·더 큰 보상) 선택.
|
||||
5. **스테이지 선택 (마을)** — 특성·아이템 보유 상태 기준 도전 난이도 결정.
|
||||
|
||||
## 6. 상세 보류 — Phase 3-B/C
|
||||
|
||||
|
|
@ -90,12 +98,14 @@ status: 초기 골격 — 상세 페이싱·씬 전환은 Phase 3-B
|
|||
|
||||
## 7. 기각안
|
||||
|
||||
1. **"사망 시 체크포인트 부활" 변형 — 기각.** 코어 룰 7 "라이프 1 + 마을 복귀" 고수. 체크포인트는 낙차를 무력화하여 재미 축 1 성립 불가.
|
||||
1. **"사망 시 체크포인트 부활" 변형 — 기각.** 코어 룰 7 "마을 복귀" 고수. 체크포인트는 낙차를 무력화하여 재미 축 1 성립 불가.
|
||||
2. **"보스 선택지 없이 자동 다음 스테이지 진행" — 기각.** 코어 룰 5 "복귀 or 다음" 고수. 욕심·안전 분기 긴장이 루프의 핵심 의사결정.
|
||||
3. **"던전 중간 세이브" — 기각.** 캐주얼 로그라이크 포지션과 상충. 한 런을 단일 세션으로 종결하는 리듬 유지.
|
||||
4. **"최대 하트 수 영구 유지 (메타 성장)" — 기각 (BT7-Plan 신규).** PD 2026-04-24 BT7-Plan에서 "카드·성장으로 최대 하트 수 증가 가능"을 **런 내 성장**으로 한정 확정. 사망 시 기본 1개로 복귀하여 매 런의 긴장 유지. 영구 유지는 재미 축 1의 낙차를 무력화. 영구 성장은 특성 시스템(코어 룰 9)이 전담.
|
||||
|
||||
## 8. 변경 이력
|
||||
|
||||
| 일시 | 변경 | 사유 | 기안 |
|
||||
|---|---|---|---|
|
||||
| 2026-04-23 | v0.1 파일럿 초기 골격 | PD 지시 BT5 | 기획팀장 |
|
||||
| 2026-04-24 | v0.2 — BT7-Plan 개정 집행 — PD 지시 11건 반영 (보물상자 각성 트리거·하트 수 런 내 성장·액티브/패시브 2축 드로우) | 기획팀장 |
|
||||
|
|
|
|||
|
|
@ -2,12 +2,12 @@
|
|||
type: 초기_기획_골격
|
||||
scope: 전투_기본_스펙
|
||||
author: 기획팀장
|
||||
date: 2026-04-23
|
||||
version: v0.1 (파일럿)
|
||||
date: 2026-04-24
|
||||
version: v0.2 (BT7-Plan 개정)
|
||||
project: EerieVillage
|
||||
phase: Phase 3 A
|
||||
data_source: PD 핵심 게임 룰 2·7 (2026-04-23) + Unity 6000.3.13f1 LTS 2D PlatformerMicrogame
|
||||
status: 초기 골격 — 수치 실측·모바일 터치 스킴은 Phase 3-B (balance-designer·ux-designer)
|
||||
data_source: PD 핵심 게임 룰 2·7 (2026-04-23) + BT7-Plan PD 확정 방향 11건 (2026-04-24) + Unity 6000.3.13f1 LTS 2D PlatformerMicrogame
|
||||
status: BT7-Plan 개정 반영 — VS 순수형 (공격 버튼 제거)·하트 분할·액티브 자동 발동
|
||||
---
|
||||
|
||||
# 04. 전투 기본 스펙
|
||||
|
|
@ -15,37 +15,64 @@ status: 초기 골격 — 수치 실측·모바일 터치 스킴은 Phase 3-B (b
|
|||
## 1. 재미 축 연결
|
||||
|
||||
본 스펙이 강화하는 재미:
|
||||
- **축 2 (액션 플랫포머 손맛)** — 이동·점프·공격의 즉각 반응이 모든 카드·특성 효과를 체감시키는 기반
|
||||
- **축 1 낙차 강화** — 라이프 1·피격 즉사가 "한 번의 실수"에 무게를 실어 긴장 유지
|
||||
- **축 2 ("보며 즐기는" 액션 플랫포머)** — 이동·점프의 즉각 반응 + 장착 액티브 무기의 자동 발동 감상. VS 원작 계승. 조작 복잡도 최소화이되 회피·포지셔닝·보물상자 획득 타이밍 관리가 플레이어 스킬.
|
||||
- **축 1 낙차·성장 2중 축** — 하트 1개 구조에서 피격 즉사 가능성(긴장 유지) + 카드·성장으로 최대 하트 수 증가(육성 보상). 두 축이 런 내 동시에 작동.
|
||||
|
||||
## 2. 기본 액션 (3종)
|
||||
## 2. 기본 액션 (2종)
|
||||
|
||||
| 액션 | PC 입력 (원본 참조) | 모바일 입력 (Phase 3-B 확정 예정) |
|
||||
|---|---|---|
|
||||
| **이동** | WASD / 방향키 | 화면 좌측 가상 스틱 |
|
||||
| **점프** | Space | 화면 우측 점프 버튼 |
|
||||
| **공격** | 마우스 좌클릭 | 화면 우측 공격 버튼 |
|
||||
|
||||
모바일 터치 스킴 상세(버튼 배치·Safe Area·드래그 감도)는 **ux-designer** 영역 (Phase 3-B). BT.Framework 후보(UITouchHandler·BackKeyDispatcher·SafeAreaBorder)와 연결.
|
||||
**공격은 플레이어 수동 입력이 아닌 장착 액티브 카드의 자동 발동**으로 처리 (§5 참조). BT7-Plan PD 확정 방향 2 (VS 순수형).
|
||||
|
||||
모바일 터치 스킴 상세(버튼 배치·Safe Area·드래그 감도)는 **ux-designer** 영역 (`ux/01_모바일_터치_UX.md` v0.2). BT.Framework 후보(UITouchHandler·BackKeyDispatcher·SafeAreaBorder)와 연결.
|
||||
|
||||
## 3. 라이프·피격 판정
|
||||
|
||||
### 3-1. 핵심 규칙 (코어 룰 7)
|
||||
### 3-1. 핵심 규칙 — 기본 라이프 4 + 젤다 방식 하트 분할 (BT7-Plan PD 확정 방향 7)
|
||||
|
||||
- **기본 라이프 1**. HP 최대값 = 1
|
||||
- **피격 1회 = 사망** → 사망 분기 발동 (02_코어_루프 §4)
|
||||
- **힐·회복 수단**: Phase 3-B 결정 (라이프 1 전제에서 "일시적 실드·회피 기회"로 대체 가능 — balance-designer 판단)
|
||||
**젤다의 전설 BotW 방식 하트 분할 구조**를 계승한다.
|
||||
|
||||
### 3-2. 무적 시간 (i-frame) — 설계 방향
|
||||
| 요소 | 값·규칙 |
|
||||
|---|---|
|
||||
| **기본 라이프 (최소 단위 HP)** | 4 쿼터 (1 하트 = 4 HP) |
|
||||
| **하트 아이콘 표기** | ♥ (풀 하트 = 4/4 쿼터) |
|
||||
| **시작 시 보유 하트 수** | 기본 1개 (최대 HP = 4) |
|
||||
| **피해 1** | 1 쿼터 감소 (3/4 하트) |
|
||||
| **피해 2** | 반 하트 감소 (2/4 하트) |
|
||||
| **피해 3** | 3 쿼터 감소 (1/4 하트) |
|
||||
| **피해 4** | 하트 1개 완전 소멸 |
|
||||
| **최대 하트 수 증가** | 카드·성장으로 런 내 추가 획득 가능 (예: 하트 2개 = 최대 HP 8) |
|
||||
| **사망 조건** | 모든 하트 쿼터 0 도달 시 사망 분기 (02_코어_루프 §4) |
|
||||
|
||||
- **피격 직후 무적 시간 N ms**: 라이프 1이지만 **연속 히트 인정 금지**. N 값은 Phase 3-B 실측 (후보: 400~800ms 범위)
|
||||
- **대시·회피 동작 중 무적**: 회피 메커니즘 도입 여부 + 프레임은 Phase 3-B
|
||||
### 3-2. 하트 분할 시각화 5단계
|
||||
|
||||
각 하트 아이콘은 다음 5단계 시각 상태를 가진다:
|
||||
|
||||
| 상태 | 남은 쿼터 | 시각 표현 |
|
||||
|---|---|---|
|
||||
| 풀 | 4/4 | ♥ (완전 채워짐) |
|
||||
| 3/4 | 3/4 | ♥ (3/4 채워짐, 우하단 1/4 비움) |
|
||||
| 반 | 2/4 | ♥ (절반 채워짐, 좌측만) |
|
||||
| 1/4 | 1/4 | ♥ (1/4만 채워짐, 좌상단) |
|
||||
| 빈 | 0/4 | ♡ (외곽선만) |
|
||||
|
||||
상세 UI 스프라이트 분할은 ux-designer `ux/02_HUD_설계.md` v0.2 이관.
|
||||
|
||||
### 3-3. 무적 시간 (i-frame) — 0.6s (근거 재검토 완료)
|
||||
|
||||
- **피격 직후 무적 시간 0.6초**: 하트 다단 구조 하에서도 연속 히트 방지 기준 유효. 적 ATK 2 연타 시 "반 하트 감소(2 쿼터)"로 보호됨 → i-frame 없으면 단일 프레임에 하트 1개 전소 가능
|
||||
- **재검토 결과**: 적 ATK가 1~4 범위로 확장되므로 i-frame 0.6s는 **여전히 유효**. `balance/01_전투_수치.md` v0.2 §4 산출 근거 갱신
|
||||
- **대시·회피 동작 중 무적**: 회피 메커니즘 도입 여부는 Phase 3-C
|
||||
- **무적 시각화**: 깜박임·외곽선 등 UX 피드백 의무 (ux-designer)
|
||||
|
||||
### 3-3. 재미 균형 (P30 판단)
|
||||
### 3-4. 재미 균형 (P30 판단)
|
||||
|
||||
- 라이프 1은 "가혹함"이지만 **회피 가능한 패턴 설계**가 전제되어야 액션 재미 성립
|
||||
- "피격 = 사망"이 "랜덤 사망"으로 느껴지면 재미 축 2 붕괴 → **가독 높은 적 공격 패턴** 의무 (level-designer·content-designer)
|
||||
- 하트 1개 + 젤다 분할 구조는 "가혹함(피격 즉사 가능성)"과 "여유(피해량에 따라 살아남음)"의 혼합
|
||||
- 최대 하트 수 증가는 카드 픽 선택의 핵심 성장 축 — "공격력 강화 vs 생존력 강화"의 고전적 육성 트레이드오프
|
||||
- **가독 높은 적 공격 패턴** 의무 (level-designer·content-designer) — 피해량 표기가 명확해야 분할 구조 체감
|
||||
|
||||
## 4. 점프·이동 (PlatformerMicrogame 기반)
|
||||
|
||||
|
|
@ -54,47 +81,82 @@ status: 초기 골격 — 수치 실측·모바일 터치 스킴은 Phase 3-B (b
|
|||
Unity 2D PlatformerMicrogame 기본 점프·이동 구조 그대로 계승 (변경 유발 시 개발팀 C11 판단 동반).
|
||||
|
||||
- 중력 · 점프 높이 · 이동 속도: 템플릿 기본값 → Phase 3-B에서 EerieVillage 튠 (balance-designer)
|
||||
- **2단 점프 여부**: Phase 3-B 결정 (액션성 vs 캐주얼성 트레이드오프 — PD 검토 대상)
|
||||
- **2단 점프 여부**: Phase 3-B 결정 (액션성 vs 캐주얼성 트레이드오프)
|
||||
|
||||
### 4-2. 횡스크롤 카메라
|
||||
|
||||
- 기본 follow-cam. 보스룸은 고정 카메라 전환 (연출)
|
||||
- 화면 비율·Safe Area: BT.Framework `SafeAreaBorder` 활용 (P29 계승)
|
||||
|
||||
## 5. 공격 (근거리 1종 시작)
|
||||
## 5. 공격 — 장착 액티브 자동 발동 (VS 순수형)
|
||||
|
||||
### 5-1. 기본 공격
|
||||
### 5-1. 수동 공격 없음
|
||||
|
||||
- **근거리 공격** 1종으로 파일럿 시작 (마우스 좌클릭 / 터치 버튼)
|
||||
- **쿨타임·대미지·판정 박스**: 템플릿 기본값 → Phase 3-B 튠
|
||||
**플레이어 수동 공격 입력은 존재하지 않는다** (BT7-Plan PD 확정 방향 2). 공격 버튼·공격 키 입력 없음.
|
||||
|
||||
### 5-2. 카드 효과에 의한 확장
|
||||
### 5-2. 기본 시작 무기 1종 (퇴마사 고유)
|
||||
|
||||
- 원거리·AoE·특수 공격은 **스킬 카드 효과로 획득**하는 방향 (Phase 3-B system-designer)
|
||||
- 기본 공격에 카드 효과가 **합성**되어 빌드 다양성 형성 (03_진행_시스템 §3-2 조합 개념과 연결)
|
||||
VS 원작의 "캐릭터 고유 무기 1종 지급" 패턴 계승. EerieVillage 파일럿은 **퇴마사 고유 기본 무기 1종**으로 시작한다.
|
||||
|
||||
- **기본 무기 개요**: 자동 발동형 근거리 or 전방 판정. 상세 무기명·판정 박스·발동 주기는 `content/01_카드_풀.md` v0.2 액티브 카테고리에서 확장
|
||||
- **코어 룰 8 "장착 유지"**: 기본 무기는 사망 시에도 유지 (초기 무기 자산)
|
||||
|
||||
### 5-3. 액티브 카드 자동 발동 체계
|
||||
|
||||
장착한 액티브 카드는 각자 고유 발동 주기·판정 박스·대미지 수치를 가진다. 플레이어 입력 없이 자동 발동.
|
||||
|
||||
- **발동 주기**: 카드별 고유 쿨다운 (content·balance-designer 이관)
|
||||
- **판정 박스**: 카드별 고유 범위 (전방·원형·직선·부채꼴 등)
|
||||
- **스택 업그레이드**: 동일 액티브 재픽 시 Lv.1 → Lv.5까지 강화 (규칙 상세: `system/01_카드_시스템.md` v0.2 규칙 4)
|
||||
- **각성 발동**: 액티브 Lv.5 + 각성에 필요한 특정 패시브 1개 이상 보유 + 보물상자 획득 시 각성 카드 발동 (§5-4)
|
||||
|
||||
### 5-4. 각성 발동 조건 (VS 원작 동일)
|
||||
|
||||
BT7-Plan PD 확정 방향 5 — VS 원작 각성 조건 동일 계승.
|
||||
|
||||
```
|
||||
각성 발동 조건:
|
||||
1. 해당 액티브 카드가 Lv.5 도달
|
||||
2. 각성에 필요한 특정 패시브 카드 1개 이상 보유
|
||||
3. 보물상자 획득
|
||||
→ 세 조건 동시 충족 시 각성 카드 자동 발동 (액티브가 각성 형태로 진화)
|
||||
```
|
||||
|
||||
각 각성 카드마다 **필요 액티브 + 필요 패시브 쌍**이 명시된다 (`content/01_카드_풀.md` v0.2 §3 각성 카테고리).
|
||||
|
||||
### 5-5. 카드 효과에 의한 기본 무기 강화
|
||||
|
||||
기본 시작 무기도 패시브 카드(공격력·공격 속도·판정 범위 증가 등)의 영향을 받는다. 기본 무기 자체를 각성 조건에 포함시킬지는 `content/01_카드_풀.md` v0.2 결정.
|
||||
|
||||
## 6. 피격·사망 연출
|
||||
|
||||
- 피격 시 시각·청각·진동(모바일) 3종 피드백 의무 (ux-designer)
|
||||
- **피해량별 피드백 차등**: 피해 1 = 짧은 진동, 피해 4 = 강한 진동 + 화면 흔들림 (체감 구분)
|
||||
- 사망 연출은 **1~2초 이내 짧게** 처리 (캐주얼 로그라이크 페이싱 유지)
|
||||
- 사망 직후 마을 복귀 전환: 로딩 느낌 없이 연속감 있게 (Phase 3-B UX)
|
||||
|
||||
## 7. 상세 보류 — Phase 3-B/C
|
||||
|
||||
- **구체 수치** (이동 속도·점프 높이·공격 쿨타임·대미지·무적 시간): balance-designer + 개발팀 엔진 실측 (Phase 3-B)
|
||||
- **구체 수치** (이동 속도·점프 높이·i-frame 재검토 미세 조정·액티브 발동 주기·대미지): balance-designer + 개발팀 엔진 실측 (Phase 3-B)
|
||||
- **최대 하트 수 증가 상한**: balance-designer 결정. 카드 스택 제한과 동일 철학으로 하드캡 필요 (초기 권고 3~5개)
|
||||
- **액티브 자동 발동 주기 기본 수치**: balance-designer 이관 (`balance/01_전투_수치.md` v0.2)
|
||||
- **적 AI 기본 패턴**: level-designer + content-designer (Phase 3-B)
|
||||
- **보스 공격 패턴 설계 규칙**: level-designer (Phase 3-B 05 문서 연계)
|
||||
- **회피·블록 메커니즘 도입 여부**: PD 결정 대상 (Phase 3-B)
|
||||
- **회피·블록 메커니즘 도입 여부**: PD 결정 대상 (Phase 3-C)
|
||||
- **모바일 터치 UX 상세**: ux-designer + BT.Framework 통합 (Phase 3-B)
|
||||
- **기본 무기 세부 스펙**: content-designer 이관 (`content/01_카드_풀.md` v0.2)
|
||||
|
||||
## 8. 기각안
|
||||
|
||||
1. **"HP 막대 도입" 변형 — 기각.** 코어 룰 7 "라이프 1" 고수. HP 막대는 축 1 낙차 무력화.
|
||||
2. **"공격 버튼 복수 (약공·강공)" — 기각.** 파일럿은 근거리 1종으로 시작. 복잡도는 카드 효과 계층에서 담당하여 입력 복잡도 최소화(캐주얼 포지션). 확장 필요 시 Phase 3-C 재검토.
|
||||
3. **"무적 시간 0" — 기각.** 라이프 1 + 무적 0은 체감 난이도 폭주 → 축 2 액션 재미 붕괴 위험. 무적 시간 도입은 비타협.
|
||||
1. **"HP 막대 도입" 변형 — 기각 (BT7-Plan 번복).** 원 기각 사유는 "라이프 1 고수, HP 막대는 축 1 낙차 무력화"였으나, PD 2026-04-24 BT7-Plan에서 "기본 라이프 4 + 젤다 방식 하트 분할"로 전환. HP 막대 대신 **하트 분할 시각화**로 전환 — 이는 "HP 막대의 수치 가독성" + "라이프 카운트의 이산 시각 낙차" 양자를 모두 얻는 구조. **기각안 유지(번복 기록)**: 원 기각 사유는 PD 지시로 무효화되었으나 설계 역사 보존 목적으로 본 기각안 섹션에 남긴다 (C14-5 히스토리 보존 정신).
|
||||
2. **"공격 버튼 복수 (약공·강공)" — 기각 (BT7-Plan 의미 변화).** 원 기각은 "파일럿 근거리 1종 시작"이었으나, BT7-Plan에서 **공격 버튼 자체 폐기 (VS 순수형)**로 의미 변화. 공격 복잡도는 "액티브 카드 다양성"으로 담당.
|
||||
3. **"무적 시간 0" — 기각 (현행 유지).** 하트 다단 구조 하에서도 연속 히트 1 프레임에 하트 1개 전소 위험. 무적 시간 도입은 비타협. 0.6s 유지.
|
||||
4. **"피격 시 랜덤 피해량 부여" — 기각 (BT7-Plan 신규).** 젤다 방식 하트 분할의 장점은 "적 ATK 수치의 시각적 명확성"(ATK 2 = 반 하트). 랜덤 피해량은 체감 구분 파괴. 적 ATK는 고정 수치로 설계.
|
||||
5. **"하트 완전 폐기 후 HP 수치만 표기" — 기각 (BT7-Plan 신규).** 하트 분할 시각화의 재미 핵심은 "수치가 아닌 형태 인지"(젤다 BotW의 고전 강점). 수치 표기는 부가 정보로만 허용 (HUD 설계 참조).
|
||||
|
||||
## 9. 변경 이력
|
||||
|
||||
| 일시 | 변경 | 사유 | 기안 |
|
||||
|---|---|---|---|
|
||||
| 2026-04-23 | v0.1 파일럿 초기 골격 | PD 지시 BT5 | 기획팀장 |
|
||||
| 2026-04-24 | v0.2 — BT7-Plan 개정 집행 — PD 지시 11건 반영 (VS 순수형·하트 분할·액티브 자동 발동) | 기획팀장 |
|
||||
|
|
|
|||
|
|
@ -2,24 +2,25 @@
|
|||
type: 밸런스_수치_초안
|
||||
scope: 전투_기본_수치
|
||||
author: 밸런스기획자
|
||||
date: 2026-04-22
|
||||
version: v0.1 (Phase 3-B 초안)
|
||||
date: 2026-04-24
|
||||
version: v0.2 (BT7-Plan 개정)
|
||||
project: EerieVillage
|
||||
phase: Phase 3-B
|
||||
data_source: 04_전투_기본_스펙.md v0.1 + Unity 2D PlatformerMicrogame 기본값 + 코어 룰 7 (라이프 1)
|
||||
status: 초안 — 개발팀 Unity 실측 검증 필수 (§10 명시)
|
||||
data_source: 04_전투_기본_스펙.md v0.2 · system/01_카드_시스템.md v0.2 · content/01_카드_풀.md v0.2 · BT7-Plan PD 확정 방향 11건 · Unity 2D PlatformerMicrogame 기본값
|
||||
status: 초안 — 개발팀 Unity 실측 검증 필수 (§10 명시) · 수치는 튜닝 대상
|
||||
---
|
||||
|
||||
# 01. 전투 기본 수치
|
||||
|
||||
## 1. 설계 전제 (P30 재미 정의 선행)
|
||||
|
||||
강화 대상 재미: **축 2 액션 플랫포머 손맛** + **축 1 낙차(라이프 1)**.
|
||||
- 목표 TTK(Time To Kill) 플레이어: **연속 피격 불가 보장** — 라이프 1이므로 TTK 개념 대신 "회피 가능한 타이밍 윈도우 확보"가 핵심.
|
||||
- 목표 TTK 일반 적: **공격 2~4회 타격으로 처치** (한 방 킬은 박진감, 여러 방은 패턴 학습 보조).
|
||||
강화 대상 재미: **축 2 "보며 즐기는" 액션 플랫포머** + **축 1 낙차·성장 2중 축**.
|
||||
|
||||
- 목표 TTK(Time To Kill) 플레이어: **연속 피격 방지 i-frame 보장** — 하트 분할 구조에서 "피해량 차등 인지 + 회피 가능한 타이밍 윈도우 확보"가 핵심.
|
||||
- 목표 TTK 일반 적: **자동 발동 액티브 DPS 기준 공격 2~4회 타격으로 처치** (VS 원작 페이싱 계승).
|
||||
- 보스 TTK 목표: **50~90초** (캐주얼 5~10분 런의 15~20% 시간). 빌드 없는 초반 약 75초, 카드 2~3장 빌드 후 약 50초.
|
||||
|
||||
모든 수치는 Unity `Rigidbody2D` + `BoxCollider2D` 기반. `PlatformerMicrogame` 기본값에서 파생하여 EerieVillage 튠 제안.
|
||||
모든 수치는 Unity `Rigidbody2D` + `BoxCollider2D` 기반. `PlatformerMicrogame` 기본값에서 파생하여 EerieVillage 튠 제안. **수치는 초안·튜닝 대상**이며 개발팀 실측 후 재조정 필수.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -33,129 +34,169 @@ status: 초안 — 개발팀 Unity 실측 검증 필수 (§10 명시)
|
|||
공중 수평 제어 = AirControl × MoveSpeed
|
||||
```
|
||||
|
||||
### 수치 테이블
|
||||
### 수치 테이블 (초안·튜닝 대상)
|
||||
|
||||
| 파라미터 | 제안 값 | Unity 단위 | 근거 |
|
||||
|---|---|---|---|
|
||||
| **MoveSpeed** | 6.0 | m/s | PlatformerMicrogame 기본 5.0 대비 +20%. 모바일 가상 스틱의 좁은 조작 반경을 보정하여 반응성 향상. 과하면 플랫폼 오버슈<EBB284> → 7.0이 상한 |
|
||||
| **JumpHeight** | 3.5 | m | 화면 대비 플레이어 키를 1.0 기준 시 3.5배 이상은 이동감 충분. 2단 점프 미도입 전제. 2단 점프 도입 시 2.5로 하향 |
|
||||
| **Gravity Scale** | 3.5 | (배율) | PlatformerMicrogame 기본 3.0 대비 +0.5. 착지 후 "묵직한 손맛" 강화. 과하면 점프 정점이 짧아 조작 스트레스 유발 → 4.0이 상한 |
|
||||
| **Max Fall Speed** | -20.0 | m/s (음수) | 클리핑 방지 및 낙하 직관성. 무제한 시 빠른 하강으로 플랫폼 착지 난이도 폭등 |
|
||||
| **Air Control** | 0.7 | (MoveSpeed 배율) | 공중 제어 70%. 조선퇴마 세계관 "무게감" 유지 + 공중 회피 가능성 확보. 1.0은 아이스 미끄럼 없는 완전 제어 — 너무 가볍다 |
|
||||
| **Coyote Time** | 0.12 s | 초 | 절벽 끝에서 점프 입력 허용 윈도우. 모바일 터치 딜레이 75ms 상정 시 0.10~0.15가 적정. **0.12는 딜레이 보정 주축** |
|
||||
| **Jump Buffer** | 0.15 s | 초 | 착지 직전 점프 입력 선행 허용. 모바일 터치에서 타이밍 맞추기 어려운 문제 해결. 0.10 미만은 효과 미약, 0.20 이상은 의도치 않은 점프 |
|
||||
| **Edge Push** | 0.3 m | m | 플랫폼 모서리 0.3m 이내 도달 시 캐릭터를 플랫폼 위로 자동 보정. 모바일에서 엣지 미스 착지 빈도 감소. **근거**: 터치 정밀도 ±5mm → Unity 픽셀 기준 약 0.3m |
|
||||
| **MoveSpeed** | 6.0 | m/s | PlatformerMicrogame 기본 5.0 대비 +20%. 모바일 가상 스틱 반응성 보정. 공격 버튼 제거로 이동이 회피의 유일 수단 → 약간 상향 |
|
||||
| **JumpHeight** | 3.5 | m | 화면 대비 플레이어 키 1.0 기준 3.5배 |
|
||||
| **Gravity Scale** | 3.5 | (배율) | PlatformerMicrogame 3.0 +0.5. 착지 손맛 강화 |
|
||||
| **Max Fall Speed** | -20.0 | m/s (음수) | 클리핑 방지 |
|
||||
| **Air Control** | 0.7 | (MoveSpeed 배율) | 공중 제어 70% |
|
||||
| **Coyote Time** | 0.12 s | 초 | 절벽 끝 점프 입력 허용 윈도우 |
|
||||
| **Jump Buffer** | 0.15 s | 초 | 착지 직전 점프 입력 선행 허용 |
|
||||
| **Edge Push** | 0.3 m | m | 플랫폼 모서리 보정 |
|
||||
|
||||
### 성장 곡선 — 이동·점프는 고정
|
||||
|
||||
이동·점프는 게임 내 **성장 없이 고정**. 카드·특성으로 MoveSpeed 버프 스택 시 최대 150% 상한 (9.0 m/s)을 하드캡으로 설정. 상한 초과 시 플랫폼 충돌 연산 오류 위험.
|
||||
이동·점프는 게임 내 **성장 없이 고정**. 카드·특성으로 MoveSpeed 버프 스택 시 최대 150% 상한 (9.0 m/s)을 하드캡으로 설정. P11(질풍보)·P12(도약강화) 패시브 기여분 포함.
|
||||
|
||||
---
|
||||
|
||||
## 3. 공격 수치
|
||||
## 3. 공격 수치 — 자동 발동 액티브 무기 기본 수치 (BT7-Plan 재작성)
|
||||
|
||||
### 설계 전제 — 재미 정의
|
||||
### 설계 전제 — 재미 정의 (VS 순수형 전환)
|
||||
|
||||
"공격 1회의 손맛" = 타격 직후 히트스탑(2~3프레임)이 있어야 타격감 실재. 히트스탑 없으면 캐주얼 플레이어가 "맞은 건지 모른다" 불만.
|
||||
**플레이어 수동 공격 없음** (BT7-Plan 확정 방향 2). 장착한 액티브 카드가 고유 주기·판정·대미지로 자동 발동한다. 손맛은 "타격 순간의 히트스탑·이펙트·사운드"로 제공되며, 플레이어 조작은 "어떤 액티브를 언제 발동할 타이밍에 적 근처·멀리 위치할 것인가"의 포지셔닝 스킬로 전환.
|
||||
|
||||
### 수치 테이블
|
||||
### 자동 발동 액티브 무기 기본 수치 (초안·튜닝 대상)
|
||||
|
||||
카드별 고유 수치는 `content/01_카드_풀.md` v0.2 개별 카드에 명시 예정. 본 섹션은 **기본 파라미터 가이드**.
|
||||
|
||||
| 파라미터 | 제안 값 | 단위 | 근거 |
|
||||
|---|---|---|---|
|
||||
| **BaseDamage** (일반 공격) | 20 | HP | 일반 적 HP 60 기준 3타 킬. 2타 킬(40대미지)은 너무 단순, 4타(15대미지)는 단조. 3타가 "리듬 있는 교전" 최소 단위 |
|
||||
| **AttackRange** | 1.2 m | m (BoxCollider 반경) | 플레이어 캐릭터 가로 0.6m 기준 전방 1.2m. 화면 폭 대비 약 10%. 과하면 보스 패턴 무의미화 |
|
||||
| **AttackCooldown** | 0.4 s | 초 | DPS = 20 / 0.4 = 50 DPS. 일반 적(HP 60) TTK ≈ 1.2초. 캐주얼 로그라이크 교전 리듬에서 0.3초 미만은 스팸 유도, 0.6초 이상은 답답함 |
|
||||
| **HitStop** | 3 프레임 | frames (60fps 기준) | 50ms. 히트스탑 2~5프레임이 "타격감 골든 존" (액션 게임 산업 경험치). 너무 길면 입력 딜레이처럼 느껴짐 |
|
||||
| **AttackBoxOffset** | (0.6, 0) | Vector2 m | 플레이어 중심에서 전방 0.6m 오프셋. 캐릭터 밖 1.2m 범위에서 시작 |
|
||||
| **KnockbackForce** | 3.0 m/s | m/s (적 기준) | 적 넉백. 너무 강하면 적이 벽에 끼임. 3.0은 교전 거리 유지 + 연속 피격 방지 |
|
||||
| **BaseCooldown (액티브 기본 쿨다운)** | 1.5 s | 초 | VS 원작 초반 무기 쿨다운 참조. 패시브(P06 연사술)로 단축 가능. 0.5s 미만은 이펙트 중첩 혼잡, 3.0s 초과는 답답함 |
|
||||
| **BaseDamage (액티브 기본 대미지)** | 10 | HP | 일반 적 HP 40 기준 4타 킬. VS 원작 페이싱 참조 |
|
||||
| **AttackBoxSize (판정 박스 기본 크기)** | 1.5 × 1.0 m | Vector2 | 자동 발동이므로 수동 공격 대비 관대한 판정. 패시브(P07 광역확장)로 확장 가능 |
|
||||
| **HitStop** | 3 프레임 | frames (60fps 기준) | 50ms. 자동 발동도 타격감 체감 필수 |
|
||||
| **KnockbackForce** | 3.0 m/s | m/s | 적 넉백 |
|
||||
|
||||
### 대미지 공식
|
||||
### 대미지 공식 (전투 핵심)
|
||||
|
||||
```
|
||||
FinalDamage = BaseDamage × CardMultiplier × CritMultiplier
|
||||
CardMultiplier: 카드 스택에 따라 1.0~2.5 범위 (Phase 3-C 카드 설계)
|
||||
CritMultiplier: 기본 1.0. 크리티컬 미도입 (Phase 3-C 결정 보류)
|
||||
// 플레이어 액티브 → 적
|
||||
EnemyHPResult = EnemyHP - (ActiveBaseDamage × CardMultiplier × StackLevelFactor × AttributePassiveBonus)
|
||||
|
||||
// 파라미터 정의:
|
||||
// ActiveBaseDamage = 각 액티브 카드 고유 기본 대미지
|
||||
// CardMultiplier = 해당 카드 패시브 시너지 배율 (1.0~2.5 범위, Phase 3-C 튜닝)
|
||||
// StackLevelFactor = Lv.1 = 1.0 / Lv.2 = 1.2 / Lv.3 = 1.4 / Lv.4 = 1.6 / Lv.5 = 2.0 (초안)
|
||||
// AttributePassiveBonus = P02~P05 속성 강화 패시브 보유 시 해당 속성 배율 (1.0 기본, 1.5 풀 스택)
|
||||
|
||||
// 각성 발동 시:
|
||||
EnemyHPResult = EnemyHP - (AwakeningBaseDamage × CardMultiplier × AttributePassiveBonus)
|
||||
// AwakeningBaseDamage = 각성 카드 고유 기본 대미지 (Lv.5 액티브 대비 2~3배)
|
||||
|
||||
// 적 → 플레이어
|
||||
PlayerHP -= EnemyATK (쿼터 단위 차감, i-frame 내 피격 무효)
|
||||
// 최대 하트 수 × 4 쿼터가 총 HP
|
||||
// 예: 하트 2개 보유 시 최대 HP = 8 쿼터
|
||||
```
|
||||
|
||||
단순성이 설계 의도. 방어 수치(DEF) 미도입 — 패시브 `[방어]` 카드의 피해 감소 %가 역할 대체 (P17 부적방패 등).
|
||||
|
||||
---
|
||||
|
||||
## 4. 무적 시간 (i-frame) — 라이프 1 핵심 보호 메커니즘
|
||||
## 4. 무적 시간 (i-frame) — 하트 분할 구조 핵심 보호 메커니즘
|
||||
|
||||
### 설계 전제 — 재미 정의 (가장 중요)
|
||||
### 설계 전제 — 재미 정의 (BT7-Plan 재검토 결과)
|
||||
|
||||
라이프 1 + i-frame 0 = "거의 모든 전투에서 사망" → **축 2 액션 재미 붕괴**. i-frame은 "회피 숙련도가 생존을 결정"하는 구조의 기반. "적을 어떻게 피하느냐"가 플레이어 스킬의 전부.
|
||||
**하트 분할 구조 하에서도 i-frame 0.6s는 유효**. 재검토 근거:
|
||||
|
||||
i-frame이 너무 짧으면: 다단 히트 공격(적의 연속 스윙) 1회에 즉사 — 캐주얼 포지션 위배.
|
||||
i-frame이 너무 길면: 적 공격이 무의미화, 긴장감 소실 — 축 1 낙차 무력화.
|
||||
- 적 ATK 1~4 범위 (§5) 기준, i-frame 없으면 ATK 4 적의 연타 시 단일 프레임에 하트 1개 전소 가능
|
||||
- 0.6s는 "ATK 2 연타 시 반 하트 감소 → 회피 이동 가능" 타이밍 확보
|
||||
- **공격 버튼 제거로 플레이어 조작 부담 경감** → 회피·포지셔닝에 집중 → i-frame 0.6s 유지 타당
|
||||
|
||||
**목표 체험**: "피격 직후 0.6초 동안 무적이다 — 이 시간 안에 적에게서 벗어나야 한다" 플레이어 인식 형성.
|
||||
|
||||
### 수치 테이블
|
||||
### 수치 테이블 (초안·튜닝 대상)
|
||||
|
||||
| 파라미터 | 제안 값 | 범위 | 근거 |
|
||||
|---|---|---|---|
|
||||
| **IFrameDuration (피격)** | **0.6 s** | 0.3~1.0s | 아래 산출 과정 참고 |
|
||||
| **IFrameDuration (피격)** | **0.6 s** | 0.3~1.0s | 하트 다단 구조 하에서도 연속 히트 방지 기준 유효. 아래 산출 근거 참고 |
|
||||
| **IFrameDuration (대시·회피)** | 보류 | — | 회피 메커니즘 미확정 (04_전투 §7) — Phase 3-C |
|
||||
| **깜박임 시각화 간격** | 0.08 s | 초 | 깜박임 1회 = 0.08s 온/오프. 0.6s÷0.08s ≈ 7.5회 깜박임. 너무 빠르면 번쩍임 불쾌, 너무 느리면 무적 인식 불가 |
|
||||
| **깜박임 시각화 간격** | 0.08 s | 초 | 7.5회 깜박임 / 0.6s |
|
||||
| **P19 심안 패시브 적용 시 연장** | +0.2 s | 초 | Lv.5 풀 스택 시 i-frame 0.8s (초안) |
|
||||
|
||||
#### 0.6초 산출 근거
|
||||
#### 0.6초 산출 근거 (하트 분할 구조 재검토)
|
||||
|
||||
1. **연속 히트 방지 기준**: 일반 적 AttackCooldown = 0.5s 가정. i-frame ≥ 0.5s면 같은 적의 연타 불가. → 최소 0.5s.
|
||||
2. **모바일 회피 반응 시간**: 터치 입력 후 캐릭터 이동 반응 75ms + 플레이어 반응 시간 300ms = 375ms. i-frame 0.6s면 피격 후 회피 이동 착수 가능. 0.3s는 너무 촉박.
|
||||
3. **캐주얼 포지션 고려**: Celeste(스피드런 전문) i-frame 0.3s, Hollow Knight 0.35s — 높은 난이도 기준. 캐주얼 대상 EerieVillage는 0.5~0.8s가 적정.
|
||||
4. **결론**: 0.6s는 "최소 보호(0.5s) + 모바일 반응 여유(+0.1s)"의 합리적 교점. 테스트 후 ±0.1s 조정 여지.
|
||||
1. **연속 히트 방지 기준**: 일반 적 AttackCooldown = 0.5s 가정. i-frame ≥ 0.5s면 같은 적의 연타 불가 → 최소 0.5s
|
||||
2. **적 ATK 다단 대응**: ATK 1~4 범위에서 i-frame 0.6s면 "1회 피격 → 회피 이동 착수" 확보 가능. 0.3s는 ATK 4 연타 시 위험
|
||||
3. **모바일 회피 반응 시간**: 터치 75ms + 플레이어 반응 300ms = 375ms. i-frame 0.6s면 충분
|
||||
4. **캐주얼 포지션 유지**: VS 원작 계승 하트 분할 구조 + 공격 버튼 제거 → 조작 단순화. i-frame 여유(0.6s) 적정
|
||||
5. **결론**: 0.6s 유지. 테스트 후 ±0.1s 조정 여지 (튜닝 대상)
|
||||
|
||||
---
|
||||
|
||||
## 5. 적 스탯
|
||||
## 5. 적 스탯 — ATK 1부터 점진 강화 (BT7-Plan 확정 방향 8 반영)
|
||||
|
||||
### 적 등급 체계
|
||||
### 적 등급 체계 (초안·튜닝 대상)
|
||||
|
||||
| 등급 | HP | ATK | AttackCooldown | 이동 속도 | 비고 |
|
||||
| 등급 | HP | ATK (쿼터 피해) | AttackCooldown | 이동 속도 | 비고 |
|
||||
|---|---|---|---|---|---|
|
||||
| **일반 적 (약)** | 40 | 1(즉사) | 1.2 s | 2.0 m/s | 첫 구간 전용. 3~4타 처치 |
|
||||
| **일반 적 (중)** | 60 | 1(즉사) | 0.9 s | 3.0 m/s | 구간 2 주력 |
|
||||
| **엘리트** | 120 | 1(즉사) | 0.7 s | 3.5 m/s | 구간 2 후반~보스 전 |
|
||||
| **보스** | 400 | 1(즉사) | 아래 별도 | 2.5 m/s | 스테이지 보스 |
|
||||
| **일반 적 (약)** | 40 | **1** (1/4 하트) | 1.2 s | 2.0 m/s | 첫 구간 전용. 3~4타 처치 |
|
||||
| **일반 적 (중)** | 60 | **1~2** (스테이지 진행 시 상승) | 0.9 s | 3.0 m/s | 구간 2 주력 |
|
||||
| **엘리트** | 120 | **2** (반 하트) | 0.7 s | 3.5 m/s | 구간 2 후반~보스 전 |
|
||||
| **보스 페이즈 1** | 400 | **2~3** | 1.5 s | 2.5 m/s | 스테이지 보스 |
|
||||
| **보스 페이즈 2** | (HP 50% 이하) | **3~4** (페이즈 강화) | 1.2 s | 3.0 m/s | 위험 구간 |
|
||||
|
||||
#### ATK=1(즉사) 설계 근거
|
||||
#### 적 ATK 점진 강화 설계 (BT7-Plan 확정 방향 8)
|
||||
|
||||
라이프 1 구조에서 모든 피격은 즉사. HP를 10이나 20으로 설정하면 "HP가 10인 척 하다가 0 되면 죽는 것"으로 수치만 무의미해짐. 명확성을 위해 **ATK = 플레이어 사망** 단일 의미. 대신 적 HP는 의미 있게 차등.
|
||||
**구 ATK=1(즉사) 단일 설계 폐기**. 하트 분할 구조에 맞춰 점진 강화.
|
||||
|
||||
```
|
||||
스테이지별 ATK 배율:
|
||||
Stage 1: 기본 ATK × 1.0
|
||||
Stage 2: 기본 ATK × 1.0 (중반부터 +1 가산)
|
||||
Stage 3: 기본 ATK × 1.5 (올림)
|
||||
Stage 4: 기본 ATK × 1.5 (올림)
|
||||
Stage 5: 기본 ATK × 2.0 (올림, 최대 ATK 4 = 하트 1개 전소)
|
||||
|
||||
예:
|
||||
Stage 1 일반 적 (약): ATK 1 (1/4 하트 피해)
|
||||
Stage 3 엘리트: ATK 2 × 1.5 = 3 (3/4 하트 피해)
|
||||
Stage 5 보스 페이즈 2: ATK 4 = 하트 1개 전소
|
||||
```
|
||||
|
||||
**설계 의도**: 초반은 관대(실수 허용), 후반은 가혹(회피·빌드 필수). 성장 축(하트 수 증가·액티브 강화)과 위협 축 동반 상승.
|
||||
|
||||
#### 보스 스탯 상세 (파일럿 기준 보스 1종)
|
||||
|
||||
| 파라미터 | 값 | 근거 |
|
||||
|---|---|---|
|
||||
| HP | 400 | DPS 50 기준 TTK = 8초 (빌드 없음). 카드 3장 시 배율 ×1.5 가정 → TTK ≈ 5.3초. **목표 50~90초는 빌드 누적 후 기준** — 보스는 Phase 도중 빌드가 3~4개 쌓인 후 만나므로 실질 DPS 75~100 가정 → TTK 60~80초 성립 |
|
||||
| 공격 패턴 수 | 2~3종 | 구간 1 레벨업 2~3회 완료 후 보스 진입 기준. 패턴 1은 느리고 가독 명확, 패턴 2는 빠르고 좁은 회피 윈도우 |
|
||||
| 페이즈 전환 | HP 50% | 페이즈 2 진입 시 이동 속도 +0.5, 공격 간격 -0.2s |
|
||||
| HP | 400 | 빌드 누적 실질 DPS 75~100 가정 → TTK 60~80초 성립 |
|
||||
| 공격 패턴 수 | 2~3종 | 구간 1 레벨업 2~3회 완료 후 보스 진입 기준 |
|
||||
| 페이즈 전환 | HP 50% | 페이즈 2 진입 시 이동 속도 +0.5, 공격 간격 -0.2s, ATK +1 |
|
||||
|
||||
---
|
||||
|
||||
## 6. 대미지 공식 (전투 핵심)
|
||||
## 6. 대미지 공식 (전투 핵심) — 재작성
|
||||
|
||||
§3 "공격 수치"에 통합 이관. 본 섹션은 §3 공식 요약.
|
||||
|
||||
```
|
||||
// 플레이어 → 적
|
||||
EnemyHPResult = EnemyHP - (BaseDamage × CardMultiplier)
|
||||
플레이어 → 적:
|
||||
최종 대미지 = 액티브 기본 × CardMultiplier × StackLevelFactor × AttributePassiveBonus
|
||||
각성 발동 시: 각성 기본 × CardMultiplier × AttributePassiveBonus
|
||||
|
||||
// 적 → 플레이어
|
||||
PlayerResult = DEAD (라이프 1 — 피격 즉사. i-frame 내 피격은 무효)
|
||||
적 → 플레이어:
|
||||
PlayerHP -= EnemyATK (쿼터 단위)
|
||||
i-frame 내 피격 무효
|
||||
```
|
||||
|
||||
단순성이 설계 의도. 방어 수치(DEF) 미도입 — `DEF/(DEF+200)` 패턴은 Phase 3-C 특성 확장 시 재검토.
|
||||
DEF 스탯 미도입. 피해 감소는 패시브 `[방어]` 카드의 % 감소로 처리.
|
||||
|
||||
---
|
||||
|
||||
## 7. 플랫포머 타이밍 윈도우 (모바일 친화)
|
||||
|
||||
모바일 터치 평균 입력 지연: 75ms (하드웨어 + OS 스택). PC 기준 수치를 그대로 쓰면 모바일에서 10~20% 타이트하게 느껴짐.
|
||||
모바일 터치 평균 입력 지연: 75ms.
|
||||
|
||||
| 윈도우 | 값 | PC 유사 레퍼런스 | 모바일 조정 이유 |
|
||||
|---|---|---|---|
|
||||
| **Coyote Time** | 0.12 s | Celeste 0.08s | +50ms 터치 딜레이 보정 |
|
||||
| **Jump Buffer** | 0.15 s | Celeste 0.10s | +50ms 동일 |
|
||||
| **Edge Push** | 0.3 m | 미도입 사례 多 | 모바일 터치 정밀도 보정 신규 도입 |
|
||||
| **최소 공격 판정 유지** | 0.05 s | — | 터치 tap 0.05s 이상 유지로 공격 판정 누락 방지 |
|
||||
|
||||
**참고**: 공격 판정 유지 수치는 v0.1에서 폐기 — 공격 버튼 자체 제거.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -163,22 +204,28 @@ PlayerResult = DEAD (라이프 1 — 피격 즉사. i-frame 내 피격은 무효
|
|||
|
||||
| 시나리오 | 기대 결과 | 검증 방법 |
|
||||
|---|---|---|
|
||||
| V-1: 일반 적(중) 1vs1 교전 | 공격 3타(1.2s) 처치, 피격 피하면 생존 | Play 모드 수동 |
|
||||
| V-1: 일반 적(약) 1vs1 교전 | 액티브 A05(학익진) 자동 발동으로 3~4타 처치, 피격 시 1/4 하트 감소 | Play 모드 수동 |
|
||||
| V-2: 피격 직후 연속 히트 | i-frame 0.6s 내 2번째 적 공격 무효 | 로그 확인 |
|
||||
| V-3: Coyote Time | 절벽 끝에서 0.12s 내 점프 성공 | 터치 입력 0.12s 시뮬 |
|
||||
| V-4: Jump Buffer | 착지 직전 0.15s 전 입력으로 착지 즉시 점프 | 입력 타임스탬프 확인 |
|
||||
| V-5: 보스 TTK 상한 | 카드 0장 기준 보스 HP 400 → DPS 50 → 8초 (단순 공격 반복) | 보스 테스트씬 |
|
||||
| V-6: 모바일 Edge Push | 모바일 터치로 플랫폼 모서리 착지 성공률 >80% | 실기 QA |
|
||||
| V-3: 하트 분할 시각화 | ATK 1 피격 시 풀 하트 → 3/4 하트 전환 표시 | HUD 시각 확인 |
|
||||
| V-4: 최대 하트 수 증가 | P15 생명의 꽃 Lv.1 획득 시 최대 HP 4 → 8 쿼터 변환 | 인벤토리 로그 |
|
||||
| V-5: Coyote Time | 절벽 끝에서 0.12s 내 점프 성공 | 터치 입력 0.12s 시뮬 |
|
||||
| V-6: 보스 TTK 상한 | 카드 0장 기준 보스 HP 400 → DPS 기준 75~100초 | 보스 테스트씬 |
|
||||
| V-7: 각성 발동 조건 | A05 Lv.5 + P01 or P07 보유 + 보물상자 획득 → AW05 발동 | 시나리오 재현 |
|
||||
| V-8: 적 ATK 점진 강화 | Stage 5 진입 시 일반 적 ATK 2 (반 하트 감소) 확인 | 스테이지별 적 생성 로그 |
|
||||
| V-9: 모바일 Edge Push | 모바일 터치로 플랫폼 모서리 착지 성공률 >80% | 실기 QA |
|
||||
|
||||
---
|
||||
|
||||
## 9. 리스크
|
||||
|
||||
1. **Coyote Time·Jump Buffer 중첩**: 두 윈도우가 동시 활성 시 의도치 않은 더블 점프처럼 보일 수 있음. 우선순위 명확화 필요 (Jump Buffer > Coyote Time).
|
||||
2. **i-frame 0.6s + AttackCooldown 0.4s 조합**: 플레이어 공격 쿨다운 0.4s 중 피격 시 i-frame 0.6s → 피격 후 1~2회 공격 가능. 역으로 무적 중 역공 전술 고착화 가능성. Phase 3-C 평가.
|
||||
3. **보스 HP 400 + 카드 배율 스택**: 카드 5장 이상 누적 시 CardMultiplier 2.5 → DPS 125 → TTK 3.2초. 보스 전투 허무화. **하드캡 DPS 100 (보스 기준 TTK 최저 4초)** 권고.
|
||||
4. **KnockbackForce 3.0**: 지형에 따라 적이 낙사하여 처치 판정 누락 가능. 낙사 시 처치 처리 명시 필요.
|
||||
5. **Edge Push 오작동**: 플랫폼 모서리에서 의도치 않게 올라가는 "등반 버그" 유사 현상. 수직 이동 성분 없이 수평 보정만 적용하도록 구현 제한 필요.
|
||||
2. **i-frame 0.6s + 자동 발동 쿨다운 조합**: 플레이어 자동 발동 주기 중 피격 시 i-frame 0.6s → 피격 후 즉시 액티브 발동 가능. "피격 → 카운터 발동"의 전술 고착 가능성. Phase 3-C 평가.
|
||||
3. **액티브 DPS 하드캡 필요**: 카드 5장+ 누적 시 CardMultiplier 2.5 × StackLevel 2.0 → DPS 폭증. 보스 허무화 방지 **하드캡 DPS 150 (보스 TTK 최저 3초)** 권고.
|
||||
4. **회복 카드 어뷰징 (P13 단전수련·P14 감로수·P15 생명의 꽃)**: 과도한 쿼터 회복 스택 시 무한 생존 위험. 회복량 감소 곡선 + 쿨다운 + 최대 HP 상한 설계 필수 (`balance/02_레벨업_곡선.md` v0.2 §6).
|
||||
5. **최대 하트 수 증가 상한**: 하트 5개+ 도달 시 게임 난이도 붕괴. **하드캡 3~5개** (초기 권고) + 상한 초과 시 P15·P16 재픽 시 재화 보상으로 전환.
|
||||
6. **KnockbackForce 3.0**: 지형에 따라 적이 낙사하여 처치 판정 누락 가능. 낙사 시 처치 처리 명시 필요.
|
||||
7. **Edge Push 오작동**: 플랫폼 모서리에서 의도치 않게 올라가는 "등반 버그" 유사 현상. 수직 이동 성분 없이 수평 보정만 적용.
|
||||
8. **보물상자 스폰 빈도 과다 시 각성 남발**: 스테이지별 스폰 횟수 제한 필요. P23 재물복 패시브 스택 시에도 하드캡 존재 (balance-designer 결정).
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -188,23 +235,28 @@ PlayerResult = DEAD (라이프 1 — 피격 즉사. i-frame 내 피격은 무효
|
|||
|
||||
| 항목 | 이유 | 우선순위 |
|
||||
|---|---|---|
|
||||
| MoveSpeed 6.0 → 7.0 범위 최적화 | PlatformerMicrogame 템플릿 물리 설정 의존 | 최우선 |
|
||||
| Gravity Scale 3.5 | 화면 해상도·카메라 줌 레벨에 따라 체감 완전히 다름 | 최우선 |
|
||||
| i-frame 0.6s ± 조정 | 적 공격 패턴 구현 후 실체 연타 간격 측정 필요 | 우선 |
|
||||
| Edge Push 0.3m 범위 | 실제 플랫폼 크기·충돌 레이어 구성 후 결정 | 우선 |
|
||||
| 보스 HP 400 TTK 검증 | V-5 시나리오 빌드별 수행 | 보스 구현 후 |
|
||||
| MoveSpeed 6.0 범위 최적화 | PlatformerMicrogame 템플릿 물리 설정 의존 | 최우선 |
|
||||
| Gravity Scale 3.5 | 화면 해상도·카메라 줌 레벨 의존 | 최우선 |
|
||||
| i-frame 0.6s ± 조정 | 적 공격 패턴 구현 후 실체 연타 간격 측정 | 우선 |
|
||||
| **액티브 BaseCooldown 1.5s 검증** | 자동 발동 주기의 이펙트 중첩 가독성 | 우선 |
|
||||
| **적 ATK 점진 강화 Stage별 체감 검증** | 하트 분할 구조에서 ATK 2~4 체감 조정 | 우선 |
|
||||
| **하트 UI 분할 스프라이트 렌더링** | 풀·3/4·반·1/4·빈 5단계 시각 구분 | 우선 |
|
||||
| 보스 HP 400 TTK 검증 | V-6 시나리오 빌드별 수행 | 보스 구현 후 |
|
||||
| **각성 발동 연출 퍼포먼스** | 풀스크린 효과 + 액티브 변환 애니메이션 | 각성 구현 후 |
|
||||
| 모바일 Touch Delay 75ms 가정 검증 | 실기기 입력 측정 필요 | 실기 QA 단계 |
|
||||
|
||||
---
|
||||
|
||||
## 11. 기각안
|
||||
|
||||
1. **MoveSpeed 8.0 제안 — 기각.** 과도한 이동 속도는 플랫폼 오버슈트 빈도 증가, 캐주얼 포지션에서 역오히려 불만 유발. 7.0 상한.
|
||||
2. **GravityScale 5.0 제안 — 기각.** 점프 정점 체공 시간 0.3초 이하로 줄어 공중 회피 불가. 라이프 1 구조에서 치명적 불공정. 4.0 상한.
|
||||
3. **i-frame 1.0초 제안 — 기각.** 보스 공격 패턴 대부분 무효화. 특히 보스 패턴 2종 이상일 경우 i-frame 체인으로 사실상 무적. 0.8초 상한 검토.
|
||||
4. **i-frame 0.3초 제안 — 기각.** 04_전투_기본_스펙 기각안 3과 동일 취지. 연속 히트 방지 최소 0.5초 미달.
|
||||
5. **DEF 스탯 도입 — 기각.** 라이프 1 즉사 구조에서 DEF 수치는 무의미 (죽거나 살거나). 복잡도만 증가. 특성 구현 시 Phase 3-C에서 재검토.
|
||||
6. **AttackCooldown 0.6초 제안 — 기각.** DPS 33 → 일반 적 TTK 1.8초. 캐주얼 로그라이크에서 1.8초 교전은 단조하고 답답함. 0.5초 상한.
|
||||
1. **MoveSpeed 8.0 제안 — 기각.** 과도한 이동 속도는 플랫폼 오버슈트 빈도 증가. 7.0 상한.
|
||||
2. **GravityScale 5.0 제안 — 기각.** 점프 정점 체공 시간 0.3초 이하로 줄어 공중 회피 불가. 4.0 상한.
|
||||
3. **i-frame 1.0초 제안 — 기각.** 보스 공격 패턴 대부분 무효화. 0.8초 상한 (P19 Lv.5 풀 스택 시).
|
||||
4. **i-frame 0.3초 제안 — 기각.** 04_전투_기본_스펙 기각안 취지와 동일. 연속 히트 방지 최소 0.5초 미달.
|
||||
5. **DEF 스탯 도입 — 기각.** 패시브 `[방어]` % 감소로 역할 대체. 복잡도만 증가.
|
||||
6. **"수동 공격 보조 유지 (액티브 + 수동 병행)" — 기각 (BT7-Plan 신규).** PD 확정 방향 2에서 VS 순수형(이동·점프만) 명시. 수동 공격 병행은 복잡도 증가 + 자동 발동 감상 재미 저해.
|
||||
7. **"적 ATK=1(즉사) 단일 설계 유지" — 기각 (BT7-Plan 번복).** v0.1은 라이프 1 전제 하 즉사 단일 설계였으나, BT7-Plan 확정 방향 7·8에서 하트 분할 + ATK 점진 강화로 전환. **기각안 유지(번복 기록)**.
|
||||
8. **"보스 ATK를 항상 최대(하트 1개 전소)로 설정" — 기각 (BT7-Plan 신규).** 페이즈 1·2 차등 설계가 "회피 숙련도 성장" 재미를 형성. 항상 최대 ATK는 단조하고 불공정.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -213,3 +265,4 @@ PlayerResult = DEAD (라이프 1 — 피격 즉사. i-frame 내 피격은 무효
|
|||
| 일시 | 변경 | 이전값 | 이후값 | 사유 | 기안 |
|
||||
|---|---|---|---|---|---|
|
||||
| 2026-04-22 | v0.1 초안 작성 | — | — | PD 지시 BT6-Plan Phase 3-B | 밸런스기획자 |
|
||||
| 2026-04-24 | v0.2 — BT7-Plan 개정 집행 — PD 지시 11건 반영 (수동 공격 폐기·자동 발동 수치·하트 분할 i-frame 재검토·적 ATK 점진 강화·각성 공식·회복 쿼터 단위) | 기획팀장 |
|
||||
|
|
|
|||
|
|
@ -2,23 +2,23 @@
|
|||
type: 밸런스_수치_초안
|
||||
scope: 레벨업_곡선·보상_구조
|
||||
author: 밸런스기획자
|
||||
date: 2026-04-22
|
||||
version: v0.1 (Phase 3-B 초안)
|
||||
date: 2026-04-24
|
||||
version: v0.2 (BT7-Plan 개정)
|
||||
project: EerieVillage
|
||||
phase: Phase 3-B
|
||||
data_source: 03_진행_시스템_초안.md + 05_스테이지_구조_초안.md + 코어 룰 7 (레벨·카드 전손) + 9 (특성 영구)
|
||||
status: 초안 — 스테이지 구간별 적 배치 확정 후 level-designer 교차 검증 필수
|
||||
data_source: 03_진행_시스템_초안.md + 05_스테이지_구조_초안.md + system/01_카드_시스템.md v0.2 + content/01_카드_풀.md v0.2 + BT7-Plan PD 확정 방향 11건
|
||||
status: 초안 — 스테이지 구간별 적 배치 확정 후 level-designer 교차 검증 필수 · 수치는 튜닝 대상
|
||||
---
|
||||
|
||||
# 02. 레벨업 곡선
|
||||
|
||||
## 1. 설계 전제 (P30 재미 정의 선행)
|
||||
|
||||
강화 대상 재미: **축 1 육성 롤러코스터** — "쌓기(카드 픽) → 폭발 → 낙차(전손)" 리듬.
|
||||
- 목표: **1 스테이지(구간 1+2+3) 내 레벨업 4~6회**. 카드 4~6장 빌드로 보스 도전.
|
||||
강화 대상 재미: **축 1 육성 롤러코스터** — "쌓기(카드 픽) → 폭발 → 낙차(전손)" 리듬. BT7-Plan 전환으로 **2축 드로우(액티브·패시브) + 각성 별도 트리거** 구조 반영.
|
||||
- 목표: **1 스테이지(구간 1+2+3) 내 레벨업 4~6회**. 카드 4~6장 빌드 + 각성 발동 1~2회로 보스 도전.
|
||||
- 5~10분 런 가정 시 레벨업 1회당 50~90초 주기.
|
||||
- 너무 자주(30초마다): 픽 결정 부담 과다, 흥분 희석. 너무 드물게(3분마다): 육성 재미 실종.
|
||||
- **구간 1에서 2회 빠르게** 레벨업 → 빌드 시드 형성 → 구간 2에서 2~3회 → 빌드 확장 → 보스 진입.
|
||||
- 너무 자주(30초마다): 픽 결정 부담 과다. 너무 드물게(3분마다): 육성 재미 실종.
|
||||
- **구간 1에서 2회 빠르게** 레벨업 → 빌드 시드 형성 → 구간 2에서 2~3회 → 빌드 확장 + 보물상자 획득 → 구간 3 보스 진입.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -31,23 +31,23 @@ RunXP_총합 = Σ(적_처치_XP) + 보스_처치_XP + 이벤트_XP
|
|||
LevelUpRequired(Lv) = BASE_XP × Lv^EXPONENT (아래 §3 곡선 참조)
|
||||
```
|
||||
|
||||
### 경험치 획득 테이블
|
||||
### 경험치 획득 테이블 (초안·튜닝 대상)
|
||||
|
||||
| 소스 | 기본 XP | 근거 |
|
||||
|---|---|---|
|
||||
| **일반 적 (약)** | 8 XP | 구간 1 약 10마리 처치 → 80 XP. Lv1→2 목표 100 XP. 아이템 등 기타 소스로 잔여 보충 |
|
||||
| **일반 적 (중)** | 12 XP | 구간 2 주력. 약 8마리 → 96 XP. Lv2→3·3→4 갱신 기여 |
|
||||
| **엘리트** | 30 XP | 구간 2 후반 2~3기. 처치 시 즉시 레벨업 절반 이상 기여 → "엘리트 잡으면 레벨 쑥 오른다" 보상감 |
|
||||
| **보스 처치** | 80 XP | 보스 처치 직후 즉시 1레벨업 보장(설계 의도). §4 보상 구조 참조 |
|
||||
| **일반 적 (약)** | 8 XP | 구간 1 약 10마리 처치 → 80 XP |
|
||||
| **일반 적 (중)** | 12 XP | 구간 2 주력 |
|
||||
| **엘리트** | 30 XP | 구간 2 후반 2~3기 |
|
||||
| **보스 처치** | 80 XP | 보스 처치 직후 즉시 1레벨업 보장(설계 의도) |
|
||||
| **이벤트·특수** | 10~20 XP | 숨겨진 방·함정 통과 등. Phase 3-C level-designer 설계 |
|
||||
|
||||
**P22 선견지명 패시브 적용 시**: 경험치 획득량 × (1 + Lv × 0.1), Lv.5 풀 스택 시 +50%.
|
||||
|
||||
---
|
||||
|
||||
## 3. 레벨업 요구 경험치 곡선
|
||||
|
||||
### 곡선 유형 선택: 수정 선형 복합 곡선
|
||||
|
||||
기각안 §8에 이유 명시. **BASE_XP 80, 증가 계수 20 (선형 증가)**로 결정.
|
||||
### 곡선 유형: 수정 선형 복합 곡선 (v0.1 유지)
|
||||
|
||||
```
|
||||
RequiredXP(Lv → Lv+1) = 80 + (Lv × 20)
|
||||
|
|
@ -59,7 +59,7 @@ RequiredXP(Lv → Lv+1) = 80 + (Lv × 20)
|
|||
| **Lv 2 → 3** | 120 | 220 | 구간 1 후반~구간 2 초입 |
|
||||
| **Lv 3 → 4** | 140 | 360 | 구간 2 중반 |
|
||||
| **Lv 4 → 5** | 160 | 520 | 구간 2 후반·엘리트 처치 기여 |
|
||||
| **Lv 5 → 6** | 180 | 700 | 보스 전 마지막 픽 기회 (보스 XP 80 포함 가능) |
|
||||
| **Lv 5 → 6** | 180 | 700 | 보스 전 마지막 픽 기회 |
|
||||
| **Lv 6 → 7** | 200 | 900 | 다음 스테이지 초입 도달 가정 |
|
||||
| **Lv 7 → 8** | 220 | 1120 | — |
|
||||
|
||||
|
|
@ -68,7 +68,7 @@ RequiredXP(Lv → Lv+1) = 80 + (Lv × 20)
|
|||
가정: 스테이지당 일반 적 약 15마리(약 7, 중 8), 엘리트 2기, 보스 1기.
|
||||
XP/스테이지 ≈ (7×8)+(8×12)+(2×30)+80 = 56+96+60+80 = **292 XP**
|
||||
|
||||
| 스테이지 종료 후 | 예상 누적 XP | 예상 레벨 | 보유 카드 수 |
|
||||
| 스테이지 종료 후 | 예상 누적 XP | 예상 레벨 | 보유 카드 수 (액티브+패시브) |
|
||||
|---|---|---|---|
|
||||
| Stage 1 종료 | ~292 | Lv 3~4 | 3~4장 |
|
||||
| Stage 2 종료 | ~584 | Lv 5~6 | 5~6장 |
|
||||
|
|
@ -76,62 +76,92 @@ XP/스테이지 ≈ (7×8)+(8×12)+(2×30)+80 = 56+96+60+80 = **292 XP**
|
|||
| Stage 4 종료 | ~1168 | Lv 7~8 | 7~8장 |
|
||||
| Stage 5 종료 | ~1460 | Lv 8~9 | 8~9장 |
|
||||
|
||||
**5스테이지 완주 시 카드 8~9장** — 빌드 다양성 충분, 시너지 탐색 여지 확보. 10장 초과 시 관리 복잡도 과다 → **런 내 카드 최대 10장 하드캡** 권고.
|
||||
**각성 발동 기대치**: Stage 3~4 구간에서 첫 각성 조건 충족 가능 (액티브 Lv.5 도달 + 필요 패시브 1개 이상 + 보물상자 획득).
|
||||
|
||||
---
|
||||
|
||||
## 4. 카드 드로우 확률 (레어리티별)
|
||||
## 4. 카드 드로우 확률 — 액티브·패시브 2축 재설계 (BT7-Plan 재작성)
|
||||
|
||||
### 설계 전제
|
||||
### 설계 전제 (BT7-Plan 확정 방향 3·10)
|
||||
|
||||
03_진행_시스템 §3-3 "초반은 기본 카드, 후반은 고급·레어 카드 확률 상승" 방향 계승.
|
||||
**구 4티어 레어리티(Common/Uncommon/Rare/Epic) 폐기**. 액티브·패시브 2축 드로우로 전환. 각성 카드는 별도 풀(보물상자 트리거).
|
||||
|
||||
### 픽 알고리즘
|
||||
|
||||
```
|
||||
레벨업 트리거 시:
|
||||
1. 현재 레벨에 따라 티어별 가중치 계산
|
||||
1. 현재 레벨·빌드 태그에 따라 액티브 vs 패시브 비율 가중 결정
|
||||
2. 카드 풀에서 가중치 기반 3장 비복원 추출 (중복 방지)
|
||||
3. 3장 제시 → 1장 선택
|
||||
|
||||
보물상자 획득 시 (별도 경로):
|
||||
1. 각성 발동 조건 3종 충족 판정 (액티브 Lv.5 + 필요 패시브 1개 이상)
|
||||
2. 충족 시 → 해당 각성 카드 즉시 발동
|
||||
3. 불충족 시 → 대체 보상 (재화·회복·경험치 중 1종)
|
||||
```
|
||||
|
||||
### 티어별 출현 확률 테이블 (레벨별)
|
||||
### 액티브·패시브 2축 드로우 비율 (초안·튜닝 대상)
|
||||
|
||||
| 레벨 | Common (기본) | Uncommon (고급) | Rare (레어) | Epic (에픽) |
|
||||
|---|---|---|---|---|
|
||||
| Lv 1~2 | 70% | 25% | 5% | 0% |
|
||||
| Lv 3~4 | 50% | 35% | 13% | 2% |
|
||||
| Lv 5~6 | 30% | 40% | 22% | 8% |
|
||||
| Lv 7~8 | 15% | 35% | 35% | 15% |
|
||||
| Lv 9+ | 5% | 25% | 40% | 30% |
|
||||
| 레벨 | 액티브 비율 | 패시브 비율 | 근거 |
|
||||
|---|---|---|---|
|
||||
| **Lv 1~2** | 70% | 30% | 초반은 자동 발동 무기 확보 우선 (최소 2~3개 액티브 기반 형성) |
|
||||
| **Lv 3~4** | 50% | 50% | 중반은 액티브 스택 업그레이드 + 패시브 속성 강화 병행 |
|
||||
| **Lv 5~6** | 35% | 65% | 후반은 기존 액티브 Lv 업 + 각성 조건 패시브 수집 중심 |
|
||||
| **Lv 7~8** | 25% | 75% | 각성 발동 대기·추가 각성 준비 단계 |
|
||||
| **Lv 9+** | 20% | 80% | 빌드 완성 + 각성 다중 발동 조건 충족 노림 |
|
||||
|
||||
#### 확률 설계 근거
|
||||
|
||||
- **초반 Common 70%**: 기본 카드로 빌드 방향 탐색. 시너지 태그를 먼저 익히는 학습 단계.
|
||||
- **Lv 3~4 분기점**: Rare가 13% 등장 → "첫 레어를 얻었다!" 흥분 포인트. 너무 이르면 기대 소진.
|
||||
- **Lv 5~6 Epic 8%**: 스테이지 2 후반 ~ 3에서 처음 Epic 가능. 각 런의 하이라이트.
|
||||
- **Lv 9+ 레어+에픽 70%**: 고 스테이지 클리어 시 강한 빌드 구성 가능 → 특성 축적의 보상.
|
||||
- **초반 액티브 70%**: 자동 발동 무기가 DPS 공급원이므로 우선 확보. 패시브만 쌓으면 적 처치 불가
|
||||
- **Lv 3~4 50/50**: 액티브 Lv 업과 패시브 속성 강화가 균형. 이 시점에 첫 액티브 Lv.5 달성 가능성 발생
|
||||
- **Lv 5+ 패시브 비중 상승**: 각성 조건의 "필요 패시브 1개 이상 보유"를 충족하려면 패시브 다양성 필요
|
||||
- **풀 고갈 시 필터 해제**: 액티브 15~20종 기준 Lv 5 후반에 풀 소진 위험, 강제 패시브 제공 케이스 대비
|
||||
|
||||
#### 어뷰징 경계 초기 가드
|
||||
### 하위 가중치 — 태그 시너지 보너스
|
||||
|
||||
- **동일 카드 3중 픽 방지**: 동일 카드가 3장 추출 풀에 2장 이상 포함되면 1장으로 강제 대체.
|
||||
- **티어 잠금 최소 기준**: Epic 카드는 Lv 4 미만 절대 등장 금지 (하드코딩). 확률 수치가 0%라도 코드 예외 처리.
|
||||
- **카드 스택 배율 상한**: 같은 카드 2장 이상 픽 시 배율 상한 × 1.5 → 스팸 배율 무한 증가 방지.
|
||||
현재 빌드의 주력 태그 2개에 해당하는 카드에 **+30% 가중치** 부여 (초안, 튜닝 대상).
|
||||
|
||||
### 어뷰징 경계 초기 가드
|
||||
|
||||
- **동일 카드 3중 픽 방지**: 동일 카드가 3장 추출 풀에 2장 이상 포함되면 1장으로 강제 대체 (Lv.5 미만 카드에만 적용)
|
||||
- **카드 스택 배율 상한**: Lv.5 풀 스택 시 StackLevelFactor 2.0 하드캡. 초과 시 Lv.5 고정 표시
|
||||
- **각성 카드 드로우 차단**: 각성 카드는 레벨업 드로우 풀에 **절대 등장 금지** (하드코딩). 오직 보물상자 획득 경로로만 발동
|
||||
|
||||
---
|
||||
|
||||
## 5. 보상 구조 (보스 처치)
|
||||
## 5. 보상 구조 (보스 처치 + 보물상자)
|
||||
|
||||
### 보스 처치 시 보상 패키지
|
||||
|
||||
보스 처치는 스테이지의 "빌드 검증 이벤트". 보상은 **다음 스테이지 진입 결정**에 영향을 준다.
|
||||
|
||||
| 보상 항목 | 값/확률 | 근거 |
|
||||
|---|---|---|
|
||||
| **경험치** | 80 XP (고정) | Lv업 요구 XP의 50~80% 수준. "보스 잡으면 거의 레벨업" 보상감. 정확히 1레벨업 보장은 지양 (맥락 박탈) |
|
||||
| **아이템 드롭** | 1개 (100%) | 항상 파츠 1개 드롭. 교체·포기 선택 압박이 보스 직후 감정 집중. 등급 확률: Common 50% / Uncommon 35% / Rare 15% |
|
||||
| **특성 언락 재화** | Phase 3-C | 메타 재화 존재 여부 미결 (03_진행_시스템 §5-1 보류). 도입 시 보스 드롭 주 소스 예정 |
|
||||
| **선택 분기** | 마을 or 다음 스테이지 | 보상 획득 후 의사결정 (코어 룰 5). 보상 자체가 아니라 "다음 선택지를 여는 열쇠" |
|
||||
| **경험치** | 80 XP (고정) | Lv업 요구 XP의 50~80% 수준 |
|
||||
| **아이템 드롭** | 1개 (100%) | 파츠 1개 드롭. 등급: Common 50% / Uncommon 35% / Rare 15% |
|
||||
| **보물상자 확정 드롭 (신규, BT7-Plan)** | 100% | 보스 처치 시 보물상자 1개 확정 → 각성 발동 기회 제공 |
|
||||
| **특성 언락 재화** | Phase 3-C | 메타 재화 보류 |
|
||||
| **선택 분기** | 마을 or 다음 스테이지 | 보상 획득 후 의사결정 (코어 룰 5) |
|
||||
|
||||
### 보물상자 체계 (신규, BT7-Plan 확정 방향 10)
|
||||
|
||||
스테이지 진행 중 보물상자는 다음 조건으로 스폰된다:
|
||||
|
||||
| 스폰 조건 | 빈도 | 근거 |
|
||||
|---|---|---|
|
||||
| **스테이지 구간별 확정 스폰** | 각 구간 1회 (총 3회/스테이지) | 최소 1~2회 각성 시도 기회 보장 |
|
||||
| **엘리트 적 처치 시** | 50% 확률 | 엘리트 리스크 보상 |
|
||||
| **보스 처치 시** | 100% 확정 (§5 상단) | 각성 확정 기회 |
|
||||
| **P23 재물복 패시브 적용 시** | +20%~50% 확률 증가 | 각성 빌드 특화 패시브 |
|
||||
|
||||
**보물상자 획득 시 판정 플로우**:
|
||||
|
||||
```
|
||||
1. 현재 빌드에서 각성 조건 충족 카드 리스트 조회
|
||||
- 액티브 Lv.5 도달 + 필요 패시브[] 중 1개 이상 보유 = 조건 충족
|
||||
2. 조건 충족 카드 수 판정:
|
||||
(a) 0개 → 대체 보상 제공 (재화 or 쿼터 회복 or 경험치 30 중 가중 랜덤)
|
||||
(b) 1개 → 즉시 해당 각성 발동
|
||||
(c) 2개 이상 → 플레이어 선택 UI 제공 (중 1개 발동)
|
||||
```
|
||||
|
||||
### 보상 비율 조정 레버
|
||||
|
||||
|
|
@ -140,21 +170,38 @@ XP/스테이지 ≈ (7×8)+(8×12)+(2×30)+80 = 56+96+60+80 = **292 XP**
|
|||
StageDepth = 현재 스테이지 번호 (1~5+)
|
||||
RareWeight = BaseRareWeight + (StageDepth - 1) × 5%
|
||||
→ Stage 1 보스: Rare 15%, Stage 3 보스: Rare 25%, Stage 5 보스: Rare 35%
|
||||
|
||||
// 보물상자 대체 보상 (각성 조건 미충족 시)
|
||||
Stage 1~2: 재화 60% / 쿼터 회복 30% / 경험치 10%
|
||||
Stage 3~5: 재화 40% / 쿼터 회복 40% / 경험치 20% (후반일수록 회복 가치 상승)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. 어뷰징 경계값 초기 가드 (Phase 3-C 상세 위임)
|
||||
## 6. 어뷰징 경계값 초기 가드 (BT7-Plan 재작성)
|
||||
|
||||
본 단계에서는 **명백한 어뷰징 패턴**에 대한 1차 가드만 정의. 상세 밸런싱은 Phase 3-C.
|
||||
|
||||
| 어뷰징 패턴 | 초기 가드 | Phase 3-C 이관 |
|
||||
|---|---|---|
|
||||
| **체력 회복 스팸** | 라이프 1 구조상 회복 없음 (04_전투 §3-1). 회복 아이템 도입 시 1회 제한 쿨다운 60초 기본 가이드 | 회복 아이템 도입 여부 결정 후 |
|
||||
| **Experience Delay 악용** | 적을 죽이지 않고 대기하여 보스 전 미레벨업 유도 → 보스 처치 XP 80으로 Rare 레벨 진입. 가드: 보스 XP 적용 전 레벨업 차단 (보스 레벨 기준 픽 산정) | XP 처리 순서 코드 레벨 |
|
||||
| **카드 배율 무한 스택** | 동일 카드 재픽 배율 상한 ×1.5 하드캡 (§4) | 카드 시스템 구현 후 수치 조정 |
|
||||
| **회복 카드 스팸 (P13·P14·P15·P16)** | (1) 쿼터 회복량 감소 곡선: 같은 카드 스택마다 회복량 × 0.8. (2) 회복 쿨다운 기본 60초, 카드 효과로 최소 30초 이하 금지. (3) 최대 하트 수 상한 **하드캡 5개**. (4) P15·P16 중복 스택 시 효과 중첩 X (각 카드 별도 계산, 둘 다 Lv.5 = +2 하트) | 회복 아이템 도입 여부 결정 후 |
|
||||
| **보물상자 각성 남발 (P23 재물복 어뷰징)** | P23 Lv.5 풀 스택 시 보물상자 확률 +50% 하드캡. 스테이지당 보물상자 최대 8개 하드캡 | 보물상자 체계 구현 후 |
|
||||
| **Experience Delay 악용** | 적을 죽이지 않고 대기하여 보스 전 미레벨업 유도 → 보스 처치 XP 80 탐 | XP 처리 순서 코드 레벨 |
|
||||
| **카드 배율 무한 스택** | 동일 카드 재픽 Lv.5 도달 시 하드캡. StackLevelFactor 2.0 상한 | 카드 시스템 구현 후 수치 조정 |
|
||||
| **보스 딜레이 패턴** (보스를 일부러 안 죽이고 구간 2 적 파밍) | 보스 방 진입 후 후방 차단 (05_스테이지 §3-2). 방 밖 파밍 불가 구조 | 맵 구현 후 |
|
||||
| **엣지 Push 등반 버그** | 수직 성분 없는 수평 보정만 허용 (01_전투 §9 리스크 5) | 개발팀 구현 시 |
|
||||
| **엣지 Push 등반 버그** | 수직 성분 없는 수평 보정만 허용 | 개발팀 구현 시 |
|
||||
|
||||
### 슬롯 분리 재설계 (v0.1 "10장 하드캡" 폐기)
|
||||
|
||||
**BT7-Plan 확정 방향 6·9 반영** — VS 원작 6/6 슬롯 참고.
|
||||
|
||||
| 슬롯 유형 | 상한 | 근거 |
|
||||
|---|---|---|
|
||||
| **액티브 슬롯** | **6개** | VS 원작 참고. 액티브 15~20종 풀 대비 충분한 다양성 확보 |
|
||||
| **패시브 슬롯** | **6개** | VS 원작 참고. 패시브 25종 풀 대비 선택 집중 유도 |
|
||||
| **각성 슬롯** | **액티브 슬롯 내 진화** (별도 슬롯 아님) | 각성 발동 시 원 액티브가 각성 형태로 대체 |
|
||||
|
||||
슬롯 상한 초과 시 **교체 or 포기 선택 UX** 필수 (ux-designer 이관).
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -171,7 +218,7 @@ RareWeight = BaseRareWeight + (StageDepth - 1) × 5%
|
|||
0 +----+----+----+----+----+----+----+----+----+
|
||||
S1 S2 S3 S4 S5 (스테이지)
|
||||
|
||||
레벨
|
||||
카드 누적 (액티브 + 패시브)
|
||||
9 | ●
|
||||
8 | ●
|
||||
7 | ●
|
||||
|
|
@ -180,20 +227,30 @@ RareWeight = BaseRareWeight + (StageDepth - 1) × 5%
|
|||
4 |●(S1 종료 예상)
|
||||
+----+----+----+----+----
|
||||
S1 S2 S3 S4 S5
|
||||
```
|
||||
|
||||
선형 증가 구조로 스테이지별 레벨 도달이 예측 가능 → 콘텐츠 설계·적 배치 기준 명확.
|
||||
각성 발동 기대치
|
||||
3 | ● (Stage 5 = 다중 각성)
|
||||
2 | ●
|
||||
1 | ● (Stage 3 = 첫 각성)
|
||||
0 |● ─ ─ ●
|
||||
+----+----+----+----+----
|
||||
S1 S2 S3 S4 S5
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 8. 기각안
|
||||
|
||||
1. **기하급수 곡선 `RequiredXP = 100 × 1.4^Lv` 제안 — 기각.** Lv 6에서 요구 XP 537. 5~10분 런 내 Lv 5~6 도달이 사실상 불가. 카드 4장 이상 누적이 불가능해져 축 1 육성 재미 붕괴. 기하급수는 장기 RPG에 적합.
|
||||
2. **순수 선형 `RequiredXP = 100 고정` 제안 — 기각.** 모든 레벨업이 동일 시간 → 긴장감·성취감 없음. 후반 레벨업이 쉬워서 고레벨 카드(Rare·Epic) 도달 너무 빠름 → 초반 Common 카드 의미 약화.
|
||||
3. **스테이지마다 XP 초기화 — 기각.** 런 내 성장(축 A)의 흐름을 스테이지 경계에서 끊음. 레벨·카드는 다음 스테이지에 **연속 계승**이 03_진행_시스템 설계 의도. 전손은 사망 시에만.
|
||||
4. **보스 XP 0 (보스는 아이템만 드롭) — 기각.** 보스 처치 후 즉각 보상감이 없어 클라이맥스 감정 약화. XP 80으로 "보스 잡으면 거의 레벨업" 피드백 유지.
|
||||
5. **Epic 카드 Lv 3 등장 허용 — 기각.** 초회차 첫 스테이지에서 Epic 빌드 완성 가능 → 게임 난이도 즉시 붕괴. Lv 4+ 하드캡 유지.
|
||||
6. **드로우 3픽 → 2픽 제안 — 기각.** 03_진행_시스템 기각안 4와 동일 근거. 선택 긴장·시너지 탐색 최소 임계는 3장.
|
||||
1. **기하급수 곡선 `RequiredXP = 100 × 1.4^Lv` 제안 — 기각 (현행 유지).** Lv 6에서 요구 XP 537. 5~10분 런 내 Lv 5~6 도달 불가. 기하급수는 장기 RPG에 적합.
|
||||
2. **순수 선형 `RequiredXP = 100 고정` 제안 — 기각 (현행 유지).** 긴장감 없음, 고레벨 카드 도달 너무 빠름.
|
||||
3. **스테이지마다 XP 초기화 — 기각 (현행 유지).** 런 내 성장 흐름 연속 보장.
|
||||
4. **보스 XP 0 (보스는 아이템만 드롭) — 기각 (현행 유지).** 보스 처치 후 즉각 보상감 유지.
|
||||
5. **"Epic 카드 Lv 3 등장 허용" 기각 — 폐기 (BT7-Plan 구조 변화).** Epic·Rare·Common 레어리티 구조 자체 폐기. 액티브·패시브 2축으로 대체. v0.1 기각안 5는 **구조 변화로 실효**.
|
||||
6. **"드로우 3픽 → 2픽 제안" — 기각 (현행 유지).** 선택 긴장 최소 임계 3장.
|
||||
7. **"레벨업 드로우에 각성 카드 포함" — 기각 (BT7-Plan 신규).** 각성은 보물상자 경로 전용. 레벨업 드로우 포함 시 조건 미충족 각성 카드가 무의미 등장.
|
||||
8. **"보물상자 무제한 스폰" — 기각 (BT7-Plan 신규).** 각성 남발 방지 스테이지당 8개 하드캡 + P23 확률 상한 50% 하드캡.
|
||||
9. **"카드 10장 하드캡 단일 설계 유지" — 기각 (BT7-Plan 번복).** v0.1은 "런 내 카드 최대 10장 하드캡"이었으나 BT7-Plan에서 액티브 6 + 패시브 6 슬롯 분리로 재설계 (VS 원작 참고). **기각안 유지(번복 기록)**.
|
||||
10. **"각성 조건 완화 (액티브 Lv.5만 충족하면 자동 발동)" — 기각 (BT7-Plan 신규).** PD 확정 방향 5 "VS 원작 동일"에 위배. 필요 패시브 + 보물상자 3종 동시 충족 필수.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -201,11 +258,14 @@ RareWeight = BaseRareWeight + (StageDepth - 1) × 5%
|
|||
|
||||
| 항목 | 이유 | 의존 주체 |
|
||||
|---|---|---|
|
||||
| 스테이지당 적 수 실측 | 예상 XP/스테이지 292는 적 15마리 가정 — 실제 배치 확정 후 재산출 | level-designer |
|
||||
| 카드 풀 규모 확정 | 비복원 3장 추출 시 풀이 10장 미만이면 중복 불가 가드 충돌 | system-designer |
|
||||
| 레어리티 수 확정 | Epic 미도입 시 Rare 40%로 병합 필요 | system-designer |
|
||||
| XP 처리 순서 (보스 XP + 레벨업 판정) | 어뷰징 가드 §6과 코드 레벨 정합 | 개발팀 |
|
||||
| 카드 최대 10장 하드캡 UI | 10장 초과 픽 시 교체 or 포기 선택 UX 필요 | ux-designer |
|
||||
| 스테이지당 적 수 실측 | 예상 XP/스테이지 292는 적 15마리 가정 | level-designer |
|
||||
| 카드 풀 규모 확정 (50~65장) | 비복원 3장 추출 시 풀 고갈 시점 검증 | system-designer |
|
||||
| **보물상자 스폰 위치 설계** | 구간별 3회 확정 + 엘리트 드롭 50% 조건 확정 | level-designer |
|
||||
| **각성 발동 빈도 실측** | 스테이지 3에서 첫 각성 가능 설계 검증 | balance·system 교차 |
|
||||
| XP 처리 순서 (보스 XP + 레벨업 판정) | 어뷰징 가드 §6과 코드 정합 | 개발팀 |
|
||||
| **액티브/패시브 슬롯 6/6 UI** | VS 원작 스타일 슬롯 UI | ux-designer |
|
||||
| **슬롯 초과 시 교체·포기 UX** | 6개 초과 픽 시 결정 UI | ux-designer |
|
||||
| 최대 하트 수 상한 5개 검증 | 게임 난이도 붕괴 방지 | 개발팀 실측 |
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -214,3 +274,4 @@ RareWeight = BaseRareWeight + (StageDepth - 1) × 5%
|
|||
| 일시 | 변경 | 이전값 | 이후값 | 사유 | 기안 |
|
||||
|---|---|---|---|---|---|
|
||||
| 2026-04-22 | v0.1 초안 작성 | — | — | PD 지시 BT6-Plan Phase 3-B | 밸런스기획자 |
|
||||
| 2026-04-24 | v0.2 — BT7-Plan 개정 집행 — PD 지시 11건 반영 (액티브/패시브 2축 드로우·슬롯 6/6 분리·보물상자 체계·회복 쿼터 단위 어뷰징 가드·각성 별도 경로) | 기획팀장 |
|
||||
|
|
|
|||
|
|
@ -2,19 +2,19 @@
|
|||
type: 컨텐츠_설계
|
||||
scope: 스킬_카드_풀
|
||||
author: 컨텐츠_기획팀장
|
||||
date: 2026-04-22
|
||||
version: v0.1 (Phase 3-B 파일럿)
|
||||
date: 2026-04-24
|
||||
version: v0.2 (BT7-Plan 개정)
|
||||
project: EerieVillage
|
||||
phase: Phase 3-B
|
||||
data_source: 03_진행_시스템_초안.md (3축 구조) · 04_전투_기본_스펙.md · PD 코어 룰 6
|
||||
status: 예시 셋 — 수치·확률은 balance-designer 이관 · 세계관 톤은 narrative-designer 확정 예정
|
||||
data_source: 03_진행_시스템_초안.md · 04_전투_기본_스펙.md v0.2 · system/01_카드_시스템.md v0.2 · BT7-Plan PD 확정 방향 11건
|
||||
status: 초안 — 수치·확률은 balance-designer 이관 · 세계관 특화 용어는 narrative-designer PD 후속 검토 대기
|
||||
---
|
||||
|
||||
# 01. 스킬 카드 풀
|
||||
|
||||
## 1. 재미 축 연결
|
||||
|
||||
- **축 1 (육성 롤러코스터)**: 카드 풀이 다양할수록 런마다 빌드가 달라지고 "쌓는 재미" 변주 가능
|
||||
- **축 1 (육성 롤러코스터)**: 카드 풀이 다양할수록 런마다 빌드가 달라지고 "쌓는 재미" 변주 가능. 액티브·패시브 각성 3분류 구조가 "조건 형성 → 각성 발동" 카타르시스 제공
|
||||
- 모든 카드는 "왜 이 카드를 픽하고 싶은가"에 답할 수 있어야 한다 (P30)
|
||||
- 명확한 상위호환 금지 — 상황·빌드 방향에 따라 선택지가 유의미하게 달라야 한다
|
||||
|
||||
|
|
@ -22,145 +22,205 @@ status: 예시 셋 — 수치·확률은 balance-designer 이관 · 세계관
|
|||
|
||||
## 2. 카드 체계 개요
|
||||
|
||||
### 2-1. 티어 정의
|
||||
### 2-1. 카드 3분류 (BT7-Plan 확정 방향 3·6)
|
||||
|
||||
| 티어 | 레이블 | 출현 타이밍 | 성격 |
|
||||
|------|--------|-----------|------|
|
||||
| **1티어 (기본)** | 보통 | 초반 레벨업 가중 | 단일 효과, 조합 진입점 |
|
||||
| **2티어 (상급)** | 귀 | 중반 이후 출현 증가 | 복합 효과, 시너지 촉매 |
|
||||
| **3티어 (희귀)** | 신 | 후반 레어 출현 | 빌드 완성자, 강력한 단일 효과 |
|
||||
**구 4티어 레어리티(Common/Uncommon/Rare/Epic) 폐기**. VS 원작 계승 3분류 구조.
|
||||
|
||||
### 2-2. 태그 체계 (시너지 기준 축)
|
||||
| 분류 | 성격 | 규모 | 발동 방식 |
|
||||
|------|------|------|----------|
|
||||
| **액티브** | 자동 발동 무기·스킬 (판정·주기·대미지 보유) | 15~20종 | 장착 즉시 자동 발동. Lv.5까지 스택 업그레이드 |
|
||||
| **패시브** | 상시 스탯·효과 보정 (공격력·속도·하트 수·회피 등) | 25종 이내 | 장착 즉시 상시 적용. Lv.5까지 스택 업그레이드 |
|
||||
| **각성** | 액티브+패시브 조합 충족 시 진화 카드 | 15~20종 | 별도 풀. 조건 충족(액티브 Lv.5 + 필요 패시브 + 보물상자) 시 드로우·발동 |
|
||||
|
||||
**총 카드 풀 규모**: 50~65장.
|
||||
|
||||
### 2-2. 태그 체계 — 일반 RPG 용어 임시 재작성 (BT7-Plan 확정 방향 11)
|
||||
|
||||
**세계관 특화 용어(한자·조선 퇴마)는 PD 후속 검토 대기** — narrative-designer가 추후 일괄 재매핑 예정.
|
||||
|
||||
**속성 태그 (후보 5종)**:
|
||||
|
||||
| 태그 | 의미 |
|
||||
|------|------|
|
||||
| `[공격]` | 기본 공격 강화 계열 |
|
||||
| `[부적]` | 부적·주문 계열 (시전 효과) |
|
||||
| `[주술]` | 지속 시간 효과·DoT 계열 |
|
||||
| `[소환]` | 소환물·분신 계열 |
|
||||
| `[방호]` | 피해 감소·실드·회피 계열 |
|
||||
| `[속도]` | 이동·공격 속도 계열 |
|
||||
| `[회복]` | 실드 회복·생존 연장 계열 |
|
||||
| `[폭발]` | 범위·연쇄 계열 |
|
||||
| `[물리]` | 순수 타격·관통 계열 |
|
||||
| `[화염]` | 지속 대미지·점화 계열 |
|
||||
| `[냉기]` | 둔화·빙결 계열 |
|
||||
| `[번개]` | 연쇄·즉발 계열 |
|
||||
| `[암흑]` | 저주·DoT·약화 계열 |
|
||||
|
||||
**유형 태그 (후보 6종)**:
|
||||
|
||||
| 태그 | 의미 |
|
||||
|------|------|
|
||||
| `[근접]` | 플레이어 주변 판정 |
|
||||
| `[원거리]` | 투사체·원격 판정 |
|
||||
| `[범위]` | AoE·다중 타격 |
|
||||
| `[지속]` | 설치·오라·DoT |
|
||||
| `[회복]` | 하트 쿼터 회복·실드 |
|
||||
| `[방어]` | 피해 감소·회피 확률·i-frame 연장·하트 수 증가 |
|
||||
|
||||
**PD 후속 검토 요청**: 본 태그 후보 5+6 = 11종은 balance·content 작업을 위한 임시 구조. narrative-designer가 세계관 톤(조선 퇴마·한자 네이밍)으로 일괄 재매핑하여 최종 확정할 예정 (PD님 검토·지시 대기).
|
||||
|
||||
---
|
||||
|
||||
## 3. 카드 풀 예시 (32장)
|
||||
## 3. 카드 풀 재분배 (50~65장)
|
||||
|
||||
> **수치 표기 원칙**: "대미지 증가", "속도 상승" 등 방향성만 기재. 구체 수치는 balance-designer 이관.
|
||||
> **수치 표기 원칙**: "대미지 증가", "속도 상승" 등 방향성만 기재. 구체 수치는 balance-designer 이관. 카드 이름은 세계관 톤 보류(v0.1 기존 한자 네이밍 유지 — narrative 영역 건드리지 않음 · PD 지시).
|
||||
|
||||
### [공격 강화] 카테고리 — 기본 공격을 핵심으로 성장시키는 빌드 축
|
||||
### 3-1. 액티브 카드 (15~20종)
|
||||
|
||||
| # | 카드 이름 | 티어 | 태그 | 효과 요지 | 시너지 힌트 |
|
||||
|---|-----------|------|------|-----------|------------|
|
||||
| 01 | **봉황격(鳳凰擊)** | 1 | `[공격]` | 기본 공격 대미지 증가 | `[공격]` 카드 2장 이상 시 추가 효과 |
|
||||
| 02 | **천둥발(天動撥)** | 1 | `[공격]` | 공격 판정 범위 확대 | `[폭발]` 태그와 연계 시 파편 발생 |
|
||||
| 03 | **일격필살(一擊必殺)** | 2 | `[공격]` | 공격 적중 시 일정 확률로 2배 대미지 | `[속도]` 태그와 연계 시 발동률 상승 |
|
||||
| 04 | **학익진(鶴翼陣)** | 2 | `[공격]` `[폭발]` | 공격 시 좌우 부채꼴 범위 추가 판정 | `[부적]` 태그 보유 시 넓어짐 |
|
||||
| 05 | **천지신명(天地神明)** | 3 | `[공격]` `[폭발]` | 공격마다 지면에 충격파 발생 | 단독 채용 시에도 강력한 완성자 |
|
||||
**자동 발동형 무기·스킬**. 기본 공격 강화 효과(구 v0.1 [공격] 태그 5장)는 폐기 — 공격 버튼 자체가 제거되었으므로 "기본 공격 강화"는 무의미.
|
||||
|
||||
### [부적] 카테고리 — 시전형 단발 효과. 런 내 "한 방" 카드군
|
||||
| # | 카드 이름 | 태그 | 효과 요지 | 시너지 힌트 |
|
||||
|---|-----------|------|-----------|------------|
|
||||
| A01 | **진언부(眞言符)** | `[원거리]` `[물리]` | 전방에 부적 자동 투척 (주기 N초) | `[물리]` 패시브 시너지 |
|
||||
| A02 | **화염부(火焰符)** | `[원거리]` `[화염]` | 부적 투척 + 화염 DoT 부여 | `[화염]` 누적 시 점화 중첩 |
|
||||
| A03 | **봉인부(封印符)** | `[원거리]` `[암흑]` | 투척 적중 시 행동 정지 (저주) | `[암흑]` 시너지 |
|
||||
| A04 | **뇌격부(雷擊符)** | `[원거리]` `[번개]` `[범위]` | 투척 부적이 연쇄 번개 발생 | 밀집 구간 필살 |
|
||||
| A05 | **학익진(鶴翼陣)** | `[근접]` `[범위]` `[물리]` | 주변 부채꼴 범위 자동 타격 (주기 N초) | `[근접]` 시너지 |
|
||||
| A06 | **독안개(毒霧)** | `[지속]` `[암흑]` | 이동 경로에 독 안개 잔존, 접촉 적 DoT | `[지속]` 중첩 |
|
||||
| A07 | **혼백박멸(魂魄薄滅)** | `[범위]` `[암흑]` | 주기적으로 주변 약화 오라 발생 | 소환·DoT 연계 |
|
||||
| A08 | **저주문(詛呪文)** | `[원거리]` `[암흑]` `[지속]` | 자동 발동 시 적에게 저주 스택, N스택 시 폭발 | 자동 발동 주기 빠를수록 스택 가속 |
|
||||
| A09 | **허수아비(藁人形)** | `[지속]` `[방어]` | 이동 경로에 허수아비 설치, 적 어그로 유도 | `[방어]` 시너지 |
|
||||
| A10 | **분신술(分身術)** | `[근접]` `[물리]` | 분신 1기 자동 공격 | `[물리]` 패시브 공유 |
|
||||
| A11 | **도깨비불소환** | `[원거리]` `[암흑]` `[지속]` | 도깨비불 2기 자동 발동, 랜덤 적 추적 + DoT | `[지속]` 빌드 활성 |
|
||||
| A12 | **쾌속검(快速劍)** | `[근접]` `[물리]` | 전방 연속 베기 (주기 빠름) | `[물리]` 시너지 |
|
||||
| A13 | **천둥발(天動撥)** | `[범위]` `[번개]` | 주변 원형 번개 판정 (주기 N초) | `[번개]` 중첩 |
|
||||
| A14 | **빙결창(氷結槍)** | `[원거리]` `[냉기]` | 투창 자동 발사, 적중 시 둔화 | `[냉기]` 시너지 |
|
||||
| A15 | **귀화(鬼火)** | `[원거리]` `[화염]` `[지속]` | 유도 화염구 자동 발사, 접촉 점화 | `[화염]` 중첩 |
|
||||
| A16 | **일격필살(一擊必殺)** | `[근접]` `[물리]` | 일정 확률 자동 회심 공격 (주기 N초) | `[물리]` 확률 증폭 |
|
||||
| A17 | **결계장벽(結界障壁)** | `[방어]` `[지속]` | 전방 고정 실드 자동 설치, 적 저지 | `[방어]` 시너지 |
|
||||
| A18 | **무영보(無影步)** | `[방어]` `[근접]` | 주기적 짧은 순간 무적 대시 자동 발동 | `[방어]` 시너지 |
|
||||
|
||||
| # | 카드 이름 | 티어 | 태그 | 효과 요지 | 시너지 힌트 |
|
||||
|---|-----------|------|------|-----------|------------|
|
||||
| 06 | **진언부(眞言符)** | 1 | `[부적]` | 전방에 부적 투척, 접촉 몬스터 피해 | `[부적]` 3장 이상 시 관통 판정 |
|
||||
| 07 | **화염부(火焰符)** | 1 | `[부적]` `[주술]` | 부적 적중 시 화염 DoT 부여 | `[주술]` 태그 강화 시 지속 시간 연장 |
|
||||
| 08 | **봉인부(封印符)** | 2 | `[부적]` | 적중 몬스터 일정 시간 행동 정지 | `[소환]` 카드와 조합 시 처치 보너스 |
|
||||
| 09 | **뇌격부(雷擊符)** | 2 | `[부적]` `[폭발]` | 투척 부적이 연쇄 번개로 근접 적 피해 | 밀집 구간 필살기 역할 |
|
||||
| 10 | **천부경문(天符經文)** | 3 | `[부적]` | 화면 전체 부적 전개, 전 적 피해 | 런 마무리 구간 단독 완성자 |
|
||||
**기본 시작 무기 (1종)**: 퇴마사 고유 무기 (VS 원작 캐릭터 고유 무기 대응). v0.1 세부 결정 대기 — balance·content 협의. 기본 무기는 A01~A18 중 1종을 기본 장착 or 별도 카드로 설계.
|
||||
|
||||
### [주술] 카테고리 — 지속 효과·DoT로 "시간이 지날수록 강해지는" 빌드 축
|
||||
### 3-2. 패시브 카드 (25종 이내)
|
||||
|
||||
| # | 카드 이름 | 티어 | 태그 | 효과 요지 | 시너지 힌트 |
|
||||
|---|-----------|------|------|-----------|------------|
|
||||
| 11 | **독안개(毒霧)** | 1 | `[주술]` | 이동 경로에 독 안개 잔존, 접촉 적 DoT | `[주술]` 카드 중복 시 효과 중첩 |
|
||||
| 12 | **혼백박멸(魂魄薄滅)** | 2 | `[주술]` | 주기적으로 주변에 약화 오라 발생 | `[소환]` 태그와 연계 시 소환물도 약화 부여 |
|
||||
| 13 | **저주문(詛呪文)** | 2 | `[주술]` `[부적]` | 공격 적중 적에게 저주 스택 부여, N스택 시 폭발 | `[공격]` 태그로 스택 가속 |
|
||||
| 14 | **사령결계(死靈結界)** | 3 | `[주술]` | 발동 시 범위 내 전 적에게 대형 DoT 적용 | `[주술]` 빌드의 최종 완성자 |
|
||||
**상시 스탯 보정**. 액티브 효율 증폭 + 각성 조건 형성.
|
||||
|
||||
### [소환] 카테고리 — 분신·소환물로 "나를 도와주는 동료" 재미 축
|
||||
| # | 카드 이름 | 태그 | 효과 요지 | 시너지 힌트 |
|
||||
|---|-----------|------|-----------|------------|
|
||||
| P01 | **봉황격(鳳凰擊)** | `[물리]` | 모든 액티브 대미지 증가 | 범용 |
|
||||
| P02 | **화염강화(火焰强化)** | `[화염]` | `[화염]` 태그 액티브 대미지 증가 | `[화염]` 빌드 핵심 |
|
||||
| P03 | **냉기강화(冷氣强化)** | `[냉기]` | `[냉기]` 태그 액티브 대미지 증가 | `[냉기]` 빌드 핵심 |
|
||||
| P04 | **뇌전강화(雷電强化)** | `[번개]` | `[번개]` 태그 액티브 대미지 증가 | `[번개]` 빌드 핵심 |
|
||||
| P05 | **어둠강화(暗黑强化)** | `[암흑]` | `[암흑]` 태그 액티브 대미지 증가 | `[암흑]` 빌드 핵심 |
|
||||
| P06 | **연사술(連射術)** | `[물리]` | 모든 액티브 발동 주기 단축 | 범용 고부가 |
|
||||
| P07 | **광역확장(廣域擴張)** | `[범위]` | 액티브 판정 범위 증가 | `[범위]` 빌드 |
|
||||
| P08 | **투사체증폭(投射體增幅)** | `[원거리]` | `[원거리]` 액티브 투사체 수 증가 | `[원거리]` 빌드 |
|
||||
| P09 | **지속시간연장(持續延長)** | `[지속]` | `[지속]` 액티브 효과 지속시간 증가 | `[지속]` 빌드 |
|
||||
| P10 | **호신부(護身符)** | `[방어]` | 피격 전 1회 흡수 실드 (N초 쿨다운) | 생존력 |
|
||||
| P11 | **질풍보(疾風步)** | — | 플레이어 이동 속도 상승 | 회피 보조 |
|
||||
| P12 | **도약강화(跳躍强化)** | — | 점프 높이 상승 | 회피 보조 |
|
||||
| P13 | **단전수련(丹田修練)** | `[회복]` | 적 처치 시 소량 쿼터 회복 (N킬당 1/4 하트) | 회복 빌드 |
|
||||
| P14 | **감로수(甘露水)** | `[회복]` | 일정 시간마다 쿼터 자동 재생 | `[방어]` 시너지 |
|
||||
| P15 | **생명의 꽃(生命之花)** | `[방어]` `[회복]` | **최대 하트 수 +1** (런 내) | 생존 빌드 핵심 (각성 조건 패시브 다수에 포함) |
|
||||
| P16 | **강철심장(鋼鐵心臟)** | `[방어]` | **최대 하트 수 +1** (런 내) | 생존 빌드 (P15와 중첩 가능) |
|
||||
| P17 | **부적방패(符籍防牌)** | `[방어]` | 피해 감소 % | 범용 생존 |
|
||||
| P18 | **회피술(回避術)** | `[방어]` | 회피 확률 % | 생존 빌드 |
|
||||
| P19 | **심안(心眼)** | — | i-frame 지속시간 연장 | 생존 빌드 |
|
||||
| P20 | **도주경공(逃走輕功)** | — | 피격 시 순간 가속 | 생존 보조 |
|
||||
| P21 | **쾌보술(快步術)** | — | `[근접]` 액티브 발동 주기 단축 | `[근접]` 빌드 |
|
||||
| P22 | **선견지명(先見之明)** | — | 경험치 획득량 증가 | 성장 가속 |
|
||||
| P23 | **재물복(財物福)** | — | 보물상자 발견 확률 증가 | 각성 빌드 핵심 |
|
||||
| P24 | **집중술(集中術)** | — | 크리티컬 확률 % | 대미지 빌드 |
|
||||
| P25 | **폭풍혼(暴風魂)** | — | 크리티컬 대미지 배율 증가 | 대미지 빌드 |
|
||||
|
||||
| # | 카드 이름 | 티어 | 태그 | 효과 요지 | 시너지 힌트 |
|
||||
|---|-----------|------|------|-----------|------------|
|
||||
| 15 | **허수아비(藁人形)** | 1 | `[소환]` | 이동 경로에 허수아비 설치, 적 어그로 유도 | `[방호]` 태그와 연계 시 내구도 강화 |
|
||||
| 16 | **분신술(分身術)** | 2 | `[소환]` `[공격]` | 분신 1기 소환, 기본 공격 동시 수행 | `[공격]` 카드 적용 범위 공유 |
|
||||
| 17 | **도깨비불소환** | 2 | `[소환]` `[주술]` | 도깨비불 2기 소환, 랜덤 적 추적 및 DoT | `[주술]` 빌드의 활성화 트리거 역할 |
|
||||
| 18 | **산신령강림(山神靈降臨)** | 3 | `[소환]` | 강력 소환물 1기 등장, 자동 공격·높은 내구도 | 소환 빌드 최종 완성자 |
|
||||
**주요 변경점**:
|
||||
- **P15·P16 최대 하트 수 증가 신설** — BT7-Plan 확정 방향 7 구현
|
||||
- **P23 보물상자 확률 증가 신설** — 각성 빌드 핵심 카드
|
||||
- `[방호]`·`[회복]` 실효 수치는 **쿼터 단위 명시** — "실드 소량 회복 = 1 쿼터" 등 (balance-designer 튜닝)
|
||||
|
||||
### [방호] 카테고리 — 라이프 1 전제에서의 "실질적 생존 연장" 수단
|
||||
### 3-3. 각성 카드 (15~20종)
|
||||
|
||||
| # | 카드 이름 | 티어 | 태그 | 효과 요지 | 시너지 힌트 |
|
||||
|---|-----------|------|------|-----------|------------|
|
||||
| 19 | **호신부(護身符)** | 1 | `[방호]` | 피격 전 1회 흡수 실드 생성 (N초 쿨타임) | 단독 채용 시도 고생존 기여 |
|
||||
| 20 | **부적방패(符籍防牌)** | 1 | `[방호]` `[부적]` | 부적 투척 후 일정 시간 회피율 상승 | `[부적]` 빌드의 부산물 생존력 |
|
||||
| 21 | **무영보(無影步)** | 2 | `[방호]` `[속도]` | 짧은 순간 무적 대시 추가 | `[속도]` 태그 보유 시 거리 증가 |
|
||||
| 22 | **결계장벽(結界障壁)** | 2 | `[방호]` | 발동 시 전방 고정 실드 설치 | `[소환]` 태그와 조합 시 소환물 뒤 자동 배치 |
|
||||
| 23 | **천지음양방호(天地陰陽)** | 3 | `[방호]` | 일정 시간 완전 무적 + 무적 해제 시 반경 폭발 | 단독 완성자, 위기 탈출기 |
|
||||
**별도 풀**. 조건 충족(액티브 Lv.5 + 필요 패시브 1개 이상 보유 + 보물상자) 시 발동.
|
||||
|
||||
### [속도] 카테고리 — "빠르게 치고 빠지는" 게릴라 빌드 축
|
||||
각 각성 카드는 `필요_액티브` + `필요_패시브[]` 쌍을 가진다. **필요 패시브 배열에 명시된 카드 중 1개 이상 보유 시 조건 충족**.
|
||||
|
||||
| # | 카드 이름 | 티어 | 태그 | 효과 요지 | 시너지 힌트 |
|
||||
|---|-----------|------|------|-----------|------------|
|
||||
| 24 | **쾌보술(快步術)** | 1 | `[속도]` | 이동 속도 상승 | `[속도]` 3장 이상 시 점프력 추가 상승 |
|
||||
| 25 | **연속타(連續打)** | 2 | `[속도]` `[공격]` | 공격 속도 상승 + 연타 효과 | `[공격]` 태그와 연계 시 연타 횟수 증가 |
|
||||
| 26 | **귀신발걸음(鬼步)** | 2 | `[속도]` | 일정 시간 극속 이동, 적 통과 판정 | `[주술]` 태그와 연계 시 이동 경로에 DoT 잔존 |
|
||||
| # | 각성 이름 | 필요_액티브 | 필요_패시브[] | 효과 요지 |
|
||||
|---|-----------|-------------|---------------|-----------|
|
||||
| AW01 | **천부경문(天符經文)** | A01 진언부 Lv.5 | [P01, P06, P08] | 화면 전체 부적 전개, 전 적 강타 (자동 발동 주기 대폭 단축 + 광역화) |
|
||||
| AW02 | **염라화염(閻羅火焰)** | A02 화염부 Lv.5 | [P02, P09] | 투척 부적 범위 대폭 확장, 지속 점화 스택 무제한 |
|
||||
| AW03 | **천뢰강림(天雷降臨)** | A04 뇌격부 Lv.5 | [P04, P06, P08] | 연쇄 번개 무제한 전파, 화면 내 모든 적 연쇄 |
|
||||
| AW04 | **봉령결계(封靈結界)** | A03 봉인부 Lv.5 | [P05, P09] | 봉인 대상 영구 행동 정지 + DoT 부여 |
|
||||
| AW05 | **학익천진(鶴翼天陣)** | A05 학익진 Lv.5 | [P01, P07] | 360도 전방위 자동 타격 |
|
||||
| AW06 | **독무유역(毒霧流域)** | A06 독안개 Lv.5 | [P05, P09] | 화면 전체 독무 잔존, 무한 DoT |
|
||||
| AW07 | **사령결계(死靈結界)** | A08 저주문 Lv.5 | [P05, P06] | 저주 스택 즉시 최대치 + 폭발 대미지 증폭 |
|
||||
| AW08 | **혼령폭풍(魂靈暴風)** | A07 혼백박멸 Lv.5 | [P05, P07] | 주변 오라가 화면 전체 약화 |
|
||||
| AW09 | **허수군세(藁人軍勢)** | A09 허수아비 Lv.5 | [P01, P10] | 허수아비 다수 자동 소환, 자동 공격 |
|
||||
| AW10 | **분신만화(分身萬華)** | A10 분신술 Lv.5 | [P01, P06] | 분신 3~4기 동시 소환, 액티브 공유 |
|
||||
| AW11 | **산신령강림(山神靈降臨)** | A11 도깨비불소환 Lv.5 | [P05, P09] | 강력 소환물 1기 상주, 자동 타격·높은 내구 |
|
||||
| AW12 | **쾌검비경(快劍秘境)** | A12 쾌속검 Lv.5 | [P01, P06] | 전방 연타 속도 극속, 무한 연격 |
|
||||
| AW13 | **천지진동(天地震動)** | A13 천둥발 Lv.5 | [P04, P07] | 원형 번개 범위 화면 전체 확장 |
|
||||
| AW14 | **빙하시대(氷河時代)** | A14 빙결창 Lv.5 | [P03, P09] | 투창 빙결 영역화, 접촉 적 전부 빙결 |
|
||||
| AW15 | **귀화유성(鬼火流星)** | A15 귀화 Lv.5 | [P02, P08] | 유도 화염구 무한 발사, 화면 전체 점화 |
|
||||
| AW16 | **일격절명(一擊絶命)** | A16 일격필살 Lv.5 | [P24, P25] | 회심 확률·배율 극한 상승 (보스 제외 즉사) |
|
||||
| AW17 | **천지음양방호(天地陰陽)** | A17 결계장벽 Lv.5 | [P10, P15·P16 중 1개] | 완전 무적 시간 상승 + 실드 상시 유지 |
|
||||
| AW18 | **귀보유영(鬼步遊影)** | A18 무영보 Lv.5 | [P11, P18] | 무적 대시 무한 연계, 피격 시 자동 발동 |
|
||||
|
||||
### [회복] 카테고리 — 실드·생존 연장 수단 (라이프 1 전제에서 "버티기" 옵션)
|
||||
|
||||
| # | 카드 이름 | 티어 | 태그 | 효과 요지 | 시너지 힌트 |
|
||||
|---|-----------|------|------|-----------|------------|
|
||||
| 27 | **단전수련(丹田修練)** | 1 | `[회복]` | 적 처치 시 소량 실드 회복 | 처치 수가 많은 플레이 스타일에 효과 극대 |
|
||||
| 28 | **부적치유(符籍治癒)** | 2 | `[회복]` `[부적]` | 부적 적중 처치 시 실드 대량 회복 | `[부적]` 빌드의 생존 보장 |
|
||||
| 29 | **감로수(甘露水)** | 2 | `[회복]` | 일정 시간마다 실드 자동 재생 | `[방호]` 태그와 조합 시 실드 상한 상승 |
|
||||
|
||||
### [특수] 카테고리 — 빌드 방향 전환자·고위험 고보상 카드
|
||||
|
||||
| # | 카드 이름 | 티어 | 태그 | 효과 요지 | 시너지 힌트 |
|
||||
|---|-----------|------|------|-----------|------------|
|
||||
| 30 | **역천지기(逆天之氣)** | 3 | `[공격]` `[폭발]` | 이번 런 처음 10회 공격에 한해 3배 대미지, 이후 공격력 일시 감소 | 초반 스파이크 전략용 |
|
||||
| 31 | **귀문관(鬼門關)** | 3 | `[주술]` `[소환]` | 사방에 문 설치, 30초간 문 통과 몬스터에 즉사 판정 (보스 제외) | 소환·주술 복합 빌드 완성자 |
|
||||
| 32 | **천지개벽(天地開闢)** | 3 | `[공격]` `[폭발]` `[주술]` | 발동 시 전 화면 공격 + 모든 DoT 즉시 폭발 | 전 태그 연계 최종 파이널 카드 |
|
||||
**각성 조합 설계 원칙**:
|
||||
- 각 각성마다 **필요 패시브는 2~3개 후보** 중 1개 이상 보유로 조건 충족
|
||||
- 복수 각성 조건이 동시 충족되는 경우 플레이어 선택 UI 제공 (규칙 시스템 §7 엣지 케이스 3)
|
||||
- 한 런에서 동일 각성 중복 발동 불가
|
||||
|
||||
---
|
||||
|
||||
## 4. 시너지 조합 예시
|
||||
## 4. 시너지 조합 예시 (일반 RPG 용어 기반)
|
||||
|
||||
> 상세 조합 규칙·발동 조건은 system-designer 이관. 아래는 "플레이어가 느끼는 방향성" 기준 예시.
|
||||
|
||||
| 빌드명 | 핵심 카드 | 컨셉 |
|
||||
|--------|-----------|------|
|
||||
| **부적 스패머** | 진언부·화염부·부적방패·부적치유 | 부적을 쏟아부으며 생존까지 해결 |
|
||||
| **주술 소각** | 독안개·저주문·사령결계 | 모든 적에게 DoT 누적 후 폭발 |
|
||||
| **분신 군주** | 분신술·도깨비불소환·산신령강림 | 소환물로 화면을 점령 |
|
||||
| **속도 게릴라** | 쾌보술·연속타·귀신발걸음 | 빠르게 치고 빠지는 히트앤런 |
|
||||
| **천부경 오버로드** | 천부경문·천지개벽·역천지기 | 3티어 중심 고위험 고보상 |
|
||||
| 빌드명 | 핵심 카드 | 컨셉 | 예상 각성 |
|
||||
|--------|-----------|------|----------|
|
||||
| **화염 폭격수** | A02·A15·P02·P09 | 화염 DoT 지속 누적 | AW02 or AW15 |
|
||||
| **번개 연쇄술사** | A04·A13·P04·P06·P08 | 번개 연쇄로 화면 소탕 | AW03 or AW13 |
|
||||
| **암흑 저주사** | A03·A06·A08·P05·P09 | 저주·독으로 DoT 누적 | AW04 or AW06 or AW07 |
|
||||
| **분신 군주** | A09·A10·A11·P01·P10 | 소환물로 화면 점령 | AW09 or AW10 or AW11 |
|
||||
| **회피 게릴라** | A12·A18·P11·P18·P19 | 빠른 공격 + 무적 대시 | AW12 or AW18 |
|
||||
| **철벽 생존** | A17·P10·P15·P16·P17 | 최대 하트 3~4 + 상시 실드 | AW17 |
|
||||
| **보물상자 각성 특화** | P23 중심 + 아무 액티브 Lv.5 | 보물상자 발견율 극대화, 다중 각성 | AW 중 조건 충족 시 발동 |
|
||||
|
||||
---
|
||||
|
||||
## 5. 기각안
|
||||
|
||||
1. **"카드별 쿨타임 부여" — 기각.** 로그라이크 카드는 "장착 후 패시브·능동 발동" 구분이 필요하나, 쿨타임 UI는 모바일 기준 인지 부담 과대. 패시브 위주로 설계하고 능동 카드는 별도 슬롯 구조로 격리 검토 → system-designer 이관.
|
||||
2. **"카드 50장 이상 초기 풀" — 기각.** 파일럿에서 과도한 풀은 팀 개발 부하·QA 비용 폭증. MVP 30~35장으로 시작, 업데이트 확장 구조 채택. 단 확장 용이하도록 태그 체계를 미리 확정.
|
||||
3. **"동일 카드 중복 픽 시 즉시 2배 효과" — 기각.** 밸런스 붕괴 위험. 동일 카드 재픽은 "레벨 업" 형태로 처리(상세는 Phase 3-B system-designer 결정). 즉시 2배는 단일 카드 과의존 빌드 고착화 원인.
|
||||
4. **"카드 판매·재료화 메카닉" — 기각.** 파츠 교체식(코어 룰 8)과 역할 혼선. 카드는 "픽 or 포기" 이분법 유지. 재화 연동은 Phase 3-C BM 설계에서 별도 검토.
|
||||
1. **"카드별 쿨타임 UI 표시" — 기각 (BT7-Plan 의미 변화).** v0.1은 "패시브 위주 설계, 능동 카드는 별도 슬롯 격리 검토"였으나 BT7-Plan에서 **모든 공격을 자동 발동으로 전환**하여 쿨타임 UI 필요성이 근본 변화. 액티브 카드는 각자 내부 발동 주기(쿨다운)를 가지지만 **플레이어에게 쿨다운 UI를 노출할 필요 없음** (수동 발동 아님). VS 원작과 동일 — 카드 슬롯 아이콘·Lv 표기만 HUD 반영.
|
||||
|
||||
2. **"카드 50장 이상 초기 풀" — 기각 (BT7-Plan 번복).** v0.1은 "30~35장 MVP"로 제한했으나, BT7-Plan에서 액티브 15~20 + 패시브 25 + 각성 15~20 = 총 50~65장으로 명시 확장. 3분류 구조 + 각성 조합 설계상 최소 풀 규모가 필요. **기각안 유지(번복 기록)**.
|
||||
|
||||
3. **"동일 카드 중복 픽 시 즉시 2배 효과" — 기각 (현행 유지 + Lv.5 확장).** 밸런스 붕괴 위험. 동일 카드 재픽은 "Lv 업"(최대 Lv.5) 형태로 처리. 즉시 2배는 단일 카드 과의존 빌드 고착화 원인.
|
||||
|
||||
4. **"카드 판매·재료화 메카닉" — 기각 (현행 유지).** 파츠 교체식(코어 룰 8)과 역할 혼선. 카드는 "픽 or 포기" 이분법 유지. 재화 연동은 Phase 3-C BM 설계에서 별도 검토.
|
||||
|
||||
5. **"4티어 레어리티 체계 (Common/Uncommon/Rare/Epic) 유지" — 기각 (BT7-Plan 신규).** PD 2026-04-24 확정 방향 4에서 "티어 3→4 변경 폐기" 명시 + 확정 방향 3에서 "액티브+패시브=각성" 구조 확정. 레어리티 체계 자체 폐기. 3분류 구조로 통일.
|
||||
|
||||
6. **"각성 카드를 레벨업 드로우에 포함" — 기각 (BT7-Plan 신규).** PD 확정 방향 10 "각성은 별도 풀. 조건 충족 시 드로우·보물상자 획득으로 발동" 명시.
|
||||
|
||||
7. **"기본 공격 강화 카드 유지 (구 v0.1 [공격] 태그 5장)" — 기각 (BT7-Plan 신규).** PD 확정 방향 2에서 공격 버튼 자체 폐기 (VS 순수형). "기본 공격 강화" 개념 자체 무의미화. 해당 5장은 액티브 카테고리에 재배치되거나 패시브 형태로 재해석.
|
||||
|
||||
---
|
||||
|
||||
## 6. balance-designer 이관 항목
|
||||
|
||||
- 티어별 출현 가중치 수치 (레벨 구간별 확률 테이블)
|
||||
- 카드별 효과 수치 (대미지 배율·지속 시간·쿨타임·스택 한도)
|
||||
- 액티브·패시브 출현 가중치 수치 (레벨 구간별 확률 테이블)
|
||||
- 각성 발동 시 대미지·효과 강도 수치
|
||||
- 카드별 효과 수치 (대미지 배율·지속 시간·쿨다운·스택 한도·쿼터 회복량)
|
||||
- 시너지 트리거 조건 (태그 N장 이상 임계)
|
||||
- 3티어 카드 출현 구간 제한 설계
|
||||
- 각성 카드 필요_패시브 배열 최종 조정 (조건 난이도 vs 발동 빈도 균형)
|
||||
- 보물상자 스폰 조건·빈도·대체 보상 수치
|
||||
- 최대 하트 수 상한 (초기 권고 3~5개)
|
||||
- Lv.5 이상 재픽 시 보상 방식 (재화 vs 랜덤 변형)
|
||||
|
||||
## 7. narrative-designer 이관 항목
|
||||
## 7. narrative-designer 이관 항목 (PD 후속 검토 대기)
|
||||
|
||||
- 카드 네이밍 최종 확정 (조선 퇴마 세계관 고증 · 한자 표기 통일)
|
||||
- 카드 플레이버 텍스트 (짧은 설명 1~2줄, 세계관 맥락)
|
||||
- "진언·경문·부적·주술" 용어 계보 정리
|
||||
- **태그 세계관 재매핑** — 일반 RPG 용어(물리/화염/냉기/번개/암흑/근접/원거리/범위/지속/회복/방어 11종) → 조선 퇴마 특화 용어로 일괄 재매핑 (PD님 BT7-Plan 확정 방향 11에서 "나중에 일괄 재매핑" 명시)
|
||||
- 각성 카드 플레이버 텍스트 (조선 퇴마 세계관 맥락)
|
||||
- "진언·경문·부적·주술" 용어 계보 정리 — narrative 01·02·03 현행 유지 + 카드 네이밍만 필요 시 조정
|
||||
|
||||
**주의**: 카드 한자 네이밍(진언부·화염부·봉황격 등)은 **현행 유지** (PD 특별 주의 — narrative 영역 건드리지 않음). 태그 용어만 추후 재매핑 대상.
|
||||
|
||||
## 8. 변경 이력
|
||||
|
||||
| 일시 | 변경 | 사유 | 기안 |
|
||||
|------|------|------|------|
|
||||
| 2026-04-22 | v0.1 파일럿 예시 셋 32장 작성 | PD 지시 BT6-Plan Phase 3-B | 컨텐츠 기획팀장 |
|
||||
| 2026-04-24 | v0.2 — BT7-Plan 개정 집행 — PD 지시 11건 반영 (3분류 구조·50~65장 확장·Lv.5·각성 조합·일반 RPG 태그·하트 수 증가 패시브·보물상자 확률 패시브) | 기획팀장 |
|
||||
|
|
|
|||
|
|
@ -2,12 +2,12 @@
|
|||
type: 시스템_설계
|
||||
scope: 카드_시스템
|
||||
author: system-designer
|
||||
date: 2026-04-22
|
||||
version: v0.1
|
||||
date: 2026-04-24
|
||||
version: v0.2 (BT7-Plan 개정)
|
||||
project: EerieVillage (기묘한 고을 : 조선퇴마뎐 / EerieVillage: Joseon Exorcist)
|
||||
phase: Phase 3-B
|
||||
data_source: 03_진행_시스템_초안.md §3 / PD 코어 룰 6·7
|
||||
status: 핵심 메카닉 골격 확정 — 효과 리스트·수치는 content-designer·balance-designer 이관
|
||||
data_source: 03_진행_시스템_초안.md §3 / PD 코어 룰 6·7 / BT7-Plan PD 확정 방향 11건 (2026-04-24)
|
||||
status: BT7-Plan 개정 반영 — 액티브/패시브/각성 3분류·Lv.5 확장·각성 발동 조건
|
||||
---
|
||||
|
||||
# 01. 카드 시스템
|
||||
|
|
@ -15,13 +15,14 @@ status: 핵심 메카닉 골격 확정 — 효과 리스트·수치는 content-d
|
|||
## 1. 목적
|
||||
|
||||
**이 시스템이 풀고자 하는 플레이어 문제**
|
||||
"레벨업마다 무언가 의미 있는 선택을 했다는 느낌, 그리고 내 빌드가 점점 나만의 것이 되는 느낌"을 제공한다.
|
||||
PD 코어 룰 6(레벨업 시 3장 중 1장 선택·조합 육성)은 이 경험의 구조적 기반이다. 카드 시스템은 그 구조를 완결한다.
|
||||
"레벨업마다 무언가 의미 있는 선택을 했다는 느낌, 그리고 내 빌드가 점점 나만의 것이 되는 느낌, 그리고 조건을 만족했을 때 발동하는 각성의 카타르시스"를 제공한다.
|
||||
PD 코어 룰 6(레벨업 시 3장 중 1장 선택·조합 육성) + BT7-Plan 확정 방향 2·3·4·5·6·9·10은 이 경험의 구조적 기반이다. 카드 시스템은 그 구조를 완결한다.
|
||||
|
||||
**제공하는 경험**
|
||||
- 픽 순간마다 "이게 맞는 선택인가?" 의 짧은 긴장
|
||||
- 카드가 쌓일수록 내 빌드가 강해지는 성장 곡선의 체감
|
||||
- 동일 덱으로도 달라지는 시너지 조합에서 오는 재발견 재미
|
||||
- 픽 순간마다 "액티브를 강화할까, 패시브를 쌓아 각성 조건을 노릴까?"의 육성 경로 긴장
|
||||
- 카드가 쌓일수록 내 빌드(장착 액티브 + 패시브 조합)가 강해지는 성장 곡선의 체감
|
||||
- 각성 조건 충족 + 보물상자 획득 순간의 "기다림이 보상받는" 카타르시스
|
||||
- 동일 덱으로도 달라지는 액티브·패시브·각성 조합 재발견 재미
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -30,11 +31,15 @@ PD 코어 룰 6(레벨업 시 3장 중 1장 선택·조합 육성)은 이 경험
|
|||
```
|
||||
레벨업 트리거
|
||||
↓
|
||||
카드 풀에서 3장 무작위 드로우 (추첨 전 중복 제거)
|
||||
카드 풀에서 3장 무작위 드로우 (액티브·패시브 2축, 각성은 별도 풀)
|
||||
↓
|
||||
픽 UI 표시 — 플레이어가 1장 선택 (강제)
|
||||
↓
|
||||
선택 카드 → 빌드 슬롯에 장착 / 동일 카드 재픽 시 → 업그레이드 처리
|
||||
선택 카드 → 빌드 슬롯에 장착 / 동일 카드 재픽 시 → 스택 업그레이드 (최대 Lv.5)
|
||||
↓
|
||||
[병행] 스테이지 진행 중 보물상자 발견·획득
|
||||
↓
|
||||
각성 발동 판정: 액티브 Lv.5 + 필요 패시브 1개 이상 보유 시 → 각성 카드 풀에서 드로우·발동
|
||||
↓
|
||||
런 종료(보스 클리어 or 사망) → 카드 전손 · 빌드 초기화
|
||||
```
|
||||
|
|
@ -45,46 +50,92 @@ PD 코어 룰 6(레벨업 시 3장 중 1장 선택·조합 육성)은 이 경험
|
|||
|
||||
## 3. 규칙
|
||||
|
||||
### 규칙 1. 카드 풀 3티어 구조
|
||||
### 규칙 1. 카드 3분류 구조 — 액티브 / 패시브 / 각성 (BT7-Plan 확정 방향 3·6)
|
||||
|
||||
| 티어 | 명칭 | 해제 조건 | 특징 |
|
||||
|------|------|----------|------|
|
||||
| T1 | 기본 | 런 시작 시 항상 활성 | 단순 효과, 개수 多 |
|
||||
| T2 | 숙련 | 누적 레벨 N 이상 도달 시 드로우 풀 합류 | 중복·시너지 조건 포함 효과 |
|
||||
| T3 | 각성 | 런 내 지정 조건 충족 시 한정 등장 | 빌드 방향 전환급 효과, 개수 少 |
|
||||
**구 3티어 구조(T1 기본·T2 숙련·T3 각성) 폐기**. VS 원작 계승 3분류로 재설계.
|
||||
|
||||
- N 수치는 balance-designer 영역. 구조상 T3는 "후반부에만 보인다"는 경험 설계.
|
||||
- T3는 항상 3장 중 1장 이하로 등장한다. T3가 2장 이상 동시 출현 시 1장으로 대체한다.
|
||||
| 분류 | 정의 | 역할 | 규모 |
|
||||
|------|------|------|------|
|
||||
| **액티브** | 자동 발동 무기·스킬 (판정 박스·주기·대미지 보유) | 적 처치의 실질 DPS 공급 | 15~20종 |
|
||||
| **패시브** | 스탯·효과 상시 보정 (공격력·속도·하트 수·회피 등) | 액티브 효율 증폭 + 각성 조건 형성 | 25종 이내 |
|
||||
| **각성** | 액티브+패시브 조합 충족 시 발동하는 진화 카드 | 빌드 완성자·클라이맥스 | 15~20종 |
|
||||
|
||||
### 규칙 2. 픽 알고리즘 — 가중 무작위
|
||||
**총 카드 풀 규모**: 50~65장 (구 32장 대비 확장).
|
||||
|
||||
1) 현재 런의 레벨(진행도)에 따라 T1/T2/T3 비율 가중을 결정한다.
|
||||
2) 가중 비율 안에서 **현재 빌드의 주력 태그 2개**에 해당하는 카드에 추가 가중치를 부여한다.
|
||||
3) 이미 빌드에 편입된 카드는 재픽 후보에서 제외하되, **업그레이드 가능 카드(동일 카드 2회 픽 조건)**는 재등장 허용한다.
|
||||
4) 3장은 서로 다른 티어 조합이 되도록 필터를 우선 적용하되, 같은 티어만 남을 경우 필터를 해제한다.
|
||||
### 규칙 2. 픽 알고리즘 — 액티브·패시브 2축 드로우
|
||||
|
||||
1) 레벨업 시 **액티브·패시브 2축에서** 가중 무작위로 3장 드로우 (각성은 별도 경로).
|
||||
2) 현재 런의 레벨·빌드 태그에 따라 액티브 vs 패시브 비율 가중을 결정한다 (상세: `balance/02_레벨업_곡선.md` v0.2 §4).
|
||||
3) **현재 빌드의 주력 태그 2개**에 해당하는 카드에 추가 가중치를 부여한다.
|
||||
4) 이미 빌드에 편입된 카드는 재픽 후보에서 제외하되, **업그레이드 가능 카드(동일 카드 재픽 조건, Lv.5 미만)**는 재등장 허용한다.
|
||||
5) 3장은 액티브·패시브가 혼합되도록 필터를 우선 적용하되, 풀 고갈 시 필터를 해제한다.
|
||||
|
||||
가중치 수치와 태그 연동 강도는 balance-designer 영역.
|
||||
|
||||
### 규칙 3. 태그 기반 시너지 체계
|
||||
### 규칙 3. 태그 기반 시너지 체계 (일반 RPG 용어 임시 재작성)
|
||||
|
||||
카드 하나는 반드시 **1~2개의 태그**를 가진다.
|
||||
|
||||
**태그 축 2종**:
|
||||
**태그 체계는 임시 일반 RPG 용어로 재작성**한다 (BT7-Plan 확정 방향 11). PD 후속 검토용 **5개 속성 태그 + 6개 유형 태그 후보**:
|
||||
|
||||
1) **속성 태그** (예: 불·물·목·금·토 — 조선 오행 기반, 실제 명칭은 content-designer 확정)
|
||||
2) **유형 태그** (예: 근거리·원거리·결계·부적·주술)
|
||||
**속성 태그 (후보 5종)**:
|
||||
1) `[물리]` — 순수 타격·관통
|
||||
2) `[화염]` — 지속 대미지·점화
|
||||
3) `[냉기]` — 둔화·빙결
|
||||
4) `[번개]` — 연쇄·즉발
|
||||
5) `[암흑]` — 저주·DoT·약화
|
||||
|
||||
시너지 발동 조건: 동일 태그 카드 K장 이상 빌드에 편입 시 패시브 효과 추가 발동.
|
||||
K 수치와 효과 내용은 balance-designer·content-designer 영역.
|
||||
**유형 태그 (후보 6종)**:
|
||||
1) `[근접]` — 플레이어 주변 판정
|
||||
2) `[원거리]` — 투사체·원격
|
||||
3) `[범위]` — AoE·다중 타격
|
||||
4) `[지속]` — 설치·오라·DoT
|
||||
5) `[회복]` — 하트 쿼터 회복·실드
|
||||
6) `[방어]` — 피해 감소·회피 확률·i-frame 연장
|
||||
|
||||
**세계관 특화 용어 (한자 네이밍·조선 퇴마 톤)는 PD 후속 검토 대기** — narrative-designer가 BT7-Plan 11번 지시에 따라 추후 일괄 재매핑 예정. 현 v0.2는 일반 RPG 용어 후보만 기록하며, PD님 검토·확정 시점에 narrative-designer 작업으로 전환.
|
||||
|
||||
**시너지 발동 조건**: 동일 태그 카드 K장 이상 빌드에 편입 시 패시브 효과 추가 발동. K 수치와 효과 내용은 balance-designer·content-designer 영역.
|
||||
|
||||
태그 2축 설계로 "속성 빌드"와 "유형 빌드" 두 방향의 조합이 가능하며, 양 축을 동시에 쌓는 교차 빌드가 제3의 방향이 된다.
|
||||
|
||||
### 규칙 4. 업그레이드 체계 — 동일 카드 스택형
|
||||
### 규칙 4. 업그레이드 체계 — 동일 카드 스택 Lv.1→Lv.5 (BT7-Plan 확정 방향 9)
|
||||
|
||||
- 같은 카드를 2회째 픽하면 즉시 **Lv.1 → Lv.2** 업그레이드.
|
||||
- 최대 Lv.3까지 허용. Lv.3 이상에서 동일 카드 재픽 시 **재화 보상 or 랜덤 변형**으로 처리한다.
|
||||
(재화 보상 vs 랜덤 변형 2가지 처리 방식의 선택은 balance-designer 판단 — 재화는 BM 연계, 변형은 빌드 복잡도 증가)
|
||||
- 업그레이드는 카드 기본 효과의 **수치 상향 또는 추가 트리거** 중 하나. 두 효과 모두 부여하지 않는다.
|
||||
**구 Lv.3 상한 폐기**. VS 원작 Lv.5 체계 계승.
|
||||
|
||||
- 같은 액티브·패시브 카드를 재픽할 때마다 **Lv.N → Lv.N+1** 업그레이드 (최대 Lv.5)
|
||||
- Lv.5 도달 시 해당 액티브는 **각성 조건 중 "액티브 Lv.5"를 충족**한다 (규칙 5)
|
||||
- Lv.5 이상에서 동일 카드 재픽 시 **재화 보상 or 랜덤 변형**으로 처리 (balance-designer 판단)
|
||||
- 업그레이드는 카드 기본 효과의 **수치 상향 또는 추가 트리거** 중 하나 부여 (양자 동시 부여 금지)
|
||||
|
||||
### 규칙 5. 각성 발동 조건 (VS 원작 동일, BT7-Plan 확정 방향 5·10)
|
||||
|
||||
**각성 카드는 별도 풀에 분리된다**. 조건 충족 시 드로우·보물상자 획득으로 발동.
|
||||
|
||||
```
|
||||
각성 발동 조건 (3종 동시 충족):
|
||||
1. 해당 액티브 카드가 Lv.5 도달
|
||||
2. 각성에 필요한 특정 패시브 카드 1개 이상 보유
|
||||
3. 보물상자 획득
|
||||
→ 세 조건 동시 충족 시 각성 카드 발동 (액티브가 각성 형태로 진화)
|
||||
```
|
||||
|
||||
**각성 카드 데이터 구조**:
|
||||
- 각 각성 카드마다 `필요_액티브` + `필요_패시브[]` 쌍 명시 (`content/01_카드_풀.md` v0.2)
|
||||
- 각성 발동 시 원 액티브는 각성 형태로 대체 (원 액티브 슬롯 점유 유지)
|
||||
- 같은 런에서 동일 각성 중복 발동 불가 (각성 카드는 1회 발동 후 "발동됨" 상태 고정)
|
||||
|
||||
**보물상자 체계**:
|
||||
- 스테이지 진행 중 일정 조건(적 처치 수·특정 위치·엘리트 처치 등)으로 스폰
|
||||
- 획득 시 각성 발동 조건 판정 수행
|
||||
- 조건 불충족 시 대체 보상(재화·경험치·회복 등) 제공 (balance-designer 결정)
|
||||
|
||||
### 규칙 6. 플레이어 HP/하트 증가 메커니즘 (BT7-Plan 확정 방향 7)
|
||||
|
||||
- **패시브 카드·특성으로 최대 하트 수 +1 획득 가능**
|
||||
- **런 내 성장만 유효** — 사망 시 기본 1개로 복귀 (`02_코어_루프` v0.2 §4 상태 보존 매트릭스)
|
||||
- **상한**: balance-designer 결정 (초기 권고 3~5개, 하드캡 필수)
|
||||
- `[방어]` 태그 패시브가 주 공급원. 일부 `[회복]` 태그와 중첩 가능
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -95,7 +146,9 @@ K 수치와 효과 내용은 balance-designer·content-designer 영역.
|
|||
| 대기 | 카드 풀에 있으나 미등장 | 레벨업 드로우 알고리즘이 선택 |
|
||||
| 제시 | 픽 UI에 표시됨 | 플레이어 미선택 시 → 폐기; 선택 시 → 장착 |
|
||||
| 장착 | 빌드 슬롯에 편입, 효과 발동 중 | 동일 카드 재픽 시 → 업그레이드; 런 종료 → 전손 |
|
||||
| 업그레이드 | Lv.2 이상, 강화 효과 발동 | Lv.3에서 동일 카드 재픽 → 보상/변형 분기 |
|
||||
| 업그레이드 (Lv.2~4) | 강화 효과 발동 | 동일 카드 재픽 → Lv 상승; Lv.5 도달 시 → 각성 조건 충족 |
|
||||
| Lv.5 도달 | 각성 조건 중 "액티브 Lv.5" 충족 | 필요 패시브 보유 + 보물상자 획득 → 각성 발동 |
|
||||
| **각성** (신규) | 액티브가 각성 형태로 진화 발동 | 런 종료까지 지속 |
|
||||
| 전손 | 런 종료(사망 or 클리어) 시 소멸 | 다음 런 시작 → 빌드 초기화 |
|
||||
|
||||
---
|
||||
|
|
@ -105,16 +158,20 @@ K 수치와 효과 내용은 balance-designer·content-designer 영역.
|
|||
**입력**
|
||||
- 레벨업 이벤트 (경험치 시스템 or 스테이지 클리어 트리거)
|
||||
- 플레이어 픽 입력 (터치·클릭)
|
||||
- 보물상자 획득 이벤트
|
||||
|
||||
**시스템 반응**
|
||||
- 드로우 알고리즘 즉시 실행 → 픽 UI 표시 (Additive Load 2씬 구조 전제 — 개발팀 03 결정 계승)
|
||||
- 드로우 알고리즘 즉시 실행 → 픽 UI 표시 (Additive Load 2씬 구조 전제)
|
||||
- 픽 결정 즉시 효과 발동 (애니메이션 피드백 포함, 상세는 ux-designer)
|
||||
- 업그레이드 시 기존 카드 아이콘에 레벨 표기 갱신
|
||||
- **각성 발동 시 풀스크린 연출** (액티브·패시브 진화 시각 변환, 상세: `ux/02_HUD_설계.md` v0.2 §3-A)
|
||||
|
||||
**필요한 피드백 종류 (ux-designer 연계)**
|
||||
- 3장 표시 시 각 카드의 태그·레벨·업그레이드 가능 여부를 즉시 파악 가능한 UI
|
||||
- 현재 빌드 태그 분포 시각화 (시너지 진행도 표시)
|
||||
- 3장 표시 시 각 카드의 분류(액티브·패시브)·태그·레벨·업그레이드 가능 여부를 즉시 파악 가능한 UI
|
||||
- 현재 빌드 태그 분포 시각화 (시너지·각성 조건 진행도 표시)
|
||||
- 업그레이드 완료 시 시각·음향 강조
|
||||
- **각성 조건 충족 예고** — 액티브 Lv.5 도달 시 UI에 "각성 대기" 표시
|
||||
- **보물상자 획득 시 각성 발동 강조 연출**
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -122,44 +179,56 @@ K 수치와 효과 내용은 balance-designer·content-designer 영역.
|
|||
|
||||
| 연동 시스템 | 연동 방식 |
|
||||
|------------|----------|
|
||||
| **전투 시스템** (04_전투_기본_스펙) | 장착 카드 효과가 공격 판정·이동에 수식자로 적용 |
|
||||
| **특성 시스템** (02_특성_시스템) | 특성 일부가 픽 알고리즘 가중치 수정 or T2/T3 해제 조건 완화 |
|
||||
| **스테이지 구조** (05_스테이지_구조_초안) | 스테이지 클리어 or 적 처치 누적이 레벨업 트리거 역할 |
|
||||
| **Additive Load 2씬** (개발팀 03) | 픽 UI는 별도 씬 Additive Load로 전투 씬 위에 오버레이 |
|
||||
| **전투 시스템** (04_전투_기본_스펙) | 장착 액티브 카드가 자동 발동 체계에서 발동·대미지 적용. 패시브 카드는 스탯 보정으로 상시 적용 |
|
||||
| **특성 시스템** (02_특성_시스템) | 특성 일부가 픽 알고리즘 가중치 수정 or 각성 조건 완화 (예: "필요 패시브 수 -1") |
|
||||
| **스테이지 구조** (05_스테이지_구조_초안) | 스테이지 클리어·적 처치 누적이 레벨업 트리거. **보물상자 스폰 위치**가 스테이지 설계에 포함 |
|
||||
| **보물상자 체계** (신규) | 스테이지 진행 중 발견·획득. 각성 발동 트리거. 조건 불충족 시 대체 보상 |
|
||||
| **Additive Load 2씬** (개발팀 03) | 픽 UI·각성 발동 UI는 별도 씬 Additive Load로 전투 씬 위에 오버레이 |
|
||||
|
||||
---
|
||||
|
||||
## 7. 엣지 케이스
|
||||
|
||||
1) **카드 풀 소진**: T1·T2 전체가 빌드에 장착되어 드로우 후보 소진 시 → T1 업그레이드 가능 카드로 강제 채움. 풀 규모는 이 상황이 발생하지 않도록 content-designer가 설계해야 한다.
|
||||
2) **T3 조건 충족 카드가 없을 때**: T3 슬롯은 T2 카드로 대체. T3 강제 등장 없음.
|
||||
3) **픽 UI 중 사망 (데미지 입력)**: 픽 UI 표시 중에는 게임 일시정지 처리. 픽 완료 후 전투 재개. (개발팀과 정합 필요 — 이슈 발견 시 C3 보고)
|
||||
4) **동일 런 내 동일 카드 4회 이상 등장**: Lv.3 이후 재픽은 항상 보상/변형 분기로 흡수되므로 무한 업그레이드 루프 없음.
|
||||
1) **카드 풀 소진**: 액티브·패시브 전체가 빌드에 장착되어 드로우 후보 소진 시 → 업그레이드 가능 카드로 강제 채움. 풀 규모(50~65장)로 이 상황이 발생하지 않도록 content-designer가 설계해야 한다.
|
||||
2) **각성 조건 부분 충족 상태에서 보물상자 획득**: 각성 조건 3종 중 일부만 충족 → 각성 발동 없이 **대체 보상**(재화·회복·경험치) 제공. balance-designer 결정.
|
||||
3) **다중 각성 조건 동시 충족**: 한 번의 보물상자 획득으로 복수 각성 조건이 동시 충족 시 → 플레이어에게 **1개 선택 UI 제공**. 동시 발동 금지 (밸런스 붕괴 방지).
|
||||
4) **픽 UI 중 사망 (대미지 입력)**: 픽 UI 표시 중에는 게임 일시정지 처리. 픽 완료 후 전투 재개.
|
||||
5) **동일 런 내 동일 카드 Lv.5 이후 재픽**: 재화 보상 or 랜덤 변형 분기로 흡수되므로 무한 업그레이드 루프 없음.
|
||||
6) **각성 발동 후 필요 패시브 카드 분해·교체 시도**: 각성은 "발동됨" 상태로 고정되므로 영향 없음. 단 패시브 카드 자체는 런 종료까지 유지 (빌드 슬롯 고정).
|
||||
|
||||
---
|
||||
|
||||
## 8. 기각안
|
||||
|
||||
1) **레어리티 3티어(공통·레어·전설) 명칭 체계 — 기각.** 기존 카드게임 언어와 충돌. 조선 퇴마 세계관에 맞는 T1(기본)·T2(숙련)·T3(각성) 명칭으로 대체. 내용상 동형이나 IP 정체성 강화 효과.
|
||||
1) **"레어리티 3티어(공통·레어·전설) 명칭 체계" — 기각 (BT7-Plan 번복).** v0.1에서 "기존 카드게임 언어와 충돌, T1(기본)·T2(숙련)·T3(각성) 명칭"으로 기각했으나, PD 2026-04-24 BT7-Plan에서 **3티어 구조 자체 폐기** + "액티브+패시브=각성" 3분류로 전환. **기각안 유지(번복 기록)**: 원 기각 사유는 PD 지시로 무효화되었으나 설계 역사 보존 목적으로 본 기각안 섹션에 남긴다 (C14-5 히스토리 보존 정신).
|
||||
|
||||
2) **카드 합성 시스템(2장 합쳐 상위 카드) — 기각.** 합성은 별도 합성 UI·재고 관리·합성 레시피 설계를 요구하여 시스템 복잡도 폭증. 동일 카드 스택 업그레이드가 "합성"의 재미를 단순 구조로 대체한다.
|
||||
2) **"HP 막대 도입 기각" (구 04_전투 §8 기각안 1 연계) — 기각 (BT7-Plan 번복).** 원 기각은 "라이프 1 고수"였으나 PD 2026-04-24 BT7-Plan 7에서 "하트 분할 + 카드·성장으로 하트 수 증가"로 전환. 본 시스템 규칙 6에 패시브·특성 하트 수 증가 메커니즘 신설. **기각안 유지(번복 기록)**.
|
||||
|
||||
3) **빌드 슬롯 상한 고정(최대 N장까지만 장착) — 기각.** 슬롯 상한은 "어떤 카드를 버릴까"라는 별도 결정 레이어를 요구. 파일럿 스코프에서는 슬롯 무제한 + 카드 효과 간 상호작용 복잡도로 빌드 깊이를 형성하는 방향이 구현 부담 대비 재미 우위.
|
||||
3) **"카드 합성 시스템(2장 합쳐 상위 카드)" — 기각 (현행 유지).** 합성은 별도 UI·재고·레시피 설계를 요구하여 시스템 복잡도 폭증. 동일 카드 스택 업그레이드(Lv.5까지)가 "합성"의 재미를 단순 구조로 대체한다.
|
||||
|
||||
4) **카드 판매·분해 메카닉(런 중 카드 처분으로 재화 획득) — 기각.** BM 미확정 상태에서 런 내 재화 루프 설계는 범위 초과. Phase 3-C BM 설계 이후 재검토 안건으로 보관.
|
||||
4) **"빌드 슬롯 상한 고정(최대 N장까지만 장착)" — 기각 (현행 유지 + BT7-Plan 의미 변화).** 파일럿 스코프에서 슬롯 무제한 + 카드 효과 간 상호작용 복잡도로 빌드 깊이 형성. 단 **BT7-Plan에서 액티브·패시브 분리**로 VS 원작 6/6 슬롯 분리 참고 가능 — `balance/02_레벨업_곡선.md` v0.2에서 재설계.
|
||||
|
||||
5) **현재 빌드 태그 연동 가중 OFF(완전 무작위 픽) — 기각.** 완전 무작위는 "빌드 방향이 매 픽마다 흔들리는" 경험을 유발, 조합 육성 재미 약화. 태그 연동 가중은 "시너지를 향해 나아가는" 느낌의 구조적 기반이다. 가중 강도만 balance-designer가 조정.
|
||||
5) **"카드 판매·분해 메카닉(런 중 카드 처분으로 재화 획득)" — 기각 (현행 유지).** BM 미확정 상태에서 런 내 재화 루프 설계는 범위 초과. Phase 3-C BM 설계 이후 재검토.
|
||||
|
||||
6) **"현재 빌드 태그 연동 가중 OFF(완전 무작위 픽)" — 기각 (현행 유지).** 완전 무작위는 빌드 방향 흔들림 유발, 조합 육성 재미 약화. 태그 연동 가중이 "시너지를 향해 나아가는" 구조적 기반.
|
||||
|
||||
7) **"각성 카드를 레벨업 드로우 풀에 포함" — 기각 (BT7-Plan 신규).** PD 확정 방향 10에서 "각성 카드는 별도 풀. 조건 충족 시 드로우·보물상자 획득으로 발동"으로 명시. 레벨업 드로우 포함 시 조건 미충족 각성 카드가 무의미 카드로 등장하여 픽 UX 저해.
|
||||
|
||||
8) **"각성 조건 단순화 (액티브 Lv.5만 충족하면 자동 발동)" — 기각 (BT7-Plan 신규).** PD 확정 방향 5는 "VS 원작 동일 — 필요 패시브 + 보물상자"를 명시. 단순화는 각성 카타르시스의 "기다림·빌드 설계" 감정을 파괴. VS 원작 구조 계승 필수.
|
||||
|
||||
---
|
||||
|
||||
## 9. 열린 이슈 (balance·content·ux 이관)
|
||||
## 9. 열린 이슈 (balance·content·ux·narrative 이관)
|
||||
|
||||
1) **[balance]** T1/T2/T3 레벨 구간별 비율 수치 — 픽이 너무 쉽거나 너무 어렵지 않은 곡선 설계 필요.
|
||||
1) **[balance]** 액티브·패시브 드로우 비율 수치 — 레벨 구간별 곡선 설계 (`balance/02_레벨업_곡선.md` v0.2).
|
||||
2) **[balance]** 태그 시너지 발동 K장 임계값 및 효과 강도.
|
||||
3) **[content]** 카드 명칭·효과 텍스트·태그 세트 전체 리스트 — 조선 오행·퇴마 세계관 반영.
|
||||
4) **[content]** T3 해제 조건 텍스트 (런 내 어떤 달성이 T3를 여는가).
|
||||
5) **[ux]** 픽 UI 레이아웃·애니메이션·시너지 진행도 시각화 방식.
|
||||
6) **[balance·content]** Lv.3 이후 재픽 시 재화 보상 vs 랜덤 변형 선택 — BM 방향과 연계하여 결정.
|
||||
3) **[balance]** 최대 하트 수 상한 수치.
|
||||
4) **[balance]** 보물상자 스폰 조건·대체 보상 수치.
|
||||
5) **[content]** 액티브 15~20종 / 패시브 25종 이내 / 각성 15~20종 전체 리스트 (`content/01_카드_풀.md` v0.2).
|
||||
6) **[content]** 각성 카드별 필요_액티브 + 필요_패시브[] 쌍 데이터.
|
||||
7) **[ux]** 픽 UI 레이아웃 (액티브·패시브 구분 표시) · 각성 발동 풀스크린 연출 · 시너지 진행도 시각화 방식.
|
||||
8) **[balance·content]** Lv.5 이상 재픽 시 재화 보상 vs 랜덤 변형 선택 — BM 방향 연계.
|
||||
9) **[narrative]** 태그 용어 세계관 재매핑 (일반 RPG 용어 → 조선 퇴마 특화) — PD 후속 검토 대기.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -168,3 +237,4 @@ K 수치와 효과 내용은 balance-designer·content-designer 영역.
|
|||
| 일시 | 변경 | 사유 | 기안 |
|
||||
|------|------|------|------|
|
||||
| 2026-04-22 | v0.1 시스템 설계 초안 | BT6-Plan Phase 3-B PD 지시 | system-designer |
|
||||
| 2026-04-24 | v0.2 — BT7-Plan 개정 집행 — PD 지시 11건 반영 (액티브/패시브/각성 3분류·Lv.5 확장·각성 발동 조건·하트 수 증가·2축 드로우) | 기획팀장 |
|
||||
|
|
|
|||
|
|
@ -0,0 +1,228 @@
|
|||
---
|
||||
type: 방식_검토
|
||||
scope: 덱빌딩_방식_비교·4티어_개정안
|
||||
author: 기획팀장
|
||||
date: 2026-04-24
|
||||
version: v0.1 (Phase 3-C 방향 검토)
|
||||
project: EerieVillage (기묘한 고을 : 조선퇴마뎐 / EerieVillage: Joseon Exorcist)
|
||||
phase: BT7-Plan (PD 지시 2026-04-24)
|
||||
data_source: 01_게임_컨셉·02_코어_루프·03_진행_시스템_초안·04_전투_기본_스펙·system/01_카드_시스템·content/01_카드_풀·balance/01·02·ux/02
|
||||
status: PD 방향 결정 대기 — 결정 후 system/01·content/01·balance/01·02·ux/02 개정 집행
|
||||
---
|
||||
|
||||
# 03. 덱빌딩 방식 검토 + 4티어 개정안
|
||||
|
||||
## 0. 검토 배경·범위
|
||||
|
||||
PD 2026-04-24 직접 지시 2건:
|
||||
1. 세계관(narrative) 추가 진행 중단 — PD 직접 보완 예정. 본 검토에서 세계관 용어·네이밍은 현행 유지 전제
|
||||
2. **카드 시스템 개정 검토** — (a) 티어 3→4 변경 방향 확정 (b) 덱빌딩 방식을 **Slay the Spire 방식** vs **Vampire Survivors 방식** 중 선정
|
||||
|
||||
**재미 축 연결 (P30)**: 본 검토의 판단 기준은 현 기획 확정된 재미 축 3종이다.
|
||||
- 축 1 (육성 롤러코스터의 카타르시스) — **핵심**
|
||||
- 축 2 (액션 플랫포머의 손맛) — **핵심**
|
||||
- 축 3 (영속 성장의 위안) — 보조
|
||||
|
||||
**유지 제약 (변경 불가)**: 모바일 타겟·라이프 1·사망 시 카드 전손·2D 횡스크롤 플랫포머·근거리 검·i-frame 0.6s·레벨업 3픽 골격. 본 검토는 이 제약 안에서 "카드 효과가 언제·어떻게 발동하는가" 축만 조정한다.
|
||||
|
||||
---
|
||||
|
||||
## 1. 두 방식 구조 비교
|
||||
|
||||
### 1-1. 정의
|
||||
|
||||
| 방식 | 정의 (일반적으로 알려진 범위) |
|
||||
|---|---|
|
||||
| **Slay the Spire 방식** (이하 STS) | 덱 구축형. 카드팩에서 카드를 획득해 덱에 추가, 매 턴 손패 5장 드로우, 에너지 3 소비로 카드 발동, 턴제 전투. 경로 선택형 로그라이크. |
|
||||
| **Vampire Survivors 방식** (이하 VS) | 자동 발동형. 무기·패시브 최대 6·6 슬롯, 레벨업마다 3픽, 무기 5회 강화 시 진화. 기본 공격·무기는 자동 발동, 플레이어 입력은 **이동뿐**. 실시간 서바이버. |
|
||||
|
||||
### 1-2. 5개 관점 매트릭스
|
||||
|
||||
| 관점 | STS | VS |
|
||||
|---|---|---|
|
||||
| **코어 루프** | 턴제 전투에서 카드 드로우·핸드 관리·에너지 분배 | 실시간 전투에서 자동 공격·주기 발동 |
|
||||
| **조작 복잡도** | 카드 선택·타겟 지정·에너지 배분 (중~높음) | 이동만 (극단적으로 낮음) |
|
||||
| **난이도 곡선** | 덱 시너지 이해 심화형. 카드 학습 곡선 가파름 | 무기 시너지 이해형. 진입 장벽 낮음·숙련 상한도 낮음 |
|
||||
| **몰입 축** | 전략·빌드 구상 (사고형 몰입) | 화면 점유 쾌감·수치 폭발 (감각형 몰입) |
|
||||
| **입력 평균 분당** (추정) | 5~15회 (턴 단위) | 0~60회 (이동만, 자유) |
|
||||
|
||||
**핵심 차이**: STS는 **"카드가 곧 행동"** (플레이어가 카드를 써서 공격·방어). VS는 **"카드가 곧 배경 규칙"** (플레이어는 이동만, 카드·무기가 자동 발동).
|
||||
|
||||
### 1-3. EerieVillage 현 설계와의 교차점
|
||||
|
||||
| 현 설계 요소 | STS 호환성 | VS 호환성 |
|
||||
|---|---|---|
|
||||
| 2D 횡스크롤 플랫포머 (축 2 손맛) | **충돌** — STS는 턴제라 실시간 점프·공격 플로우와 호환 불가 | **정합** — VS도 실시간. 단 VS는 탑뷰 고정 |
|
||||
| 근거리 검 1종 + i-frame 0.6s (04_전투 §5·§4-2) | 공격은 카드 사용으로 대체 → 검 공격 개념 소실 | 검 공격은 유지 + 자동 발동 무기·효과가 추가 |
|
||||
| 레벨업 3픽 골격 (03_진행·system/01 규칙 1) | **정합** — STS도 맵 노드 보상으로 카드 획득 (3픽 아님, 변형 필요) | **정합** — VS 원형 그대로 |
|
||||
| 라이프 1·피격 즉사 (04_전투 §3) | 턴제에 라이프 1은 치명적 — 턴 1회 실수 = 사망 | 실시간 이동 회피와 결합, 현 설계와 충돌 없음 |
|
||||
| 사망 시 카드 전손 (코어 룰 7) | 정합 | 정합 |
|
||||
| 모바일 터치 (가상 스틱 + 점프/공격 버튼) | 카드 드래그·타겟 지정 UI 추가 필요 → 입력 복잡도 증가 | 이동만 → 가상 스틱 1개로 충분 |
|
||||
|
||||
**실측 판단**: STS 방식은 축 2(액션 플랫포머 손맛)를 **구조적으로 포기**해야 성립한다. VS 방식은 축 2를 유지하면서 카드 효과 발동 축을 자동화한다.
|
||||
|
||||
---
|
||||
|
||||
## 2. EerieVillage 맥락 적합성 분석
|
||||
|
||||
### 2-1. 유지 제약 5축별 10점 척도 평가
|
||||
|
||||
| 제약 축 | STS 적합성 | VS 적합성 | 판정 근거 |
|
||||
|---|---|---|---|
|
||||
| **모바일 조작** (가상 스틱 + 2버튼) | 3/10 | 9/10 | STS는 카드 드래그·핸드 관리 UI 필수 → 세로 화면에 핸드 공간 압박. VS는 이동만이라 기존 UI 그대로 유지 |
|
||||
| **라이프 1** | 4/10 | 8/10 | STS 턴제는 "한 턴 실수 = 즉사". 오히려 낙차 재미가 "무력감"으로 전환 위험. VS는 실시간 이동 회피가 라이프 1 긴장을 스킬 기반으로 승화 |
|
||||
| **2D 액션 플랫포머** (축 2) | 1/10 | 7/10 | STS는 턴제라 점프·실시간 공격 플로우와 병존 불가. VS는 실시간이지만 원형은 탑뷰 — 2D 플랫포머 변형은 선례 적음(하이브리드 시도 필요) |
|
||||
| **재미 축 1 육성 롤러코스터** | 8/10 | 9/10 | 양자 모두 "쌓기→폭발→전손" 구조 가능. STS는 턴마다 의사결정 누적 → 더 치밀한 빌드감. VS는 자동 발동 폭발이 직관적 카타르시스 |
|
||||
| **32장 스코프** | 6/10 | 9/10 | STS 덱빌딩은 카드 수가 많을수록 깊이 증가 — 32장은 얕은 느낌. VS 32장은 무기 12 + 패시브 12 + 시너지 카드 8 수준으로 충분한 볼륨 |
|
||||
|
||||
**종합**: STS = 22/50 (44%), VS = 42/50 (84%). VS 방식이 EerieVillage 유지 제약과 정합도가 **구조적으로** 높다.
|
||||
|
||||
### 2-2. STS 방식의 결정적 부적합 사유 3종
|
||||
|
||||
1. **축 2 구조적 포기** — 턴제는 점프·실시간 공격의 즉각 피드백 재미를 성립 불가능하게 만든다. 템플릿(2D PlatformerMicrogame) 선택의 전제가 부정된다.
|
||||
2. **모바일 세로 화면 정보 밀도 초과** — STS는 PC·태블릿 기준 설계. 모바일 세로 화면에서 핸드 5장·에너지·적 스탯·의도·버프 표시는 HUD 과포화를 유발 (ux/02 HUD 원칙 "정보 과다 = 정보 없음" 위배).
|
||||
3. **캐주얼 로그라이크 포지션 이탈** — 01_게임_컨셉 §3 타겟 유저(20~40대 캐주얼~미드코어)와 STS의 사고형 몰입(평균 학습 시간 수십 시간)이 충돌.
|
||||
|
||||
---
|
||||
|
||||
## 3. 권장안
|
||||
|
||||
### 3-1. 결론
|
||||
|
||||
**Vampire Survivors 방식을 기본 골격으로 채택하되, EerieVillage 고유의 "근거리 검 조작 + 2D 횡스크롤 플랫포머" 축을 유지하는 하이브리드**를 권장한다.
|
||||
|
||||
### 3-2. 권장안 구조 (3줄 요약)
|
||||
|
||||
1. **플레이어 직접 조작 유지**: 이동·점프·근거리 검 공격 (04_전투 §2·§5 계승). VS 원형의 "이동만"은 축 2를 약화하므로 기각.
|
||||
2. **카드 효과는 자동 발동 + 플레이어 공격 강화의 두 축**: `[공격]`·`[방호]`·`[속도]` 태그는 플레이어 검 공격·이동에 즉시 적용 (STS형). `[부적]`·`[소환]`·`[주술]`·`[폭발]`·`[회복]` 태그는 주기 자동 발동 (VS형). content/01 32장 태그 체계가 이미 양 방식 분리 가능한 구조.
|
||||
3. **레벨업 3픽 + 동일 카드 스택 업그레이드 유지**: system/01 규칙 1~4 골격 전부 계승. VS의 "진화(Evolution)" 개념은 **시너지 발동**(system/01 규칙 3)으로 대체하여 학습 부담 최소화.
|
||||
|
||||
### 3-3. 권장 근거 (3~5줄)
|
||||
|
||||
- **축 2(액션 플랫포머 손맛) 보존**: 플레이어 입력·검 공격·점프 회피를 핵심 축으로 유지. VS 원형의 "이동만 조작"은 축 2를 포기하는 결정이므로 EerieVillage에는 부적합.
|
||||
- **축 1(육성 롤러코스터) 강화**: 자동 발동 카드가 화면에 쌓일수록 "내 플레이가 점점 압도적이 된다"는 VS 특유의 시각적 쾌감을 획득. 기존 3픽 긴장은 동일하게 유지.
|
||||
- **모바일 UX 부담 최소**: 조작은 현 스킴 그대로(가상 스틱 + 점프·공격). 핸드 관리·에너지·턴 엔드 UI가 필요 없어 HUD 정보 밀도 유지 가능.
|
||||
- **구현 복잡도 현실성**: VS 자동 발동형은 주기 타이머 + 투사체/AoE 풀링만 구현하면 확장 용이. BT.Framework Tier 1(Log·ValidationEx·MathEx·EnumEx·FormatEx)과 Unity PlatformerMicrogame Simulation 시스템 활용 가능 (C11 관점 — 개발팀 교차 검증 필요).
|
||||
- **하이브리드의 선례 근거**: Dead Cells의 "장착 스킬 쿨타임 자동 + 플레이어 검 공격" 구조가 유사. STS 순수형·VS 순수형보다 EerieVillage 유지 제약 충족도가 높다. (추정: Dead Cells가 본 하이브리드 모델에 가장 근접한 양산 사례)
|
||||
|
||||
### 3-4. 대안 (PD 결정 보조용)
|
||||
|
||||
| 대안 | 요지 | 선정 시 영향 |
|
||||
|---|---|---|
|
||||
| **대안 A: VS 순수형** | 플레이어 조작 이동만. 검 공격도 자동 발동. | 축 2 사실상 포기. 캐주얼성 극대화. 구현 단순. BT5 템플릿 선택 근거 약화 |
|
||||
| **대안 B: 하이브리드** (권장) | 검 공격 수동 + 카드 효과 자동·수동 혼합 | 축 1·2 모두 유지. 구현 중간 복잡도 |
|
||||
| **대안 C: STS 변형** | 실시간 이동 유지 + 카드 사용 수동 (에너지 시스템) | 학습 부담 증가. 모바일 UX 부담 증가. 사고형 타겟 전환 필요 |
|
||||
|
||||
---
|
||||
|
||||
## 4. 4티어 변경 반영안
|
||||
|
||||
### 4-1. 현 상태 모순 식별 (판단 선행)
|
||||
|
||||
현 기획 문서 실측 결과 **이미 티어 체계가 내부 불일치 상태**:
|
||||
- `system/01_카드_시스템.md §3 규칙 1`: 3티어 (T1 기본 · T2 숙련 · T3 각성)
|
||||
- `content/01_카드_풀.md §2-1`: 3티어 (1티어 보통 · 2티어 귀 · 3티어 신)
|
||||
- `balance/02_레벨업_곡선.md §4`: **4티어** 확률 테이블 존재 (Common · Uncommon · Rare · Epic)
|
||||
|
||||
PD 지시의 "3→4 변경"은 이 불일치를 해소하는 방향이며, **balance 문서의 4티어가 이미 선행 존재**하므로 system·content를 balance에 맞춰 확장하는 방향이 자연스럽다.
|
||||
|
||||
### 4-2. 권장 4티어 구조 — 3티어 사이 분할
|
||||
|
||||
**티어 추가 위치**: 기존 T2(숙련) vs T3(각성) **사이**에 신 티어 "비전(祕傳)" 삽입. T1 확장이나 T3 위 추가가 아닌 이유는 아래 §4-4에서 설명.
|
||||
|
||||
| 신 티어 | 레이블 | 성격 | 해제 조건 | 등장 비율 지향 |
|
||||
|---|---|---|---|---|
|
||||
| **T1** | 기본 (普通) | 단일 효과·조합 진입점 | 런 시작 시 항상 활성 | 초반 주력, 후반 배경 |
|
||||
| **T2** | 숙련 (鍛鍊) | 복합 효과·시너지 촉매 | 런 내 Lv.3 이상 도달 시 풀 합류 | 중반 주력 |
|
||||
| **T3** | **비전 (祕傳) ← 신규** | 빌드 방향을 좁히는 특화 효과 | 런 내 Lv.5 이상 + 현 빌드 주력 태그 2장 이상 보유 시 출현 | 중후반, 빌드 확정기 |
|
||||
| **T4** | 각성 (覺醒) | 빌드 완성자·화면 점유급 강력 효과 | 런 내 Lv.7 이상 + 보스 1회 이상 처치 시 출현 | 후반, 런 피날레 |
|
||||
|
||||
### 4-3. 4티어 각각의 성격·해제 조건
|
||||
|
||||
1. **T1 기본 (普通)** — 단일 태그·단일 효과. 빌드 탐색의 출발점. 해제: 항상. 등장: 초반 주력, 후반 잔여.
|
||||
2. **T2 숙련 (鍛鍊)** — 2개 태그 혹은 조건부 효과. 시너지 발동 조건 생성·촉매 역할. 해제: Lv.3+. 등장: 중반.
|
||||
3. **T3 비전 (祕傳)** — 현재 빌드 주력 태그를 가진 **특화 효과**. "이미 선택한 길을 깊게 판다"는 감정. 해제: Lv.5+ & 주력 태그 2장 이상. 등장: 중후반 빌드 확정기.
|
||||
4. **T4 각성 (覺醒)** — 3티어 요소의 완성자. 구 `content/01 §3` T3 5장(천지신명·천부경문·사령결계·산신령강림·천지음양방호·역천지기·귀문관·천지개벽)이 대체로 여기에 해당. 해제: Lv.7+ & 보스 1회 이상 처치. 등장: 후반 런 피날레.
|
||||
|
||||
### 4-4. 왜 "중간 분할"인가 — 3안 비교
|
||||
|
||||
| 추가 위치 | 장점 | 단점 | 판정 |
|
||||
|---|---|---|---|
|
||||
| T1 아래 (초심자 티어 추가) | 진입 장벽 최소화 | T1이 이미 "기본"이라 의미 중복. 런 초반 선택지 과다 | 기각 |
|
||||
| T3 위 (최상위 티어 추가) | 후반 빌드 피날레 강화 | balance/02 Epic 8~30% 등장 확률을 더 낮춰야 함. 체감 희박화 | 차선 |
|
||||
| **T2·T3 사이 (권장)** | 중후반 빌드 확정기에 "내 빌드를 깊게" 감정 층 추가. 구 T3 5장(content/01)이 자연스럽게 T4로 승격 | 없음 (balance/02 기존 4티어와 정합) | **권장** |
|
||||
|
||||
### 4-5. 32장 → 4티어 재분배 수치안
|
||||
|
||||
구 분포 (content/01 §3 실측): T1 12장·T2 15장·T3 5장. (T2에 다수 포진)
|
||||
|
||||
| 티어 | 권장 분포 | 비중 | 이동·분류 근거 |
|
||||
|---|---|---|---|
|
||||
| T1 | 12장 | 37.5% | 현 T1 유지 (01·02·06·07·11·15·19·20·24·27) 10장 + 현 T2 하위 2장 재분류 |
|
||||
| T2 | 10장 | 31.3% | 현 T2 중 "복합 효과 촉매"형 (03·08·16·22·25·28) 6장 + 4장 추가 재분류 |
|
||||
| T3 (비전 신규) | 7장 | 21.9% | 현 T2 중 "빌드 특화"형 (04·09·12·13·17·21·26·29) 중 7장 승격 |
|
||||
| T4 (각성, 구 T3) | 3장 | 9.4% | 구 T3 5장 중 3장만 유지 (05·10·14·18·23·30·31·32 중 피날레급 3장 선별). 2장은 T3 비전으로 강등 |
|
||||
|
||||
**주의**: 위 장번호는 **예시 매핑**. content/01 개정 시점에 세밀 조정 필요 (기각안 2번 "과도한 재분배는 balance/02 기존 수치 충돌 위험"과 연관).
|
||||
|
||||
### 4-6. 권장 덱빌딩 방식과의 정합성
|
||||
|
||||
- **VS 하이브리드 + 4티어**: VS의 진화(Evolution) 개념 대신 **"시너지 발동 + T3 비전 등장"** 이중 구조로 유사 감정 제공. 학습 부담은 T3 비전 해제 조건이 "Lv.5+ & 주력 태그 2장"이므로 플레이어가 자연 체득.
|
||||
- **자동 발동 카드(T2·T3·T4)의 발동 주기 차등**: T2는 짧은 주기, T3 비전은 중간 주기 + 태그 보너스, T4는 긴 주기 + 대형 효과. balance/02의 티어별 출현 확률(§4)과 정합 유지.
|
||||
- **T4 해제 조건의 재미 축 연결**: "보스 1회 이상 처치" 조건은 축 1(육성 롤러코스터) 중 "폭발" 직전 단계에서 T4가 열려 피날레 감정 강화.
|
||||
|
||||
---
|
||||
|
||||
## 5. 개정 영향 범위
|
||||
|
||||
본 방향 결정(PD 승인) 시 **순차 개정**이 필요한 파일 목록. 본 검토 문서는 제안 단계이며 실제 개정은 PD 방향 결정 후 별도 집행.
|
||||
|
||||
| 파일 | 개정 요지 | 책임 에이전트 |
|
||||
|---|---|---|
|
||||
| `system/01_카드_시스템.md` §3 규칙 1~4 | 3티어 → 4티어 확장. 픽 알고리즘에 "T3 비전 태그 보너스 조건" 추가. 업그레이드 체계는 그대로 유지. VS 하이브리드 방식 반영(카드 발동 분류: 수동 강화형 vs 자동 발동형) | system-designer |
|
||||
| `content/01_카드_풀.md` §2-1·§3 | 티어 레이블 4종으로 재매핑. 32장 재분배 (위 §4-5 수치안 기준). 카드별 "자동 발동 vs 수동 강화" 분류 컬럼 신규 추가 | content-designer |
|
||||
| `balance/01_전투_수치.md` §3 대미지 공식 | CardMultiplier 범위(1.0~2.5) 재검토. 자동 발동 카드의 DPS 기여도 추가 분석 필요. 수동 공격 카드와 DPS 합산 시 하드캡 DPS 100 유지 여부 재검증 | balance-designer |
|
||||
| `balance/02_레벨업_곡선.md` §4 | 현 4티어 확률 테이블 유지 + 레이블을 신 체계 명(T1 기본·T2 숙련·T3 비전·T4 각성)으로 재매핑. 해제 조건(Lv.3/5/7·태그 2장·보스 처치)과 확률 테이블 정합성 검증 | balance-designer |
|
||||
| `ux/02_HUD_설계.md` §3 레벨업 카드 픽 UI | 3장 레이아웃은 유지. 카드별 "자동 발동 vs 수동 강화" 아이콘 구분 표시 추가. T3 비전 등장 시 태그 보너스 시각 피드백 추가. HUD 정보 밀도 재평가 | ux-designer |
|
||||
|
||||
**세계관 용어 유지**: narrative 영역 건드리지 않음. 카드명·티어명·태그명 등 기존 한자·조선 퇴마 톤 전부 유지. "비전(祕傳)"·"각성(覺醒)" 신 레이블은 현 톤과 정합.
|
||||
|
||||
---
|
||||
|
||||
## 6. 기각안 (C32 필수 필드)
|
||||
|
||||
1. **STS 순수 채택 — 기각.**
|
||||
근거: §2-2에 상세. 축 2(액션 플랫포머 손맛)를 구조적으로 포기해야 하며, 템플릿(2D PlatformerMicrogame) 선택의 전제(PD 코어 룰 2 횡스크롤 플랫포머)를 부정한다. 모바일 세로 화면 정보 밀도 초과·캐주얼 타겟 이탈까지 3중 부적합.
|
||||
|
||||
2. **VS 순수 채택 (플레이어 조작 이동만) — 기각.**
|
||||
근거: 축 2를 축소 포기하는 결정이다. "근거리 검 공격으로 카드 효과를 직접 체감·전달하는 물성감"(01_게임_컨셉 §2 축 2)을 자동 발동 전환 시 "덱빌딩 감각은 얻지만 조작 손맛은 잃는" 교환이 된다. 본 유지 제약의 "2D 플랫포머·근거리 검"과 직접 충돌. 권장안 하이브리드가 축 2를 유지하면서 VS의 수치 폭발 쾌감을 획득한다.
|
||||
|
||||
3. **4티어 최상위(T3 위) 추가 — 차선, 권장안 아님.**
|
||||
근거: §4-4 비교표. 기존 balance/02 §4 Epic 확률(8~30%)을 더 낮춰야 체감 희박성 유지 가능하나, 이 경우 Epic 카드 자체가 "거의 못 본다" 상태 전환 위험. T2·T3 중간 삽입이 기존 확률 테이블과 정합도 높고, 구 T3 5장이 자연스럽게 T4로 승격되는 구조적 이점 획득.
|
||||
|
||||
4. **4티어 T1 아래 추가 (초심자 티어) — 기각.**
|
||||
근거: T1이 이미 "기본"이라 의미 중복. 런 초반 선택지 과다로 초심자 진입 장벽이 오히려 증가. PD 지시(카드 3픽 유지) 구조상 초반 3장 중 최하 티어 비중이 높으면 "이 게임은 처음에 뭐 골라도 효과가 미미하다"는 인상 형성 위험.
|
||||
|
||||
5. **카드 풀 32장 유지 vs 확장 — 기각 (현 32장 유지).**
|
||||
근거: content/01 §5 기각안 2 "50장 이상 초기 풀 기각" 계승. 4티어 재분배로 볼륨 조정 충분. 업데이트 확장은 Phase 3-C 이후 별도 안건.
|
||||
|
||||
6. **T3 비전의 "주력 태그 2장" 해제 조건을 동적 판정 대신 정적 판정으로 — 기각.**
|
||||
근거: 정적 판정(런 시작 시 태그 고정)은 VS의 실시간 성장 감각을 약화한다. 매 픽마다 빌드 주력 태그를 재평가하는 동적 판정이 "내 빌드를 깊게 판다"는 비전 티어 의도와 정합. 구현 복잡도는 태그 카운터 증가만이라 BT.Framework EnumEx 활용으로 해소 (C11 판단 — 개발팀 교차 검증 필요).
|
||||
|
||||
---
|
||||
|
||||
## 7. 검토 요약 (PD 결정 보조용)
|
||||
|
||||
1. **덱빌딩 방식**: VS 하이브리드 (권장) / VS 순수 / STS 변형 3안 중 택1 — PD 방향 결정 요청.
|
||||
2. **4티어 구조**: T2·T3 중간 삽입 "비전(祕傳)" (권장) / T3 위 추가 (차선) 중 택1 — PD 방향 결정 요청.
|
||||
3. **32장 재분배**: 12·10·7·3 권장 분포 — 방향 확정 후 content-designer 세밀 조정.
|
||||
4. **개정 집행 범위**: system/01·content/01·balance/01·02·ux/02 5개 파일 순차 개정 — PD 승인 후 착수.
|
||||
5. **narrative 영역**: PD 직접 지시에 따라 현행 유지 — 본 검토에서 건드리지 않음.
|
||||
|
||||
---
|
||||
|
||||
## 8. 변경 이력
|
||||
|
||||
| 일시 | 변경 | 사유 | 기안 |
|
||||
|------|------|------|------|
|
||||
| 2026-04-24 | v0.1 BT7-Plan 덱빌딩 방식 검토 + 4티어 개정안 작성 | PD 직접 지시 2026-04-24 | 기획팀장 |
|
||||
|
|
@ -2,29 +2,30 @@
|
|||
type: 상세_기획
|
||||
scope: 모바일_터치_UX
|
||||
author: ux-designer
|
||||
date: 2026-04-23
|
||||
version: v0.1 (Phase 3-B)
|
||||
date: 2026-04-24
|
||||
version: v0.2 (BT7-Plan 개정)
|
||||
project: EerieVillage
|
||||
phase: Phase 3-B
|
||||
data_source: BT5-Plan 04_전투_기본_스펙 v0.1 + BT5-Dev 03_게임_제작_준비
|
||||
status: 확정 골격 — 수치 실측은 balance-designer + 개발팀 협의
|
||||
data_source: 04_전투_기본_스펙.md v0.2 + BT5-Dev 03_게임_제작_준비 + BT7-Plan PD 확정 방향 11건
|
||||
status: BT7-Plan 개정 반영 — 공격 버튼 제거·VS 순수형 스킴
|
||||
---
|
||||
|
||||
# 01. 모바일 터치 UX
|
||||
|
||||
## 1. 재미 축 연결 (P30)
|
||||
|
||||
본 스킴이 강화하는 재미: **축 2 "액션 플랫포머 손맛"**. 가상 스틱·버튼의 즉각 반응(0.1초 이내)과 오입력 최소화 레이아웃이 이동·점프·공격의 체감 직결 요소다.
|
||||
본 스킴이 강화하는 재미: **축 2 "보며 즐기는" 액션 플랫포머**. 이동·점프의 즉각 반응(0.1초 이내)과 오입력 최소화 레이아웃이 회피·포지셔닝 스킬의 체감 직결 요소다. 공격 입력 제거로 조작 복잡도 감소 → 액티브 자동 발동 감상 재미에 집중.
|
||||
|
||||
## 2. 조작 스킴 확정
|
||||
## 2. 조작 스킴 확정 (BT7-Plan 재작성)
|
||||
|
||||
**BT7-Plan 확정 방향 2 — VS 순수형**: 공격 버튼 제거, 이동·점프만.
|
||||
|
||||
| 액션 | PC 입력 | 모바일 입력 | 비고 |
|
||||
|------|---------|------------|------|
|
||||
| **이동** | WASD/방향키 | 좌측 가상 스틱 | 엄지 자연 안착 영역 |
|
||||
| **점프** | Space | 우측 점프 버튼 | 오른 엄지 도달 상단 |
|
||||
| **공격** | 마우스 좌클릭 | 우측 공격 버튼 | 오른 엄지 도달 하단 |
|
||||
| **점프** | Space | 우측 점프 버튼 | 오른 엄지 도달 영역 |
|
||||
|
||||
**결정 근거**: 04_전투_기본_스펙 §2 확정 스킴 계승. 단일 근거리 공격 1종으로 파일럿 시작 (공격 버튼 복수 기각안 계승).
|
||||
**결정 근거**: 04_전투_기본_스펙 v0.2 §2 계승. 플레이어 수동 공격 입력은 존재하지 않음. 장착한 액티브 카드가 자동 발동.
|
||||
|
||||
## 3. 버튼 레이아웃 (화면 분할)
|
||||
|
||||
|
|
@ -36,49 +37,57 @@ status: 확정 골격 — 수치 실측은 balance-designer + 개발팀 협의
|
|||
│ 플레이 영역 │
|
||||
│ │
|
||||
├────────────┬─────────────────┤
|
||||
│ [가상스틱] │ [점프] [공격] │ ← 입력 영역
|
||||
│ [가상스틱] │ [점프] │ ← 입력 영역 (공격 버튼 제거)
|
||||
│ 왼손 엄지 │ 오른손 엄지 │
|
||||
└────────────┴─────────────────┘
|
||||
Safe Area (Home Indicator 회피)
|
||||
```
|
||||
|
||||
- **가상 스틱 반지름**: 기본 60dp (BT 실측 전 후보값). 조이스틱 중심은 터치 다운 위치 추종
|
||||
- **점프 버튼**: 우측 상단. 오른 엄지 자연 신전 위치
|
||||
- **공격 버튼**: 우측 하단. 오른 엄지 굴곡 위치. 점프보다 크게 배치 (주요 인터랙션)
|
||||
- **점프 버튼**: 우측 중앙. 오른 엄지 자연 도달 영역. **공격 버튼 제거로 단독 대형 배치** (시인성·터치 성공률 상승)
|
||||
- **투명도**: 기본 70%, 입력 시 100% (비활성 구분 피드백)
|
||||
- **Safe Area**: 노치(iOS) · 상태표시줄(Android) 상단 + Home Indicator/제스처바 하단 회피 의무 → SafeAreaBorder 컴포넌트 신규 구현 필요 (BT.Framework Tier 2 이관, §6 참조)
|
||||
|
||||
## 4. 입력 시스템 설계
|
||||
## 4. 입력 시스템 설계 (BT7-Plan 간소화)
|
||||
|
||||
Unity **Input System 액션 맵** 기반:
|
||||
- `Move` (Value, Vector2) — 가상 스틱 → PC 키보드 WASD 동시 지원
|
||||
- `Jump` (Button) — 점프 버튼 → Space
|
||||
- `Attack` (Button) — 공격 버튼 → 마우스 좌클릭
|
||||
|
||||
**Attack 액션 제거** (BT7-Plan 확정 방향 2). 액티브 카드의 자동 발동은 게임 내부 타이머에 의해 처리되며 플레이어 입력 체계와 분리됨.
|
||||
|
||||
**UITouchHandler** (BT.Framework Tier 2 신규 구현 예정): 가상 스틱 드래그 감도·데드존 처리 로직 캡슐화. 구현 전까지는 Unity OnScreenStick 임시 사용.
|
||||
|
||||
**즉각 반응 의무**: Input 감지 후 0.1초 이내 캐릭터 반응. 지연 시 플레이어가 입력 불인식으로 오인 (C7 피드백 원칙).
|
||||
**즉각 반응 의무**: Input 감지 후 0.1초 이내 캐릭터 반응. 지연 시 플레이어가 입력 불인식으로 오인.
|
||||
|
||||
## 5. 피드백 설계
|
||||
|
||||
### 5-1. 피격 피드백 (3종 의무, 04_전투_기본_스펙 §6 계승)
|
||||
### 5-1. 피격 피드백 (3종 의무, 04_전투_기본_스펙 v0.2 §6 계승 + 피해량별 차등)
|
||||
|
||||
| 피드백 종류 | 내용 | 인지 목표 |
|
||||
|-------------|------|----------|
|
||||
| **시각** | 화면 테두리 붉은 섬광 + 캐릭터 깜박임(i-frame 표시) | 0.3초 이내 인지 |
|
||||
| **청각** | 피격 SFX (사운드팀 명세) | 즉시 인지 |
|
||||
| **진동 (모바일)** | 짧은 진동 1회 (~80ms) | 즉각 체감 |
|
||||
| **시각** | 화면 테두리 붉은 섬광 + 캐릭터 깜박임(i-frame 표시) + **하트 UI 쿼터 분할 애니메이션** | 0.3초 이내 인지 |
|
||||
| **청각** | 피격 SFX (피해량별 차등) | 즉시 인지 |
|
||||
| **진동 (모바일)** | 피해량별 진동 차등 (§5-3 참조) | 즉각 체감 |
|
||||
|
||||
**피해량별 차등 (BT7-Plan 하트 분할 구조 반영)**:
|
||||
- 피해 1 (1쿼터): 짧은 진동 40ms + 테두리 연한 섬광
|
||||
- 피해 2 (반 하트): 중간 진동 80ms + 테두리 중간 섬광
|
||||
- 피해 3 (3/4 하트): 긴 진동 120ms + 테두리 강한 섬광
|
||||
- 피해 4 (하트 전소): 강한 진동 160ms + 테두리 최대 섬광 + 화면 살짝 흔들림
|
||||
|
||||
### 5-2. i-frame(무적 시간) 표시
|
||||
|
||||
- 피격 후 N ms 동안 캐릭터 스프라이트 **깜박임** (점멸 주기 80~120ms 후보)
|
||||
- 피격 후 0.6초 동안 캐릭터 스프라이트 **깜박임** (점멸 주기 80ms, 7.5회)
|
||||
- 깜박임 종료 = 무적 해제 → 플레이어 학습 가능한 시각 언어
|
||||
- N 수치 (400~800ms)는 balance-designer + 개발팀 실측 확정
|
||||
- P19 심안 패시브 적용 시 0.8초까지 연장 가능 (깜박임 횟수 10회)
|
||||
|
||||
### 5-3. 버튼 입력 피드백
|
||||
### 5-3. 버튼 입력 피드백 (BT7-Plan 재정의)
|
||||
|
||||
- 버튼 눌림 시 시각적 눌림 애니메이션(스케일 축소 0.9x, 50ms) 의무
|
||||
- **성공 공격 적중** 시 짧은 진동 1회 (~40ms) — 손맛 강화 (재미 축 2)
|
||||
- 버튼 눌림 시 시각적 눌림 애니메이션(스케일 축소 0.9x, 50ms) 의무 (점프 버튼)
|
||||
- **공격 버튼 관련 진동 제거** (버튼 자체 폐기)
|
||||
- **액티브 무기 발동 시 짧은 진동 1회 (~40ms)** — 자동 발동 체감 피드백 (BT7-Plan 재정의)
|
||||
- **적중 시 히트스탑 3프레임 (50ms)** + 짧은 진동 1회 — 자동 발동이어도 타격감 유지
|
||||
|
||||
## 6. BT.Framework 재사용 매핑
|
||||
|
||||
|
|
@ -88,25 +97,30 @@ Unity **Input System 액션 맵** 기반:
|
|||
| **ValidationEx** | 버튼 null 체크·스틱 범위 검증 | Tier 1 P0 즉시 |
|
||||
| **MathEx** | 스틱 감도·데드존 보정 연산 | Tier 1 P0 즉시 |
|
||||
| **SafeAreaBorder** | Safe Area 패딩 자동 적용 | Tier 2 신규 구현 후 |
|
||||
| **UITouchHandler** | 스틱 드래그·버튼 멀티터치 처리 | Tier 2 신규 구현 후 |
|
||||
| **UITouchHandler** | 스틱 드래그·점프 버튼 멀티터치 처리 | Tier 2 신규 구현 후 |
|
||||
| **BackKeyDispatcher** | Android 뒤로가기 키 → 일시정지 메뉴 | Tier 2 신규 구현 후 |
|
||||
|
||||
Tier 2 3종 미구현 상태 (BT5-Dev 3단계 실측 확인 — `Runtime/UI/Components/` 빈 디렉토리). 개발팀 이관 항목.
|
||||
Tier 2 3종 미구현 상태. 개발팀 이관 항목.
|
||||
|
||||
## 7. 기각안
|
||||
|
||||
1. **"스와이프 회피 제스처" — 기각.** 캐주얼 포지션에서 스와이프는 이동 입력과 오입력 충돌 위험 과다. 라이프 1 전제에서 오입력 즉사는 재미 축 2 붕괴. 회피 메커니즘 도입은 PD 결정 대상 (04_전투_기본_스펙 §7 보류 계승).
|
||||
2. **"고정 위치 가상 스틱" — 기각.** 터치 다운 위치 추종 방식이 다양한 그립 스타일 수용성 높음. 고정 위치는 손 크기·그립 편차로 오입력 증가.
|
||||
3. **"버튼 비표시(보이지 않는 탭 영역)" — 기각.** 버튼 시각 피드백 부재는 입력 성공 여부 불확실성 유발. 플레이어가 입력이 먹혔는지 의심하게 만들어 C7 피드백 원칙 위반.
|
||||
1. **"스와이프 회피 제스처" — 기각 (현행 유지).** 캐주얼 포지션에서 스와이프는 이동 입력과 오입력 충돌 위험 과다. 회피 메커니즘 도입은 Phase 3-C.
|
||||
2. **"고정 위치 가상 스틱" — 기각 (현행 유지).** 터치 다운 위치 추종 방식이 다양한 그립 스타일 수용성 높음.
|
||||
3. **"버튼 비표시(보이지 않는 탭 영역)" — 기각 (현행 유지).** 버튼 시각 피드백 부재는 입력 성공 여부 불확실성 유발.
|
||||
4. **"공격 버튼 복수 배치(약공·강공)" 기각 — 의미 변화 (BT7-Plan).** 원 기각 근거는 "파일럿 근거리 1종 시작"이었으나 BT7-Plan에서 **공격 버튼 자체 폐기**로 의미 근본 변화. 복수 버튼 배치는 논의 대상 자체 소멸. **기각안 유지(번복 기록)**.
|
||||
5. **"공격 버튼 유지 + 자동 발동 병행" — 기각 (BT7-Plan 신규).** PD 확정 방향 2 "VS 순수형 (이동·점프만)" 명시. 병행은 조작 복잡도 증가 + VS 원작 감상 재미 저해.
|
||||
6. **"커스터마이즈 버튼 위치 기본 제공" — 기각 (현행 유지).** 파일럿 스코프에서는 기본 레이아웃만. Phase 3-C 설정 메뉴 도입 시 재검토.
|
||||
|
||||
## 8. 개발팀 이관 항목
|
||||
|
||||
- SafeAreaBorder · UITouchHandler · BackKeyDispatcher 컴포넌트 신규 구현 (BT.Framework Tier 2 승격 후 EerieVillage 편입)
|
||||
- Input System 액션 맵 에셋 생성 + PC/모바일 바인딩 구성
|
||||
- 피격 진동 Unity Handheld.Vibrate() 또는 플랫폼별 Haptic 구현
|
||||
- Input System 액션 맵 에셋 생성 + PC/모바일 바인딩 구성 (**Attack 액션 제거**)
|
||||
- 피격 진동 Unity Handheld.Vibrate() 또는 플랫폼별 Haptic 구현 (피해량별 차등)
|
||||
- 액티브 발동 진동 피드백 통합 (Unity Haptic)
|
||||
|
||||
## 9. 변경 이력
|
||||
|
||||
| 일시 | 변경 | 사유 | 기안 |
|
||||
|------|------|------|------|
|
||||
| 2026-04-23 | v0.1 Phase 3-B 초기 확정 | BT6-Plan PD 지시 | ux-designer |
|
||||
| 2026-04-24 | v0.2 — BT7-Plan 개정 집행 — PD 지시 11건 반영 (공격 버튼 제거·VS 순수형·Attack 액션 제거·피해량별 진동 차등) | 기획팀장 |
|
||||
|
|
|
|||
|
|
@ -2,57 +2,82 @@
|
|||
type: 상세_기획
|
||||
scope: HUD_설계
|
||||
author: ux-designer
|
||||
date: 2026-04-23
|
||||
version: v0.1 (Phase 3-B)
|
||||
date: 2026-04-24
|
||||
version: v0.2 (BT7-Plan 개정)
|
||||
project: EerieVillage
|
||||
phase: Phase 3-B
|
||||
data_source: BT5-Plan 02_코어_루프 v0.1 + 04_전투_기본_스펙 v0.1
|
||||
status: 확정 골격 — 세부 레이아웃 수치는 개발팀 협의
|
||||
data_source: 02_코어_루프 v0.2 + 04_전투_기본_스펙 v0.2 + system/01_카드_시스템.md v0.2 + BT7-Plan PD 확정 방향 11건
|
||||
status: BT7-Plan 개정 반영 — 하트 분할 UI·액티브/패시브 슬롯 분리·각성 발동 연출
|
||||
---
|
||||
|
||||
# 02. HUD 설계
|
||||
|
||||
## 1. 재미 축 연결 (P30)
|
||||
|
||||
HUD 원칙: **정보 과다 = 정보 없음**. 라이프 1 시스템(즉사 전제)에서 HUD가 전달해야 할 것은 오직 "현재 상태"와 "다음 결정"이다. 한 화면에 한 가지 결정만 요구.
|
||||
HUD 원칙: **정보 과다 = 정보 없음**. 하트 분할 구조(BT7-Plan 확정 방향 7)에서 HUD가 전달해야 할 것은:
|
||||
- "현재 생존 상태" (하트 잔량 시각화)
|
||||
- "다음 결정 트리거" (레벨업 예고·보물상자 획득·각성 조건 충족)
|
||||
- "현재 빌드 상태" (액티브·패시브 슬롯)
|
||||
|
||||
## 2. 인게임 HUD 요소
|
||||
|
||||
### 2-1. 정보 우선순위
|
||||
### 2-1. 정보 우선순위 (BT7-Plan 재구성)
|
||||
|
||||
| 우선순위 | 요소 | 이유 |
|
||||
|---|---|---|
|
||||
| **1순위** | 라이프 표시 (생존 여부) | 라이프 1 즉사 → 즉시 인지 필수 |
|
||||
| **1순위** | **하트 UI (생존 여부 + 잔량)** | 하트 분할 구조 → 쿼터 단위 잔량 즉시 인지 필수 |
|
||||
| **2순위** | 레벨 + 경험치 게이지 | 레벨업 카드 픽 트리거 예고 |
|
||||
| **3순위** | 카드 슬롯 (현재 보유 카드) | 빌드 확인용, 전투 흐름 방해 금지 |
|
||||
| **3순위** | **액티브 슬롯 (장착 무기 + Lv 표기)** | 자동 발동 감상 재미의 기준 정보 |
|
||||
| **4순위** | **패시브 슬롯 (장착 패시브 + Lv 표기)** | 빌드 확인용, 전투 흐름 방해 금지 |
|
||||
| **5순위** | 각성 조건 진행도 (신규) | 액티브 Lv.5 도달 시 "각성 대기" 표시 |
|
||||
|
||||
### 2-2. HUD 배치 (와이어프레임)
|
||||
### 2-2. HUD 배치 (와이어프레임, BT7-Plan 재설계)
|
||||
|
||||
```
|
||||
┌──────────────────────────────┐
|
||||
│ [Lv.3 ████████░░] [♥] │ ← 좌상단: 레벨·경험치 + 라이프
|
||||
│ [Lv.3 ████████░░] [♥ ♥] │ ← 좌상단: 레벨·경험치 + 하트 분할 UI
|
||||
│ [⚙] │ ← 우상단: 일시정지
|
||||
├──────────────────────────────┤
|
||||
│ │
|
||||
│ 플레이 영역 │
|
||||
│ │
|
||||
│ [카드1][카드2][카드3] │ ← 하단: 카드 슬롯 (반투명)
|
||||
│ [입력 영역] │
|
||||
└──────────────────────────────┘
|
||||
├────────────┬─────────────────┤
|
||||
│ 액티브: │ 패시브: │ ← 하단: 카드 슬롯 분리 (반투명)
|
||||
│ [A1][A2] │ [P1][P2][P3] │
|
||||
│ [A3][★★] │ [P4][P5][P6] │ ← ★ = 각성 대기 표시
|
||||
└────────────┴─────────────────┘
|
||||
[입력 영역: 가상스틱 + 점프]
|
||||
```
|
||||
|
||||
- **라이프 표시**: 하트 아이콘 1개. 피격 시 깜박임·소멸 애니메이션 (1초 이내 인지)
|
||||
- **하트 UI**: ♥ 하트 분할 시각화 (풀·3/4·반·1/4·빈 5단계, Zelda BotW 방식). 최대 하트 수 증가 시 우측 추가 하트 아이콘 생성 (최대 5개, 한 줄 배치)
|
||||
- **레벨·경험치 게이지**: 텍스트 + 바. FormatEx로 "Lv.N" 포맷 렌더링
|
||||
- **카드 슬롯**: 보유 카드 아이콘 최대 N개 (N=balance-designer 결정). 소형·반투명으로 전투 방해 최소화
|
||||
- **액티브 슬롯**: 6개 슬롯 (BT7-Plan 확정 방향 6). 좌측 반투명 배치. 각 슬롯 아이콘 우하단에 Lv 표기 (Lv.1~Lv.5)
|
||||
- **패시브 슬롯**: 6개 슬롯. 우측 반투명 배치. 각 슬롯 아이콘 우하단에 Lv 표기
|
||||
- **각성 대기 표시 (신규)**: 액티브 슬롯 내 아이콘이 Lv.5 도달 + 필요 패시브 1개 이상 보유 시 해당 슬롯 테두리 황금색 하이라이트 + ★ 아이콘 부착
|
||||
- **일시정지 버튼**: 우상단 고정. Safe Area 내 배치 의무
|
||||
|
||||
### 2-3. 보스전 추가 HUD
|
||||
### 2-3. 하트 UI 분할 스프라이트 (BT7-Plan 신규)
|
||||
|
||||
**젤다 BotW 방식 5단계 상태**. 개발팀 이관 항목(§9):
|
||||
|
||||
| 상태 | 스프라이트 | 애니메이션 |
|
||||
|---|---|---|
|
||||
| 풀 (4/4) | `heart_full.png` | 정적 |
|
||||
| 3/4 | `heart_three_quarter.png` | 우하단 1/4 사라짐 애니 (150ms) |
|
||||
| 반 (2/4) | `heart_half.png` | 우측 반 사라짐 애니 (150ms) |
|
||||
| 1/4 | `heart_one_quarter.png` | 좌상단 1/4만 남기 애니 (150ms) |
|
||||
| 빈 (0/4) | `heart_empty.png` | 외곽선만. 하트 전소 애니 후 전환 (200ms) |
|
||||
|
||||
하트 전소 시 → 우측 하트 아이콘이 있으면 새 하트가 즉시 활성. 모든 하트 전소 시 사망 분기.
|
||||
|
||||
### 2-4. 보스전 추가 HUD
|
||||
|
||||
보스룸 진입 시 보스 HP 바 상단 출현:
|
||||
- 보스 이름 + HP 바 (화면 상단 중앙)
|
||||
- 페이즈 2 진입 시 바 색상 전환 + 경고 아이콘
|
||||
- 보스 HP 0 도달 시 바 사라짐 + 처치 피드백 (성공 인지 1초 이내)
|
||||
|
||||
## 3. 레벨업 카드 픽 UI (분기 포인트 1)
|
||||
## 3. 레벨업 카드 픽 UI (분기 포인트 1, BT7-Plan 재설계)
|
||||
|
||||
**트리거**: 경험치 만렙 → `Time.timeScale = 0` 일시정지 → 카드 픽 화면 진입
|
||||
|
||||
|
|
@ -61,18 +86,62 @@ HUD 원칙: **정보 과다 = 정보 없음**. 라이프 1 시스템(즉사 전
|
|||
│ │
|
||||
│ 레벨 업! Lv.N → Lv.N+1 │
|
||||
│ │
|
||||
│ [카드 A] [카드 B] [카드 C] │ ← 3장 선택
|
||||
│ 설명 설명 설명 │
|
||||
│ │
|
||||
│ ┌──────┐ ┌──────┐ ┌──────┐ │
|
||||
│ │[액티브]│ │[패시브]│ │[액티브]│ │ ← 분류 아이콘 상단 표시
|
||||
│ │ 카드A │ │ 카드B │ │ 카드C │ │
|
||||
│ │ Lv.1 │ │ Lv.2 │ │ 신규 │ │ ← 업그레이드 vs 신규 명시
|
||||
│ │설명 │ │설명 │ │설명 │ │
|
||||
│ └──────┘ └──────┘ └──────┘ │
|
||||
└──────────────────────────────┘
|
||||
```
|
||||
|
||||
- **Canvas**: CardPickCanvas.prefab (Additive), timeScale 0에서도 정상 동작 (Unscaled Time 사용)
|
||||
- **분류 구분 표시 (신규)**: 각 카드 상단에 **액티브·패시브 아이콘** 명시 (색상·기호). 플레이어가 "어떤 슬롯으로 들어갈 카드인가" 즉시 인지
|
||||
- **업그레이드 vs 신규 구분**: 이미 장착한 카드는 "Lv.N → Lv.N+1" 표기, 미장착은 "신규" 표기
|
||||
- **각성 조건 힌트 (신규)**: 액티브 카드가 Lv.4 도달 시 "다음 픽으로 Lv.5 → 각성 조건 근접" 힌트 표시 (선택적)
|
||||
- **결정 압박 없음**: 시간 제한 없이 선택 가능 (캐주얼 포지션)
|
||||
- **선택 피드백**: 카드 선택 시 하이라이트 + 확인 버튼 노출 → 실수 방지 2단계
|
||||
- **선택 완료**: `Time.timeScale = 1` 복귀 + 카드 획득 시각 피드백
|
||||
|
||||
## 4. 마을 UI (허브 화면)
|
||||
## 3-A. 각성 발동 피드백 UI (신규, BT7-Plan 확정 방향 5·10)
|
||||
|
||||
**트리거**: 보물상자 획득 → 각성 발동 조건 충족 판정 → 조건 충족 시 연출 진입
|
||||
|
||||
```
|
||||
보물상자 획득 연출 (1.5s)
|
||||
↓
|
||||
조건 충족 판정
|
||||
↓ (충족)
|
||||
┌──────────────────────────────┐
|
||||
│ │
|
||||
│ ★ 각성! ★ │
|
||||
│ │
|
||||
│ A05 학익진 → AW05 학익천진 │
|
||||
│ │
|
||||
│ [풀스크린 이펙트] │
|
||||
│ │
|
||||
└──────────────────────────────┘
|
||||
↓ (3s)
|
||||
액티브 슬롯 아이콘 각성 형태로 변환
|
||||
↓
|
||||
전투 재개
|
||||
```
|
||||
|
||||
- **풀스크린 효과**: 황금색 섬광 + 각성 이름 대형 표기 + 원 액티브 → 각성 변환 애니메이션
|
||||
- **지속시간**: 3초 (캐주얼 페이싱 유지, 너무 길지 않게)
|
||||
- **Unscaled Time 사용**: `Time.timeScale = 0` 일시정지 상태에서 연출 진행
|
||||
- **복수 조건 충족 시 선택 UI**: `system/01_카드_시스템.md` v0.2 §7 엣지 케이스 3 반영. 2개 이상 각성 조건 동시 충족 시:
|
||||
```
|
||||
┌────────────────────────┐
|
||||
│ 각성 조건 복수 충족! │
|
||||
│ 발동할 각성을 선택하세요│
|
||||
│ │
|
||||
│ [AW05] [AW12] │
|
||||
│ │
|
||||
└────────────────────────┘
|
||||
```
|
||||
|
||||
## 4. 마을 UI (허브 화면) — BT7-Plan 유지
|
||||
|
||||
진입점: 게임 시작 / 사망 복귀 / 보스 처치 후 귀환
|
||||
|
||||
|
|
@ -81,19 +150,20 @@ HUD 원칙: **정보 과다 = 정보 없음**. 라이프 1 시스템(즉사 전
|
|||
| **스테이지 선택** | 다음 도전 스테이지 결정 | 스테이지 번호·난이도 표시 |
|
||||
| **특성 목록** | 현재 보유 특성 확인 | 유지 자산 확인 (사망 후 안도감) |
|
||||
| **아이템 슬롯** | 장착 아이템 현황 | 파츠별 1개 제한 가시화 |
|
||||
| **출발 버튼** | 스테이지 진입 | 단일 CTA (Call-To-Action) |
|
||||
| **기본 무기 정보 (신규)** | 퇴마사 고유 기본 무기 스펙 | 시작 무기 정보 |
|
||||
| **출발 버튼** | 스테이지 진입 | 단일 CTA |
|
||||
|
||||
- NPC 대화·상점은 Phase 3-C 이후 확장 (파일럿 제외)
|
||||
- 화면 전환: 버튼 탭 → 씬 전환. 씬 전환 UX (페이드·연출)는 Phase 3-B 후속 과제
|
||||
- 화면 전환: 버튼 탭 → 씬 전환. 씬 전환 UX(페이드·연출)는 Phase 3-B 후속
|
||||
|
||||
## 5. 사망·복귀 전환 UI
|
||||
## 5. 사망·복귀 전환 UI (BT7-Plan 업데이트)
|
||||
|
||||
**목표**: 사망 낙차 감정을 1~2초 이내로 처리하여 "다시 하고 싶다" 루프 유지 (02_코어_루프 §6 계승)
|
||||
**목표**: 사망 낙차 감정을 1~2초 이내로 처리하여 "다시 하고 싶다" 루프 유지
|
||||
|
||||
1. **사망 연출**: 1~2초 (캐릭터 소멸 애니메이션)
|
||||
2. **결과 표시**: "런 종료 / 레벨 N 도달 / 획득 경험 N" 1화면. 심플하게
|
||||
3. **마을 복귀**: 로딩 느낌 없이 Additive Load 씬 전환 (VillageScene 상시 유지 방식)
|
||||
4. **유지 자산 확인**: 마을 복귀 직후 아이템·특성 유지 표시 → 낙차 후 안도 제공
|
||||
1. **사망 연출**: 1~2초 (**하트 소멸 애니메이션** + 캐릭터 소멸 애니메이션) — BT7-Plan 하트 UI 반영
|
||||
2. **결과 표시**: "런 종료 / 레벨 N 도달 / 최대 하트 N / 획득 경험 N / 발동 각성 N" 1화면
|
||||
3. **마을 복귀**: 로딩 느낌 없이 Additive Load 씬 전환
|
||||
4. **유지 자산 확인**: 마을 복귀 직후 아이템·특성 유지 표시 → 낙차 후 안도 제공 (최대 하트 수는 기본 1개로 초기화 표시)
|
||||
|
||||
**인지 목표**: 사망부터 다음 스테이지 선택까지 5초 이내 (페이싱 유지).
|
||||
|
||||
|
|
@ -102,26 +172,34 @@ HUD 원칙: **정보 과다 = 정보 없음**. 라이프 1 시스템(즉사 전
|
|||
| BT.Framework | HUD 활용 용도 | 구현 시점 |
|
||||
|---|---|---|
|
||||
| **Log** | HUD 갱신 이벤트 디버그 | Tier 1 P0 즉시 |
|
||||
| **FormatEx** | "Lv.N" · 경험치 수치 포맷 | Tier 1 P1 |
|
||||
| **EnumEx** | 카드 슬롯 타입 enum 순회 | Tier 1 P2 |
|
||||
| **FormatEx** | "Lv.N" · 경험치 수치 포맷 · "Lv.5 / 5" 스택 표기 | Tier 1 P1 |
|
||||
| **EnumEx** | 카드 슬롯 타입 enum(액티브/패시브/각성) 순회 | Tier 1 P2 |
|
||||
| **SafeAreaBorder** | HUD 요소 Safe Area 자동 패딩 | Tier 2 신규 구현 후 |
|
||||
|
||||
## 7. 접근성 기본 원칙
|
||||
|
||||
- **색맹 대응**: 라이프·보스 HP는 색상 외 형태(아이콘·바 형태)로 이중 표현
|
||||
- **색맹 대응**: 하트·보스 HP·슬롯 분류 구분은 색상 외 형태(아이콘·위치·기호)로 이중 표현
|
||||
- **텍스트 크기**: 최소 14sp (모바일 기준), 중요 수치는 18sp 이상
|
||||
- **버튼 터치 영역**: 최소 44×44dp (Apple HIG / Google Material 공통 기준)
|
||||
- **각성 발동 연출**: 플래시 민감도 대응 옵션 제공 (풀스크린 효과 강도 조절)
|
||||
|
||||
## 8. 기각안
|
||||
|
||||
1. **"미니맵 HUD 포함" — 기각.** 2D 횡스크롤 플랫포머에서 미니맵 정보 밀도가 손맛·집중을 저해. 스테이지 구조는 선형 진행 설계로 방향 혼란 없음. 추가 필요 시 Phase 3-C 재검토.
|
||||
2. **"카드 슬롯 상시 크게 표시" — 기각.** 카드 슬롯은 빌드 확인 보조 정보. 전투 중 시선 분산 유발. 반투명 소형으로 유지하되 일시정지 시 풀 표시.
|
||||
3. **"시간 제한 카드 픽" — 기각.** 캐주얼 포지션. 시간 제한은 긴장을 주지만 카드 텍스트 읽기 방해 → 빌드 이해도 하락 → 재미 축 1 "육성 카타르시스" 저해.
|
||||
1. **"미니맵 HUD 포함" — 기각 (현행 유지).** 2D 횡스크롤 플랫포머에서 미니맵 정보 밀도가 손맛·집중을 저해. 선형 진행 설계로 방향 혼란 없음.
|
||||
2. **"카드 슬롯 상시 크게 표시" — 기각 (현행 유지).** 슬롯은 빌드 확인 보조 정보. 반투명 소형으로 유지하되 일시정지 시 풀 표시.
|
||||
3. **"시간 제한 카드 픽" — 기각 (현행 유지).** 캐주얼 포지션. 시간 제한은 카드 텍스트 읽기 방해.
|
||||
4. **"하트 UI 대신 HP 수치만 표기" — 기각 (BT7-Plan 신규).** 하트 분할 시각화의 재미 핵심은 "수치가 아닌 형태 인지"(젤다 BotW 고전 강점). 수치 표기는 부가 정보로만 허용 (디버그용 옵션).
|
||||
5. **"액티브·패시브 슬롯 통합 표시" — 기각 (BT7-Plan 신규).** PD 확정 방향 3에서 3분류 구조 명시. 통합 표시는 "어떤 카드가 자동 발동되는가" 정보 혼선 유발.
|
||||
6. **"각성 발동 연출 생략 (즉시 변환)" — 기각 (BT7-Plan 신규).** 각성은 클라이맥스 순간의 카타르시스. 연출 생략은 재미 축 1 "육성 폭발" 감정 파괴. 3초 연출 유지 필수.
|
||||
|
||||
## 9. 개발팀 이관 항목
|
||||
|
||||
- CardPickCanvas.prefab + Unscaled Time 애니메이션 구현
|
||||
- CardPickCanvas.prefab + Unscaled Time 애니메이션 구현 (**액티브/패시브 분류 구분 표시 반영**)
|
||||
- **AwakeningCanvas.prefab 신규 구현** — 각성 발동 풀스크린 연출 + 복수 조건 선택 UI
|
||||
- SafeAreaBorder 신규 구현 후 HUD Canvas에 적용
|
||||
- **하트 UI 분할 스프라이트 5단계** (풀·3/4·반·1/4·빈) 렌더링 시스템
|
||||
- **하트 아이콘 동적 생성 로직** (최대 하트 수 증가 시 우측 추가)
|
||||
- **각성 대기 표시 황금 테두리 + ★ 아이콘** (액티브 슬롯 조건 충족 시)
|
||||
- 사망 결과 화면 씬 플로우 (Additive Load VillageScene 유지)
|
||||
- FormatEx "Lv.N" · 경험치 바 UI 컴포넌트 구현
|
||||
|
||||
|
|
@ -130,3 +208,4 @@ HUD 원칙: **정보 과다 = 정보 없음**. 라이프 1 시스템(즉사 전
|
|||
| 일시 | 변경 | 사유 | 기안 |
|
||||
|------|------|------|------|
|
||||
| 2026-04-23 | v0.1 Phase 3-B 초기 확정 | BT6-Plan PD 지시 | ux-designer |
|
||||
| 2026-04-24 | v0.2 — BT7-Plan 개정 집행 — PD 지시 11건 반영 (하트 분할 UI 5단계·액티브/패시브 슬롯 분리·각성 발동 풀스크린 연출·각성 대기 표시·하트 수 증가 UI) | 기획팀장 |
|
||||
|
|
|
|||
Loading…
Reference in New Issue