WeChat 미니 게임: 등록부터 심사 제출까지
목표: 사용자의 Unity 게임을 WeChat 미니 게임으로 변환하고, 자격 및 두 가지 ICP 등록(미니 게임 등록, 미니 프로그램 등록)을 완료한 후 버전 심사를 제출하여 '버전 관리 → 심사 버전'에 '심사 중'이 표시될 때까지 진행합니다.
먼저 확인: ship-my-game의 1~4단계가 완료되었는지 확인하세요 (진행 아카이브, 채널, 진단, 브라우저). 완료되지 않았다면 먼저 읽으십시오.
출처 표시
[실측]: 실제 개인 개발자 계정에서 성공적으로 수행했습니다.[공식]: 공식 문서를 기반으로 정리했으며, 링크를 제공합니다.- 「백엔드에서 확인 완료」: 2026-11-02에 실제 백엔드에서 페이지와 필드를 확인했지만, 제출하지는 않았습니다.
실측 범위 (2026-11-08 기준)
- 실측 완료: 등록, 빠른 어댑터 활성화, Unity 6 패키지 실제 기기 실행, 자격 심사 (통과), WeChat 인증 (완료), 미니 게임 ICP 등록 (주관 부처 통과), 미니 프로그램 ICP 등록 (플랫폼 초심 통과), 개발자 도구로 업로드, 체험판, 심사 제출 (첫 번째 제출은 초기 블랙 스크린으로 거절되었으나 패치 B7 수정 후 재제출하여 약 1시간 만에 통과), 싱글 플레이어 게임이 미니 프로그램 ICP 등록 번호를 받기 전에 라이브 출시, 운영 자료 (게임 소개, 프로모션 카피, 일반 커버 이미지, 세로 및 가로 프로모션 이미지, 실제 게임 화면 세로 프로모션 비디오) 심사 제출.
[공식]만 참조: 미니 프로그램 ICP 등록 초심 이후 단계, 명령줄 업로드, 단계적 출시, 온라인 게임 출시 조건, 운영 자료 심사 결과, 일반 프로모션 비디오, 트래픽 소유주 및 수금.
사용자 작업 목록
| 단계 | 작업 |
|---|---|
| P1 | 계정 등록: 이메일 인증 코드 입력, 실명 인증, 관리자 WeChat QR 코드 스캔. 실측 약 20분 소요 [실측] |
| 전체 | mp.weixin.qq.com에 QR 코드 로그인. 세션은 하루 미만으로 만료되며, 만료 후 다시 QR 코드를 스캔해야 함 [실측] |
| P2 | WeChat 개발자 도구에 QR 코드 로그인; 도구의 '서비스 포트' 활성화 여부 결정 (보안 설정에 속함) [실측] |
| P3 | 휴대폰 WeChat으로 미리보기 코드를 스캔하여 플레이 테스트. 미리보기 코드는 약 25분 후 만료됨 [실측] |
| P4 | 자격 제출 시 서명 및 자료 제출; WeChat 인증: 약관 동의, 신원 확인, 비용 지불 [실측] |
| P5 | 미니 게임 ICP 등록 1단계: 휴대폰 QR 코드로 3개의 파일에 서명; 휴대폰 WeChat에서 ICP 등록 스크린샷 캡처; 마지막 '제출' 클릭 [실측] |
| P6 | 미니 프로그램 ICP 등록: 신분증 앞뒤 사진, 도로명 주소(상세 번지수까지), 2개의 사용자 휴대폰 번호(담당자 및 비상 연락처) 및 이메일, 안면 인증, 약관 동의 체크 [실측]; 등록 성이 광동 또는 신장인 경우 각서 수기 작성; 초심 통과 후 24시간 이내에 MIIT SMS 인증 완료 [공식] (ICP 등록 가이드, 자료 예시) |
| P7 | 명령줄 업로드 시 '미니 프로그램 코드 업로드 키' 생성 필요, 일반적으로 관리자 QR 코드 스캔 필요 (실측되지 않음) |
| P8 | 심사 게이트에서 '제출' 클릭; 심사 통과 후 사용자가 출시 결정, 관리자 WeChat QR 코드로 확인 [실측] |
| 출시 후 | 트래픽 소유주 활성화 시 광고 약관 동의; 활성화 후 재무 정보 입력: 계좌명, 신분증 번호, 은행 계좌 [공식] (광고, payouts.md) |
엔지니어링 요구 사항 (총 진입점 3단계 대조)
엔진 버전
- 공식 설명
[공식]: - 본 저장소 실측
[실측]: Unity 6000.6에 12개의 패치를 적용하여 실제 기기에서 실행 가능, 패치는 스크립트에 포함됨. 이전 'Android 간헐적 블랙 스크린'은 엔진이 리소스 패키지를 기다리지 않아 발생했으며, 첫 번째 심사 제출이 이로 인해 거절되었으나 패치 B7로 수정됨 (build.md 10절 참조). - 선택 방법:
- 새 프로젝트: 2022.3 LTS 또는 Unity China Engine 사용.
- 기존 Unity 6 프로젝트: 본 저장소의 패치 경로 사용 가능. 먼저 '공식적으로는 프리뷰만 허용'임을 사용자에게 알리고 진행 아카이브에 기록.
플랫폼 모듈: WebGL Build Support.
SDK
scripts/fetch_wxsdk.sh를 사용하여 가져오며, 버전은 v0.1.34로 고정.- v0.1.35 프리뷰 버전 사용 금지: 플러그인을 WX-WASM-SDK-V3로 교체하여 기존 패치가 작동하지 않을 수 있음.
AppID: 정식 미니 게임의 AppID를 사용해야 하며, '빠른 어댑터(Fast Adapt)'를 활성화해야 함. 테스트 계정으로는 Unity 패키지를 실행할 수 없음 [실측].
패키지 크기
- 공식 상한: 메인 패키지 ≤ 4MB, 총 패키지 ≤ 30MB
[공식](코드 패키지). - 첫 번째 로딩 리소스가 패키지 내부에 있는 경우 Unity 문서는 20MB로 계산 (UsingLoader), 따라서 20MB로 제어.
- 실측 패키지 크기 13~14MB
[실측].
반드시 수정해야 할 코드 (전체 [실측], 방법은 build.md 및 capabilities.md 참조):
- 한자 폰트 서브셋 생성 및 폴백 폰트로 설정.
- 저장소를
WX.StorageSetStringSync로 변경하고, 각 주요 작업 후 즉시 저장. - 안전 영역 및 우측 상단 캡슐 버튼 회피를 위해
WX.GetWindowInfo,WX.GetMenuButtonBoundingClientRect사용하여 계산. - 외부 링크, 앱 스토어 평가, Google 서비스 진입점 제거; Android 전용 코드는
#if UNITY_ANDROID로 래핑. - 메인 화면 제목에 등록된 중국어 게임명 표시 (ICP 등록 스크린샷에 필요).
- 광고 단위 ID가 비어 있으면 광고 버튼이 안전하게 다운그레이드되어 오류 없이 진행.
WX.InitSDK콜백 내에서 게임 시작.
네트워크 유형: 먼저 '싱글 플레이어' 또는 '온라인' 결정, 미니 게임 ICP 등록 전에 결정해야 함.
- 싱글 플레이어 게임의 개인정보 보호 가이드라인은 '사용자 정보를 처리하지 않음'만 선택 가능 (백엔드에서 확인 완료).
- 따라서 싱글 플레이어 게임은 친구 리더보드, 클립보드, 사용자 정보와 같은 개인정보 관련 API를 사용할 수 없음 (추론, 근거는 console.md 참조).
단계
P1 계정 및 백엔드 초기화
- 사용자가 이미 미니 게임 계정이 있으면 2단계로 이동. 없으면 onboarding.md에 따라 등록 페이지를 열고 사용자가 개인 개발자 계정으로 등록하도록 안내, 1차 카테고리는 '미니 게임' 선택
[실측]. - 게임명 결정: 순수 한자 사용, 저작권 자료 요구를 피하기 위함. 이름은 자격 및 ICP 등록 제출 후 잠기며, 미니 프로그램 ICP 등록이 완료될 때까지 변경 불가. 카테고리 선택 시 개인 계정은 문화 상호작용, 롤플레잉, 카드 게임을 피함
[공식](카테고리 설정). 규칙은 listing.md 참조. - 빠른 어댑터(Fast Adapt) 활성화: '게임 능력 지도 → 개발 능력 → 생산 효율 패키지 → 빠른 어댑터', '즉시 신청' 클릭, 즉시生效
[실측]. - '개발 관리 → 개발 설정 → 개발자 ID'에서 AppID를 읽어 진행 아카이브 및
publish/wechat/build.json에 기록[실측]. - '계정 설정 → 기본 설정'에서 운영 지역이 '중국 본토(대륙) 지역'인지 확인 (백엔드에서 확인 완료).
- WeChat 개발자 도구 Stable 버전 설치 (Minigame Build 버전 아님), 사용자에게 QR 코드 로그인 요청
[실측].
완료 기준:
- 진행 아카이브에 AppID가 있어야 함.
- '생산 효율 패키지' 페이지의 빠른 어댑터가 '활성화됨'으로 표시되어야 함.
- 기본 설정에 이름 및 서비스 카테고리가 모두 입력되어 있어야 함.
- 개발자 도구가 로그인되어 있어야 함.
P2 빌드 및 내보내기
- WebGL 모듈 설치 후
scripts/fetch_wxsdk.sh <프로젝트>실행하여 SDK를Packages/에 포함시키고 패치 적용[실측]. scripts/ShipWeChatBuild.cs를<프로젝트>/Assets/Editor/로 복사. 그런 다음templates/build.json을 기반으로<프로젝트>/publish/wechat/build.json작성[실측].../ship-my-game/scripts/make_cjk_font.py를 사용하여 한자 폰트 서브셋을 생성하고 build.json에cjkFont,latinFonts를 입력[실측].- '엔지니어링 요구 사항'에 따라 코드 수정
[실측]. - 내보내기:
../ship-my-game/scripts/unity_build.sh <프로젝트> WebGL ShipWeChatBuild.Export wechat실행[실측]. - 개발자 도구에서 '프로젝트 → 프로젝트 가져오기'를 선택,
<프로젝트>/Builds/wechat/minigame폴더 선택, '신뢰하고 실행' 클릭, 시뮬레이터에서 메인 플로우를 한 번 실행[실측]. scripts/wx_cold_start.py를 사용하여 시뮬레이터에서 첫 실행을 재현: 캐시 삭제, 리소스 패키지 12초 지연, 컴파일, 결과 확인, 복원. 심사관이 이렇게 처음 열어보므로 실제 기기에서는 확인 불가. 단계는 build.md 참조[실측].
완료 기준:
- 로그에
[Ship] wechat export=SUCCEED가 있어야 함. Unity 6 프로젝트는 또한[Ship] framework patched및[Ship] B7로 시작하는 한 줄이 있어야 함. - 첫 실행 재현: 시뮬레이터가 로딩 페이지를 먼저 표시한 후 메인 페이지로 이동,
wx_cold_start.py log가OK를 보고하고 마지막으로release상태여야 함. - 시뮬레이터가 메인 페이지에 진입하고 터치에 반응하며 콘솔에 빨간색 오류가 없어야 함 (무시 가능한 로그 제외).
- 미리보기 패널에 표시된 코드 패키지 크기가 상한 이내여야 함.
세부 사항 및 패치 대응표는 build.md 참조.
P3 실제 기기 검증
- 미리보기 패널을 'QR 코드 미리보기'로 전환. '자동 미리보기' 또는 '실제 기기 디버깅' 사용 금지
[실측]. - 미리보기 코드 생성, 사용자에게 스크린샷 전송 또는 개발자 도구의 코드 직접 스캔 안내. 코드는 약 25분 후 만료됨
[실측]. - 사용자와 함께 build.md의 실제 기기 체크리스트를 하나씩 확인: 사운드, 한자, 터치, 종료 후 재진입 시 저장 상태 유지, 노치 및 캡슐이 UI를 가리지 않음, 열리지 않는 진입점 없음, 메인 화면에 중국어 이름 표시.
- 휴대폰에서도 첫 실행 테스트 수행: 먼저 WeChat '최근 사용'에서 이 미니 게임을 삭제한 후 QR 코드 스캔. 삭제가 리소스 캐시를 완전히 지우는지는 미확인, 결론은 P2 단계 시뮬레이터 재현 결과를 기준으로 함. 블랙 스크린 발생 시 troubleshooting.md에 따라 중단하고 조사, '미니 프로그램 다시 시작'으로 넘어가지 마세요: 심사관은 한 번만 열어보며 첫 번째 제출이 이로 인해 거절되었습니다
[실측].
완료 기준: 사용자가 최소 한 대의 휴대폰에서 체크리스트 전체 통과를 확인. Android 및 iOS 기기가 모두 있는 경우 둘 다 테스트.
P4 백엔드 필수 입력 항목, 자격 및 인증 (P2, P3와 병행 가능)
- 연령 힌트: '계정 설정 → 기본 설정 → 연령 힌트 → 설정하기'. console.md에 따라 작성하고 사용자 확인 후 '심사 제출' 클릭 (백엔드에서 확인 완료).
- 사용자 개인정보 보호 가이드라인: '서비스 내용 선언 → 사용자 개인정보 보호 가이드라인 → 완료하기'. 싱글 플레이어 게임은 '어떤 방식으로든 사용자의 어떤 정보도 처리하지 않음' 선택, 사용자 확인 후 '위 내용 확인' 클릭 (백엔드에서 확인 완료).
- 자격 제출: '상황 2: 미니 게임이 현재 및 미래에 가상 결제를 활성화할 필요가 없음' 선택, 서명 자료는 사용자가 작성
[실측]. filing.md 참조. - WeChat 인증: 사용자가 수행
[실측]. onboarding.md 참조. - 중국 중앙선전부 실명 인증: 가상 결제를 활성화하지 않으면 필요 없음, 페이지에 '개발자 작업 불필요'라고 명시됨 (백엔드에서 확인 완료).
완료 기준:
- 연령 힌트가 제출됨 또는 통과됨으로 표시.
- 개인정보 보호 가이드라인이 더 이상 '업데이트되지 않음'으로 표시되지 않음.
- 자격이 심사 중 또는 통과됨으로 표시.
- WeChat 인증이 완료되었거나 비용 지불 및 심사 중.
P5 미니 게임 ICP 등록
- 먼저 네 가지 사항 확인:
- 이름 최종 확정.
- 자격 제출 완료.
- 연령 힌트 제출 완료.
- 프리뷰 버전 존재: 메인 화면에 중국어 이름 표시, '최적화 제안' 팝업이 꺼져 있어야 함.
- ICP 등록 양식 열기, 진입점은 filing.md 참조. 1단계는 사용자가 수행: 게임 유형 및 네트워크 유형 선택, 휴대폰 QR 코드로 3개의 파일에 서명
[실측]. - 2단계 텍스트는 사용자가 작성. 먼저 코드를 읽어 확인한 후
templates/filing-content.md에 따라 시나리오, 게임플레이, 시스템 작성[실측]. - 스크린샷 목록을 사용자에게 제공, 휴대폰 WeChat에서 스크린샷을 캡처하도록 요청. 사용자가 카테고리별로 파일 이름 변경, 본인 컴퓨터를 중계기로 사용하여 한 카테고리씩 전송, 전송 후 '저장' 클릭, 새로고침 후 확인
[실측]. - 심사 게이트 진행: 제출할 내용을 사용자에게 목록으로 보여주고, 사용자가 '제출'을 말하면 '다음 → 정보 미리보기 → 제출' 클릭, 또는 사용자가 직접 제출하도록 함
[실측].
완료 기준: '미니 게임 ICP 등록 및 출시 프로세스 가이드' 페이지의 미니 게임 ICP 등록이 '플랫폼 심사 중'으로 표시됨. 진행 아카이브 '대기 중'에 예상 시간 기록: 플랫폼 초심 12 영업일, 주관 부처 심사 1020 영업일.
P6 미니 프로그램 ICP 등록
근거: 미니 프로그램 ICP 등록, ICP 등록 가이드, 자료 예시. 양식 작성부터 제출까지 실측 완료, 초심 이후는 공식 문서 기준.
- 미니 게임 ICP 등록이 '주관 부처 통과'로 표시되고 WeChat 인증이 완료될 때까지 대기. 실측 시 프로세스 가이드 페이지에서 이 두 가지가 모두 완료되어야 'ICP 등록 시작' 버튼이 활성화됨
[실측]. - 양식을 열기 전에 사용자가 준비해야 할 사항을 한 번에 설명: 신분증 앞뒤 사진, 상세 번지수까지 포함된 도로명 주소, 2개의 사용자 휴대폰 번호 및 1개의 이메일, 안면 인증용 배경 요구 사항; 등록 성이 광동 또는 신장인 경우 각서 수기 작성 필요. 또한 '제출'은 확인 후에 할 것임을 명시. 실측 시 사용자가 작성 후 바로 제출함
[실측]. 체크리스트는 filing.md 참조. - 프로세스 가이드 페이지의 'ICP 등록 시작'을 통해 진입, 새 탭 'ICP 등록 유형 확인'이 열림. 상황 1 / 상황 2 및 등록 유형 선택 불필요
[실측].- 사용자: 지역 선택, 신분증 업로드, '확인' 클릭; 주소, 휴대폰 번호 및 이메일 입력; QR 코드 스캔하여 안면 인증 수행; 각서 서명 (광동, 신장).
- 사용자: '비고 (필수)' 초안 작성하여 사용자 확인 (공식 요구 사항 없음, 미확인); '자료 미리보기' 페이지 읽어 확인.
- '자료 미리보기' 페이지에서 심사 게이트 진행: 서비스 내용, 비고, 업로드된 자료를 사용자에게 목록으로 보여주고, 주소 및 신분증 정보는 사용자가 직접 확인; 하단 약관 동의는 사용자가 체크; 사용자가 '제출'을 말한 후 클릭
[실측]. - 플랫폼 초심 통과 후 사용자에게 알림: 12381에서 온 SMS를 받은 후 24시간 이내에 MIIT ICP 등록 웹사이트에서 인증 완료, 시간 초과 시 반려됨
[공식].
완료 기준: 백엔드에 ICP 등록 번호가 발급됨; 또는 홈페이지 'ICP 등록 및 인증'의 미니 프로그램 ICP 등록이 '심사 중'으로 표시됨 (실측 시 '플랫폼 심사 중'), 진행 아카이브에 제출 시간, 현재 심사 단계 및 예상 시간 기록.
P7 개발 버전 업로드 및 체험판 [실측]
근거: 협업 및 출시, miniprogram-ci.
- 내보내기가 이번에 제출할 버전인지 확인: 광고 단위 ID는 비워둘 수 있음, 메인 화면 이름이 올바른지, '최적화 제안' 팝업이 꺼져 있는지 확인.
- 업로드, 두 가지 방법 중 하나 선택:
- 개발자 도구의 '업로드', 버전 번호 및 프로젝트 비고 입력
[실측]; - 명령줄
scripts/wx_ci.js upload, 업로드 키 및 IP 화이트리스트 필요, automation.md 참조 (실측되지 않음).
- 개발자 도구의 '업로드', 버전 번호 및 프로젝트 비고 입력
- '버전 관리 → 개발 버전'을 열고 이 버전이 있는지 확인한 후 '심사 제출' 옆의 드롭다운 화살표에서 '체험판으로 선택'하고 사용자가 체험판 QR 코드를 스캔하여 최종 확인하도록 함
[실측]. 세부 사항은 review.md 참조.
완료 기준: 개발 버전 목록에 이 버전 번호가 있고 체험판이 휴대폰에서 열려야 함.
P8 심사 게이트 [실측]
근거: 버전 심사.
- 전제 조건 확인:
- 연령 힌트 및 개인정보 보호 가이드라인이 모두 완료됨.
- 개발 버전이 업로드됨.
- 게임 내 표시 이름과 백엔드 이름이 일치함.
- '버전 관리 → 개발 버전'에서 '심사 제출' 클릭, review.md에 따라 양식 작성. 양식은 새 탭의 크로스 도메인 iframe에 있어 스크린샷 및 좌표 기반 조작만 가능.
- 총 진입점의 심사 게이트 진행: 채널, 버전 번호, 패키지 크기, 버전 설명, 개인정보 및 광고 고지, 예상 심사 시간 (공식 정상 1일, 실측 1~3시간 내 결과)을 사용자에게 목록으로 보여주고 사용자가 '제출'을 말할 때까지 대기.
- 양식의 '제출' 클릭, 개인정보 규정 준수 알림에서 '계속 제출' 클릭, 그런 다음 '버전 관리'를 읽어 '심사 버전'에 '심사 중'이 표시되는지 확인.
완료 기준: '심사 버전'에 '심사 중'이 표시됨. 진행 아카이브에 제출 시간, 예상 시간 및 결과 확인 위치 ('버전 관리' 페이지, 사이트 내 메시지) 기록.
대기 기간 및 출시 후
대기 항목 시간 (진행 아카이브 '대기 중'에 기록)
- 자격: 실측 통과; 페이지에 약 1 영업일, 공식 문서에 1~3일로 명시.
- 미니 게임 ICP 등록: 플랫폼 초심 1
2 영업일, 주관 부처 1020 영업일. 실측 10/24 제출, 10/31 '주관 부처 심사 중' 진입, 11/07 확인 시 통과. - 미니 프로그램 ICP 등록: 공식 문서 상황 2 약 10
30 영업일; 백엔드에는 310 (프로세스 가이드 페이지) 및 222 (버전 관리 페이지의 'ICP 등록 필요' 팝업) 두 가지 표기가 있으므로 가장 긴 시간을 예상으로 제공. 플랫폼 초심 12 영업일, 반려 후 재심사 7 영업일. - 버전 심사: 공식 약 1일; 실측 두 번 모두 당일에 결과 (약 3시간 (거절) 및 약 1시간 (통과)).
대기 중 하지 말아야 할 일
- 이름 변경 금지, 주체 이전 금지: 두 ICP 등록이 모두 무효화되어 처음부터 다시 시작해야 함.
- 개발자 도구의 '플러그인 업데이트 있음' 클릭 금지: 플러그인 버전은 SDK를 따름
[실측].
대기 중 미리 할 수 있는 일: 광고 코드 연결 (ID는 비워둠), 스크린샷 준비.
출시: 심사 통과 후 '버전 관리 → 심사 버전'에서 '출시 제출' 클릭, 전체 또는 단계적 출시 선택, 관리자 WeChat QR 코드로 확인. 출시 전에도 사용자에게 먼저 물어볼 것 [실측]. 싱글 플레이어 게임은 미니 프로그램 ICP 등록 번호 없이도 출시 가능한 것으로 실측 확인; 온라인 게임은 공식적으로 ICP 등록 번호를 먼저 받아야 함. review.md 참조.
출시 후
- 운영 자료: '운영 자료 관리'에서 게임 소개, 일반 커버 이미지, 세로 및 가로 프로모션 이미지, 프로모션 카피 및 비디오 입력. 이는 검색 결과 및 발견 페이지에 표시되는 방식을 결정함. 텍스트 및 이미지는 매월 3회만 변경 가능, 프로모션 비디오는 주당 10세트. 먼저 샘플 이미지, 비디오 및 카피를 사용자에게 보여주고 동의를 얻은 후 제출. listing.md 참조
[실측].- 홈페이지 상단에 '프로모션 비디오-실제 게임 화면'이 누락되었다는 힌트가 표시되면 listing.md의 '프로모션 비디오 만들기'에 따라 실제 게임 화면 녹화: 세로 화면 게임 1080×1920, 20~30초, 화면에 텍스트나 프레임을 추가하지 않음.
- 트래픽 소유주: 누적 고유 방문자 100명 초과 시 활성화 가능 (또는 게임 서클 조건 충족 시). 활성화 당일 재무 정보 입력 후 광고 단위 생성, ID를 게임에 입력, 새 버전 출시. capabilities.md 참조, 수금은 payouts.md 참조.
- 시작 실패: 출시 후 백엔드 '실시간 로그'에서 실패한 시작의 로그를 확인하여 진행 아카이브에 기록.
거절 또는 막혔을 때: review.md 및 troubleshooting.md 참조.