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 ha sido actualizada 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 funciones que permiten a un juego activar inventarios persistentes para los jugadores sin necesidad de mantener servidores especiales para administrar usuarios y 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 agregando 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 de 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 administran el tiempo de juego y la frecuencia de aparición 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.

Echa un vistazo a esta presentación de Steam Dev Days 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ículos, activa el servicio de inventario marcando "Activar el servicio de inventario" en la página en la que cargaste tus definiciones de 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 "Configuración de economía de Steam".
  4. Descargar inventario de 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 de tu juego, 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)
    En momentos apropiados (normalmente, el final de una fase o de una partida), haz una llamada a la función ISteamInventory::TriggerItemDrop para ver si el usuario obtiene 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 carrito lleno de artículos para adquirirlos a través de Steam.
  • BuyItem: Puede usarse para adquirir un único artículo a través de Steam.