신궁 게임으로 시작하기

신궁 게임에 대하여

신궁은 텐투플레이 서비스 환경에서 작동하는 간단한 데모 게임입니다. 텐투플레이가 처음이라면 신궁 게임을 가지고 텐투플레이의 여러 기능들을 직접 연습해 보면서 어떻게 하나의 게임을 텐투플레이 서비스에 접목하여 구현할 수 있는지 이해할 수 있게 됩니다. 데모 게임으로 텐투플레이의 개념과 기술에 대한 전체적인 감을 잡게 되면 본인의 게임에도 이를 적용할 수 있을 것입니다.

가이드 활용하기

텐투플레이 문서에 있는 여러 정보나 튜토리얼의 상당 부분이 본 데모 게임을 기반으로 작성되어 있기 때문에 신궁 데모 게임에 대한 설명은 여기 말고도 나머지 문서 전반에 걸쳐 알게 모르게 들어 있습니다. 따라서 본 가이드를 하나의 요약본으로, 더 자세한 정보를 찾아가기 위한 가이드라인으로 활용하면 도움이 될 것입니다.

개요

개요에는 데모 게임이 어떻게 콘솔이나 서버와 같은 텐투플레이의 다른 구성요소와 연계되어 작동하는지에 대한 설명이 있습니다. 이를 통해 내가 해야할 작업에 대한 전체적인 그림을 그릴 수 있습니다.

300
간단한 작업흐름도

설정

먼저 데모 게임이 들어 있는 SDK 패키지를 내려받아 유니티 프로젝트로 가져옵니다. 유니티 에디터에서 텐투플레이 관련 설정을 한 후 플레이어의 행동 데이터를 수집하는데 필요한 작업을 진행합니다. 데이터 수집은 이미 코드로 작성되어 있는 텐투플레이 클래스와 메소드를 그대로 사용해도 되고 필요에 따라 데모 게임 스크립트에 수집 이벤트별로 새로운 메소드를 추가해도 됩니다. 그러고 나서 수집된 데이터가 텐투플레이 서버에 제대로 올라갔는지 확인합니다.

플레이

이제 게임을 플레이합니다. 관련 이벤트가 발생하면 해당 메소드가 호출됩니다. 대표적인 이벤트로는 로그인, 스테이지 시작, 게임 재화 사용 등이 있습니다. 메소드를 통해 사용자 행동 기록이 수집되고 앞서 정의된 업로드 규칙에 따라 텐투플레이 서버에 전송됩니다.

결과물

업로드된 데이터는 텐투플레이 데이터베이스에 우선 저장되며 일정 주기로 데이터 분석 엔진에 의해 처리됩니다. 이에 대한 결과물로 오퍼에 필요한 콘텐츠가 생성되고 관련 API를 호출함으로써 이를 가져올 수 있습니다. 텐투플레이에서 오퍼란 일종의 구매 추천 시스템으로서 플레이어의 게임 효율과 사용자 경험을 향상시키는 목적으로 사용됩니다. 오퍼와 관련한 주된 작업은 전송할 오퍼의 유형, 오퍼 메시지의 모양, 전송 시점 등을 정하고 이를 유니티 에디터와 콘솔에서 설정하는 일입니다.

오퍼 템플릿, 메시지 본문, 그리고 메시지 유형이 결합되어 하나의 오퍼가 완성되면 지정된 이벤트 발생시 (데모 게임의 경우 게임이 종료되었을 때) 해당 오퍼가 게임 화면에 표시됩니다.

데이터 수집과 업로드 준비하기

SDK 다운로드

신궁 게임 데모는 텐투플레이 SDK에 포함되어 제공됩니다.

데모게임은 2019LTS 버전 이상의 유니티에서 작동합니다.

  1. 콘솔에서 새로운 계정과 프로젝트 생성합니다.

  2. SDK를 다운로드합니다.

    신궁 데모가 포함된 SDK를 받으려면 Unity SDK v2021.4 + Demo (.NET 4.x)를 다운로드하도록 하십시오. 텐투플레이에 익숙한 상태라면 곧바로 데모 게임 없는 SDK를 다운로드하여 작업하시면 됩니다.

SDK 설치

SDK 설치는 유니티 에디터에서 진행됩니다.

데이터 수집 및 업로드 설정

여기서부터는 코드 작업이 있습니다. 아무 것도 주어지지 않은 상태에서 시작하는 건 아니며 핵심 게임 로직에 추가해야할 주요 메소드들이 관련 주석과 함께 이미 데모 게임 소스 스크립트에 적혀 있습니다. 게임 소스코드 중 무엇이 텐투플레이 서비스 소스에 해당하는지 확인하려면 API 문서를 참고하십시오. 간단히 말해 두 개의 명칭 공간에 세 개의 클래스가 있으며 (즉, TPStashEvent, TPUploadData, TPPersonalizedOffer) 이들 클래스에는 이벤트 별로 데이터 수집, 데이터 업로드, 오퍼 생성 등의 작업을 수행하는 여러 메소드가 포함되어 있습니다.

특히 데이터 수집과 업로드에는 TPStashEventTPUploadData 이 두개의 클래스만 관여되어 있습니다. 만약 TentuPlay Settings 설정하기에서 Auto Upload를 선택했다면 오직 TPStashEvent와 하위 메소드들만 필요할 것입니다. TPUploadData는 수동 업로드에만 사용되기 때문입니다.

다음은 데모 게임에서 사용된 API 중 일부입니다.

클래스 메소드 설명 태그 게임 스크립트

TPStashEvent

Join()

사용자 등록데이터 수집

데이터 수집

Player.cs

LoginApp()

사용자 앱 로그인 데이터 수집

GetCurrency()

캐릭터의 게임 내 재화 획득 데이터 수집

UseCurrency()

캐릭터의 게임 내 재화 소비 데이터 수집

GetEquipment()

캐릭터의 장비 획득 데이터 수집

EquipEquipment()

캐릭터의 장비 탈착 이벤트 수집

EquipSkill()

캐릭터의 스킬 탈착 이벤트 수집

LevelUpCharacter()

캐릭터의 레벨업 데이터 수집

Playerinfo.cs

PlayStage()

게임 내 캐릭터가 플레이하는 스테이지에 대한 정보 수집

StageManager.cs

PlayStageWithSkill()

캐릭터가 특정 스테이지에서 장착하는 스킬에 대한 데이터 수집

PlayStageWithEquipment()

캐릭터가 특정 스테이지에서 장착하는 장비에 대한 데이터 수집

TPUploadData

UploadData()

수집된 데이터를 수동으로 업로드

데이터 업로드

Player.cs

데이터 수집에 대한 자세한 내용은 데이터 수집하기를 참고하십시오. 여기서는 게임 시작 전에 주로 발생하는 등록과 로그인 이벤트를 수집하는 두개의 메소드(Join(), LoginApp())를 호출하는 방법에 대해 예를 들어 설명하고 있습니다. 데이터 수집과 업로드가 제대로 수행되었는지 확인하려면 데이터 수집 디버깅하기를 참고하십시오.

데모 게임과 별개로 게임 장르와 이벤트 유형별로 어떤 메소드를 사용해야 할 지 확실치 않다면 레시피 문서에서 도움을 받으십시오.

오퍼 준비하기

텐투 플레이의 오퍼에는 크게 두 종류가 있습니다. 하나는 개인화 오퍼이고 다른 하나는 AI 인게임 상점 오퍼입니다. 요약하자면 개인화 오퍼는 수신 대상을 정해놓고 맞춤형 메시지를 보내는 수동 오퍼이고 AI 인게임 상점 오퍼는 AI가 분석한 플레이어의 행동 유형별 메시지를 해당 유형에 속한 플레이어에게 보내는 자동 오퍼입니다.

유니티 에디터에서

TPPersonalizedOffer는 상기 두 가지 오퍼에 공통으로 사용되는 클래스입니다. 몇 가지 메소드가 여기에 속하는 데 그 중 오퍼를 가져오거나 보여주는 역할을 수행하는 `ShowOfferById`와 `ShowLatestOffer`가 있습니다.

  1. TPPersonalizedOfferController 오브젝트를 데모 게임 Scene에 넣도록 합니다.

  2. TPPersonalizedOfferController 게임 오브젝트 파라미터를 이용하여 ShowOfferByIdShowLatestOffer를 호출함으로써 오퍼가 자동으로 보이게 합니다.

콘솔에서

텐투플레이 콘솔은 텐투플레이 서비스의 오퍼 기능 사용에 필요한 모든 도구를 제공합니다. 즉, 콘솔 인터페이스를 통해 언제, 무엇을, 어떻게, 누구에게 보낼지 설정할 수 있으며 이미 구성되어 있는 사용자 세그먼트를 제어할 수 있습니다. 전송될 오퍼를 미리 볼 수 있으며 오퍼를 실제 플레이어에게 보내기 전에 테스트해 볼 수 있습니다. 마지막으로 전송된 오퍼가 플레이어를 상대로 어떤 성과를 거두었는지 관련 대시 보드에서 확인하고 평가할 수 있습니다.

자세한 것은 개인화 오퍼AI 인게임 상점을 참고하십시오.

신궁 플레이하기

준비는 끝났습니다. 이제 게임을 플레이할 시간입니다.

게임 시작

  1. 텐투플레이 SDK가 설치되어 있는 유니티 프로젝트를 엽니다.

  2. Assets > ShingGoongDemo > Scenes 폴더로 이동합니다.

  3. StartScene을 더블클릭하고 화면 상단에 있는 Play을 클릭합니다.

    tutorial game rule 01
  4. 메인 화면에서 START를 클릭하여 게임을 시작합니다.

    tutorial game rule 02
    신궁데모 시작 화면 (StartScene)

    게임을 종료하려면 ESC를 누른 후 문모양의 버튼을 클릭합니다.

게임 플레이

목표

활로 스테이지에 있는 모든 로봇(몬스터) 처치하기

  • 키맵을 보려면 ESC을 누른 후 물음표 버튼을 클릭합니다.

  • 필요하다면 은신처에서 NPC가 운영하는 상점에서 장비를 구입하여 착용하십시오.

  • 몬스터가 떨어뜨린 코인은 줍고, 화살은 재사용이 가능하니 보이면 회수합니다.

규칙

게임 규칙은 다음과 같습니다.

  • 플레이어 캐릭터의 생명은 하나밖에 없습니다.

  • 캐릭터가 적의 시야에 들어가면 스테이지가 종료됩니다.

  • 캐릭터가 전기 펜스에 접촉하면 스테이지가 종료됩니다.

  • 화살수는 제한되어 있습니다. 화살은 쏜 뒤 다시 회수할 수 있습니다.

  • 화살은 벽이나 땅을 뚫고 지나갈 수 없으며 전기 펜스에 닿으면 사라집니다.

플레이 중 메소드 작동 방식

이번에는 게임을 진행하면서 어떤 변화가 생기고 어떤 메소드가 호출되는지 살펴보겠습니다.

500
사용자가 오퍼를 받기까지 서비스 흐름도
단계 설명 메소드 Scene 게임 스크립트

1

앱 실행 및 메인 화면 진입

StartScene

2

메인 화면에서 START 클릭하고 은신처로 들어가기

ShelterScene

3

게임 로그인

LoginApp(), Join(), (UploadData())

ShelterScene

Player.cs

GetOfferAsync(), SelectOfferInfo()

TentuPlayCRMPlayerController.cs

4

NPC 만나 상점에서 Bomb Bow 구입

UseCurrency(), GetEquipment()

ShelterScene

Player.cs

5

인벤토리 열고 Bomb Bow 착용

EquipEquipment(), EquipSkill()

ShelterScene

Player.cs

6

전투를 위해 텔레포트를 통해 첫번째 스테이지 진입

PlayStage(), PlayStageWithSkill(), PlayStageWithEquipment()

Stage1Scene

StageManager.cs

7

로봇 파괴 후 떨어진 코인 획득

GetCurrency()

Stage1Scene

Player.cs

8

경험치가 쌓여 캐릭터 레벨업

LevelUpCharacter()

Playerinfo.cs

9

캐릭터 죽고 게임 오버

ShowOfferById()

MainBoxOpen_offer.cs

10

모든 몬스터를 파괴하여 첫번째 스테이지 클리어

PlayStage()

StageManager.cs

11

텔레포트를 통해 보스 스테이지 진입

PlayStage(), PlayStageWithSkill(), PlayStageWithEquipment()

BossScene

StageManager.cs

유니티 에디터(TentuPlay > Edit Settings)에서 Auto Upload를 사용하도록 설정했다면 프로젝트 설정 > SDK 현황에서 데이터를 실시간으로 확인할 수 있습니다.

신궁데모에서 진행한 플레이 데이터는 플레이어 UUID: TentuPlayer의 것으로 수집됩니다.

tutorial game rule 03
데모 플레이 데이터 실시간 확인