# One of the plans — Launcher Windows 전용 게임 런처. `a301://` 커스텀 URI 프로토콜을 등록하고, 웹에서 게임 시작 버튼 클릭 시 게임을 자동 다운로드/업데이트/실행합니다. ## 빌드 ```bash # Go 1.24+ 필요 go build -ldflags="-H windowsgui -s -w" -o launcher.exe . ``` `-H windowsgui` — 콘솔 창 없이 실행 (Win32 GUI 앱) `-s -w` — 디버그 심볼 제거 (바이너리 크기 축소) ## 사용법 | 실행 방법 | 동작 | |-----------|------| | `launcher.exe` (인자 없음) | `a301://` 프로토콜 등록 확인 다이얼로그 | | `launcher.exe install` | 프로토콜 강제 등록 | | `launcher.exe uninstall` | 프로토콜 제거 | | `launcher.exe "a301://launch?token="` | 게임 실행 (웹에서 자동 호출) | ## 게임 실행 흐름 ``` 웹 "게임 시작" 클릭 └─ a301://launch?token=JWT └─ launcher.exe 실행 ├─ 서버에서 최신 버전 정보 조회 (fileHash, url) ├─ A301.exe 없음 또는 해시 불일치 → 다운로드 창 표시 │ ├─ game.zip 다운로드 (진행률 표시) │ └─ 압축 해제 (launcher.exe 자신은 덮어쓰기 방지) └─ A301.exe -token 실행 ``` ## UI 다크 테마 Win32 창 (배경 `#2E2C2F`, 강조색 `#BACDB0`). 4K / FHD 해상도 모두 자연스럽게 표시 (DPI 인식 + 동적 스케일링). ## 배포 구조 유저가 받는 구성: ``` (게임 폴더)/ ├── launcher.exe ← 이 파일 └── A301.exe ← 런처가 자동 다운로드 ``` `launcher.exe`를 처음 실행하면 레지스트리에 `a301://` 프로토콜을 등록하고, 이후 웹에서 게임 시작 버튼을 누를 때마다 자동으로 이 런처가 실행됩니다. ## 레지스트리 등록 경로 ``` HKCU\Software\Classes\a301\ HKCU\Software\Classes\a301\shell\open\command → "launcher.exe" "%1" ``` ## 의존성 - `golang.org/x/sys/windows` — Win32 API - `golang.org/x/sys/windows/registry` — 레지스트리 접근