UDN
Search public documentation:

InGameAdsKR
English Translation
日本語訳
中国翻译

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 홈 > 플랫폼 인터페이스 프레임워크 > In-Game Ads (게임내 광고)
UE3 홈 > 모바일 홈 > In-Game Ads (게임내 광고)

In-Game Ads (게임내 광고)


문서 변경내역: Jeff Wilson 작성. 홍성진 번역.

개요


In-Game Ads 를 통해 훨씬 싸게 심지어 무료로 게임을 발매하고서도 수익을 내는 것이 가능합니다. 사람들이 쉽게 귀하의 게임을 다운로드할 수 있도록 하여 사용자 기반을 넓히는 데 도움이 될 수 있겠지요. 애플의 iAd 광고 네트워크를 사용하는 In-Game Ads 를 iOS 플랫폼 용으로 만든 게임에 추가시킬 수 있습니다. In-Game Ads 추가 절차는 너무나 간단히 코드 몇 줄 추가하는 것으로 끝입니다.

ALERT! 중요: In-Game Ads 로 얻은 수익은 게임 자체가 무료일 지라도 UDK 를 사용하여 얻은 수익으로 칩니다. In-Game Ads 를 사용한다면, 게임을 배포하기 전 UDK 라이선스를 구매해야 합니다.

주: 광고는 게임이 iOS 디바이스에서 실행될 때만 표시됩니다. 모바일 프리뷰어 에는 광고가 표시되지 않습니다.

Ad Manager


InGameAdManager 라는 특수 클래스가 iAd 네트워크를 통한 게인매 광고 표시와 관리를 담당합니다. 이 클래스가 In-Game Ads 획득, 표시, 상호작용 관련 기능 전부를 처리합니다.

프로퍼티

  • bShouldPauseWhileAdOpen 광고 실행시 일시정지 - 참이면 사용자가 광고를 눌러 화면이 덮일 지도 모르는 상황에서는 게임이 일시정지됩니다.

함수

  • Init - 광고 시스템 초기화 처리를 위해 엔진이 호출하는 이벤트입니다.
  • ShowBanner [bShowBottomOfScreen] - In-Game Ads 를 배너에 보이게 합니다.
    • bShowBottomOfScreen - 참이면 배너가 화면 하단에, 거짓이면 상단에 표시됩니다.
  • HideBanner - 게임내 보이는 광고 배너를 숨깁니다. 광고가 현재 열려있으면 (, 즉 사용자가 광고를 보고 있으면) 광고를 강제로 닫습니다. (ForceCloseAd 참고)
  • ForceCloseAd - (클릭하여) 열린 광고를 강제로 닫고 배너 상태로 돌아가게 합니다. 수익 감소로 이어질 수 있으니, 남용하지 마시기 바랍니다.
  • SetPauseWhileAdOpen [bShouldPause] - 광고를 클릭했을 때 게임을 포즈시킬 것인지 설정합니다.
    • bShouldPause - 참이면 광고를 클릭했을 때 게임이 포즈됩니다. 거짓이면 게임이 계속 실행됩니다.

델리게이트

EAdManagerDelegate enum 은 콜백을 받을 수 있는 델리게이트 유형에 대한 ID 를 정의합니다. 플랫폼 인터페이스 델리게이트 시스템을 사용하여 이들 각각에 델리게이트를 할당할 수 있습니다.

  • AMD_ClickedBanner - 이 ID 에 할당된 델리게이트는, 사용자가 배너 광고를 클릭할 때 실행됩니다.
    • bSuccessful - 참 입니다.
    • Data - 데이터를 담지 않습니다.
  • AMD_UserClosedAd - 이 ID 에 할당된 델리게이트는 사용자가 (배너를 클릭한 다음) 애드를 닫을 때 실행됩니다. 일시정지 해제는 베이스 클래스가 이미 담당하니, 델리게이트는 추가 처리가 필요할 때만 필요합니다.
    • bSuccessful - 참 입니다.
    • Data - 데이터를 담지 않습니다.

구현


iOS 플랫폼에서 In-Game Ads 를 활용은 매우 간단합니다. 그 처리를 위한 엔진 셋업은 이미 완료된 상태입니다. 그저 실행시킬 델리게이트를 설정하고 어떤 식으로 배너를 표시할지 정해주면 끝입니다. 레벨 전환이나 플레이어가 게임을 종료했을 때 해 줘야 할 클린업 작업도 약간 있기는 합니다.

PlayerControllerPostBeginPlay() 함수 안에서, 관련 델리게이트를 할당시켜 배너를 표시할 수 있습니다. 물론 게임이나 레벨 시작과 동시에 배너를 표시하려는 경우에만 그렇다는 소리입니다. 원하는 시간 어느 때고 InGameAdManager 에서 관련 함수를 호출하여 광고를 표시하거나 숨길 수 있습니다.

PlatformInterfaceBase 에는 현재 InGameAdManager 로의 참조를 반환하는 스태틱 함수가 있습니다. PlayerController 안에서 이를 사용하여 그에 대한 참조를 구하고 그 함수를 호출할 수 있습니다. 게임이 플랫폼에서 실행중이 아니거나 In-Game Ads 를 지원하지 않는다면 이 함수는 None 을 반환한다는 점 유념해 주시기 바랍니다.

셋업

여기, PlatformInterfaceBase 에서 InGameAdManager 로의 참조를 구한 다음 델리게이트를 추가하고 광고 배너를 표시했습니다. 추가한 델리게이트는 적절한 시기에 실행되고 있음을 확인시켜 드리기 위한 예제일 뿐입니다.

UDNPlayerController.uc
var InGameAdManager AdManager;

...

simulated function PostBeginPlay()
{
   Super.PostBeginPlay();

   AdManager = class'PlatformInterfaceBase'.static.GetInGameAdManager();
   if (AdManager != none)
   {
      AdManager.AddDelegate(AMD_ClickedBanner, OnUserClickedAdvertisement);
      AdManager.AddDelegate(AMD_UserClosedAd, OnUserClosedAdvertisement);
      AdManager.ShowBanner(true);
   }
}

/**
 * 사용자가 In-Game Ads 를 클릭했을 때 모든 플레이어 콘트롤러에서 호출.
 * 게임에서는 이 시점에서 포즈 등을 해야 할 수도.
 */
function OnUserClickedAdvertisement(const out PlatformInterfaceDelegateResult Result)
{
   `log("MobilePC::OnUserClickedBanner");
}

/**
 * In-Game Ads 가 닫혔을 때 모든 플레이어 콘트롤러에서 호출.
 * (보통 사용자가 완료 등을 클릭했을 때.) 포즈 해제 등의 시점.
 */
event OnUserClosedAdvertisement(const out PlatformInterfaceDelegateResult Result)
{
   `log("MobilePC::OnUserClosedAd");
}

클린업

PlayerControllerDestroyed() 이벤트를 사용하면 이미 지정해 둔 델리게이트를 제거한다든가 하는 클린업 작업을 약간 해줄 수 있습니다.

UDNPlayerController.uc
event Destroyed()
{
   super.Destroyed();

   if (AdManager != none)
   {
      AdManager.ClearDelegate(AMD_ClickedBanner, OnUserClickedAdvertisement);
      AdManager.ClearDelegate(AMD_UserClosedAd, OnUserClosedAdvertisement);
   }
}

결과

커스텀 PlayerController 안에 위의 코드를 가지고 iOS 디바이스에서 게임을 실행하면 화면 하단에 바로 광고 배너가 표시될 것입니다.

test_ad.jpg

그 배너에 탭하면 전체 광고 창이 열립니다:

test_ad_full.jpg

위의 이미지에서 보듯, 이 시점에서는 테스트 광고만 볼 수 있습니다. 실제 광고를 받으려면 애플의 개발자 사이트를 통해 iAd 네트워크에 참여해야 합니다.