diff --git a/README.md b/README.md index 7378dcb..dea9e30 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # MagnetismHeroes -5~7세가 자석 구 하나를 1로 삼아 직접 모으고 세고 합체·분리하는 한국어 3D 퍼즐 게임입니다. Android 가로 화면과 오프라인 플레이를 대상으로 개발합니다. 현재 첫 수 세기 퍼즐의 수집·계수·저장·복원·성공 후 자유 놀이를 구현했으며 Android 검증과 나머지 기능을 개발 중입니다. +5~7세가 자석 구 하나를 1로 삼아 직접 모으고 세고 합체·분리하는 한국어 3D 퍼즐 게임입니다. Android 가로 화면과 오프라인 플레이를 대상으로 개발합니다. 현재 첫 수 세기 퍼즐의 수집·계수·저장·복원·성공 후 자유 놀이를 구현하고 Android 가상 기기에서 검증했습니다. 합체·분리와 나머지 콘텐츠는 개발 중입니다. Unity Hub에서 이 폴더를 Unity 6000.6.3f1로 엽니다. 시작 장면은 `Assets/MagnetismHeroes/Scenes/Main.unity`입니다. 수학 규칙은 Unity를 참조하지 않는 Core에, 입력·화면·저장 연결은 UnityRuntime에 둡니다. diff --git a/docs/android-first-slice.md b/docs/android-first-slice.md index 82e7d61..e398833 100644 --- a/docs/android-first-slice.md +++ b/docs/android-first-slice.md @@ -19,7 +19,11 @@ pwsh -NoProfile -File tools/verify.ps1 -Phase AndroidSmoke -Milestone FirstSlice 그 거부 동작은 실제 Build 뒤 `pwsh -NoProfile -File tools/android/test-provenance.ps1`로 검사합니다. 원본 근거를 손상시키지 않고 별도 복사본 두 개의 소스 SHA/APK hash만 바꿔 Smoke의 실제 종료 1 및 기기 명령 0개를 확인합니다. 음성은 raw WAV뿐 아니라 수집 당시 소스 SHA/dirty·시각 메타데이터도 최종 Build와 맞아야 합니다. 입력 수정 전 ADB 짧은 `input tap` 두 번은 구 탭을 놓쳤고 같은 좌표 200ms 접촉은 정상 반응했습니다. 수정 전 원시 자료는 `pre-fix/`에 보존하고 수정 후 최종 절차는 짧은 ADB tap으로 다시 확인합니다. 물리 기기의 실제 손가락 동작이나 성능 합격으로 확대하지 않습니다. -APK는 `artifacts/android/FirstSlice/MagnetismHeroes.apk`, 원본 경로를 기록한 Unity 실제 packed-assets 목록은 APK 옆 `.packed-assets.txt`입니다. 근거는 `artifacts/verification/FirstSlice/`에 보존합니다. Build/Smoke의 명령·실제 종료 코드·소스 SHA/dirty·APK SHA-256, aapt 실제 badging/ZIP entries, 기기 ABI/번역기/graphics, ADB 명령별 종료 코드·화면·관찰 결과를 별도로 기록합니다. 설치·프로세스 생존만으로 게임 검사를 통과시키지 않습니다. +APK는 `artifacts/android/FirstSlice/MagnetismHeroes.apk`이며 최종 SHA-256은 `FFE885F2A19935C9AC49A9F6358742D6008032400E3376E53108117CD20847CD`입니다. 보존 근거는 `artifacts/verification/T3/FirstSlice/`, 독립 검수는 `artifacts/verification/T3/IndependentReview/`, 검사 소스와 통합 소스의 관계는 `artifacts/verification/T3/source-relationship.json`에 있습니다. Build/Smoke 종료 코드 0, 기계 검사 115개, 직접 관찰 13개, 상태 검사 19개를 확인했습니다. 명령·소스 SHA/dirty·APK hash, 실제 badging/ZIP entries, 기기 ABI/번역기/graphics, ADB 종료 코드·화면·관찰 결과를 별도로 기록합니다. 설치·프로세스 생존만으로 게임 검사를 통과시키지 않습니다. + +APK 옆 `.packed-assets.txt`는 Unity BuildReport의 출력이며 최종 캐시 빌드에서는 0바이트입니다. 빈 목록을 자산 포함·제외의 증거로 사용하지 않습니다. 독립 검사에서 APK의 실제 `assets/bin/Data` 28개 항목과 24,127,215바이트, 글꼴·세 음성 이름, 두 시험 JSON의 생성/삭제 빌드 로그와 빌드 후 원본 부재를 확인했습니다. 실제 화면과 PCM은 필요한 자산의 로딩·재생 근거입니다. APK의 모든 직렬화 객체를 해석한 검사는 아니므로 향후 전체 자산 검증에서는 이 한계를 유지합니다. + +추가 PCM 수집 중 두 온라인 계수 측정과 첫 오프라인 찾기 안내 측정은 상관 기준에 미달했습니다. 실패 WAV·메타데이터·비교 결과를 보존했으며 원인이 캡처인지 출력인지 확정하지 않았습니다. 같은 최종 APK의 재수집 오프라인 출력에서는 찾기 안내 0.986498, 세기 안내 0.989157, 하나 0.996393으로 세 기준을 통과했습니다. 온라인 PCM 측정이나 사람의 Android 청취가 통과했다고 확대하지 않습니다. 실행 로그에 `AssetPackManager` 클래스 탐색 실패가 있으나 치명적 예외/신호 없이 실제 게임 검사는 통과했습니다. 선택적 PAD 탐색이라는 해석은 추정이며 원인은 확정하지 않았습니다. `tools/android/observe.ps1`은 실제 ADB 조작 후 screencap을 가져오고 각 명령을 `-commands.json`에 기록합니다. Unity uGUI 문자는 Android native hierarchy에 노출되지 않으므로 PNG를 직접 열어 한국어와 화면 의미를 검사합니다. `android-observations.json`에는 아래 번호별 절차·기대와 실제 결과·근거 파일을 작성하며 APK hash·소스 SHA·기기 serial이 맞아야 합니다. 미실행·빈 파일·관찰 누락은 Smoke 실패입니다. 원본 상태는 앱 전용 저장 JSON을 ADB로 읽을 수 있을 때 추가 검증하며 release APK에 진단 서버·단계 우회·테스트 제어 기능을 넣지 않습니다. diff --git a/docs/first-slice.md b/docs/first-slice.md index 4b02257..d10b8da 100644 --- a/docs/first-slice.md +++ b/docs/first-slice.md @@ -26,6 +26,6 @@ EditMode는 기존 Core 규칙과 진행 경계·완료 단일 전이·재플레 필수 세 한국어 WAV는 사용자 청취 승인 파일과 실제 SHA-256을 대조했습니다. [자산 등록](asset-register.md)과 [Qwen 제작 기록](qwen-voice-register.md)에 원본·설정·조건·검수 상태가 있습니다. 효과음·음악은 사용자 후속 추가이며 다른 숫자는 미검수입니다. Qwen 모델/conda 환경은 게임 런타임에 포함하지 않습니다. -Main은 GameApp 프리팹 하나로 연결했습니다. 실제 Unity 에디터에서 별도 검수 저장 파일을 사용해 수집 전 계수 거부, 끌어 모으기, 확정 배치·시점의 파일 복원, 계수 후 같은 공간의 자유 놀이를 확인했습니다. 아래 시점에서 숫자가 구 뒤에 가리던 문제는 카메라의 위쪽 방향으로 표시 위치를 계산하도록 고쳤습니다. 정면·아래·기울어진 시점과 이동 미리보기의 가시성 검사를 포함해 PlayMode 19개 및 자산 연결 EditMode 3개가 통과했습니다. 근거는 `artifacts/verification/T2/`의 단계별 JSON·PNG와 `R02/`의 XML·로그입니다. +Main은 GameApp 프리팹 하나로 연결했습니다. 실제 Unity 에디터에서 별도 검수 저장 파일을 사용해 수집 전 계수 거부, 끌어 모으기, 확정 배치·시점의 파일 복원, 계수 후 같은 공간의 자유 놀이를 확인했습니다. 아래 시점에서 숫자가 구 뒤에 가리던 문제는 카메라의 위쪽 방향으로 표시 위치를 계산하도록 고쳤습니다. Android의 짧은 탭 누락은 EnhancedTouch의 시작·이동·종료 기록을 순서대로 처리하도록 고쳤습니다. 정면·아래·기울어진 시점, 이동 미리보기, 짧은 탭과 취소 검사를 포함해 PlayMode 25개 및 자산 연결 EditMode 3개가 통과했습니다. 근거는 `artifacts/verification/T2/`와 `artifacts/verification/T3/ShortTouch/Regression/`의 XML·로그·JSON·PNG입니다. -Android 설치·실행·백그라운드 종료/재시작·실기기 품질을 이 Editor 단계에서 통과했다고 표시하지 않습니다. 조기 Android 검증을 이어 수행합니다. +첫 Android APK의 설치·실행·짧은 탭·끌기·시점 회전·미완료/자유 놀이 복원·오프라인 재생 검증을 완료했습니다. Build/Smoke 종료 코드 0, 기계 검사 115개, 직접 화면 관찰 13개, 저장 상태 검사 19개를 기록했습니다. [Android 검증](android-first-slice.md)에 검사 방법과 한계를 정리했습니다. 가상 기기의 ARM64 번역 실행이며 실제 기기 조작·가독성·성능 합격을 뜻하지 않습니다.