인스턴트 게임을 이용하면 개발 버전을 로컬에서 테스트하고 퍼블리싱을 자동화하며 팀과 빌드를 공유하는 과정이 매우 간편해집니다. 이 문서에서는 이러한 단계에 대해 자세히 설명합니다.
인스턴트 게임 경험의 중요한 부분은 각 플레이 세션 전후로 게임에 추가되는 네이티브 오버레이에서 비롯합니다. 개발 및 테스트 워크플로를 촉진하기 위해 실제 플랫폼에서 플레이어의 경험과 매우 유사하게 개발자가 로컬 서버에서 게임을 실행할 수 있도록 지원합니다. 이는 포함(embed)된 테스트 플레이어를 통해 이루어지며 약간의 구성을 필요로 합니다.
포함(embed)된 테스트 플레이어는 facebook.com
도메인에서 작동하므로 https
를 통해서만 서비스됩니다. https
를 통해 서비스되는 페이지에 콘텐츠를 포함(embed)하려면 포함(embed)된 콘텐츠도 SSL을 통해 서비스되어야 합니다. 다음 단계에서는 보안 콘텐츠를 제공하는 localhost
서버 설정에 대해 안내합니다. 아래에는 한 가지 옵션만 표시되지만 이 행동을 지원할 수 있는 솔루션은 많이 있습니다.
npm
을 통해 http-server
패키지를 설치합니다.npm
이 설치되어 있지 않을 경우 Node.JS 웹사이트의 설치 지침에 따라 설치하세요. 그 후 다음 명령을 실행합니다.> $ npm install -g http-server
openssl
을 통해 비공개 키와 인증서를 만듭니다. 이는 보안 로컬 서버를 실행하는 데 필요합니다.> $ cd path/to/my/game/ > $ openssl genrsa 2048 > key.pem > $ openssl req -x509 -days 1000 -new -key key.pem -out cert.pem # Fill out necessary information
# Starts to serve via HTTPS, with cache disabled > $ http-server --ssl -c-1 -p 8080 -a 127.0.0.1 Starting up http-server, serving ./ through https Available on: https://127.0.0.1:8080 Hit CTRL-C to stop the server
https://localhost:8080
으로 이동하면 실행 중인 게임이 표시됩니다.참고: 계속하려면 먼저 브라우저에서 보안 경고를 승인해야 할 수 있으므로 한 번 이상 액세스를 시도해야 합니다. 이 경우 지금 단계를 건너뛰면 게임이 읽어들여지지 않습니다.
예를 들어 Chrome에서는 chrome://flags/#allow-insecure-localhost
에 액세스하고 '로컬 호스트에서 읽어들인 리소스에 대해 유효하지 않은 인증서 허용'을 활성화하여 경고를 제거해야 할 수 있습니다.
이제 게임이 보안 연결을 통해 로컬 호스트에서 서비스되므로 플레이어에 포함(embed)할 수 있습니다. 브라우저에서 다음 주소로 이동하세요.
https://www.facebook.com/embed/instantgames/YOUR_GAME_ID/player?game_url=https://localhost:8080
다음과 같이 인스턴트 게임 플레이어에서 게임이 실행 중인 것을 확인할 수 있습니다.
참고: 포함(embed)된 플레이어가 올바르게 작동하려면 fb.gg/play/YOUR_GAME_ID
에서 게임을 한 번 이상 플레이해야 합니다.
이때 로컬 서버에서 실행되는 게임에서 인스턴트 게임 SDK의 모든 기능을 사용할 수 있습니다.
보안상의 이유로 포함(embed)된 테스트 플레이어를 사용한 테스트에는 localhost
도메인만 지원됩니다.
특정 컨텍스트에서 로컬 서버에서 게임을 실행할 수 있습니다. 위에서 설명한 대로 포함(embed)된 플레이어를 사용하면 됩니다. 그런 다음 FBInstant.context
메서드(예: switchAsync()
, createAsync()
, chooseAsync()
)를 활용하여 다른 컨텍스트로 전환할 수 있습니다.
이렇게 하면 대화 컨텍스트에서 localhost
에서 효과적으로 게임을 실행하고 컨텍스트 업데이트가 올바르게 전송되는지 테스트할 수 있습니다.
인스턴트 게임 콘텐츠는 Facebook 인프라에서 호스팅되므로 게임 콘텐츠를 직접 호스팅하거나 타사 서비스를 이용하지 않아도 됩니다. 게임을 테스트할 준비가 되면 모든 게임 파일을 하나의 .zip 파일로 패키징합니다. index.html
파일은 하위 폴더가 아니라 이 아카이브의 루트에 있어야 합니다. 번들 업로드 방법은 두 가지입니다.
.zip 파일을 업로드하려면 앱 대시보드의 인스턴트 게임 제품에서 웹 호스팅 탭을 클릭합니다. 여기에서 버전 업로드를 클릭하면 .zip 파일을 Facebook의 호스팅 서비스에 업로드할 수 있습니다.
이후 몇 초 정도면 파일 처리가 완료됩니다. 상태가 '대기'로 변경되면 앱을 프로덕션에 푸시할 수 있습니다!
또는 그래프 API 호출을 통해 번들을 업로드할 수도 있습니다. 이는 자동화된 배포 시스템을 보유하고 있을 때 유용한 방법입니다. 이 방법을 사용하려면 웹 호스팅 섹션에서 상단의 자산 업로드 액세스 토큰 가져오기 버튼을 클릭하여 업로드 토큰을 요청해야 합니다.
대화 상자의 토큰을 사용하면 다음 호출을 그래프 API로 제출하여 .zip 파일을 업로드할 수 있습니다. 동영상 하위 도메인을 사용하는 이유는 이 URL이 대용량 업로드를 수신하도록 구성되어 있기 때문입니다.
curl -X POST https://graph-video.facebook.com/{App ID}/assets -F 'access_token={ASSET UPLOAD ACCESS TOKEN}' -F 'type=BUNDLE' -F 'asset=@./{YOUR GAME}.zip' -F 'comment=Graph API upload'
이후 업로드된 번들 리스트에 게임이 정상적으로 표시됩니다. 이 호출을 사용하여 기존 빌드 시스템과 통합할 수 있습니다.
Facebook 호스팅의 제한 사항 중 가장 중요한 부분은 다음과 같습니다.
자세한 내용은 웹 호스팅 문서에서 참조하세요.
프로덕션 환경에서 업로드를 테스트하려면 먼저 빌드를 프로덕션에 맞게 준비해야 합니다. '★' 버튼을 클릭하여 빌드를 프로덕션으로 푸시합니다.
프로덕션 빌드는 게임을 플레이하는 모든 사람에게 제공되는 빌드입니다. 기존 플레이어 베이스에 영향을 미치지 않고 프로덕션에서 업데이트를 테스트하기 위해 테스트를 위한 빌드를 준비할 수 있습니다. 이렇게 하면 빌드가 앱 개발자와 테스터에게만 제공됩니다.
참고: '테스트 앱 만들기' 버튼으로 게임의 테스트 앱을 만들지 마세요. 인스턴트 게임의 경우 테스트를 위한 빌드를 준비해야 합니다.
프로덕션에 빌드가 있다면 로컬 서버에서 실행되는 빌드 대신 언제나 프로덕션 빌드를 테스트하세요. 다음 중 한 가지 방법을 사용하여 프로덕션 빌드를 테스트할 수 있습니다.
피드에 게임을 공유하려면 게임 공유 섹션에 있는 공유 버튼을 클릭합니다. 그러면 피드에 게임을 공유하고 모든 기기(데스크톱, iOS 또는 Android)에서 테스트할 수 있습니다.
앱에서 '관리자', '개발자' 또는 '테스터' 역할이 할당된 사람에게는 Messenger의 인스턴트 게임 리스트에 빌드 중인 모든 게임이 표시됩니다. 이 리스트는 개발 중이라고 표시됩니다. 따라서 아직 게시되지 않은 게임이라도 Messenger에서 테스트해볼 수 있습니다.
페이지를 게임과 연결한 경우 공유 가능한 링크를 생성할 수도 있습니다. 이 링크는 Messenger에서 사용자를 봇과의 대화로 연결하며 봇을 설정한 경우 자동으로 게임을 엽니다. 봇을 설정하지 않은 경우 사용자를 Facebook 페이지로 연결한 후 자동으로 게임을 엽니다. 두 경우 모두 링크를 클릭한 사람은 누구나 바로 게임을 이용할 수 있습니다.
게임을 테스트하고 게시하는 방법을 알아보았으니 게임을 제출하기 전에 인스턴트 게임 출시 체크리스트를 확인해 보세요. 또한 모범 사례 섹션의 게임 디자인 및 업데이트 권장 사항도 확인해 보시기 바랍니다.