ThreeKingdomsSlingshot/README.md

57 lines
4.4 KiB
Markdown
Raw Permalink Normal View History

# 삼국지 슬링샷 (가제) — 턴제 슬링샷 전투 프로토타입
Unity 6000.3.23f1 · 2D · 도형 플레이스홀더(아트 리소스는 별도 세션에서 제작 중).
## 열기·실행
1. Unity Hub 로 이 폴더를 연다 (6000.3.x 권장 · 6000.0 이상이면 열림).
2. `Assets/Scenes/Battle.unity` 를 열고 Play. Game 뷰는 세로(9:16) 비율 권장 — 다른 비율도 전장 전체가 보이도록 카메라가 맞춘다.
3. 씬이 없으면 메뉴 **TKS → Setup Project** 를 실행하면 설정 자산과 씬을 다시 만든다.
## 조작 (버튼 없음)
- 아군 유닛을 누른 채 **뒤로 당겼다 놓으면** 반대 방향으로 날아간다(슬링샷). 하얀 선 = 날아갈 경로, 끝의 링 = 최종 목표점. 링이 주황색이면 목표점이 적 위에 있다(명중).
- 이동과 공격은 하나의 조작이다. 경로 위에 적이 있으면 병종 규칙대로 공격한다. 주황 링이 켜진 적 = 이번 조작으로 공격하게 될 적.
- 전장(20×32)은 화면보다 넓다. **빈 곳을 드래그하면 스크롤**, 마우스 휠 = 줌, 오른쪽 위 **미니맵을 탭하면 그 지점으로 이동**. 행동 중인 유닛은 카메라가 따라간다.
- 적은 교전 범위(스테이지별 11~12) 안에 아군이 들어와야 움직인다. 멀리 있는 부대는 자리를 지키므로 부대 단위로 각개격파할 수 있다.
- 아군 전원이 행동하면 자동으로 적군 턴이 진행된다. 보병 추가 이동만 남았을 때 빈 곳을 탭하면 건너뛴다.
- 승리/패배 화면은 탭으로 다음 전투·재도전.
- 스킬 아이콘은 자리만(초기 단계 미구현).
## 병종 규칙 (초안 기획 반영)
| 병종 | 경로 위 적 | 최종 목표점 명중 시 |
|---|---|---|
| 보병 | 첫 유닛(아군·적군)에 부딪히면 알까기처럼 양쪽이 즉시 튕김(상대 = 남은 힘 · 자신 = 반대로 절반) · 적이면 부딪힌 순간 공격(반격 받음) | 추가 이동 1회(이동만) |
전투 로직 #1080 — 알까기 충돌(보병) · 관통·아군 직전 정지(기병) · 밀며 함께 전진(창병) · 밀린 아군 공격 기회 · 궁병 제자리 사격(사거리 = 슬링샷)+접근 20 % · 궁수 근접 피해 50 %/피격 +50 % · 원화 1차·2차 반영(전장 배경 + 황건적 5 + 동탁군 4) · 테스트 22/22 - ActionResolver 전면 재작성: InfantryRoutine(접촉점 정지 · Push 접촉 방향 × collisionPushRatio · 적이면 공격+반격 뒤 밀림) · SpearRoutine(앞 유닛과 같은 속도로 함께 전진 · 접촉 간격 유지) · CavalryRoutine(벽만 막음 · StopBeforeUnclearedAllies) · ArcherRoutine(AttackRange = 슬링 · ArcherMoveAllow = 슬링 × archerRangeRatio) · PushedAllyAttack(규칙 ⑤ · ActionOutcome.Pushed/Notes) - Combat: Damage(melee) 궁병 근접 배율(근접 유닛 상대만) · FirstUnitOnPath · TouchingOpponent · FreeTravel ignore - BalanceConfig/Defaults: archerMeleeDealtRatio 0.5 · archerMeleeTakenRatio 1.5 · collisionPushRatio 1 · boardArt battlefield_01 (자산 재시드) - Board: Resources/Board/<boardArt> 원화 배경(격자·진영 띠 생략) · UnitArtImporter Board 규칙 · GameBootstrap - Resources/Units: hgj_infantry·spear·cavalry·archer·boss_zhangjiao · dz_infantry·spear·cavalry·archer (원화 세션 납품 정지 그림 · rig_frames_export static) · Resources/Board/battlefield_01.png - BattleManager Describe 「밀어냄 · 밀린 B → 적 공격」 · BattleHUD 궁병 줄 · 테스트 22종(신규·개정 7 + 원화 확인) · CLAUDE.md · README Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-11-04 06:56:02 +00:00
| 기병 | 유닛을 무시하고 관통 · 경로 위 적은 모두 피해 · 아군은 지나칠 거리가 안 나오면 직전에 멈춤 | 제자리로 복귀 |
| 창병 | 첫 유닛을 튕기지 않고 밀며 함께 전진 · 적이면 피해(반격 받음) · 아군은 밀기만 | 대기 — 적군 턴에 반경 안에서 움직이는 적에게 피해 |
| 궁병 | 사거리(= 슬링샷 범위) 안의 적은 제자리 사격 · 사거리 밖 +20 % 안의 적은 들어올 만큼만 다가가 사격(반격 없음) · 더 멀면 목표점까지 이동 | 무조건 크리티컬 |
전투 로직 #1080 — 알까기 충돌(보병) · 관통·아군 직전 정지(기병) · 밀며 함께 전진(창병) · 밀린 아군 공격 기회 · 궁병 제자리 사격(사거리 = 슬링샷)+접근 20 % · 궁수 근접 피해 50 %/피격 +50 % · 원화 1차·2차 반영(전장 배경 + 황건적 5 + 동탁군 4) · 테스트 22/22 - ActionResolver 전면 재작성: InfantryRoutine(접촉점 정지 · Push 접촉 방향 × collisionPushRatio · 적이면 공격+반격 뒤 밀림) · SpearRoutine(앞 유닛과 같은 속도로 함께 전진 · 접촉 간격 유지) · CavalryRoutine(벽만 막음 · StopBeforeUnclearedAllies) · ArcherRoutine(AttackRange = 슬링 · ArcherMoveAllow = 슬링 × archerRangeRatio) · PushedAllyAttack(규칙 ⑤ · ActionOutcome.Pushed/Notes) - Combat: Damage(melee) 궁병 근접 배율(근접 유닛 상대만) · FirstUnitOnPath · TouchingOpponent · FreeTravel ignore - BalanceConfig/Defaults: archerMeleeDealtRatio 0.5 · archerMeleeTakenRatio 1.5 · collisionPushRatio 1 · boardArt battlefield_01 (자산 재시드) - Board: Resources/Board/<boardArt> 원화 배경(격자·진영 띠 생략) · UnitArtImporter Board 규칙 · GameBootstrap - Resources/Units: hgj_infantry·spear·cavalry·archer·boss_zhangjiao · dz_infantry·spear·cavalry·archer (원화 세션 납품 정지 그림 · rig_frames_export static) · Resources/Board/battlefield_01.png - BattleManager Describe 「밀어냄 · 밀린 B → 적 공격」 · BattleHUD 궁병 줄 · 테스트 22종(신규·개정 7 + 원화 확인) · CLAUDE.md · README Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-11-04 06:56:02 +00:00
밀린 아군이 적과 닿으면 그 자리에서 공격 1회(조작마다 · 자기 행동 소모 없음). 상성: 보병 > 창병 > 기병 > 보병. 궁병은 모두에게 약함(받는 피해 1.5배) · 근접 유닛과 근접 전투하면 주는 피해 50 % · 받는 피해 +50 %(원거리 사격은 패널티 없음).
## 데이터(SOT)
모든 수치·영웅·스테이지는 `Assets/Resources/BalanceConfig.asset` 하나에 있다(Inspector 에서 조정). 코드에는 수치가 없다.
초기값 재시드: 메뉴 **TKS → Reset Balance Defaults**.
## CLI
에이전트 작업 워크플로(열린 에디터 제어 = Unity 공식 CLI + `com.unity.pipeline`)는 `CLAUDE.md` 에 있다. 아래는 에디터가 닫혀 있을 때의 배치 실행.
```
# 컴파일 + 설정 자산·씬 생성 (BuildFresh = 기본값 재시드까지)
Unity.exe -batchmode -nographics -projectPath <proj> -executeMethod TKS.EditorTools.ProjectSetup.Build -quit -logFile <log>
# 플레이모드 테스트
Unity.exe -batchmode -nographics -projectPath <proj> -runTests -testPlatform PlayMode -testResults <xml> -logFile <log>
# 자동 플레이 스크린샷 실측 (GUI 에디터 · 스스로 종료)
Unity.exe -projectPath <proj> -executeMethod TKS.EditorTools.ProjectSetup.AutoPlayCapture -autoplayDir <dir> -autoplayTurns 3 -logFile <log>
```
## 구조
- `Assets/Scripts/Runtime/` — `GameBootstrap`(씬 구성) · `BattleManager`(턴·승패) · `ActionResolver`(병종 규칙) · `Combat`(피해 공식·기하 질의) · `SlingshotInput`(조작·스크롤·줌) · `CameraController`(넓은 전장 카메라) · `EnemyAI`(교전 범위) · `BattleHUD`(HUD·미니맵) · `Unit`/`UnitView` · `Board`
- `Assets/Scripts/Editor/` — `ProjectSetup`(자동 구성) · `BalanceDefaults`(최초 시드)
- `Assets/Tests/PlayMode/` — 병종 규칙·턴 흐름·승리 판정 테스트