튜토리얼
플레이어 인증
이메일로 로그인(비밀번호 불필요)
- 플레이어에게 로그인 화면을 표시하고 이메일 주소를 입력하도록 유도합니다
- 아래 샘플 페이로드를 사용하여 인증 요청을 보내주세요 - 플레이어가 지정한 이메일 주소로 인증 코드가 전송됩니다 - 인증 코드의 유효기간은 3분입니다 - 이 시점에서 플레이어는 아직 인증되지 않았습니다
// 인증 액션을 정의하기 위해서는 항상 요청 유형과 메소드가 필요합니다.
// 이메일 주소를 인증 수단으로 사용하는 경우, 이메일 주소 입력이 필수입니다.
const payload = {
email: "[email protected]",
requestType: "login",
method: "email",
};
Wortal.authenticateAsync(payload)
.then(result => {
// 성공할 경우, 상태는 '보류 중'이 됩니다.
// 이는 확인 코드가 전송되기를 기다리고 있다는 것을 의미합니다.
console.log("Auth result: " + result.status);
if (result.status === "pending") {
// 플레이어에게 확인 코드를 입력할 수 있는 대화창을 표시합니다.
} else {
// 오류 상태를 처리합니다.
}
)}
.catch(error => console.log(error));
- 플레이어에게 인증 코드를 입력할 수 있는 UI 요소를 표시합니다
- 플레이어가 제공한 확인 코드를 사용하여 확인 요청을 보냅니다
- 인증 코드는 항상 문자열로 전송되어야 합니다
const payload = {
email: "[email protected]",
code: "1234",
requestType: "login",
method: "email",
};
Wortal.authenticateAsync(payload)
.then(result => {
// 성공하면 상태는 '성공'이 됩니다.
console.log("Auth result: " + result.status);
if (result.status === "success") {
// 플레이어가 로그인했습니다. UI를 업데이트하고 플레이어 데이터를 가져옵니다.
} else {
// 오류 상태를 처리합니다.
}
)}
.catch(error => console.log(error));
전화번호로 로그인(비밀번호 불필요)
- 플레이어에게 로그인 화면을 표시하고 이메일 주소를 입력하도록 유도합니다
- 아래 샘플 페이로드를 사용하여 인증 요청을 보내주세요 - 플레이어가 지정한 전화번호로 SMS를 통해 확인 코드가 전송됩니다 - 전화 번호는 반드시 "+"와 국가 코드로 시작해야 합니다 - 전화 번호에는 공백, 하이픈, 둥근 괄호를 사용할 수 있습니다 - 유효한 형식 예시: - +1234567890 - +1 (234) 567-890 - +12-345-678-90 - 잘못된 형식의 예시: - 1234567890 (국가 코드 앞에 '+'가 포함되지 않음) - +123abc456 (문자 사용 불가) - 인증 코드의 유효기간은 3분입니다 - 이 시점에서 플레이어는 아직 인증되지 않았습니다
// 인증 액션을 정의하기 위해서는 항상 요청 유형과 메소드가 필요합니다.
// 전화번호를 인증 수단으로 사용하는 경우 전화번호 입력이 필수입니다.
const payload = {
phone: "+1234567890",
requestType: "login",
method: "phone",
};
Wortal.authenticateAsync(payload)
.then(result => {
// 성공할 경우, 상태는 '보류 중'이 됩니다.
// 이는 확인 코드가 전송되기를 기다리고 있다는 것을 의미합니다.
console.log("Auth result: " + result.status);
if (result.status === "pending") {
// 플레이어에게 확인 코드를 입력할 수 있는 대화창을 표시합니다.
} else {
// 오류 상태를 처리합니다.
}
)}
.catch(error => console.log(error));
- 플레이어에게 인증 코드를 입력할 수 있는 UI 요소를 표시합니다
- 플레이어가 제공한 확인 코드를 사용하여 확인 요청을 보냅니다 - 인증 코드는 항상 문자열로 전송되어야 합니다
const payload = {
phone: "+1234567890",
code: "1234",
requestType: "login",
method: "phone",
};
Wortal.authenticateAsync(payload)
.then(result => {
// 성공하면 상태는 '성공'이 됩니다.
console.log("Auth result: " + result.status);
if (result.status === "success") {
// 플레이어가 로그인했습니다. UI를 업데이트하고 플레이어 데이터를 가져옵니다.
} else {
// 오류 상태를 처리합니다.
}
)}
.catch(error => console.log(error));
리워드 광고
리워드 광고는 게임 내 수익 창출에 적합합니다. 플레이어가 광고를 시청하면 게임 내 화폐, 추가 라이프 등을 보상으로 받을 수 있습니다. 이 튜토리얼에서는 게임에 리워드 광고를 도입하는 방법을 설명합니다.
예시
플레이어가 광고를 시청했을 때 게임 내 화폐를 보상으로 제공하는 3가지 방법을 소개합니다.
- 멀티플라이어를 사용하여 레벨이 끝날 때 주는 보상을 증가시킨다.
- 리워드 광고를 사용하여 플레이어가 게임 오버 시 재도전할 수 있는 기회를 주는 것(세컨드 찬스)
- 인앱 상점에서 리워드 광고를 사용하여 동영상 시청을 통해 무과금 아이템을 제공하고, 인앱 구매(IAP) 전환을 증가시킬 수 있다.
멀티플라이어
// 플레이어가 레벨을 클리어하면 결과가 화면에 표시됩니다. 이때 보너스 통화를 얻기 위해 동영상을 시청할 수 있는 옵션을 선택할 수 있다.
const levelEarnings = 100;
const rewardMultiplier = 3;
function onRewardButtonClicked() {
Wortal.ads.showRewarded("Level 1 Finish",
() => {
// beforeAd
pauseGame();
},
() => {
// afterAd
resumeGame();
},
() => {
// adDismissed
addCurrency(levelEarnings);
},
() => {
// adViewed
addCurrency(levelEarnings * rewardMultiplier);
},
() => {
// noFill
addCurrency(levelEarnings);
});
}
두 번째 기회
// 플레이어가 레벨 클리어에 실패하면 결과가 화면에 표시됩니다. 이때 동영상을 시청하여 재도전할 수 있는 옵션을 선택할 수 있다.
function onRewardButtonClicked() {
Wortal.ads.showRewarded("Level 2 Retry",
() => {
// beforeAd
pauseGame();
},
() => {
// afterAd
resumeGame();
},
() => {
// adDismissed
endGame();
},
() => {
// adViewed
continueGame();
},
() => {
// noFill
endGame();
});
}
IAP 상점
// 플레이어가 IAP 상점에 접속했습니다. 화폐로 아이템을 구매하거나 동영상을 시청하여 보너스 화폐를 획득할 수 있습니다.
function onRewardButtonClicked() {
Wortal.ads.showRewarded("IAP Shop",
() => {
// beforeAd
pauseAudio();
},
() => {
// afterAd
resumeAudio();
},
() => {
// adDismissed
// 플레이어는 동영상 광고를 시청하지 않았기 때문에 보너스 통화를 받지 못했습니다.
// 플레이어에게 설명할 수 있는 팝업형 UI를 표시할 수 있습니다.
noRewardPopup.show();
},
() => {
// adViewed
addCurrency()
},
() => {
// noFill
// 광고를 획득하지 못했기 때문에 플레이어는 보너스 통화를 받지 못했습니다..
// 플레이어에게 설명할 수 있는 팝업형 UI를 표시할 수 있습니다.
noAdAvailablePopup.show();
});
}
"No Fill"의 대안
리워드 광고 요청이 실패하면 게임 진행이 중단되는 등 원치 않는 상황이 발생할 수 있습니다. 예를 들어, 리워드 광고가 게임에 설정되어 있음에도 불구하고 게임이 멈추거나 버튼 등 UI가 반응하지 않는 등 광고가 정상적으로 표시되지 않는 문제가 발생하면 적절한 처리가 필요합니다. 아래에서는 이러한 문제를 해결할 수 있는 두 가지 방법을 소개합니다: 1. 플레이어가 보상을 받을 수 있도록 소셜 공유, 초대 등의 기능을 활용한다. 2. 플레이어에게 광고를 사용할 수 없음을 알리고 잠시 후 다시 시도할 것을 제안한다.
우리 게임에서는 【1.】을 성공적으로 구현하고 플레이어의 참여를 높이기 위해 이 방법을 권장하고 있습니다.
광고가 표시되지 않거나 오류가 발생하면 noFill 콜백을 반환합니다. 아래는 이 문제를 처리하기 위한 콜백입니다.
소셜 공유의 대안
// 플레이어가 레벨을 클리어하면 결과가 화면에 표시됩니다. 이때 보너스 통화를 얻기 위해 동영상을 시청할 수 있는 옵션을 선택할 수 있다.
const levelEarnings = 100;
const rewardMultiplier = 3;
function onRewardButtonClicked() {
Wortal.ads.showRewarded("Level 1 Finish",
() => {
// beforeAd
pauseGame();
},
() => {
// afterAd
resumeGame();
},
() => {
// adDismissed
addCurrency(levelEarnings);
},
() => {
// adViewed
addCurrency(levelEarnings * rewardMultiplier);
},
() => {
// noFill
// 광고를 받을 수 없기 때문에 플레이어에게 게임을 공유할 수 있는 옵션을 제공합니다.
shareAlternativePopup.show();
if (shareAlternativePopup.result === "share") {
// 플레이어가 게임을 공유하기로 선택했기 때문에 그 대가로 보상을 제공합니다.
Wortal.context.shareAsync({
intent: "SHARE",
payload: {
text: "I just finished level 1!",
image: "https://example.com/level1.png",
data: {
level: 1,
//공유 링크를 통해 게임을 열어준 친구에게 보상이 주어집니다.
// This can be accessed via Wortal.session.getEntryPointData().
shareBonus: 100
}
}
}).then(() => {
// 공유에 성공하면 플레이어에게 보상을 제공합니다.
addCurrency(levelEarnings * rewardMultiplier);
}).catch((error) => {
// 공유에 실패한 플레이어에게는 레벨을 클리어한 것에 대한 보상이 주어진다.
addCurrency(levelEarnings);
});
} else {
// 플레이어가 게임을 공유하지 않기로 선택했기 때문에 레벨 클리어에 대한 보상만 제공합니다.
addCurrency(levelEarnings);
}
});
}