UDN
Search public documentation:

MOBAKitShopKR
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 홈 > UDK 젬 > MOBA 스타터 키트 > 상점

MOBA 스타터 키트 - 상점


문서 변경내역: James Tan 작성. 홍성진 번역. UDK 2012년 5월 버전으로 최종 테스팅.

개요


상점 시스템은 플레이어가 자신의 영웅이 쓸 아이템을 사고 팔 수 있도록 해 주는 그래픽 유저 인터페이스 위젯입니다.

UDKMOBAShop.jpg

UDKMOBAGFx_HUD


상점 인터페이스를 초기화시키고 구성하는 Scaleform HUD 클래스입니다.

함수

  • ConfigShop() - Scaleform HUD 가 처음 초기화될 때 호출되는 함수입니다. 상점에 관계된 모든 위젯을 환경설정하여 나중에 쉽게 접근할 수 있도록 변수에 캐시해 둡니다. 또 UDKMOBAGFxHUDProperties 아키타입을 읽어 상점 카테고리와 아이템을 채우기도 합니다. 마지막으로 버튼 이벤트를 적합한 델리게이트에 바인딩하기도 합니다. 상점 구성이 끝나고 나면 이 함수는 자동으로 상점을 숨깁니다.
  • UpdateShop() - 마우스가 상점 카테고리 동글 버튼 위에 있을 때 적합한 툴팁을 표시하는 함수입니다.
  • ChangeShopItemType() - 아이템 유형 동글 버튼에 클릭했을 때 호출되는 함수입니다. 현재 보이는 아이템 카테고리 무비 클립을 바꿉니다.
  • ChangeShopCategory() - 아이템 카테고리 동글 버튼에 클릭했을 때 호출되는 함수입니다. 현재 보이는 아이템 목록을 바꿉니다.
  • PressShopItem() - 상점 아이템 목록을 클릭할 때 호출되는 함수입니다. 플레이어가 무언가 사려 할 경우를 다룹니다.

UDKMOBAGFxHUDProperties


모든 아이템을 어떻게 저장하여 GUI 에 나타낼 것인가를 저장하는 아키타입 가능 오브젝트입니다.

UDKMOBAGFxHUDProperties.jpg

변수

  • Shop - 상점 아이템을 추가로 정의하는 구조체 배열입니다. 이 구조체는 아이템 유형 (기본, 업그레이드, 등의) 목록을 정의합니다.
    • LocalizedItemTypeLabel - 아이템 유형에 대한 현지화된 이름입니다.
    • ItemTypeRBName - Flash GUI 의 아이템 유형 동글 버튼 이름입니다.
    • ItemCategoryMCName - Flash GUI 의 아이템 카네고리 무비 클립 이름입니다.
    • ItemCategories - 상점 아이템을 추가로 정의하는 구조체 배열입니다. 이 구조체는 아이템 카테고리 (기본 1, 기본 2, 기본 3 등의) 목록을 정의합니다.
      • ItemCategoryRBName - Flash GUI 의 아이템 카테고리 동글 버튼 심볼 이름입니다.
      • ItemCategoryLstName - Flash GUI 의 아이템 카테고리 목록 심볼 이름입니다.
      • LocalizedItemCategoryTooltip - 아이템 카테고리의 현지화된 이름입니다.
      • ItemArchetypes - 이 아이템 유형과 아이템 카테고리에서 살 수 있는 아이템 아키타입 배열입니다.

UDKMOBAPlayerController


이 플레이어 콘트롤러에는 플레이어가 상점에서 아이템을 살 수 있도록 하는 데 필요한 리플리케이션 작업을 처리하는 함수가 들어 있습니다. 리플리케이션은 여기서 처리되는데, GUI 자체는 절대로 리플리케이트되지도 않고 리플리케이션을 처리할 수도 없기 때문입니다.

함수

  • PurchaseItem() - 이 함수는 서버나 클라이언트에서 실행 가능하며, 구매 로직을 시작합니다. 먼저 플레이어가 요청한 아이템을 살 수 있는지 확인하는 검사를 합니다. 게임이 클라이언트에서 실행중이라면, 서버측에서 구매 로직을 실행할 수 있도록 리모트 프로시저 콜 (UDKMOBAPlayerController::ServerPurchaseItem()) 을 수행하고, 랙을 없애기 위해 구매 시뮬레이션까지 합니다. 게임이 서버에서 실행중이라면 그저 UDKMOBAPawnReplicationInfo::PurchaseItem() 를 호출할 뿐입니다.
  • ServerPurchaseItem() - 클라이언트가 서버더러 그리하라 일렀을 때 호출되는 함수입니다. UDKMOBAPawnReplicationInfo::PurchaseItem() 를 호출합니다.
  • CanPurchaseItem() - 사용자가 요청한 아이템을 구매할 수 있는지에 따라 참/거짓을 반환하는 함수입니다.

UDKMOBAPawnReplicationInfo


이 리플리케이션 인포는 영웅을 스폰하는 데 사용됩니다. 이렇게 분리한 이유는 플레이어가 여러 영웅을 한 번에 제어할 수도 있도록 하기 위해서입니다. 그래서 아이템은 이 리플리케이션 인포에 저장합니다.

함수

  • PurchaseItem() - 플레이어가 아이템을 구매하고자 할 때 서버에서 실행되는 함수입니다. 이 시점에서 게임은 이미 플레이어가 이 아이템을 구매할 수 있다고 확인한 상태이므로 더이상의 검사는 하지 않습니다. UDKMOBAPlayerReplicationInfo::ModifyMoney() 를 사용해서 플레이어의 골드를 수정하고 아이템을 스폰시킵니다. 다음은 아이템을 플레이어에게 어떻게 쥐어줄지 결정합니다. 플레이어가 유효한 샵 볼륨 안에 있고 인벤토리에 여유가 있으면 플레이어에게 바로 쥐어줍니다. 플레이어가 유효한 샵 볼륨 안에 있지 않고 인벤토리에 여유도 없지만 보관함에는 여유가 있다면 보관함에 집어 넣습니다. 그 외의 경우 아이템은 바닥에 버려져 다른 플레이어가 집을 수 있는 상태가 됩니다. 아이템이 놓인 위치에 따라 자동생성 아이템 검사를 한 다음 가능하면 합칩니다.
  • CheckForItemAutoCreation() - 아이템을 새로 구매하거나 보관함에서 집었을 때 서버에서 실행되는 함수입니다. 인벤토리에 있는 아이템에 대해 반복처리하여 새로운 인벤토리 아이템을 만드는 데 필요한 아이템을 모두 갖췄는지 검사합니다. 그렇다면 예전 아이템은 소멸시키고 새로운 아이템을 쥐어줍니다.

변수

  • MAX_ITEM_COUNT - 플레이어가 소지할 수 있는 아이템 최대 양을 정의하는 상수입니다.
  • MAX_STASH_COUNT - 플레이어가 보관함에 넣을 수 있는 아이템 최대 양을 정의하는 상수입니다.
  • Items - 이 영웅이 갖고 있는 아이템입니다. 서버와 클라이언트 사이에서 유지됩니다.
  • DroppedItemArchetype - 기본 드롭 아이템 아키타입입니다. 이 액터 템플릿은 땅에 떨어져 주을 수 있는 아이템의 모양을 설정하기 위해 게임 디자이너가 정의합니다.

UDKMOBAShopAreaVolume


플레이어가 아이템을 구매했을 때 영웅의 보관함이 아니라 인벤토리에 들어가게 되는 맵 영역을 정의하는 볼륨입니다.

UDKMOBAShopAreaVolume.jpg

함수

  • GetTeamNum() - TeamNum 을 반환합니다.

변수

  • TeamNum - 이 샵 에리어 볼륨이 속하는 팀 인덱스입니다.
  • UpperLeftCorner - 이 볼륨의 좌상단 월드 좌표입니다. 드롭되는 인벤토리 아이템 스폰시 사용됩니다.
  • LowerRightCorner - 이 볼륨의 우하단 월드 좌표입니다. 드롭되는 인벤토리 아이템 스폰시 사용됩니다.