010dbc30a4cfbe49695dae70290dfb87f6bf76aa
Minecraft Launcher
Electron 기반 커스텀 마인크래프트 런처입니다. MRSLauncher를 최신 소스로 가져온 뒤, 단일 모드팩 구조를 설치 페이지 + 라이브러리 구조로 확장했습니다.
현재 상태
- 여러 프로필을 설치 페이지에서 라이브러리로 추가 가능
- 프로필 종류 지원:
modpackmapserver-pack
- 라이브러리에서 프로필 선택, 제거, 자료 준비, 실행 화면 이동, 바로 실행 가능
- 프로필별
distribution.json전환 가능 map프로필은 월드 ZIP/로컬 폴더를saves/에 설치하고quickPlaySingleplayer로 바로 실행server-pack프로필은 로컬 서버 번들 설치, 서버 시작/중지, 선택형 터널 명령 실행, 공개 주소 표시 지원- 라이브러리의 주소 입력칸에
host:port를 넣으면 실행 시 자동 접속 - 설치 페이지는 관리자가 미리 등록한 프로필을 보여주는 읽기 전용 카탈로그 화면
- 설치 페이지에서 프로필 제목, 요약, 상세 설명, 실행 조건을 확인 가능
중요한 제한
포트포워딩 없이 외부 사용자가 접속하게 만드는 기능은 런처만으로 해결되지 않습니다.
필요한 것 중 하나:
- 별도 릴레이 서버
- 터널링 도구
- VPN/NAT traversal 백엔드
현재 구현은 server-pack 프로필에 tunnelCommand를 넣어 외부 도구를 호출하는 자리까지 제공합니다.
추후 설계 문서:
프로젝트 구조
app/- Electron renderer 자산
- 설치/라이브러리/로그인/설정 화면
app/assets/js/catalogmanager.js- 관리자 등록 카탈로그 로드, 프로필 메타데이터 정규화
app/assets/js/profileassetmanager.js- 맵 ZIP, 서버 번들 ZIP/폴더 설치
app/assets/js/serverruntime.js- 로컬 서버 실행, 선택형 터널 프로세스 관리
src/main/index.ts- TypeScript 메인 프로세스 엔트리
index.jsdist/main/index.js우선 실행, 없으면index.legacy.js폴백
카탈로그 / 프로필
기본 카탈로그:
app/assets/launcher/catalog.json
원격 카탈로그:
- 관리자 배포 설정으로 연결
세부 스키마는 docs/launcher-catalog.md를 보면 됩니다.
개발
요구사항:
- Node.js 22
설치:
npm install
개발 실행:
npm start
윈도우 smoke 테스트:
npm run smoke:win
이 명령은 TypeScript 메인 프로세스를 빌드한 뒤 Electron 앱을 실제로 한 번 띄우고, LAUNCHER_SMOKE_EXIT 환경변수로 자동 종료합니다.
TypeScript 메인 프로세스만 빌드:
npm run build
배포 빌드:
npm run dist
참고
- Upstream:
https://github.com/peunsu/MRSLauncher - Original base:
https://github.com/dscalzi/HeliosLauncher - CI:
.github/workflows/windows-smoke.yml에서 Windows smoke run 수행
Description