06
04

⚠️이 글은 API 문서를 공부한 내용을 정리한 글입니다. 물론 직접 테스트한 내용도 담고 있습니다.

API 문서 주소 ↓

https://partner.steamgames.com/doc/features/inventory

 

썸네일

인벤토리 구조 생성 관련 글 ↓

https://kimyir.tistory.com/60



Steam 인벤토리 서비스(Steam Inventory Service)는 게임에서 사용자나 아이템을 관리하기 위해 

특별한 서버를 실행하지 않고도 플레이어 인벤토리를 영구적으로 사용할 수 있게 해주는 일련의 기능입니다.

 

Inventory Service(인벤토리 서비스)는 두 가지 방법으로 사용할 수 있습니다. 
1. server-less(서버 없을 때)의 방법
2. 게임 상태를 아는 신뢰 가능한 서버가 있을 때의 방법


server-less(서버 없을 때)의 방법


서버 없는 방법에서 클라이언트는 Steam 서비스와 직접 통신해서 인벤토리 서비스를 이용 가능합니다.
1. 인벤토리 콘텐츠를 검색
2. 아이템을 소비 및 교환 
3. 플레이 시간의 효과로 부여된 새 아이템을 받을 수 있습니다. 
4. 아이템 상점에서 직접 아이템을 구매하거나 Steam 커뮤니티에서 거래하고 교환할 수도 있습니다.

클라이언트를 신뢰할 수 없기 때문에 드롭 가능한 특정 아이템은 따로따로 드롭 빈도를 구성 할 수 있습니다.
게임 클라이언트는 적절한 시점에 ISteamInventory::TriggerItemDrop을 호출합니다.
Steam 서버는 플레이 시간(Play time)과 플레이어별 드랍 빈도(drop frequency per-player)를 관리합니다. 

이러한 API는 신뢰할 수 없는 내부 "클라이언트 API 키"를 사용하여 호출됩니다.

 


게임 상태를 아는 신뢰 가능한 서버가 있을 때의 방법


참여하는 신뢰 가능한 서버가 있다면 서버 권한이 있는 Steam API 키를 사용해도 됩니다.
이걸로 명시적인 아이템을 상황에 맞게 플레이어에게 줄 수 있습니다. (업적 달성 시 주는 아이템 같은거)

그래도 자신의 클라이언트를 신뢰할 수 없으므로,
꼭 서버가 게임 상태의 master일 때만 이 작업을 수행할 수 있다는 점을 명심하는 것이 중요합니다.

Inventory Service와 함께 게임 내 또는 웹 기반 상점을 통해

개별 또는 장바구니 째로 아이템을 판매할 수 있습니다.

 


스팀이 이 서비스를 왜 만들었는지 알려주는 영상

 

https://youtu.be/jDfhPTSOLis

 


구현의 전체적인 개요

 

1. 아이템 정의 생성

우선 아이템들을 먼저 만들고 업로드해야합니다. (ItemDefs)

아래 문서를 통해 아이템 정의 생성(ItemDefs)을 한번 봅시다.↓

https://partner.steamgames.com/doc/features/inventory/schema

or

위의 링크를 정리 해서 따로 글 써놓았습니다. ↓

https://kimyir.tistory.com/60

 

문서를 보면 알겠지만 당신의 게임에 아이템을 만들 수 있습니다.

게임 자체에서 사용할 필요는 없지만 Steam에서 인벤토리를 올바르게 표시하려면 필요합니다. 

ItemDef를 생성하려면 Steamworks 구성 부분의 Steam 인벤토리 섹션으로 이동하세요.

바로 가기 링크

https://partner.steamgames.com/apps/inventoryservice/

 

2. 인벤토리 서비스 활성화

ItemDef를 하나 만들었으면 아이템 정의를 업로드한 페이지에서

"Enable Inventory Service"를 선택하여 인벤토리 서비스를 켭니다.

 

만약 아이템의 visibility 항목이 비공개로 설정되어 있으면

Steamworks 파트너 그룹의 계정만 게임 내 아이템에 액세스할 수 있습니다.

 

3. 자산(Asset) 서버 키 설정

먼저 애플리케이션용 게시자 WebAPI Key를 생성해줍니다. 

게시자 웹 API 키 생성 과정 ↓

더보기

게시자 웹 API 키를 생성하려면 기존 Steamworks 계정 내에서 관리자 권한이 있어야 합니다. 

본인이 관리자가 아닌 경우 Steamworks 홈페이지를 방문하여 오른쪽에 있는 목록을 보면

파트너 계정의 관리자 목록을 볼 수 있습니다.

그들 중 누구라도 귀하의 게시자 WebAPI Key를 생성하거나 관리자로 승격시킬 수 있습니다.

 

Publisher Web API Key를 생성하려면:

1. Steamworks 계정에서 관리 권한이 있는 사용자로서 먼저 그룹 목록을 방문해보세요.

2. 그룹 목록에서 WebAPI 키로 액세스하려는 App ID가 포함된 그룹을 선택하거나 생성합니다.

3. 그런 다음 해당 그룹을 클릭하여 해당 그룹의 사용자 및 응용 프로그램을 봅니다.

4. 당신이 관리 권한이 있다면 오른쪽에 "WebAPI Key 생성" 옵션이 표시됩니다.

또는 키가 이미 생성된 경우 나열된 키를 볼 수 있습니다.

 

설명대로 찾아봤는데 steamworks 관리 사이트에 가보면

사진처럼 이런 곳에 webAPI 키 생성이 숨어있었습니다.

만약에 안보인다면 만드신 Manage Group 탭에서 그룹을 클릭 안하신 걸수도 있습니다. 

 

이렇게 받아낸 WebAPI Key는 Steam Economy Settings의 Asset Server Key field에 입력합니다.

 

Api 문서에는 도대체 Asset Server Key field가 어딨는지 안적혀있습니다.

 

Asset Server Key 필드에 가기 전에 우선 인벤토리 서비스를 활성화합시다. ↓

Steamworks  >  App Admin  >  관리할 게임 > Community > Inventory Service

위의 사진에서 Enable Inventory Service를 체크해주면 됩니다.

 

그리고 나서 아래 Steam Inventory Service Settings부분의 

the Economy Settings 하이퍼링크를 눌러줍니다.

 

Steamworks  >  App Admin  >  관리할 게임 > Community >  Economy

그러면 사진처럼 Economy Settings 탭으로 와지게 됩니다.

 

여기서 아래로 내리면 

Asset Server Key 부분에 아까 받아둔 WebAPI Key를 넣어주면 됩니다.

 

4. 사용자 인벤토리 다운로드

게임 클라이언트에서 ISteamInventory::GetAllItems를 호출하여 사용자 인벤토리를 다운로드하도록 하세요.

사용자가 거래 또는 구매를 통해 더 많은 아이템을 추가했다면 주기적으로 이 작업을 수행하는 것이 좋습니다.

게임의 레벨(한판한판) 시작 시에 호출해서 체크해보는 것이 적절할 수 있습니다.

 

5. 테스트 아이템 승인하기

개발 목적으로 현재 플레이어 계정에 특정 아이템을 추가하려면 ISteamInventory::GenerateItems를 사용하세요.

 

6. 사용자에게 플레이 타임 드롭 승인하기 (선택 사항)

적절한 시간에(일반적으로 매치/페이즈 종료) ISteamInventory::TriggerItemDrop을 호출하여 

사용자가 새 드롭을 얻었는지 확인하세요.

 

7. 아이템 판매(선택 사항)

소액 결제 지원을 추가하려면 itemdefs에서 가격을 정의하세요.

그런 다음 사람들이 몇 가지 다른 방법으로 구매하도록 할 수 있습니다.

 

COMMENT