The following documentation was deprecated. Current version is available at developers.xsolla.com

Xsolla Launcher

Xsolla Launcher는 자체 게임 런처가 없는 게임 개발자 또는 품질과 기능의 이유로 런처를 업그레이드하기 원하는 개발자를 위해 설계되었습니다. 사용자 기반의 내부 및 외부 배포 플랫폼을 수집하고 관리하는 데 도움이 되며 개발자에게 다음과 같은 편의를 제공합니다.

  • 클라우드. Xsolla 로그인을 사용하여 게임 진행 사항 및 게임 설정, 런처 설정을 클라우드에 저장할 수 있습니다.
  • 통합 인증 시스템을 통한 사용자 인증 및 등록. 런처에서 게임 인증 시스템 및/또는 Xsolla의 범용 인증 플랫폼(Xsolla Login)을 사용할 수 있습니다.
  • 게임 및 업데이트를 peer2peer 및/또는 CDN을 통해 최종 사용자에게 제공할 수 있습니다.
  • 멀티 플랫폼. Windows, Mac, 리눅스에서 게임을 런칭할 수 있습니다. 또한 스마트 TV, 게임기 및 여러 엔터테인먼트 시스템에서 런처를 이용할 수 있습니다.
  • 플레이어는 Facebook, YouTube, Twitch와 같은 플랫폼에 게임을 스트리밍할 수 있습니다.
  • 플레이어는 또한 게임의 시작 화면이나 게임 중에 다른 이와 채팅을 할 수 있습니다.
  • 소셜 네트워크에서 친구를 초대하거나 성공한 임무를 공유하고 뉴스를 다시 게시할 수 있습니다.
  • 런처를 통해 게임에서 뉴스와 동영상을 플레이어에게 제공할 수 있습니다.
  • 플레이어는 푸시 알림을 활성화할 수 있습니다.
  • 플레이어는 런처에서 게임 및 게임 아이템을 구입할 수 있습니다.
  • 게임 개발자는 게임을 위해 리더 보드를 만들고 사용자 정의할 수 있습니다.
  • 게임 개발자는 사용자 데이터(OS 버전, DirectX 버전, 하드웨어 사양 등)를 수집할 수 있습니다.
  • 스팀과 호환됩니다.
  • 게임 데이터를 바이너리 패치할 수 있습니다.

Xsolla Launcher를 통합하려면 integration@xsolla.com로 문의해주세요.

Xsolla Launcher UI 사용자 정의

사용자 정의 가능 항목:

  • 이미지(아이콘, 배경
  • 글꼴
  • UI 색상(배경, 텍스트 등)

모든 필수 사용자 정의 매개 변수는 런처의 실행 폴더에 위치한 UIStyle.json 파일에 저장됩니다.

이미지 교체

이미지는 img 폴더에 저장되어 있으며 앱 섹션(Background, LoginWindow 등) 별로 그룹화되어 있습니다.

가능한 작업:

  • 원래 이름을 유지하면서 기본 이미지 교체
  • img 폴더에 새 이미지 추가 및 UIStyle.json에 해당 이미지를 지정. img 폴더에 새 이미지 추가 및 UIStyle.json에 해당 이미지를 지정. "img/LoginWindow/login_background.png"를 "bg_image":img/LoginWindow/my_custom_image.jpg"로 교체합니다.

1X 및 2X 크기(4K 디스플레이에 사용)로 된 두 가지 버전의 이미지가 필요합니다. 2X 이미지는 확장자 앞에 "@2x"가 반드시 있어야 합니다(예: “login_background@2x.png”).

글꼴 교체

앱에서 사용하는 글꼴은 Fonts 폴더에 있습니다. 사용할 수 있는 글꼴: 보통(Regular), 중간(Medium), 굵게(Bold) 및 검정(Black). 새로운 글꼴을 사용하려면, Fonts 폴더에 새 글꼴을 놓고 UIStyle.json을 편집합니다. 다음 라인을 찾습니다.

"fonts": {
        "regular":  "fonts/Lato-Regular.ttf",
        "medium":   "fonts/Lato-Medium.ttf",
        "bold":     "fonts/Lato-Bold.ttf",
        "black":    "fonts/Lato-Black.ttf"
}

그리고 필요한 경우 새 글꼴 경로를 지정합니다. 예를 들어 Lato-Black.ttf 를 My_Own_Cool_Font.fft로 교체하는 경우, 교체할 글꼴을 Fonts에 두고 UIStyle.json 에 있는 위의 라인을 다음과 같이 변경합니다.

"fonts": {
        "regular":  "fonts/Lato-Regular.ttf",
        "medium":   "fonts/Lato-Medium.ttf",
        "bold":     "fonts/Lato-Bold.ttf",
        "black":    "fonts/My_Own_Cool_Font.fft"
}

색상 변경

모든 UI 색상은 UIStyle.json 에 정의되어 있으며 화면과 구성 요소 별로 그룹화되어 있습니다. 구성 요소의 색상을 변경하려면 파일에서 해당 구성 요소를 찾아 속성을 변경합니다. 예를 들어 설정 화면에서 배경 색상을 변경하려면 UIStyle.json을 열고 settings_screen 요소와 bg_color 설정을 찾습니다. 색상을 빨강으로 변경:

``php "bg_color": "#FF0000", ```

색상은 다음 형식으로 정의합니다.

  • SVG (see 색상 이름 목록 참조), 예: "흰색"
  • #RRGGBB, 예: "#F13900";
  • #AARRGGBB, 예: “#40FFFFFF”.

Xsolla Launcher 프런트 엔드 사용자 정의

Xsolla Launcher는 Qt 5.8 프레임 워크(문서) 참조)를 기반으로 합니다. 런처의 인터페이스는 Qtquick(문서)와 QML(문서)을 기반으로 합니다.

프로젝트 구조

전체 프로젝트 프런트 엔드는 런처의 루트 디렉토리에 있는 qml 하위 디렉토리에 있으며 앱의 화면과 구성 요소에 따라 구조화되어 있습니다. 각 창의 디렉토리는 해당 창의 인터페이스를 설명합니다.

ErrorReportWindow

앱에서 오류가 발생하면 팝업합니다.

GameInstallwindow

게임 설치 경로를 알리고 필요한 디스크 공간을 표시합니다.

LauncherUpdateWindow

앱 시작시 팝업하고 런처 업데이트 진행 상태를 표시합니다.

LoginWindow

로그인 창, 4개의 파일로 정의:

  • BasePart.qml — 로그인 창 본문(입력 필드, 로그인 버튼, 소셜 네트워크 목록)
  • SocialList.qml — 소셜 네트워크 목록이 있는 화면
  • ErrorWindow.qml — 사용자 정의 오류 창(예: "사용자를 찾을 수 없음")
  • LoginWindow.qml — BasePart와 SocialList를 전환하는 창

MainWindow

앱의 메인 창과 구성 요소:

  • MainWindow.qml — 페이지(게임, 뉴스 등) 표시를 제어하는 창 자체
  • LoginContextMenu.qml — 드롭 다운 메뉴
  • GameComponent.qml — 게임 페이지
  • NewsWindow 디렉토리:
    • NewsScreen.qml — 뉴스 페이지. 보조 화면 표시를 제어(전체/단일 뉴스 항목)
    • BannerNewsComponent.qml — 뉴스 슬라이드
    • NewsListComponent.qml — 모든 뉴스 목록
    • OneNewsScreen.qml — 특정 뉴스 항목
  • GameWindow 디렉토리:
    • HorizontalListView.qml — 배너 목록
    • AdvertisingBanner.qml — 배너 목록 요소. 요소에 여러 개의 배너가 포함되어 있는 경우 자동으로 스크롤됩니다.

SettingsWindow

SettingsWindow.qml — 설정 창(언어 드롭 다운 목록과 “언어 기억” 및 “P2P 연결 활성화” 확인란)

UI

UI 디렉토리에는 프로젝트 전체에 사용되는 구성 요소가 있습니다.

  • ComboBox.qml — 스크롤 막대가 있는 드롭 다운 목록(아래 참조)
  • MyScrollBar — ComboBox에서 사용하는 사용자 정의 스크롤 막대
  • OrangeButton — 버튼
  • ProgressBar — 텍스트가 있는 진행률 표시줄. 게임, 뉴스, 기타 앱 화면에서 사용
  • TextLabel — 캡션. 주 창에 있는 페이지 토글 헤더에서 사용
  • TransparentButton — 버튼
  • TransparentTextField — 입력 필드. "암호" 모드에서는 문자를 점으로 대체합니다(상자 오른쪽 아이콘을 클릭하면 일반 텍스트로 전환할 수 있음).

전체 프런트 엔드는 C++을 기반으로 하며, 프로젝트를 다시 컴파일링해야 변경할 수 있습니다. 전역 WindowController 오브젝트는 창 간 전환을 제어하고 다음 메소드를 사용합니다.

  • void openLoginWindow() — qml/LoginWindow/LoginWindow.qml 열기
  • void openUpdateWindow — qml/LauncherUpdateWindow/LauncherUpdateWindow.qml 열기
  • void openMainWindow() — qml/MainWindow/MainWindow.qml 열기
  • void exit() — 현재 창 닫기 일부 Windows 버전(특히 Windows 7)에서 게임 데이터가 로딩되는 동안 창이 닫히면서 멈추는 현상이 발생할 수 있기에, 이 메소드는 창을 더 빨리 닫기 위해 구현되었습니다.
  • void move2top() — 여러 창의 상단에 있는 현재 창을 이동(소셜 로그인에 현재 사용 중)

QML에서 사용할 수 있는 전역 오브젝트:

  • LauncherManager — 주 오브젝트. 사용자 인터페이스 내에서 비즈니스 로직을 실행
  • Settings — 응용 프로그램 설정을 저장
  • UninstallManager — 게임 데이터 삭제
  • UrlManager — 로드하고 처리하며 UI에서 사용할 수 있도록 함
  • UIStyleManager — UIStyle.json에서 스타일 상수를 로드하고 UI에서 사용할 수 있도록 함

QML에서 지원하는 유형:

  • LauncherUpdater — 런처 업데이트에 사용
  • LoginHelper — 로그인에 사용(소셜 네트워크 목록 검색, 로그인 및 암호 또는 소셜 프로필로 로그인)
  • NewsReceiver — 뉴스 검색에 사용(일반 및 배너 기반에 모두 사용)
  • BannersModel — 광고 배너 검색에 사용
  • SteamWorker — Steam 로그인에 사용

프런트 엔드 내에서 원하는 수의 새 화면과 구성 요소를 추가하고 사용할 수 있지만 앱에서는 위의 세 가지만 열 수 있습니다(WindowController 참조). 이전에 사용하지 않은 Qt 모듈을 추가하는 경우 파일을 배포 폴더에 추가해야 합니다. 예를 들어 현재 버전은 시각 효과를 사용하므로 배포 패키지에 QtGraphicalEffects 폴더를 추가했습니다(Qt 5.8에서 사용할 수 있는 QML 모듈 목록은에서 확인 가능).