Nine Chronicles를 구동하기 위한 일렉트론 기반의 멀티플랫폼 런처입니다. 기본적인 골격은 다음과 같습니다:
./src
| +-- resources
| +-- styles
| +-- views
| | +-- MainView.tsx
| | +-- LoginView.tsx
| | +-- LobbyView.tsx
| +-- main-process.ts
| +-- App.tsx
먼저, 개발에 필요한 의존성부터 모두 설치합니다.
yarn
추가로, 두 개의 별도 바이너리가 필요합니다.
- 9C Headless (Standalone):
yarn build-headless
로 빌드 가능 (.NET Core SDK 필요) - 9C Unity Player (9c.exe/9c.app):
yarn bundle-player
로 다운로드 가능yarn bundle-player
는NineChronicles
git 서브 모듈의 커밋 해시를 기준으로 NineChronicles 저장소 CI에서 미리 빌드된 바이너리를 다운로드 받습니다.- 빌드가 끝나지 않은 경우 다운로드에 실패하는데, 이 경우엔 Unity 에디터에서
dist
디렉토리를 출력 디렉토리로 하여 직접 빌드하시면 됩니다.
9C Headless 와 Unity Player 바이너리를 빌드하기 전에 git submodule 로 해당 바이너리의 소스를 받으셔야 합니다: git submodule update --recursive
두 개의 바이너리를 해당 디렉터리와 같게 배치해 주십시오.
./src
./dist
| +-- 9c.(exe|app) // 9C Unity Player
| +-- publish // 9C Headless (Standalone)
| | +-- Libpalnet.dll
| | +-- Grpc.Core.dll
| | +-- ...
| | +-- NineChronicles.Standalone.Executable(.exe)
그 뒤 하기의 명령어를 입력합니다.
yarn dev
기본적으로 프론트엔드는 webpack-hot-reload
가 있어, 변경하는 즉시 반영됩니다.
렌더러 프로세스에서 작업할 때는 일렉트론 재시작이 필요가 없으며, 메인 프로세스에 변경점이 생기면 그때 일렉트론 종료 후 재실행 해 주십시오.
mobx-devtools를 사용할 수 있습니다. 먼저, 스탠드얼론 mobx-devtools를 설치해 주십시오
yarn global add mobx-devtools
그 다음, mobx-devtools를 실행해 주십시오
mobx-devtools
이제 yarn server
와 yarn start
를 하시면 mobx-devtools에 전역 상태가 나타나는 것을 볼 수 있습니다.
git submodule update --recursive # 9C Headless 와 Unity Player 빌드 소스 다운로드하기
yarn
yarn build # 개발 빌드
yarn build-headless # 9C Headless (Standalone) 빌드 (.NET Core SDK 필요)
yarn bundle-player # 9C Unity Player 받기. 게임을 테스트하는걸 원하지 않으시면 건너뛰셔도 됩니다.
APV_SIGN_KEY=... APV_NO=... yarn sign-apv # APV 서명 (planet 명령 필요)
yarn build-prod # 프로덕션 빌드
# 주어진 비밀키로 새 버전 APV를 생성/서명 후 적용
APV_SIGN_KEY=... yarn pack-all
# 주어진 비밀키로 지정된 버전의 APV를 생성/서명 후 적용
APV_SIGN_KEY=... APV_NO=1234 yarn pack-all
# 주어진 APV를 그대로 적용
APV=... yarn pack-all
# APV 미적용 (가장 마지막에 릴리스된 패키지에 적용된 APV 재사용)
yarn pack-all
다음 환경 변수를 요구합니다. APV
와 APV_SIGN_KEY
양 쪽 모두 누락됐을 경우
APV(앱 프로토콜 버전) 서명을 안 합니다.
APV
: APV 토큰 (Libplanet.Net.AppProtocolVersion.Token
). 이게 주어지면 아래 세 환경 변수는 무시되고, 이 빌드 및 패키징된 앱은 이APV
를 쓰도록 설정됩니다.APV_SIGN_KEY
: APV 서명에 쓸 비밀키의 16진수 문자열.APV_NO
: APV 숫자 (Libplanet.Net.AppProtocolVersion.Version
). 생략시 download.nine-chronicles.com의 최신 버전에 1을 더한 값을 자동으로 사용합니다.
패키징된 Windows.zip 또는 macOS.tar.gz 파일에서 config.json 설정 내용만 갈아끼울 때 scripts/extract-config.sh 및 scripts/replace-config.sh 스크립트를 활용하면 편합니다.
# 패키지에서 config.json 내용만 추출 (Windows.zip 대신 macOS.tar.gz도 가능)
scripts/extract-config.sh path/Windows.zip > config.json
# 패키지 내 config.json 내용을 교체 (Windows.zip 대신 macOS.tar.gz도 가능)
scripts/replace-config.sh path/Windows.zip < config.json
# Windows (nsis)
# macOS (dmg, zip)
yarn pack-all:electron-builder
로그는 다음 위치에 쌓입니다.
- on macOS: ~/Library/Logs/{app name}/{process type}.log
- on Windows: %USERPROFILE%\AppData\Roaming\{app name}\logs{process type}.log
npx pretty-quick --staged
확장 화면(Windows: ⇧⌃X, macOS: ⇧⌘X)에서 다음 확장들을 설치합니다.