Documentación de Steamworks
Servicio de inventario de Steam

Versión más reciente disponible en inglés

La versión en inglés de esta página se ha actualizado desde que se publicó esta traducción.
Haz clic aquí para ver la versión en inglés de esta página.
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 o artículos.

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 del 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 de Steam.

Sin embargo, debido a que no se puede confiar en el cliente del juego (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 pueden aparecer y configura una frecuencia de aparición. En los momentos adecuados, el cliente invoca a ISteamInventory::TriggerItemDrop. Los servidores de Steam gestionan el tiempo de juego y la frecuencia de aparición para cada jugador. Estas API se llaman mediante una clave de API de cliente interna que se considera no fiable.

Si tienes un servidor participante de confianza, puedes usar una clave privilegiada de la API de Steam en el servidor y otorgar artículos específicos en las situaciones adecuadas. Aun así, es importante tener en cuenta que no puedes confiar en tus propios clientes de juego, 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, puedes vender artículos individuales o carros de artículos, ya sea dentro del juego o a través de una tienda basada en la web.

Mira esta presentación de los Steam Dev Days de 2016 para ver 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 la implementación

  1. Crea definiciones de artículos
    Para empezar, debes crear y cargar algunas definiciones de artículos (ItemDefs).
    Estas describen el conjunto posible de artículos de tu juego. No es necesario usarlas desde el juego en sí, pero Steam las necesita para mostrar adecuadamente el inventario. Para crear ItemDefs, ve a la sección del inventario de Steam del área de configuración de Steamworks. Puedes acceder desde aquí: https://partner.steamgames.com/apps/inventoryservice/
  2. Activa el servicio de inventario
    Una vez que tengas definiciones de artículos, activa el servicio de inventario marcando «Activar el servicio de inventario» en la página en la que cargaste las definiciones de artículos. Ten en cuenta que, mientras la visibilidad de tus artículos esté configurada como privada en los ajustes de economía de Steam, solo las cuentas de tu grupo de asociados de Steamworks tendrán acceso a ellos dentro del juego.
  3. Establece la clave del servidor de recursos
    Genera una clave de la API web para editores para la aplicación (instrucciones: Crear una clave de la API web para editores) y ponla en el campo «Clave del servidor de recursos» de los ajustes de economía de Steam.
  4. Descarga el inventario de los usuarios
    Haz que el cliente del juego descargue el inventario de los usuarios llamando a ISteamInventory::GetAllItems.
    Suele ser buena idea hacerlo de forma periódica por si el usuario ha añadido más artículos mediante intercambios o compras.
    Según el tipo de juego, podría ser pertinente hacer una comprobación al comienzo de cada partida o nivel.
  5. Otorga artículos de prueba
    Usa ISteamInventory::GenerateItems para añadir artículos específicos a la cuenta del jugador actual con fines de desarrollo.
  6. Otorga al usuario un artículo por tiempo de juego (opcional)
    En los momentos adecuados (normalmente al final de una partida o una fase), llama a ISteamInventory::TriggerItemDrop para ver si el usuario se ha ganado un nuevo artículo.
  7. Vende artículos (opcional)
    Para añadir compatibilidad con las microtransacciones, define los precios en los ItemDefs. Luego puedes ofrecer varias maneras de adquirir los artículos:

API

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

API web

La documentación sobre las API web del inventario de Steam está disponible en la referencia de las API web, aquí: IInventoryService.

Funciones web

Se trata de páginas web estructuradas a las que puedes redirigir 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 solo artículo a través de Steam.