---
title: 공통 전투 프레임워크·무기 전환·Unity Behavior AI 구현 및 점검
date: 2026-11-01T18:08:41.801Z
version: v1.0.4
status: 작업 중
state: progress
project: sampleprojectforunity
type: 작업 메뉴얼
report_kind: manual
category: 순차 작업 · 반복 QA
summary: 10시간은 최대 예산이며 구현과 필수 검증이 끝나면 즉시 종료합니다. 공통 전투와 실제 Unity Behavior 연결을 진행합니다.
format: tracefolio-v2
priority: normal
manual_id: combat-framework-20261102
round: 5
manual_state: active
payload: ../assets/submissions/2026-11-01-manual-combat-framework-20261102-20261101180841801-v1.0.4.json
---

## 목표와 완료 기준

공통 무기 스왑·뽑기/수납·근접/원거리 공격·Unity Behavior 기반 AI 교전·사망과 CharacterStage 선택 연계를 간단하고 재사용 가능한 프레임워크로 구현하고 실제로 검증한다.

완료 기준: 기존 변경 보존, 공통 API와 간소화 수치 대조, 실제 Behavior authoring/runtime 그래프 및 NavMesh 연결, Stage 선택과 Playground 장착·전투·사망·재시작, 공격/전환/입력/예외 경로 회귀와 필수 반복 실행, 실제 화면, 상세 문서·보고서·메뉴얼의 공개 배포 확인. 기한2026-11-02 11:46:15 KST 이전 필수 완료.

후속 5회차 · 순차 진행 · 전체 8개 · 이번 실행 T03, T04, T05, T06, T07

## 순차 작업 메뉴얼

| 순서 | 작업 | 실행 절차 | 완료 기준 | QA 절차 | 상태 |
| --- | --- | --- | --- | --- | --- |
| T01 | 현재 구조·기준 점검 | 코드·에셋·설치 Behavior1.0.16·프리팹·기존 QA를 조사하고 기준 파일과 스크립트 수를 기록한다. | 재사용 경로와 구체적인 결함 근거, 컴파일 기준 확보 | 설치 문서/소스·직렬화 참조·Unity 컴파일 대조 | 완료 |
| T02 | 공통 소유권·상태 API 정리 | 플레이어/AI 빙의를 분리하고 체력·공격 취소·사망·초기화 계약을 간소화한다. | AI가 카메라/PlayerInput 없이 동작, 음수 피해/중복 사망/무효 상태 안전 | 소유권·생명주기·체력 경계와 기존 입력 회귀 | 완료 |
| T03 | 무기 스왑·뽑기·수납 | 기존 Pawn 장비 목록과 소켓을 재사용해 선택·장착·수납·공격 중 교체 정책을 연결하고 빈 클래스를 통합한다. 기존 Unsheathe/SheatheBack01_R 클립을 연결하고 실제 길이의45% 지점에서 소켓을 교체한다. | 검/총 전환, 손·수납 위치와 단일 활성 무기, 잘못된 요청 안전 | 반복 교체·공격/피격 중 교체·해제·소유자 변경·시각 확인 실제 클립 전환 중 공격 차단과 완료 시 손/등 소켓 확인. | 완료 |
| T04 | 근접·원거리 공통 전투 | 총 발사·조준·장애물·대미지와 기존 근접 히트박스를 공통 공격/쿨다운/사망 흐름에 연결한다. | 플레이어와 AI가 동일 공격 API 사용, 사망 후 공격/피해 중단 | 실제 물리 충돌·총구 차폐·자가/팀 판정·중복 히트·취소/사망 회귀 | 완료 |
| T05 | Unity Behavior 실제 AI | 기존 AIController와 최소 전투 액션으로 탐색·접근·공격 그래프와 NavMesh를 연결한다. | BehaviorGraphAgent의 실제 그래프가 교전을 제어, 도달 불가/표적 소실 처리 | 그래프 authoring/runtime·Blackboard·탐색/접근/공격/사망·서로 다른 인스턴스 검증 | 완료 |
| T06 | 씬·오브젝트 UI 연계 | CharacterStage 장비 선택·정면 미리보기와 Playground 실제 장착·교전·재시작을 연결한다. 선택ID별 세션 상태로 번들 인스턴스·수명에 독립적인 선택을 유지하고 기존 그룹의 공유 Addressable을 사용한다. | 편집 가능한 씬/프리팹 UI와 Inspector 이벤트, 공유 선택 데이터와 실제 장착 일치 | Stage 왕복·선택 반영·실제 입력·메뉴/모달·전투/사망/재시작 화면 실제 번들 플레이어에서 왕복 선택 유지, 복제된 데이터·다른 선택ID 격리 대조. | 완료 |
| T07 | 간소화·회귀·지속 실행 | 관련 코드를 재검토하고 빈 클래스와 중복 상태를 제거한 뒤 실제 경계·씬 왕복·전투 반복 및 기존 기능 회귀를 수행한다. 명시적 asmdef로 역할을 분리하고 샘플·QA를 제거한 격리 복제본에서 본체 컴파일과 씬·프로젝트 설정 보존을 검증한다. | 스크립트 수와 역할 전후 대조, 실제 실패 보존과 수정 후 통과, 반복 실행에서 그래프·참조 안정성 | 초기화·파괴·무기 교체·씬 왕복 반복, 실제 AI 교전과 사격, 기존 씬 UI 및 무기 궤적 회귀 어셈블리 의존 방향과 제거 후 본체 컴파일·설정 해시 대조. Play 시작·종료·다음 씬 준비를 포함한 Unity 전체 로그의 예외0 확인. | 진행 |
| T08 | 상세 문서·공개 결과 | 구조·사용법·설정·수정 이유·검증과 제한을 상세 보고하고 실제 화면·메뉴얼을 공개한다. | 문서 검사·임시 도구 정리·개별 보고서/첨부/최종 메뉴얼 공개 확인 | 소스/에셋 대조·문서/링크·스테이징 범위·푸시/배포/외부 본문/첨부 검증 | 대기 |

## QA 반복 기록

### Q01 · step · 2026-11-02T02:16:22+09:00

원본 기준 검사 통과

- T01 r1 · pass: 격리 복제본에서 원본 Unity 컴파일과 Splash/Playground/CharacterStage 누락 스크립트 검사 통과 · 근거: docs/verification/combat/baseline-editor.json; Logs/combat-baseline.log
### Q02 · step · 2026-11-02T02:26:59+09:00

전투 첫 Play 검사: 수납 소켓 누락 확인, 수정 후 재검사 진행

- T03 r1 · fail: 6개 검사 후 수납 부모 검증 실패. 저장 프리팹 holsterSocket fileID0 확인. 옵션 Chest 본 대신 실제 Spine 본에 저장하도록 수정 중 · 근거: docs/verification/combat/editor-1/results.json; RobotKyle.prefab holsterSocket
### Q03 · step · 2026-11-02T02:29:35+09:00

수납 수정 후 공통 상태·장비 검사 통과

- T02 r1 · pass: 체력·사망·빙의 해제와 초기화 실제 Play 확인; 순수 체력/버프 소스8개 검사 통과 · 근거: editor-3/results.json; pure-results.json; baseline-buff.json
- T03 r1 · pass: 손/수납 소켓, 무효·외부 장비 거부,30회 교체와 장전 취소 통과 · 근거: docs/verification/combat/editor-3/results.json
### Q04 · step · 2026-11-02T02:38:35+09:00

Behavior 실행 진단 실패를 보존하고 공유 블랙보드 빌드 순서 수정 중

- T05 r1 · fail: 실제 적 탐색은 성공하지만 접근이 진행되지 않음. 저장 runtime graph의 Target 미포함과 inline 변수 직렬화 확인. SerializeReference 및 블랙보드 버전 갱신 후 그래프 빌드 순서로 수정 중 · 근거: editor-6/results.json; editor-8/results.json; CombatBehavior.asset; 설치 패키지 GraphAssetProcessor.cs
### Q05 · step · 2026-11-02T02:40:10.1871682+09:00

공통 전투·Behavior AI·Stage 연계34개 실제 Play 통과

- T04 r1 · pass: 실제 히트스캔·차폐·아군·쿨다운·장전·근접 피해·사망/복원 통과 · 근거: docs/verification/combat/editor-9/results.json
- T05 r1 · pass: 저장 그래프의 Target 공유 후 적 탐색→7m 접근→공격→사망까지 실제 실행, 오류0 · 근거: editor-9/results.json trace; CombatBehavior.asset
- T06 r1 · pass: Stage 직렬화 버튼·실제 장비 미리보기·다음 씬 장착 반영·반복 왕복의 단일 매니저 통과 · 근거: docs/verification/combat/editor-9/results.json
### Q06 · step · 2026-11-02T02:55:11.3974135+09:00

첫 그래픽 번들 플레이어에서 선택 유지 실패 확인

- T06 r1 · fail: 실제 AI 총기와 두 그래프 격리는 통과했으나 Stage 복귀 시 선택된 총이 유지되지 않음. AssetDatabase와 번들 경로 차이를 확인하고 공유 Addressable·선택ID별 세션으로 수정 · 근거: docs/verification/combat/player-1/results.json
### Q07 · regression · 2026-11-02T03:04:40.3247415+09:00

기존 검기·씬 회귀: 기능 검사는 통과했지만 전체 로그에서 SpringArm 예외 발견

- T07 r3 · fail: 검기는 소유자 없는 편집 미리보기의 안전 계약에 맞게 기존 어설션을 갱신 후 실제 렌더 통과. 세 씬 기능106/104/117 통과와 별개로 Play 사이 SpringArm.OnValidate의 GameMode null 예외2건 발견. null/파괴/빙의 해제 가드 수정 후 전체 재QA · 근거: ribbon-results.json; Logs/combat-final-build-editor.log; Logs/combat-final-build-editor-3.log
### Q08 · step · 2026-11-02T03:05:20.0614535+09:00

실제 그래픽 번들 플레이어46개 검사·6개 화면 통과

- T03 r2 · pass: 뽑기/수납 애니메이션·중간 소켓 전환·공격 차단·30회 교체 및 소유권 검사 통과 · 근거: docs/verification/combat/player-2/results.json
- T04 r1 · pass: 실제 사격·차폐·아군·장전·근접·사망 애니메이션·복원 통과 · 근거: player-2/results.json;03-defeat.png
- T05 r1 · pass: 실제 근접/총기 AI, Target 소실·이동 막힘3초 제한, 두 그래프/블랙보드 격리 통과 · 근거: docs/verification/combat/player-2/results.json
- T06 r2 · pass: 실제 번들 Stage 선택→Playground 유지, 복제SO 동일ID 공유·다른ID 격리, 반복 왕복·매니저 중복 없음 통과 · 근거: docs/verification/combat/player-2/results.json;05-stage-rifle.png

## 남은 작업과 다음 반복

SpringArm 전체 로그·접지 화면 최종 회귀, 단독 컴파일 갱신, 문서·이미지 최적화·공개 결과·정리

이전 회차: [메뉴얼 열기](../../../projects/sampleprojectforunity/reports/2026-11-01-manual-combat-framework-20261102-20261101174828301-v1.0.3.html)

## 작업 시간

- 제안 시간: 초기60~100분 예상, 최대10시간. 사용자 정정에 따라 완료 즉시 종료
- 실제로 완료된 시간: 2026-11-02 01:46:15 KST 작업 시작, 마감11:46:15 KST
- XERJ: 미사용 — XERJ MCP와 프로젝트 검색 스크립트가 없어 rg 사용. 설치된 Behavior1.0.16 문서·소스와 현재 코드로 검증.
