diff --git a/docs/asset-register.md b/docs/asset-register.md index 6e0d8bb..8f94a00 100644 --- a/docs/asset-register.md +++ b/docs/asset-register.md @@ -10,7 +10,7 @@ | TMP Essential Resources | `Assets/TextMesh Pro/` | 설치한 Unity uGUI 2.6의 기본 리소스. Liberation Sans의 OFL은 `Assets/TextMesh Pro/Fonts/LiberationSans - OFL.txt`. Examples/Extras를 가져오지 않음. | 실제 Editor import. 우리 화면은 정적 한국어 폰트 참조. | | 한국어 음성 | `Presentation/Audio/Voice/` | 로컬 Qwen3-TTS 1.7B CustomVoice, Sohee, 고정 revision·말투·seed 기록. [상세 제작 등록](qwen-voice-register.md), `SourceAssets/Audio/Voice/`의 원본·manifest·편집 선택 해시. 모델 코드/카드 Apache-2.0 표시를 기록하며 출력 독점권을 주장하지 않음. | 실제 GPU 생성·파형/해시 검사 및 Unity 재생. 첫 퍼즐 필수 count_01·guide_collect·guide_count는 2026-10-05 KST 사용자 청취 승인. 나머지는 미검수 초안. count_05 이상 출력 제외. | | Voice/SFX/Music Mixer | `Presentation/Audio/GameAudio.mixer` | 직접 작성한 Editor 빌더에서 Master의 하위 그룹 생성. | 음성은 2D Voice로 연결. 성공 자유 전환에서 숫자 큐 유지. | -| 효과음·음악 | 아직 없음 | 사용자가 나중에 추가하기로 결정. 요청표 [audio-requests.md](audio-requests.md). | 선택·최종 청취 미완료. 자동 대체 제작을 하지 않음. | +| 효과음·음악 | 없음 | 2026-10-06 사용자 결정으로 첫 버전에서 제외. 결정과 이전 요청표 [audio-requests.md](audio-requests.md). | 채택·청취 대상 없음. 대체 음원을 제작하지 않음. | `Presentation/` 축약 경로의 앞부분은 `Assets/MagnetismHeroes/UnityRuntime/`입니다. AI 2D 자산·Blender 원본·최종 마스크/에너지 망토·변신/세 테마는 이 등록에서 완료로 표시하지 않습니다. @@ -39,7 +39,7 @@ Stage06/10/14 ScriptableObject와 GameApp의 대표 선택·나누기·취소 | 별 작업실 21..30 | `Presentation/Models/{WorkshopStar,WorkshopGear,WorkshopCrystals}.fbx`, 동명 Scenery 프리팹 | 직접 제작 별·장난감 톱니·결정. 금색 URP Lit. 새로운 임무/생활 장치 규칙 없음. | | 실제 30 정의 | `Assets/MagnetismHeroes/UnityRuntime/StageAssets/Stage01.asset` .. `Stage30.asset` | Unity Editor API로 작성. R07 번호/초기/목표/종류는 고정이며 테마는 미술 데이터. 런타임 원본 수정 없음. | -수집 자석 55개(1..5,16..20)의 시점 탐색·실제 Collider pick·직접 drag/수집을 PlayMode에서 확인하고 `artifacts/verification/Content/editor-play/counting-discovery.txt`에 stage/ID/yaw/pitch 기록을 남긴다. 세 테마의 Free 0..10 공급, 전체 묶음 반납, 원래 stage 테마 복원도 검사한다. 시범 실루엣은 UI Image만 사용하며 실제 구 ID/Collider가 없다. T7의 최종 AI 얼굴·UI 이미지·VFX와 사용자가 추후 제공하는 SFX/BGM은 별도 미완료다. +수집 자석 55개(1..5,16..20)의 시점 탐색·실제 Collider pick·직접 drag/수집을 PlayMode에서 확인하고 `artifacts/verification/Content/editor-play/counting-discovery.txt`에 stage/ID/yaw/pitch 기록을 남긴다. 세 테마의 Free 0..10 공급, 전체 묶음 반납, 원래 stage 테마 복원도 검사한다. 시범 실루엣은 UI Image만 사용하며 실제 구 ID/Collider가 없다. T6 당시 T7 외형·음향은 후속 작업이었다. 현재 얼굴·UI·VFX 채택 상태는 아래 T7 등록을 따르고, SFX/BGM은 2026-10-06 결정으로 첫 버전에서 제외한다. ## T7 현재 채택: 얼굴·표현·음성 (2026-10-05) @@ -52,6 +52,6 @@ Stage06/10/14 ScriptableObject와 GameApp의 대표 선택·나누기·취소 | 얼굴·빛·반응형 가로 UI | `Editor/PresentationAssets.cs`, 기존 GameApp/GroupBadge/MagnetFriend prefab | 실제 Unity API 생성. 기존 GameApp GUID 유지. 숫자 배지는 같은 묶음 위의 가까운 공간을 찾는다. 카메라 FOV62/고정 상향 pivot .65는 미술 프레이밍이며 저장 CameraState 형식은 동일. 새 자유놀이 공급 row spacing1.8만 적용하며 저장된 배열/drag 위치는 재배치하지 않는다. | | runtime 44 한국어 음성 | `SourceAssets/Audio/Voice/active-adoption.json` | 현재 runtime→edited→generated 정확 SHA/대본/출처/승인 기록 연결. 기존 3 승인 + 새 여덟. 승인 + 나머지40 승인. 이전 거절된8 이력과 과거 manifests는 유지. 모든44 사용자 청취 승인; 추론 도구/모델/SourceAssets는 APK 제외. | | Qwen/Noto notices | `Assets/StreamingAssets/Notices/` | Apache-2.0 원문/모델 카드와 Noto OFL 원문을 빌드 포함 위치에 staging. 소스 검사와 실제 APK ZIP/byte 검사는 증거 범위를 구분한다. | -| SFX/BGM 연결 | `Presentation/GameSound.cs` | 기존 Mixer Voice/SFX/Music 직접 연결. 실제 발화 중 duck, nav/pause 무음 정리, 동일 테마 pause 재개. 사용자 미제공 모든 SFX/BGM clip은 null, 대체 음원 채택 없음. 실제 음원 청취·음악 3회 반복 최종 인수는 미완료. | +| SFX/BGM 연결 | `Presentation/GameSound.cs` | 기존 Mixer Voice/SFX/Music 직접 연결과 lifecycle hooks 유지. 사용자 결정으로 첫 버전 SFX/BGM 제외. GameApp의 효과음 10개·음악 4개 clip 참조는 null이며 대체 음원 없음. 실제 음원 청취·음악 3회 반복은 제외 항목이며 통과로 표시하지 않음. | Editor RT 캡처는 Camera.Render와 임시 ScreenSpaceCamera Canvas/안전영역 시뮬레이션 후 복원한 결과이며 Android 기기 화면과 구별한다. JSON은 raw CameraState, 실제 transform/FOV/pivot, 화면·Canvas·viewport 및 측정 범위를 기록한다. editorUnityStatsDrawCalls는 UnityEditor.UnityStats.drawCalls의 해당 Editor frame 관찰값이다. GameView/SceneView 귀속을 이 API만으로 확정할 수 없어 RT GPU draw/overdraw나 제품 draw call 합격으로 취급하지 않는다. Camera.Render wall time은 Editor 비용이며 AVD/실기기 프레임 합격 증거가 아니다. 0/미측정 값을 합격으로 취급하지 않는다. diff --git a/docs/audio-requests.md b/docs/audio-requests.md index 5dc80b0..208eb15 100644 --- a/docs/audio-requests.md +++ b/docs/audio-requests.md @@ -1,4 +1,8 @@ -# 효과음·음악 선택 요청 +# 효과음·음악 범위 결정 + +2026-10-06 사용자는 “효과음·배경음악 없이 진행하겠습니다. T7을 마무리하고 T8을 진행하세요.”라고 결정했다. **첫 버전에는 효과음과 배경음악을 포함하지 않는다.** 아래 요청표는 이전 후보 목록이며 현재 파일 전달 요청이나 완료 조건이 아니다. 한국어 숫자·안내 음성 44개는 유지한다. 효과음·음악의 실제 재생·믹싱 청취·음악 3회 반복 인수는 범위에서 제외하며 통과했다고 기록하지 않는다. + +## 이전 선택 요청 이력 효과음과 음악은 사용자가 선택한다. 아래는 선택·편집을 위한 요청 목록이며 아직 채택한 최종 음원은 없다. 같은 파일을 여러 행동에서 재사용할 수 있다. 음성은 별도로 로컬 Qwen3-TTS에서 제작한다. @@ -21,4 +25,4 @@ 파일 또는 후보의 출처 링크와 사용 조건을 함께 받는다. 선택한 원본은 SourceAssets/Audio에 보관하고 편집본만 Unity에 연결한다. 초기 전달 형식은 음성·효과음 WAV PCM16 mono 44.1kHz, 음악 WAV PCM16 stereo 44.1kHz다. 원본이 다른 형식이어도 사용할 수 있다. 승인 없는 구매는 수행하지 않는다. -T7 연결 상태: 기존 Voice/SFX/Music Mixer group에 direct AudioSource를 연결하고 합체/분리/계수/성공/선택/공급/힌트/UI hooks 및 발화 duck, navigation/pause 정리, 현재 theme 재개를 구현했다. 실제 SFX/BGM asset은 사용자의 추후 선택 대기이며 모든 clip=null이다. 합성 test-only AudioClip은 lifecycle 회귀에만 사용하고 runtime 대체 음원으로 채택하지 않았다. 실제 음원 재생·음악 3회 반복 청취/인수는 미실행·미완료다. +T7 현재 연결 상태: 기존 Voice/SFX/Music Mixer group과 AudioSource, 입력 반응 hooks는 유지한다. 실제 SFX/BGM 자산은 채택하지 않고 GameApp의 관련 14개 clip 참조는 모두 null이다. 합성 test-only AudioClip은 lifecycle 회귀에만 사용하며 runtime 대체 음원으로 채택하지 않았다. 승인된 한국어 음성은 재생한다. 효과음·음악 파일 선정은 대기 중인 작업이 아니다. diff --git a/docs/handoff.md b/docs/handoff.md index c85dca0..f780684 100644 --- a/docs/handoff.md +++ b/docs/handoff.md @@ -4,7 +4,13 @@ 재개 기록: 같은 날 사용자가 이 문서를 읽고 작업을 계속하라고 요청했다. **중단 요청은 해제됐으며 T7의 미완료 Android 검사와 필요한 최소 수정을 재개한다.** 아래 중단 당시 상태와 실제 최신 Git·검사 기록을 구분한다. T1~T6를 다시 개발하지 않는다. -### 재개 후 최신 확인 상태 +### 현재 진행 결정 (2026-10-06) + +사용자는 “효과음·배경음악 없이 진행하겠습니다. T7을 마무리하고 T8을 진행하세요.”라고 요청했다. 첫 버전의 SFX/BGM 선정·재생·믹싱 청취·음악 반복 인수는 제외한다. 한국어 음성 44개와 외형·UI·VFX는 유지한다. **T7 구현과 기존 검사 증거는 완료 범위에 충족하며, 이 문서 변경의 독립 검토·통합 후 T7을 닫고 T8을 진행한다.** T8 완료를 선언한 것은 아니다. 변경 기록과 실제 문서 검사 결과는 [t7-completion.md](t7-completion.md)다. + +아래 2026-10-05의 검사 결과는 재사용하는 원시 증거이며, 당시 음원 대기·프로세스 상태는 현재 상태가 아니다. 현재 Editor는 사용자 체험을 위해 루트 Main 씬 플레이 중이며 이 문서 작업에서는 Editor/AVD를 조작하지 않았다. 실행 상태는 작업을 시작할 때 다시 확인한다. + +### 2026-10-05 재개 후 검사·통합 기록 - T7 담당자는 `/root/presentation_resume`, 독립 검토자는 `/root/presentation_spec_review`다. Unity·AVD·ADB 조작과 T7 소스 수정은 구현 담당자 한 명만 수행한다. - 최종 검사 소스는 `dffd90b1b8979eb790bacb6c0eb1889851d7accc`다. 실제 EditMode 100/100, PlayMode 47/47, Android 기본 검사 65/65, 별도 빠른 계수 검사 36/36, Android 숫자 가독성·분리 회귀 9/9이 통과했다. 네 가지 검증 명령과 두 추가 검사 명령의 실제 종료 코드는 모두 0이다. 실패·건너뜀·미확정 검사 없이 고정 소스/검사 전후 clean을 확인했다. @@ -13,10 +19,10 @@ - `2970`의 원시 검사·실패 이력·APK는 루트 `artifacts/verification/T7/Freeze2970/`에 3,669개 파일과 해시 목록으로 보존했다. T7 작업 디렉터리에도 `Implementation/freeze2970-*` 사본이 있다. - **최신 독립 검토는 현재 허용된 구현 범위 `pass`다.** 기존 `SPEC-01`은 같은 구·배경·카메라를 보존한 숫자 전용 재질 수정으로 해소했다. 실제 기존 재질에서 숫자 2의 글자 픽셀 기여 약 17%로 실패하는 RED와 수정본 100% GREEN, 실제 Android의 동일 문제 배치 화면을 보존했다. 정상 Stage13의 실제 두 구 선택·끌기→3+2 자유 놀이·회전 검사와 Stage9 원래 기하 QA 복원 검사는 구분했다. JSON 소수 표현 차이는 양측 IEEE32-bit 값의 정확한 일치로 검증하며 허용 오차로 통과시키지 않았다. - 최종 원문은 루트 `artifacts/verification/T7/Final/`에 2,720개 파일과 `manifest.json`으로 보존했다. 독립 검토는 `Review/spec-independent-dffd/review-dffd.json`, 추가 검사·설치/프로세스/볼륨/캡처 시각 경계는 `Implementation/number-depth/`, 네 검사 원문은 `Content/`와 `Implementation/resume/`에 있다. 기존 RED·실행 준비 실패·잘못된 부분 글자 검사·녹음 경로 준비 실패도 보존했다. 소스 통합 관계는 `source-relationship.json`으로 기록한다. -- 검증된 구현 범위를 루트 dev에 통합했다. 통합 커밋은 `ed73a845e876e8bf6482bedb16e994b9c6a748b9`이며, 고정 검사 소스 `dffd`와의 차이는 인수인계 문서뿐이다. 앱·자산·검증 도구의 모든 tracked blob은 동일하다. **T7 전체 완료로 표시하지 않으며 T8도 시작하지 않는다.** 최종 효과음·배경음악은 사용자가 나중에 선택하기로 한 별도 미완료 인수 항목이다. 임의 음원으로 대체하지 않는다. 다음 개발은 `docs/audio-requests.md`의 사용자 선택 파일에 대해 출처·사용 조건·연결·편집·반복/믹싱을 검증해 T7을 마친 뒤 T8을 수행하는 순서다. 새 자산 작업 전에 보존된 T7 작업 브랜치를 최신 dev 문서 커밋까지 fast-forward하고 소유권을 확인한다. +- 검증된 구현 범위를 루트 dev에 통합했다. 통합 커밋은 `ed73a845e876e8bf6482bedb16e994b9c6a748b9`이며, 고정 검사 소스 `dffd`와의 차이는 인수인계 문서뿐이다. 앱·자산·검증 도구의 모든 tracked blob은 동일하다. 당시에는 최종 효과음·배경음악 선택 대기 때문에 T7 전체 완료와 T8 착수를 보류했다. 이 보류 사유는 2026-10-06의 명시적 제외 결정으로 해제됐다. 음원 재생 검사를 통과했다고 바꾸는 것이 아니라 첫 버전 요구 범위에서 제외하는 것이다. 문서 작업 전 clean T7 브랜치를 루트 dev `c040cafc93bd58db485a77af8df97865f3fc1c84`까지 fast-forward했다. - 실행 중인 Editor·녹음·QA는 없다. AVD launcher 29360/qemu 28508/ADB 24536은 유지했다. 최신 실행 소유권과 소스/통합 경계는 `.dryforge/temp/go-runtime.json`과 실제 Git 상태를 확인한다. 작업 디렉터리와 과거 실패 원문을 임의 삭제하지 않는다. -이 문서의 현재 상태가 이전 중단 기록보다 우선한다. 승인된 요구사항 원본은 `.dryforge/handoff.md`, `.dryforge/spec.md`, `.dryforge/plan.md`다. 과거 인수인계는 Git 이력과 `.dryforge/temp/handoff-before-pause-20261005-075205.md`에 보존했다. +2026-10-06 현재 진행 결정이 아래 과거 중단 기록·음원 대기 지시보다 우선한다. 승인된 요구사항 원본은 `.dryforge/handoff.md`, `.dryforge/spec.md`, `.dryforge/plan.md`다. 과거 인수인계는 Git 이력과 `.dryforge/temp/handoff-before-pause-20261005-075205.md`에 보존했다. ## 1. 이전 중단 당시 지점 diff --git a/docs/t7-completion.md b/docs/t7-completion.md new file mode 100644 index 0000000..b4ae9fd --- /dev/null +++ b/docs/t7-completion.md @@ -0,0 +1,22 @@ +# T7 완료 범위 기록 + +기록일: 2026-10-06. 사용자 결정: “효과음·배경음악 없이 진행하겠습니다. T7을 마무리하고 T8을 진행하세요.” 첫 버전의 효과음·배경음악 선정과 실제 재생·혼합 청취·음악 반복 인수를 제외한다. 숫자·안내 한국어 음성 44개는 모두 기존 승인본을 유지한다. null 효과음·음악 참조와 기존 Mixer/hooks를 그대로 두며 대체 소리를 넣지 않는다. + +이번 변경은 문서에만 한정한다. 작업 전 `dryforge/T7`은 clean이고 `ed73a845e876e8bf6482bedb16e994b9c6a748b9`였다. `git merge --ff-only dev` 실제 종료 0으로 루트 `c040cafc93bd58db485a77af8df97865f3fc1c84`까지 갱신했다. 앱·자산·규칙·저장 형식·30개 스테이지·검사 도구의 tracked blob은 검사 소스 `dffd90b1b8979eb790bacb6c0eb1889851d7accc`와 같다. heavy 검사를 새로 실행한 것으로 주장하지 않으며 아래 기존 고정 소스의 원문을 재사용한다. + +| 기존 검사 | 실제 결과 | 원문: 루트 `artifacts/verification/T7/Final/` 기준 | +| --- | --- | --- | +| EditMode | 100/100, 실패·건너뜀·불확정 0, 명령 종료 0 | `Implementation/number-depth/final-Content/editmode.xml`, `final-gate-boundaries/editmode-boundary.json` | +| PlayMode | 47/47, 실패·건너뜀·불확정 0, 명령 종료 0 | `Implementation/number-depth/final-Content/playmode.xml`, `final-gate-boundaries/playmode-boundary.json` | +| AndroidBuild | 실제 종료 0 | `Implementation/number-depth/final-gate-boundaries/androidbuild-boundary.json` | +| Android 기본 검사 | 65/65, 실제 종료 0 | `Implementation/number-depth/final-Content/android-content-evidence.json`, `androidsmoke-evidence.json` | +| 빠른 계수 | 36/36, 실제 종료 0 | `Implementation/number-depth/fast-count10/android-count10-evidence.json`, `fast-count10-wrapper.json` | +| Android 숫자·분리 회귀 | 9/9, 실제 종료 0 | `Implementation/number-depth/native/android-number-depth-evidence.json`, `native-wrapper.json` | + +표에서 `final-gate-boundaries/`는 `Implementation/number-depth/` 아래다. 독립 검토 원문 `Review/spec-independent-dffd/review-dffd.json`은 당시 허용 구현 범위 `pass`이고 당시 최종 SFX/BGM 인수는 미완료였다. 이 원문을 수정하지 않는다. 현재 제외 결정의 문서 적합성은 별도 독립 검토 후 통합하며, 효과음·음악 청취 검사를 통과했다고 바꾸지 않는다. + +루트 `artifacts/android/T7/MagnetismHeroes.apk` 실제 SHA-256 재확인: `88DB5288275FA31B35F5BC301DA94D24E49EB6BDFF273A6F924F5BC90C02E604`. 기존 빌드·실제 설치 APK와 동일하다. 승인 음성 원본/편집본/runtime 총 132개 해시는 재대조하며 고지 3개는 기존 실제 APK byte 검사 기록을 유지한다. + +문서 작업의 실제 검사 결과는 T7 작업 디렉터리 `artifacts/verification/T7/CompletionWithoutMusic/document-checks.json`에 보존한다. 검사 명령은 `python artifacts/verification/T7/CompletionWithoutMusic/check.py`, `git diff --check`이며 실제 종료는 둘 다 0이다. 검사 내용은 문서만 변경, dffd와 문서 이외의 tracked 차이 없음, GameApp 효과음 10개·음악 4개 null, 승인 44개/132해시 일치, XML/기존 종료 코드·APK 해시 대조다. 독립 검토는 별도 판정한다. + +T7 문서 검토·통합이 끝나면 T8을 시작할 수 있다. T8의 새 저장에서 정상 30개 순차 진행, 두 개별 미완료 상태와 최근 자유 놀이 복원, 오프라인 안내 음성·최종 패키지 검사는 별도 수행한다. T7의 QA fixture 결과는 정상 30개 진행 증거가 아니며, Editor RT·Android AVD 결과는 실제 기기/iOS/store 검증이 아니다.