Steamworks 문서
Steam 보관함 서비스
Steam 인벤토리 서비스는 게임이 특별 서버를 가동할 필요 없이 지속적인 플레이어어 인벤토리를 통해 사용자나 아이템을 관리할 수 있게 해주는 일련의 기능입니다.

Steamworks 개발자 그룹의 Steam 보관함 토론에 의견이나 질문을 남겨주시기 바랍니다.

설명

보관함 서비스는 두 가지 방법, 즉 서버 없이 사용하거나 게임 상태를 아는 신뢰할 수 있는 서버와 함께 사용할 수 있습니다.

게임 서버 없이 사용할 때는 게임 클라이언트가 Steam 서비스와 직접 통신하여 사용자의 보관함 콘텐츠를 검색하고, 아이템을 소비 및 교환하거나 플레이 시간을 기준으로 새로운 아이템이 전달됩니다. 사용자는 아이템 상점이나 Steam 커뮤니티 장터에서 아이템을 직접 구매하거나 교환 및 거래할 수 있습니다.

그러나 클라이언트를 신뢰할 수 없기 때문에 (또한 공격자가 언제든지 클라이언트의 키를 캡처할 수 있기 때문에) 이 방식으로는 사용자에게 아이템을 확실히 전달할 수 없습니다. 이보다는 특정 아이템을 획득 가능하도록 하거나 획득 빈도를 구성하는 방법이 좋습니다. 게임 클라이언트는 적절한 시점에 ISteamInventory::TriggerItemDrop을 불러옵니다. Steam 서버는 플레이어 당 플레이 시간과 획득 빈도를 관리합니다. 이러한 API는 신뢰할 수 없다고 생각되는 내부 ‘클라이언트 키’를 사용하여 호출됩니다.

신뢰할 수 있는 서버가 참여 중인 경우에는 특별 Steam API 키를 해당 서버에 사용해 적절한 상황에 특정 아이템을 부여합니다. 다만 클라이언트를 신뢰할 수 없기 때문에, 이 방법은 서버가 게임의 마스터 상태일 때만 가능하다는 점에 유의하세요.

마지막으로, 보관함 서비스와 연동되는 기능으로 게임 내 혹은 웹 기반 상점을 통해 개별 아이템이나 여러 아이템을 판매할 수 있습니다.

2016년 Steam Dev Days의 프레젠테이션을 통해 구현 개요, 보관함서비스가 개발자를 위해 해결한 여러 가지 문제에 대한 자세한 내용, 시스템을 사용 중인 파트너가 고객에게 제공하는 서비스의 내용을 확인하시기 바랍니다.

https://www.youtube.com/watch?v=jDfhPTSOLis

구현 개요

  1. 아이템 정의 생성
    먼저 몇 가지 아이템 정의를 생성하여 업로드해야 합니다(ItemDefs).
    이는 게임에서 사용 가능한 아이템을 나타냅니다. 게임에서 실제 사용하지 않더라도 Steam이 보관함에 정상적으로 표시할 수 있어야 합니다. ItemDefs를 생성하려면 Steamworks 구성 영역의 Steam 보관함 섹션으로 이동하세요. 페이지 URL은 https://partner.steamgames.com/apps/inventoryservice/입니다.
  2. Enable Inventory Service
    Once you have item definitions, turn on the Inventory Service by checking "Enable Inventory Service" on the page you uploaded your item definitions. Note that while your item visibility is set to Private, only accounts in your Steamworks Partner group will be able to access your items in-game.
  3. 자산 서버 키 설정
    애플리케이션의 게시자 웹 API 키를 생성하여(지침: Creating a Publisher Web API Key) Steam 경제 설정의 자산 서버 키 항목에 입력하세요.
  4. 사용자 보관함 다운로드
    ISteamInventory::GetAllItems를 호출하여 게임 클라이언트가 사용자의 보관함을 다운로드하도록 하세요.
    사용자가 교환 또는 구매로 보관함에 아이템을 추가할 수도 있으므로 주기적으로 실행할 것을 권장합니다.
    게임에 따라 시작 시 각 게임 또는 레벨의 확인이 필요할 수 있습니다.
  5. 테스트 아이템 제공
    ISteamInventory::GenerateItems를 사용하여 현재 플레이어 계정에 개발자용 아이템을 추가하세요.
  6. 사용자에게 ‘플레이 시간 드롭’ 제공(선택 사항)
    적절한 시점(주로 매치나 단계가 끝난 시점)에 ISteamInventory::TriggerItemDrop을 호출하여 사용자가 새 아이템을 획득했는지 확인하세요.
  7. 아이템 판매(선택 사항)
    소액 결제를 지원하려면 itemdef에 가격을 정의하세요. 그러면, 고객이 여러 방법을 통해 구매하도록 할 수 있습니다.

API

Steam 보관함 API에 대한 문서는 ISteamInventory의 API 참조에서 찾아볼 수 있습니다.

웹 API

Steam 보관함 웹 API에 대한 문서는 IInventoryService의 웹 API 참조에서 찾아볼 수 있습니다.

웹 기능

사용자를 이동시킬 수 있는 구조화된 웹 페이지입니다.
  • ItemCart - Steam을 통해 구매할 장바구니의 모든 아이템을 전송하는 데 사용됩니다.
  • BuyItem - Steam을 통해 단일 아이템을 구매하는 데 사용됩니다.