추가 가이드

now.gg의 서비스와 API를 편리하게 설정 및 적용하는 데 도움이 될 만한 Cloud와 관련된 추가 가이드입니다.

추가 가이드

아래를 참조해 주시기 바랍니다:




유저 상태 저장을 위한 클라우드 스토리지 설정

게임은 일반적으로 세션 전반에 걸쳐 유저의 진행 상황을 기기에 로컬로 저장하지만 now.gg는 클라우드에 저장할 수 있어 더욱 원활한 게임 경험을 선사해 드립니다.

이때 저장 파일 경로와 제외 파일 경로를 정의하여 유저의 게임 진행 데이터를 저장하고 복원하기 위한 now.gg 클라우드 스토리지를 설정하실 수 있습니다.

‘저장’ 및 ‘제외’ 파일 경로를 정의하는 것은 게임 로딩 시간을 줄여 유저의 플레이 경험을 향상하고 now.gg 클라우드 스토리지를 최적으로 사용하는 필수 방법 중 하나입니다.

스토리지 설정 요구 사항:

  • 저장 파일 경로
    클라우드에 저장할 파일이나 폴더의 위치를 나타내며 일반적으로 /data/data/<package_name>/<file_name>에 저장됩니다.
  • 제외 파일 경로
    클라우드에 저장하지 않을 파일 및 폴더의 위치를 나타냅니다.

파일 경로 설정

현재 now.gg에서 새로 출시하는 모든 앱에 대해 해당 설정을 적용하실 수 있으며 이미 출시된 앱의 경우 새 버전의 앱을 출시해야 합니다.

방법:

  • nowStudio에 로그인합니다.
  • 선택:
    • 새 앱 추가
      • 여기를 따라 새 앱을 추가합니다.
    • 새 버전 출시
      • 여기를 따라 새 버전을 출시합니다.
  • ‘앱 콘텐츠’ 탭에서:
    • 저장 파일 경로 및 제외 파일 경로를 입력합니다.
    • 저장을 클릭합니다.
  • 왼쪽 메뉴에서 릴리스를 클릭합니다.

설명:

  • 파일 경로가 여러 개인 경우 공백이나 쉼표 대신 새 줄로 각 경로를 구분합니다.
  • 저장 파일 경로의 경우 지정한 파일과 폴더만 다음 플레이 세션을 위해 저장되고 복원됩니다.
  • 제외 파일 경로(선택 사항)의 경우 지정한 파일과 폴더가 클라우드에 저장되지 않습니다.

중요

  • 게임 로딩 시간은 유저 플레이 세션 동안 복원할 게임 데이터의 크기에 따라 달라집니다.
    • 원활한 플레이를 위해 최대 15 MB의 저장 파일 크기를 권장합니다.
      • 단일 파일 또는 모든 파일의 더해진 크기를 의미합니다.
    • 더 큰 파일을 이에 포함하면 게임 로딩 시간에 영향을 줄 수 있습니다.
  • Android id와 같은 고유 식별자를 사용하지 않는 것을 권장해 드립니다.



앱 파일 준비

nowStudio에 업로드할 앱 파일을 준비합니다.

nowStudio를 사용하여 릴리스를 생성하려면 앱 파일을 준비해야 하며 이때 Standalone(독립형) APK, APK 및 에셋 Zip 파일이 허용됩니다.

선택:

  • 독립형 APK
    • 모든 에셋이 포함된 APK를 제공합니다.
  • APK 및 에셋 Zip
    • 게임은 일반적으로 필요한 에셋을 실행 시 다운로드하여 게임 플레이가 지연됩니다. 하지만 now.gg를 사용하면 APK와 에셋이 포함된 Zip을 대신 제공하여 게임 로딩 시간을 크게 줄이고 유저에게 즉각적인 게임 플레이를 제공할 수 있습니다.

1. APK 준비

nowStudio에 업로드할 APK 파일을 준비합니다.

요구 사항:

  • ARM용 64비트 안드로이드 앱
  • APK 내 모든 에셋 포함

APK를 준비한 후 nowStudio에 앱을 추가하실 수 있습니다.


2. APK 및 에셋 Zip 준비

nowStudio에 업로드할 APK 및 에셋 Zip 파일을 준비합니다.

게임은 일반적으로 필요한 에셋을 실행 시 다운로드하여 게임 플레이가 지연됩니다. 하지만 now.gg를 사용하면 APK와 에셋이 포함된 Zip을 대신 제공하여 게임 로딩 시간을 크게 줄이고 유저에게 즉각적인 게임 플레이를 제공할 수 있습니다.

순서

  • 제공된 형식에 따라 APK와 에셋이 포함된 Zip 파일(번들)을 만듭니다.
  • 제공된 형식을 사용하여 에셋의 매니페스트(manifest) 파일을 만듭니다.
  • nowStudio에 앱을 추가합니다.

1. 번들 생성 (Zip 파일)

앱 및 에셋의 Zip 파일을 생성하기 위해 아래 지정된 형식과 내용을 따라 주시기 바랍니다.

  • APK 파일
  • metadata.json
  • 에셋 디렉토리
    • Asset1
    • Asset2
    • OtherAssets (파일 또는 디렉토리)
  • Obb 디렉토리
    • main.<패키지 버전 코드>.<패키지 이름>.obb
    • patch.<패키지 버전 코드>.<패키지 이름>.obb
다음은 게임 APK + 에셋 번들의 샘플 형식입니다.

중요

  • 앱 번들의 에셋 폴더는 여러 종류의 파일을 포함할 수 있습니다.
    • 파일 또는 폴더가 포함될 수 있습니다.
  • 에셋이나 Obb 또는 둘 다를 제공해 주시는 것을 추천해 드립니다. 업로드 시 이들 중 하나는 필수입니다.

2. 매니페스트 파일 생성

다음 샘플 JSON은 매니페스트 파일인 metadata.json의 형식을 보여드립니다.

{
    "assets": [
        {    
            "name": "asset1.xyz",
            "location": "/data/media/0/Android/data/<packageName>/files"
        },
        {
            "name": "asset2.unity3d",
            "location": "/data/media/0/Android/data/<packageName>/files"
        },
        {
            "name": "OtherAssets",
            "location": "/data/data/<packageName>/files"
        }
    ]
}

3. 앱 추가

APK 및 에셋 Zip 준비 후 nowStudio에 앱을 추가하실 수 있습니다.




커스텀 도메인 추가 및 구성

now.gg가 아닌 다른 도메인에 앱을 호스팅하려는 경우 커스텀 도메인을 추가하는 과정입니다.

now.gg 클라우드 외에도 커스텀 도메인을 추가하여 다른 도메인에서 앱을 호스팅하실 수도 있습니다.

시나리오:

  • 새 앱에 커스텀 도메인 추가
  • 이미 출시된 앱에 커스텀 도메인 추가

1. 새 앱에 커스텀 도메인 추가

새 앱에 커스텀 도메인을 추가하는 단계입니다.

방법:

  • 새 앱을 추가합니다.
  • 모든 앱에서 앱을 선택합니다.
    • 앱 이름 옆에 있는 세부 정보를 클릭합니다.
  • 프로덕션 내의 정보를 클릭합니다.
  • 아래와 같이 해당 필드에 커스텀 도메인 주소를 입력합니다.

    중요: 추가하려는 도메인을 소유하고 있는지 확인해 주시기 바랍니다.
  • 기타 필수 세부 정보를 입력했는지 확인합니다.
  • 저장을 클릭합니다.
    • 입력된 도메인 정보는 검토되며 컨펌 후 도메인 매핑을 계속 진행하실 수 있습니다.
  • 필요한 앱 세부 정보를 모두 입력한 후 릴리스를 생성하실 수 있습니다.
  • 매핑 세부 정보를 받은 후 아래와 같이 ‘정보‘ 탭 내 ‘매핑 세부 정보‘를 클릭하면 해당 정보를 확인하실 수 있습니다.
  • 아래와 같이 도메인 매핑 세부 정보가 제공됩니다.
  • 제공된 세부 정보를 통해 DNS 공급자를 설정하실 수 있습니다.
  • DNS 공급자를 통해 설정 후 해당 도메인에서 게임을 호스팅하실 수 있습니다.


2. 이미 출시된 앱에 커스텀 도메인 추가

이미 출시된 앱에 커스텀 도메인을 추가하는 단계입니다.

방법:

  • 모든 앱에서 앱을 선택합니다.
    • 앱 이름 옆에 있는 세부 정보를 클릭합니다.
  • 프로덕션 내의 정보를 클릭합니다.
  • 오른쪽 하단의 수정 버튼을 클릭합니다.
    (이후 필드를 수정하실 수 있습니다)
  • 아래와 같이 해당 필드에 커스텀 도메인 주소를 입력합니다.

    중요: 추가하려는 도메인을 소유하고 있는지 확인해 주시기 바랍니다.
  • 저장을 클릭합니다.
  • 아래와 같이 확인 메시지가 화면에 표시됩니다.
  • 입력된 도메인 정보는 검토되며 컨펌 후 도메인 매핑을 계속 진행하실 수 있습니다.
  • 매핑 세부 정보를 받은 후 아래와 같이 ‘정보‘ 탭 내 ‘매핑 세부 정보‘를 클릭하면 해당 정보를 확인하실 수 있습니다.
  • 아래와 같이 도메인 매핑 세부 정보가 제공됩니다.
  • 제공된 세부 정보를 통해 DNS 공급자를 설정하실 수 있습니다.
  • DNS 공급자를 통해 설정 후 해당 도메인에서 게임을 호스팅하실 수 있습니다.



CLI를 통한 앱 업로드

nowgg CLI는 앱 빌드를 nowStudio에 쉽게 업로드할 수 있게 도와주는 커맨드 라인 도구입니다.

요구 사항

  • 앱 ID
    • nowStudio에서 앱을 식별하는 데 사용됩니다.
    • nowStudio의 앱 세부 정보에서 확인하실 수 있습니다.
  • 퍼블리셔 토큰
    • 퍼블리셔를 식별하는 데 사용됩니다.
    • nowStudio의 계정 정보에서 확인하실 수 있습니다.

nowgg CLI

macOS 또는 Windows에서 터미널을 실행합니다.

설치 및 초기화

1. nowgg CLI 설치

  pip install nowgg

2. nowgg CLI 초기화

  nowgg init --token "<your_publisherToken_from_nowStudio>"

nowgg CLI로 nowStudio에 앱 업로드

1. 앱 라이브러리에 앱 업로드

  nowgg upload --app_id <your_app_id> --file_path "/directory/sample.apk" --apk_version <app_version_name> --version_code <app_version_code>

중요: 앱이 nowStudio 내의 앱 라이브러리에 업로드됩니다.

2. 테스트 트랙에 앱 업로드 및 배포 트리거

  nowgg upload --app_id <your_app_id> --file_path "/directory/sample.apk" --apk_version <apk_version> --version_code <app_version_code> --deploy 

중요

  • 각 테스트 트랙에는 해당 테스트 트랙에서 초안 릴리스를 생성하는 데 사용할 수 있는 고유한 app_id가 포함됩니다.
    • 예를 들어 app_id1234인 경우 테스트 트랙 1의 app_id는 1234_t1이 됩니다.
  • --deployapp_id를 통해 식별된 테스트 트랙에서 배포 프로세스를 트리거합니다.

지원

  nowgg -h
   nowgg init -h
   nowgg upload -h

중요

  • nowgg 커맨드 실행 중 ‘command not recognized‘ 오류가 발생할 시 PATH에 <python directory>\<Scripts>를 추가하시는 것을 권장해 드립니다.
  • permission-related errors‘가 발생하는 경우 관리자 권한으로 명령을 실행하시기 바랍니다.



구독 이해하기

다음 문서는 nowStudio에서 제공하는 구독 기능의 중요한 측면에 초점을 맞춥니다.

구독은 now.gg에서 제공하는 앱 내 상품으로, 사용자에게 내 앱의 콘텐츠나 서비스에 접근할 수 있는 정기 요금을 부과합니다.

nowStudio는 ‘구독’ 기능을 통해 구독을 쉽게 생성, 관리 및 판매할 수 있는 다양한 기능을 제공합니다. 앱 내 상품과 구독 상품의 주요 차이점은 앱 내 상품은 사용자에게 일회성 요금이 부과되지만, 구독은 정기적인 요금이 부과된다는 점입니다.

nowStudio에서 구독을 생성하고 관리하는 방법을 이해하기 위해서는:

now.gg 결제 모듈을 사용하여 앱에서 구독을 구현하는 방법을 이해하기 위해서는 다음 가이드를 따르세요:

중요: 이 페이지의 정보 외에도 now.gg 정책을 참조해야 합니다.

구독 개요

이 섹션에서는 구독에 대해 소개합니다.

  • 구독
  • 청구 기간
    • 자동 갱신
  • 혜택
  • 가격
    • 가격 변경

구독

구독은 사용자가 특정 기간 동안 접근할 수 있는 혜택의 집합을 제공합니다. 같은 앱 내에서 여러 구독을 가질 수 있어 다른 혜택 세트나 단일 혜택 세트의 다양한 계층을 나타낼 수 있습니다(예: ‘골드’ 및 ‘다이아몬드’ 팩). 사용자는 now.gg 앱 내에서 구매함으로써 구독에 접근할 수 있습니다.


청구 기간

now.gg에서는 구독 기간을 선택할 수 있습니다. 가능한 청구 기간은 다음과 같습니다:

  • 4주마다
  • 월간
  • 2개월마다
  • 3개월마다
  • 4개월마다
  • 6개월마다
  • 8개월마다
  • 연간

자동 갱신

now.gg 구독은 자동 갱신됩니다. 사용자는 특정 청구 기간에 대해 구독을 구매하고, 각 기간의 끝에서 자동으로 갱신되어 구독이 중단되지 않도록 합니다. 구독은 사용자, 개발자 또는 now.gg에 의해 취소될 수 있습니다.


혜택

구독에 최대 네 가지 혜택을 추가할 수 있어 사용자가 받게 될 핵심 혜택을 강조해야 합니다.


결제 거절

갱신 결제가 거절되면 now.gg는 사용자에게 결제 문제를 해결하도록 요구합니다. 해결되지 않을 경우 구독이 자동으로 만료됩니다.




임베드 모듈로 웹사이트에서 클라우드 게임 플레이 활성화

now.gg Embed Javascript 모듈는 프레임워크를 제공함으로써 개발자분들이 웹사이트에 클라우드 게임을 더욱 쉽게 임베딩(삽입, 첨부, 추가)하실 수 있도록 도와드립니다.

now.gg 임베드 모듈

  • 웹페이지에 클라우드 게임 간편히 임베딩
  • 클라우드 앱 또는 게임이 임베딩된 웹페이지 내 이벤트 기반 통신 가능
  • 웹사이트 내 임베딩된 클라우드 게임으로 더욱 쉽게, 많은 유저 확보 및 유지 가능

요구사항

now.gg 임베드 모듈를 사용하기 위해서는 아래 전제 조건이 충족되어야 합니다.

  • 화이트 도메인 – now.gg 임베드 모듈는 now.gg의 도메인 허용 목록에 추가된 도메인에서만 작동하므로 사용하시려는 도메인을 dev-support@now.gg로 보내 주시기 바랍니다.
  • clientId (클라이언트 ID)clientId를 발급받기 위해 dev-support@now.gg로 문의해 주세요.
  • appId (앱 ID) – appId를 발급받기 위해 여기를 읽어 주세요.

이후 여기를 통해 웹페이지에 클라우드 게임을 임베딩해 보실 수 있습니다.


임베드 모듈 구현

now.gg 임베드 모듈 적용 단계입니다.

방법:

  1. 웹사이트에 임베드 모듈를 추가합니다.
  2. Iframe에서 게임을 실행합니다.
  3. 추가로 다음을 통해 고급 임베딩 기능을 추가해 보실 수 있습니다.

중요

  • 게임이 테스트 또는 프로덕션 트랙에서 실행되었는지, 또는 임베딩할 게임 링크가 있는지 확인합니다.
  • 아래 링크를 통해 릴리스 버전을 생성하고 배포하실 수 있습니다.

1. 임베드 모듈 추가

첫 번째 단계는 웹사이트에 Embed SDK를 추가하는 것입니다.

now.gg 임베드 모듈를 웹사이트에 추가하기 위해 아래와 같이 스크립트 태그에 모듈 리소스 javascript를 추가합니다.

<script type="text/javascript" src="https://cdn.now.gg/external/sdk/ifp-sdk-1.1.0.min.js"></script>

2. Iframe에서 게임 실행

now.gg 임베드 모듈 리소스 추가 후 now.gg Embedding으로 모듈를 초기화한 뒤 웹사이트에 게임을 임베딩합니다.

순서:

  • iframeParentElement, appEventCallbackFunction, 및 sdkEventCallbackFunction를 선언합니다.
  • 아래와 같이 클라우드 게임을 실행하는 데 필요한 변수와 함께 NowIfp클래스의 init함수를 호출합니다.
const iframeParentElement = document.getElementById("your_iframe_element");

// 안드로이드 앱에서 전송된 이벤트를 처리하는 콜백 함수입니다.
const appEventCallbackFunction = (event) => {
    console.log(event.name); 
    console.log(event.data);
    // 여기에서 받은 이벤트를 처리합니다.
}; 

// JavaScript 모듈 이벤트를 처리하는 콜백 함수입니다.
const sdkEventCallbackFunction = (event) => {
    console.log(event.name); 
    console.log(event.msg);
    // 여기에서 받은 이벤트를 처리합니다.
}; 


NowIfp.init({
    clientId: <"your_clientId"> ,
    appId: <"your_production_appId/your_test_track_appId"> , \\ appId 예 - 테스트 트랙: "1234_t1" | 프로덕션: "1234"
    iframeParentElement: iframeParentElement,
    customData: {} // for app-specific custom handling
    appLaunchData: {
        // 실행 관련 변수를 Iframe에 전달하면 실행 시 직렬화(serialized)되어 앱에 전달됩니다.
        [key]: [value]
    } 
    appEventCallback: appEventCallbackFunction,
    sdkEventCallback: sdkEventCallbackFunction,
    isNowLoginEnabled: true
});

appId 발급

appId 는 nowStudio에서 확인하실 수 있습니다.

중요

  • appId는 nowStudio에서 발급받는 앱/게임 고유 식별자입니다.
  • appId는 테스트/프로덕션 별개입니다.
    • 테스트 appId가 앱 실행 후에만 확인이 가능합니다.
    • 프로덕션 – 앱 추가 후, appId가 앱 세부정보에서도 확인이 가능합니다.
1. 테스트 appId
  • 테스트용 appId는 모든 앱 > 앱 선택 > 테스트 트랙에서 확인하실 수 있습니다.
    • appId는 아래와 같이 라이브 테스트 릴리스에 나열됩니다.
2. 프로덕션 appId
  • 프로덕션용 appId는 모든 앱 > 앱 선택 > 릴리스에서 확인하실 수 있습니다.
    • appId는 아래와 같이 라이브 프로덕션 릴리스에 나열됩니다.

변수

이름 자료형 필요 설명
clientId string Yes 고유 클라이언트 식별자
appId string Yes 앱/게임과 연결된 앱 ID입니다. nowStudio는 프로덕션 및 테스트 환경에 따라 서로 다른 appId를 발급합니다. – 프로덕션 appId: “1234“. 테스트 트랙 appId: “1234_t1“.
iframeParentElement element Yes 임베딩된 앱/게임을 렌더링합니다.
customData object No now.gg 백엔드에 전달할 앱별 사용자 지정 데이터입니다.
appLaunchData object No 앱 실행 시 추가로 전달되는 데이터입니다. (appLaunchData 선언)
appEventCallback function No 앱에서 전송된 이벤트를 처리하는 콜백 함수입니다. (Iframe 내 게임 실행)
sdkEventCallback function No JavaScript 모듈 이벤트를 처리하는 콜백 함수입니다. (Iframe 내 게임 실행)
isNowLoginEnabled boolean No true – 앱 시작 시 now.gg 로그인이 실행됩니다。
false – 앱 시작 시 now.gg 로그인이 실행되지 않습니다。

이제 귀하의 게임이 now.gg 클라우드를 통해 웹페이지에 임베딩되었습니다.


임베딩 고급 기능

웹사이트(HTML)에 임베딩된 게임에 고급 기능을 적용하는 단계입니다.

클라우드 게임 환경을 구축하기 위해 now.gg 임베드 모듈를 사용할 시

  • 클라우드 내 앱 이벤트와 데이터를 HTML 페이지로 전달할 수 있습니다.
  • 앱 실행 변수를 앱에 전달할 수 있습니다.
요구사항
  • now.gg 이벤트 모듈을 다운로드하고 안드로이드 앱에 적용합니다.
1. 앱 이벤트를 HTML 페이지로 전달

now.gg 이벤트 모듈 적용 시 now.gg 클라우드에 있는 앱의 이벤트와 데이터를 게임이 임베딩된 HTML 페이지로 전달할 수 있습니다.

참조 :

2. HTML 페이지의 변수를 앱에 전달

NowIfp.init에 전달될 appLaunchData를 선언한 뒤 앱으로 전달할 수 있는 아래 샘플 코드를 통해 HTML 페이지에서 앱 실행 변수를 앱에 전달하실 수 있습니다.

a. appLaunchData 선언

appLaunchDataNowIfp.init()에 변수로 전달되며, 이는 실행 매개변수로서 앱에 전달됩니다. 아래 코드는 appLaunchDataNowIfp.init()에 전달하는 방법을 보여드립니다.

NowIfp.init({
     clientId: <"your_clientId"> ,
     appId: <"your_appId"> ,
     iframeParentElement: iframeParentElement,
     customData: {} // 앱별 필요한 커스텀 작업이 가능
     appLaunchData: {
           [key]: [value]
     } 
      // 실행 시 Iframe에 실행 변수를 전달합니다. 이때 해당 변수는 직렬화(serialized)되어 전달됩니다.
     appEventCallback: appEventCallbackFunction,
     sdkEventCallback: sdkEventCallbackFunction,
     isNowLoginEnabled: true
 });
b. 앱으로 appLaunchData 전달

앱은 HTML 페이지에서 전송된 appLaunchData를 전달받을 수 있습니다.

아래 코드는 앱에서 키를 사용하여 값을 수령하는 방법을 보여드립니다.

// 앱 실행 변수로 전달된 키를 사용하여 값을 검색 및 수령합니다.
 string value = NowGGEventsSdkManager.Instance.GetAppLaunchDataProperty(key);

참조 :

중요

  • appLaunchData는 초기 앱 실행 시에만 전달되며 앱이 실행 중일 때는 전달할 수 없습니다.

데모 프로젝트

데모 HTML 페이지를 통해 Embed 모듈의 작동 방식을 한눈에 확인해 보실 수 있습니다.

Embed 모듈 작동 방식

  • 이곳을 통해 now.gg Embed 모듈 Demo를 실행합니다.
  • Embed 데모 :
  • App 실행 데이터
    • + 버튼을 클릭하여 appLaunchData를 추가합니다.
  • /을 입력합니다.
  • 모듈 초기화
    • Embed 모듈 초기화 버튼을 클릭하면 모듈가 초기화되고 클라우드 게임이 실행됩니다.
    • 초기화 이벤트는 아래와 같이 sdkEventCallback으로 관리하실 수 있습니다.
    • 성공적으로 초기화될 시 아래와 같이 임베딩된 게임이 실행되기 시작합니다.
  • 유니티에서 HTML(웹 클라이언트)로 데이터 전달
    • 링크 열기
      • 링크 열기 버튼을 누르면 제공된 링크가 새 탭에서 열립니다.
    • 브라우저 이벤트
      • 브라우저 이벤트 버튼을 누르면 유니티에서 HTML 페이지로 데이터를 전송합니다.
      • 앱 이벤트는 아래와 같이 appEventCallback 함수에 의해 관리됩니다.

 




×

목차

추가 가이드

목차

  • 시작
  • 추가 가이드

문서 Rev. 1.0

클립보드에 복사된 텍스트
copyLinkText
질문이 있으신가요? 다음 주소로 문의하세요. dev-support@now.gg