5.5 KiB
첫 퍼즐 통합과 검증
첫 퍼즐은 실제 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 완료 후 종료가 필요합니다. 리소스가 이미 있으면 다음 명령으로 재생성할 수 있습니다.
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을 대조했습니다. 자산 등록과 Qwen 제작 기록에 원본·설정·조건·검수 상태가 있습니다. 효과음·음악은 사용자 후속 추가이며 다른 숫자는 미검수입니다. Qwen 모델/conda 환경은 게임 런타임에 포함하지 않습니다.
Main은 GameApp 프리팹 하나로 연결했습니다. 실제 Unity 에디터에서 별도 검수 저장 파일을 사용해 수집 전 계수 거부, 끌어 모으기, 확정 배치·시점의 파일 복원, 계수 후 같은 공간의 자유 놀이를 확인했습니다. 아래 시점에서 숫자가 구 뒤에 가리던 문제는 카메라의 위쪽 방향으로 표시 위치를 계산하도록 고쳤습니다. Android의 짧은 탭 누락은 EnhancedTouch의 시작·이동·종료 기록을 순서대로 처리하도록 고쳤습니다. 정면·아래·기울어진 시점, 이동 미리보기, 짧은 탭과 취소 검사를 포함해 PlayMode 25개 및 자산 연결 EditMode 3개가 통과했습니다. 근거는 artifacts/verification/T2/와 artifacts/verification/T3/ShortTouch/Regression/의 XML·로그·JSON·PNG입니다.
첫 Android APK의 설치·실행·짧은 탭·끌기·시점 회전·미완료/자유 놀이 복원·오프라인 재생 검증을 완료했습니다. Build/Smoke 종료 코드 0, 기계 검사 115개, 직접 화면 관찰 13개, 저장 상태 검사 19개를 기록했습니다. Android 검증에 검사 방법과 한계를 정리했습니다. 가상 기기의 ARM64 번역 실행이며 실제 기기 조작·가독성·성능 합격을 뜻하지 않습니다.