Document verified Android game architecture, rules and development procedures

This commit is contained in:
NINI
2026-10-07 03:15:08 +09:00
parent ea2ad4506c
commit 2d45e11120
30 changed files with 676 additions and 0 deletions
+9
View File
@@ -0,0 +1,9 @@
# 순수 규칙과 진행 제어
이 어셈블리는 구·묶음·목표·계수, 진행 화면, 저장 DTO 검증과 `IProgressStore`를 소유한다. Unity 입력·Transform·물리·UI·파일 읽기와 제작 도구는 소유하지 않는다. `noEngineReferences: true`와 빈 참조를 유지한다.
변경은 BoardRules의 확정 조작과 GameSession의 진행 전이를 통해 전달한다. 거부된 조작은 상태를 바꾸지 않으며 호출자가 명시적 거부 사유를 받는다. Presenter에 상태를 복제하거나 애니메이션 프레임을 정답 근거로 전달하지 않는다.
합체·분리의 구 ID 집합 보존, 정확히 한 묶음 소속, 모든 비어 있지 않은 진부분집합 분리, 순서 없는 목표 다중집합을 검사한다. 계수는 수집·단일 묶음 조건과 중복 ID를 검사한다. 진행 수정에는 재플레이 완료 기록 유지, 두 미완료 슬롯과 한 자유 놀이, 성공의 단일 저장 갱신을 포함한다.
DTO lowerCamelCase는 파일 계약이다. 자유 놀이에 계수 필드를 추가하지 않는다. 저장 검증 수정은 누락·중복·비유한 위치·무효 quaternion·구 소속·잘못된 source와 unsupported 버전을 실제 사례로 확인한다. Tests/EditMode의 규칙·세션·저장 검사를 실행하며 결과를 화면 연결 검증으로 확대하지 않는다.
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 37d15ecaf57860c48bf907ae302ccaa5
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+9
View File
@@ -0,0 +1,9 @@
# Unity 제작과 Android 빌드
이 Editor 전용 어셈블리는 자산 생성·연결·표현 증거와 Android 빌드를 소유한다. 게임의 런타임 규칙·이어하기 파일·사용자 청취 승인은 소유하지 않는다. 런타임이 이 어셈블리를 참조하지 않게 유지한다.
현재 완성 Main 씬은 `Assets/MagnetismHeroes/Scenes/Main.unity`다. 초기 Prepare/ConnectApp 및 단계별 Assets.Build는 기존 씬·프리팹·스테이지·음성 참조를 덮을 수 있으므로 일반 실행 전 준비 명령으로 사용하지 않는다. 특정 제작 수정의 대상·기존 참조·생성 diff를 확인하고 필요한 경로만 갱신한다.
씬·프리팹·ScriptableObject·메타데이터는 Editor API로 만들고 Undo/dirty/save 및 필수 참조를 처리한다. URP의 임시 생성 설정 변화는 원본과 정확히 일치하는 알려진 변환인지 확인한 경우만 정리한다. 모델 root 회전·아치 구멍의 MeshCollider·TMP static glyph와 승인 WAV GUID를 보존한다.
Android 빌드는 Main만 포함하고 ARM64 IL2CPP release APK를 만든다. 출력 경로는 `MAGNETISM_APK_PATH`를 사용한다. 개발 모델·캐시·QA 녹음 도구를 포함하지 않는다. 빌드 수정은 실제 AndroidBuild와 APK inspection, 표현·연결 변경은 Edit/Play와 실제 화면으로 검증한다. 파일 생성 성공을 설치·재생 성공으로 기록하지 않는다.
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a30bcfd019000c042a757d4ddac8e03a
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,11 @@
# 입력·표현·파일 연결
이 어셈블리는 Input System 입력, URP 표현, uGUI·TMP 화면, 스테이지 변환과 파일 저장을 소유한다. 수학 정답의 새 규칙이나 Editor 제작 API는 소유하지 않는다. Core를 호출하고 `UnityEditor`를 참조하지 않는다.
GameApp이 저장 구현을 GameSession에 전달하고 BoardInput의 확정 의도를 처리한다. 끌기·분리 선택은 미리보기이며 취소·핀치·영역 이탈에서 확정 상태로 복구한다. UI hit를 세계 Raycast보다 먼저 처리하고 소품의 앞쪽 hit를 무시해 뒤 구를 선택하지 않는다.
Presenter와 GroupBadge는 확정 소속에서 구·숫자·대표 얼굴·망토를 만든다. 장식에 별도 입력 콜라이더나 수량을 추가하지 않는다. 자석 크기·합체한 아이 배열은 유지하고 분리 재배치만 Core의 확정 결과를 따른다. 화면 전환·재진입에서 이전 미리보기·표정·음성이 남지 않아야 한다.
VoicePlayer는 승인된 ID의 계수 큐를 순차 재생한다. 같은 보드의 성공 전이에서 큐를 지우지 않으며 화면 이동·pause에서는 지운다. 현재 무음인 SFX/Music 참조를 누락 음성으로 혼동하지 않는다. LocalProgressStore는 전체 JSON을 검증하고 유효 백업을 손상 primary로 교체하지 않는다.
입력·화면·저장 변경은 Tests/PlayMode에서 실제 프리팹과 충돌·취소·복원을 확인한다. 터치와 오프라인 음성·Android 파일 수명은 같은 APK의 AVD에서 재확인한다. StageAsset 편집이 규칙 목표를 바꾸지 않는지, 전체 한글 glyph와 스마트폰·태블릿 비율에서 잘림이 없는지도 확인한다.
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: de11d2cba2cfbfe468aa53238ea830e0
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant: