{"id":21102910,"url":"https://github.com/planetarium/9c-launcher","last_synced_at":"2025-05-13T01:14:17.933Z","repository":{"id":36949986,"uuid":"267240260","full_name":"planetarium/9c-launcher","owner":"planetarium","description":"Nine Chronicles Launcher","archived":false,"fork":false,"pushed_at":"2025-04-24T02:02:30.000Z","size":121703,"stargazers_count":44,"open_issues_count":47,"forks_count":41,"subscribers_count":12,"default_branch":"development","last_synced_at":"2025-05-13T01:14:07.193Z","etag":null,"topics":["electron","hacktoberfest","hacktoberfest2024"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/planetarium.png","metadata":{"files":{"readme":"README.ko.md","changelog":null,"contributing":"CONTRIBUTING.ko.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-05-27T06:35:35.000Z","updated_at":"2025-04-23T10:11:26.000Z","dependencies_parsed_at":"2024-03-07T08:43:04.272Z","dependency_job_id":"5b63edbb-d065-4c98-8ad6-83790d1b5df7","html_url":"https://github.com/planetarium/9c-launcher","commit_stats":null,"previous_names":[],"tags_count":248,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/planetarium%2F9c-launcher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/planetarium%2F9c-launcher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/planetarium%2F9c-launcher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/planetarium%2F9c-launcher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/planetarium","download_url":"https://codeload.github.com/planetarium/9c-launcher/tar.gz/refs/heads/development","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253851073,"owners_count":21973674,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["electron","hacktoberfest","hacktoberfest2024"],"created_at":"2024-11-19T23:56:57.741Z","updated_at":"2025-05-13T01:14:17.910Z","avatar_url":"https://github.com/planetarium.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nine Chronicles Launcher\n\n## 개요\n\n### 이 리드미는 굉장히 오래전 내용이며 수정되지 않아 현재 상황을 반영하지 못합니다!\n\n[대신 위키를 읽어주세요!](https://github.com/planetarium/9c-launcher/wiki)\n\nNine Chronicles를 구동하기 위한 일렉트론 기반의 멀티플랫폼 런처입니다.\n기본적인 골격은 다음과 같습니다:\n\n```\n./src\n|   +-- resources\n|   +-- styles\n|   +-- views\n|   |   +-- MainView.tsx\n|   |   +-- LoginView.tsx\n|   |   +-- LobbyView.tsx\n|   +-- main-process.ts\n|   +-- App.tsx\n```\n\n## 실행 방법\n\n먼저, 개발에 필요한 의존성부터 모두 설치합니다.\n\n```bash\nyarn\n```\n\n추가로, 한 개의 별도 바이너리가 필요합니다.\n\n- 9C Headless (Standalone): `yarn build-headless`로 빌드 가능\n  (.NET Core SDK 필요)\n\n9C Headless바이너리를 빌드하기 전에 git submodule 로 해당 바이너리의 소스를 받으셔야 합니다: `git submodule update --recursive`\n\n바이너리를 해당 디렉터리와 같게 배치해 주십시오.\n\n```\n./src\n./build\n|   +-- 9c.(exe|app) // 9C Unity Player\n|   +-- publish // 9C Headless (Standalone)\n|   |   +-- Libplanet.dll\n|   |   +-- Grpc.Core.dll\n|   |   +-- ...\n|   |   +-- NineChronicles.Standalone.Executable(.exe)\n```\n\n그 뒤 하기의 명령어를 입력합니다.\n\n```javascript\nyarn dev\n```\n\n## 개발 방법\n\n기본적으로 프론트엔드는 `webpack-hot-reload` 가 있어, 변경하는 즉시 반영됩니다.\n렌더러 프로세스에서 작업할 때는 일렉트론 재시작이 필요가 없으며, 메인 프로세스에 변경점이 생기면 그때 일렉트론 종료 후 재실행 해 주십시오.\n\n### mobx-devtools\n\nmobx-devtools를 사용할 수 있습니다. 먼저, 스탠드얼론 mobx-devtools를 설치해 주십시오\n\n```sh\nyarn global add mobx-devtools\n```\n\n그 다음, mobx-devtools를 실행해 주십시오\n\n```sh\nmobx-devtools\n```\n\n이제 `yarn server` 와 `yarn start`를 하시면 mobx-devtools에 전역 상태가 나타나는 것을 볼 수 있습니다.\n\n## 빌드 방법\n\n```bash\ngit submodule update --recursive # 9C Headless 와 Unity Player 빌드 소스 다운로드하기\n\nyarn\nyarn build  # 개발 빌드\nyarn build-headless  # 9C Headless (Standalone) 빌드 (.NET Core SDK 필요)\nAPV_SIGN_KEY=... APV_NO=... yarn sign-apv  # APV 서명 (planet 명령 필요)\nyarn build-prod  # 프로덕션 빌드\n```\n\n## 패키징 방법\n\n```bash\n# 주어진 비밀키로 새 버전 APV를 생성/서명 후 적용\nAPV_SIGN_KEY=... yarn pack-all\n# 주어진 비밀키로 지정된 버전의 APV를 생성/서명 후 적용\nAPV_SIGN_KEY=... APV_NO=1234 yarn pack-all\n# 주어진 APV를 그대로 적용\nAPV=... yarn pack-all\n# APV 미적용 (가장 마지막에 릴리스된 패키지에 적용된 APV 재사용)\nyarn pack-all\n```\n\n다음 환경 변수를 요구합니다. `APV`와 `APV_SIGN_KEY` 양 쪽 모두 누락됐을 경우\nAPV(앱 프로토콜 버전) 서명을 안 합니다.\n\n- `APV`: APV 토큰\n  ([`Libplanet.Net.AppProtocolVersion.Token`][appprotocolversion.token]).\n  이게 주어지면 아래 세 환경 변수는 무시되고, 이 빌드 및 패키징된 앱은 이 `APV`를\n  쓰도록 설정됩니다.\n- `APV_SIGN_KEY`: APV 서명에 쓸 비밀키의 16진수 문자열.\n- `APV_NO`: APV 숫자\n  ([`Libplanet.Net.AppProtocolVersion.Version`][appprotocolversion.version]).\n  생략시 [download.nine-chronicles.com](https://download.nine-chronicles.com/)의\n  최신 버전에 1을 더한 값을 자동으로 사용합니다.\n\n[appprotocolversion.token]: https://docs.libplanet.io/master/api/Libplanet.Net.AppProtocolVersion.html#Libplanet_Net_AppProtocolVersion_Token\n[appprotocolversion.version]: https://docs.libplanet.io/master/api/Libplanet.Net.AppProtocolVersion.html#Libplanet_Net_AppProtocolVersion_Version\n\n### 패키지에서 config.json 내용만 갈아끼우기\n\n패키징된 _Windows.zip_ 또는 _macOS.tar.gz_ 파일에서 _config.json_ 설정 내용만 갈아끼울 때\n_scripts/extract-config.sh_ 및 _scripts/replace-config.sh_ 스크립트를 활용하면 편합니다.\n\n```bash\n# 패키지에서 config.json 내용만 추출 (Windows.zip 대신 macOS.tar.gz도 가능)\nscripts/extract-config.sh path/Windows.zip \u003e config.json\n# 패키지 내 config.json 내용을 교체 (Windows.zip 대신 macOS.tar.gz도 가능)\nscripts/replace-config.sh path/Windows.zip \u003c config.json\n```\n\n### electron-builder로 패키징하기\n\n```bash\n# Windows (nsis)\n# macOS (dmg, zip)\nyarn pack-all:electron-builder\n```\n\n## 로깅 위치\n\n로그는 다음 위치에 쌓입니다.\n\n```\n- on macOS: ~/Library/Logs/{app name}/{process type}.log\n- on Windows: %USERPROFILE%\\AppData\\Roaming\\{app name}\\logs{process type}.log\n```\n\n## 코드 스타일 맞추기\n\n```bash\nnpx pretty-quick --staged\n```\n\n### Visual Studio Code 확장\n\n확장 화면(Windows: \u003ckbd\u003e⇧⌃X\u003c/kbd\u003e, macOS: \u003ckbd\u003e⇧⌘X\u003c/kbd\u003e)에서 다음 확장들을 설치합니다.\n\n- [EditorConfig]\n- [ESlint]\n- [Prettier]\n\n[editorconfig]: https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig\n[eslint]: https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint\n[prettier]: https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplanetarium%2F9c-launcher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fplanetarium%2F9c-launcher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplanetarium%2F9c-launcher/lists"}