Documentação do Steamworks
Serviço de Inventário Steam
O Serviço de Inventário Steam é um conjunto de funcionalidades que permitem a jogos ter inventários persistentes para cada jogador sem a necessidade de servidores especiais para a gestão de utilizadores ou itens.

Partilhe a sua opinião ou faça perguntas no subfórum sobre o Serviço de Inventário Steam no grupo de developers Steamworks.

Descrição

O Serviço de Inventário Steam pode ser usado de duas formas: sem um servidor ou com a adição de um servidor confiável que saiba o estado do jogo.

Sem um servidor, o jogo pode comunicar diretamente com o serviço do Steam para obter o conteúdo dos inventários dos utilizadores, consumir/trocar itens e receber itens novos concedidos de acordo com o tempo de jogo. Os utilizadores também podem trocar itens entre si ou comprar itens diretamente na loja de itens e no Mercado da Comunidade Steam.

Porém, como o cliente do jogo não é confiável (e as chaves do cliente podem ser sempre capturadas num ataque informático), não é possível conceder itens específicos desta forma aos utilizadores. Em vez disso, terá de selecionar os itens que podem ser distribuídos e a frequência de distribuição de cada um. Em momentos apropriados, o cliente do jogo invoca a função ISteamInventory::TriggerItemDrop. Os servidores do Steam tratam do tempo de jogo e da frequência de distribuição por jogador. Estas APIs são chamadas usando uma "chave da API do cliente" que é considerada não confiável.

Se tiver um servidor confiável participante, pode usar uma chave privilegiada da API do Steam no servidor e conceder itens específicos em situações apropriadas. É importante ter em mente que não se pode confiar por completo nos clientes de jogo; logo, faça só isto quando o servidor for o mestre do estado do jogo.

Por último, com o Serviço de Inventário Steam, pode vender itens individuais ou um carrinho de itens dentro do jogo ou através de uma loja na web.

Assista a esta apresentação do Steam Dev Days de 2016 para uma vista geral sobre a implementação, detalhes de problemas específicos que o Serviço de Inventário Steam resolve aos developers e uma demonstração de como os parceiros já estão a usar o sistema para servir os respetivos utilizadores.

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

Vista geral da implementação

  1. Crie definições de itens
    Terá primeiro de criar e enviar algumas definições de itens (ItemDefs).
    Estas definições descrevem o conjunto de itens possíveis no seu jogo. Não é obrigatório usá-las no próprio jogo, mas o Steam precisa das definições de itens para que o inventário apareça corretamente. Para criar ItemDefs, aceda à secção do inventário Steam na área de configuração do Steamworks ou ao seguinte link: https://partner.steamgames.com/apps/inventoryservice/
  2. Ative o Serviço de Inventário Steam
    Assim que tiver enviado definições de itens, assinale a opção "Ativar Serviço de Inventário" na página onde as enviou. Tenha em atenção que, se a visibilidade dos itens for privada nas "Definições de Economia Steam", apenas contas no seu grupo de parceiro Steamworks poderão aceder aos itens no jogo.
  3. Defina a chave do servidor de recursos
    Primeiro, terá de gerar uma chave da Web API de editora para a aplicação (instruções: Criação de uma chave da Web API de editora). Introduza-a no campo "Chave do servidor de bens" nas definições de Economia Steam.
  4. Descarregue o inventário dos utilizadores
    Faça com que o cliente do jogo descarregue os inventários dos utilizadores ao chamar a função ISteamInventory::GetAllItems.
    Recomendamos chamar a função periodicamente caso o utilizador adicione mais itens por trocas ou compras.
    Dependendo do jogo, uma verificação no início de cada partida ou nível pode ser apropriado.
  5. Conceda itens de teste
    Use ISteamInventory::GenerateItems para adicionar itens específicos à conta do utilizador atual para fins de teste.
  6. Conceda um item por tempo de jogo (opcional)
    Em momentos apropriados (normalmente no fim de uma partida ou fase), chame a função ISteamInventory::TriggerItemDrop para verificar se o utilizador deveria receber um item novo.
  7. Venda itens (opcional)
    Para permitir microtransações, defina preços nas suas ItemDefs. Os utilizadores poderão depois comprar esses itens de várias formas:

APIs

A documentação das APIs do Inventário Steam está disponível no guia de referência da API aqui: ISteamInventory

Web APIs

A documentação da Web API do Inventário Steam está disponível no guia de referência da Web API aqui: IInventoryService

Funções web

Estas são páginas web estruturadas para as quais é possível encaminhar o utilizador.
  • ItemCart – Pode ser usada para enviar um carrinho de itens para ser comprado através do Steam.
  • BuyItem – Pode ser usada para comprar um único item através do Steam.