Implement the playable first counting puzzle with committed input, persistence and Korean voice
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
# 첫 퍼즐 자산 등록
|
||||
|
||||
기록일: 2026-10-05. 이 표는 첫 퍼즐 범위이며 최종 캐릭터·세 배경 테마·효과음·음악 완성을 뜻하지 않습니다.
|
||||
|
||||
| 자산 | 실제 경로 | 제작·출처와 조건 | 상태와 검증 |
|
||||
| --- | --- | --- | --- |
|
||||
| 자석 구·대표 얼굴·숫자 | `Assets/MagnetismHeroes/UnityRuntime/Presentation/Prefabs/{MagnetFriend,GroupBadge}.prefab` | Unity 기본 구·쿼드·선과 직접 작성한 Editor 빌더. 원작 캐릭터를 사용하지 않음. 구 크기 1, 얼굴을 위한 별도 구 없음. | 첫 퍼즐용 임시 외형. 실제 Editor API로 생성, 실제 프리팹 PlayMode 검사. |
|
||||
| 입체 놀이터·소품 | `Presentation/Prefabs/GameApp.prefab` 내부 Playground | 직접 작성한 기본 도형 배치. | 첫 퍼즐용 임시 배경. Blender 제작·세 테마는 후속 작업. |
|
||||
| 한글 글꼴 | `Presentation/Fonts/NotoSansCJKkr-Regular.otf` 및 `NotoSansCJKkr-FirstSlice.asset` | [Noto CJK 공식 저장소](https://github.com/notofonts/noto-cjk), SIL OFL 1.1. 내려받은 커밋은 `SourceAssets/Fonts/noto-revision.txt`, 원문 조건은 `NotoSansCJK-LICENSE.txt`. | 해당 UI·안내 글리프를 1024 정적 atlas에 bake. 원본 및 빌드 글리프 검사. 자동 크기 조정 끔. |
|
||||
| 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). | 선택·최종 청취 미완료. 자동 대체 제작을 하지 않음. |
|
||||
|
||||
`Presentation/` 축약 경로의 앞부분은 `Assets/MagnetismHeroes/UnityRuntime/`입니다. AI 2D 자산·Blender 원본·최종 마스크/에너지 망토·변신/세 테마는 이 등록에서 완료로 표시하지 않습니다.
|
||||
|
||||
사용자는 세 파일을 직접 확인하고 “세 파일 모두 괜찮습니다”라고 답했습니다. 검수자: 사용자, 검수일: 2026-10-05 KST. 실제 runtime WAV와 대조한 승인 SHA-256은 다음과 같습니다. 다른 파일 승인으로 확대하지 않습니다.
|
||||
|
||||
| ID | 청취 승인 SHA-256 |
|
||||
| --- | --- |
|
||||
| count_01 | `13A882CE1620140D447635E14F2D4758045D5E348960C17386DF1C720050C100` |
|
||||
| guide_collect | `62E15C9E38C36F4094A6C7E9C5148510141290B5F41DB5AAD9DC1D8F1A158594` |
|
||||
| guide_count | `DEBE29B89F3E2856F2BF4C5E01707A5F0A0657E5768C03BE385EC88FA2328B40` |
|
||||
@@ -0,0 +1,29 @@
|
||||
# 첫 퍼즐 통합과 검증
|
||||
|
||||
첫 퍼즐은 실제 `Stage01.asset` 정의와 Inspector에서 수정할 수 있는 `Presentation/Prefabs/GameApp.prefab`으로 실행합니다. 순수 C# `GameSession`이 진행·성공·저장 경계를 소유하고, Unity 입력은 이동 프리뷰를 확정하기 전까지 규칙 상태를 바꾸지 않습니다.
|
||||
|
||||
시작 화면 → 친구 찾기 → 1번 → 자석을 직접 끌어 놓기 → 한 번 눌러 세기 → 같은 배치의 자유 놀이터가 첫 구현 범위입니다. 수집 전 탭·중복 계수·취소·화면 밖 놓기는 완료를 만들지 않습니다. 미완료 저장은 확정 위치·수집·계수·카메라만 저장하며, 성공 변경은 완료·미완료 제거·최근 자유 놀이를 함께 저장합니다. 아직 30개 콘텐츠·자석 공급/반납·합체/분리·최종 미술 완성을 뜻하지 않습니다.
|
||||
|
||||
## 공유 Main 씬 연결
|
||||
|
||||
공통 씬은 실행 담당자가 소유합니다. `Assets/MagnetismHeroes/Scenes/Main.unity`를 실제 Editor API로 열고, 기본 Camera/AudioListener/Light 중복을 제거한 뒤 `PrefabUtility.InstantiatePrefab`으로 GameApp 프리팹을 하나 배치하고 저장합니다. 프리팹은 Camera/AudioListener·Sun·EventSystem·uGUI/TMP·입력·Voice Mixer 참조를 포함합니다. Camera와 AudioListener는 Playground 활성 상태와 분리되어 Home에서도 활성입니다. `GameApp.Start()`가 앱 전용 `progress.json` 저장소를 직접 연결합니다. 제품 UI에 디버그 단계 우회가 없습니다.
|
||||
|
||||
전용 자산 제작 진입점은 `MagnetismHeroes.Editor.FirstSliceAssets.Build()`입니다. 실제 Editor API로 Stage01/Sphere/Badge/UI 프리팹·한글 정적 글꼴·Master 하위 Voice/SFX/Music Mixer를 만들며 Main 씬은 수정하지 않습니다. 첫 TMP Essentials import는 Unity가 import 작업을 마칠 수 있도록 `-quit` 없는 batch 실행과 import 완료 후 종료가 필요합니다. 리소스가 이미 있으면 다음 명령으로 재생성할 수 있습니다.
|
||||
|
||||
```powershell
|
||||
unity run . --timeout 300 --log-file artifacts/firstslice-assets.log --no-tail -- -executeMethod MagnetismHeroes.Editor.FirstSliceAssets.Build
|
||||
pwsh -NoProfile -File tools/verify.ps1 -Phase EditMode -Milestone FirstSlice
|
||||
pwsh -NoProfile -File tools/verify.ps1 -Phase PlayMode -Milestone FirstSlice
|
||||
```
|
||||
|
||||
uGUI 2.6 기본 TMP helper가 registry PackageCache 경로를 찾지 못한 것을 확인했으며, 패키지의 실제 resolvedPath를 찾아 helper 내부와 동일한 `UnityEditor.AssetPackage.Package.Import`를 호출합니다. Examples/Extras와 수작업 prefab/scene YAML은 사용하지 않습니다. 반복 bake에서는 TMP의 Editor 원본 Font 참조를 복구하고 실제 glyph 존재를 검사합니다.
|
||||
|
||||
## 검증 범위와 한계
|
||||
|
||||
EditMode는 기존 Core 규칙과 진행 경계·완료 단일 전이·재플레이·엄격한 JSON 키/형식·손상 원본/백업·실제 프리팹 참조·한글 glyph를 검사합니다. PlayMode는 실제 GameApp/Stage01 자산으로 UI 버튼 이동, 수집 전 탭 거부, 이동/계수/자유 전환, 중복 음성 거부, 취소/화면 밖 release, UI 충돌, 합성 TouchState의 pinch/취소/잔여 손가락 억제, 카메라 경계, 복원/정의 불변, 실제 WAV 재생·숫자 큐 순서를 검사합니다. Headless 검사에서는 원본 InputSettings를 보존하고 테스트 복제본만 Game View에 입력을 보내도록 설정한 뒤 원상복구합니다.
|
||||
|
||||
확인된 실패는 `artifacts/verification/FirstSlice/red/`에 보존합니다. 최종 XML/log/evidence JSON의 실제 검사 개수·종료 코드·sourceCommit·sourceDirty가 검증 근거입니다. 자석을 가리던 납작한 Cylinder의 기본 CapsuleCollider를 실제 ray hit로 확인해 보이는 mesh와 일치하는 static MeshCollider로 고쳤습니다. 배경의 가림 판정은 유지합니다.
|
||||
|
||||
필수 세 한국어 WAV는 사용자 청취 승인 파일과 실제 SHA-256을 대조했습니다. [자산 등록](asset-register.md)과 [Qwen 제작 기록](qwen-voice-register.md)에 원본·설정·조건·검수 상태가 있습니다. 효과음·음악은 사용자 후속 추가이며 다른 숫자는 미검수입니다. Qwen 모델/conda 환경은 게임 런타임에 포함하지 않습니다.
|
||||
|
||||
Main 연결 후 라이브 Unity 에디터 검수는 실행 담당자가 이어서 수행합니다. Android 설치·실행·백그라운드 종료/재시작·실기기 품질을 이 Editor 단계에서 통과했다고 표시하지 않습니다. 조기 Android는 다음 T3 범위입니다.
|
||||
Reference in New Issue
Block a user