Documentación de Steamworks
Servicio de inventario de Steam
El servicio de inventario de Steam es un conjunto de características que permiten a un juego activar inventarios persistentes para los jugadores sin necesidad de mantener servidores especiales para administrar usuarios u objetos.

Deja un comentario o haz preguntas en las discusiones sobre el inventario de Steam del grupo de desarrolladores Steamworks.

Descripción

El servicio de inventario puede usarse de dos formas: o bien sin servidores, o bien añadiendo un servidor de confianza que conozca el estado de juego.

Sin un servidor de juego, el cliente del juego puede comunicarse directamente con el servicio de Steam para recuperar contenidos del inventario de los usuarios, consumir e intercambiar artículos, y recibir artículos nuevos, conferidos como consecuencia del tiempo de juego. Los usuarios pueden adquirir artículos directamente de la tienda de artículos o de los mercados de intercambio de la Comunidad Steam.

Sin embargo, debido a que el cliente del juego no es fiable (y a que las claves en un cliente siempre pueden sustraerse en un ataque informático), no se pueden dar a los usuarios artículos específicos en este esquema. En su lugar, selecciona ciertos artículos que puedan aparecer y configura una frecuencia de aparición. Conforme a periodos programados, el cliente invoca a ISteamInventory::TriggerItemDrop. Los servidores de Steam gestionan el tiempo de juego y la frecuencia de recompensa para cada jugador. Estas API se llaman mediante una "clave de API de cliente" que se considera no fiable.

Si tienes un servidor participante fiable, puedes usar una clave privilegiada de Steam en el servidor y otorgar artículos específicos en las situaciones adecuadas. Aun así, es importante tener en cuenta que los clientes propios no son fiables, de forma que solo se puede hacer esto cuando el servidor sea el servidor maestro del estado del juego.

Por último, en conjunción con el servicio de inventario, pueden venderse artículos individuales o grupos de estos, desde el juego o a través de una tienda basada en una página web.

Véase esta presentación de Steam Dev Days de 2016 para un resumen de la implementación, información sobre problemas específicos que el servicio de inventario resuelve para los desarrolladores, y una demostración de cómo los asociados ya están usando el sistema para dar servicio a sus clientes.

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

Resumen de implementación

  1. Crear definiciones de artículos
    Los desarrolladores deben empezar por crear y cargar algunas definiciones de artículos (ItemDef).
    Estas describen el posible conjunto de artículos para tu juego. No es necesario usarlas desde el juego en sí, pero Steam las necesita para mostrar adecuadamente el inventario. Para crear ItemDefs, se accede a la sección de inventario de Steam del área de configuración de Steamworks para la aplicación. Puede accederse desde aquí: https://partner.steamgames.com/apps/inventoryservice/
  2. Activar el servicio de inventario
    Una vez que tengas definiciones de artículo, activa el servicio de inventario marcando "Activar el servicio de inventario" en la página en la que se cargaron las definiciones de los artículos. Ten en cuenta que aunque la visibilidad de tus artículos está en Privado en la configuración de economía de Steam, solo las cuentas de tu grupo de asociados de Steamworks tendrán acceso a ellos dentro del juego.
  3. Establecer clave de servidor de recursos
    Primero, genera una clave de Web de API para editores para la aplicación (instrucciones: Crear una clave de Web de API para editores) y ponla en el campo "Clave de servidor de recursos", en "Ajustes de la economía de Steam".
  4. Descargar el inventario de los usuarios
    Haz que el cliente del juego descargue el inventario de los usuarios llamando a ISteamInventory::GetAllItems.
    Suele ser una buena idea hacerlo periódicamente, por si el usuario ha agregado más artículos mediante intercambio o adquisición.
    Dependiendo del juego en sí, una comprobación al comienzo de cada partida o nivel podría ser pertinente.
  5. Otorgar artículos de prueba
    Usa ISteamInventory::GenerateItems para agregar artículos específicos a la cuenta del jugador actual con fines de desarrollo.
  6. Otorgar al usuario una recompensa por tiempo de juego (opcional)
    Conforme a periodos programados (normalmente, el final de una fase o de una partida), haz una llamada a la función ISteamInventory::TriggerItemDrop para ver si el usuario merece una nueva recompensa.
  7. Vender artículos (opcional)
    Para agregar compatibilidad con las microtransacciones, define los precios en los ItemDefs. Los usuarios pueden adquirir estos artículos de varias maneras:

API

La documentación para las API de inventario de Steam está disponible en la referencia de las API, aquí: ISteamInventory

Web de API

La documentación para las Web de API de inventario de Steam está disponible en la referencia de las Web de API, aquí: IInventoryService

Funciones web

Estas son páginas web estructuradas a las que se puede redireccionar al usuario.
  • ItemCart: puede usarse para enviar un carro de la compra lleno de artículos para adquirirlo a través de Steam.
  • BuyItem: Puede usarse para adquirir un único artículo a través de Steam.