Documentación de Steamworks
Economía de Steam

Introducción

La economía de Steam es nuestro nombre para un conjunto de funciones que permiten que artículos de varios juegos funcionen juntos en un único sistema en Steam. Los artículos de los juegos de la economía de Steam pueden adquirirse a través de microtransacciones, se pueden ganar mediante logros de Steam, se pueden entregar dentro del juego u otorgar en respuesta a diversos tipos de promociones. Los usuarios pueden ver sus inventarios del juego en la comunidad de Steam, incluir vínculos a los artículos en las sesiones de chat e intercambiarlos con otros usuarios. Steam aporta la interfaz de usuario y gestiona la parte más exigente de estas funciones, pero deja en manos del juego el control absoluto de los artículos en sí.

Los artículos de los juegos en la economía de Steam se denominan " recursos" y pueden representar cualquier cosa que un usuario pueda poseer en un juego. Algunos ejemplos serían equipamiento, vehículos, personajes, mascotas, recetas de artesanía, etc. El juego comunica a Steam cómo representar un recurso para los usuarios, pero lo que el recurso hace realmente es decisión del juego. El juego también es responsable de hacer el seguimiento de qué usuarios poseen qué recursos y de comunicar esa información tanto a usuarios como a agentes de soporte. También es responsabilidad del juego determinar qué recursos se pueden intercambiar, decidir las restricciones de almacenamiento a las que están sujetos los usuarios y aportar información al equipo de soporte sobre todo lo anterior.

Cada juego controla estas cosas mediante la implementación de la API de recursos de Steam. Esta es una compilación de Web API para conferir a Steam visibilidad en ese "backend". A continuación se encuentra toda la documentación de la API de recursos de Steam.

Requisitos previos

Para añadir un juego a la economía de Steam deben cumplirse ciertos requisitos.

  • La aplicación debe poseer un "backend" para recursos que no se almacene en el cliente del juego. Será un requisito poseer algún tipo de base de datos que se mantenga activa en un centro de datos. Tal centro de datos podría pertenecer a un editor o un desarrollador, o ser aportada por un servicio de alojamiento en la nube. Steam ofrece gratuitamente un Servicio de inventario que puede utilizarse como almacenamiento persistente de elementos para tu juego.
  • El juego debe definir un conjunto de Id. de contexto que definen los contenedores en los que un usuario puede tener recursos.
  • Cada juego debe suministrar un id. persistente de 64 bits para cada recurso que pueda ser intercambiado con otro usuario. Como mínimo, este id. de recurso debe ser único dentro del contexto que contiene el recurso.
  • El juego debe proporcionar iconos de inventario para todos los recursos del juego mediante un servidor web. Estos iconos deben estar disponibles en los tamaños 96x96 y 200x200, en formato jpg, png o gif. Steam proporcionará el ancho de banda necesario para servir estas imágenes a los usuarios.
  • El juego debe implementar al menos los métodos incluidos más abajo donde pone Intercambios de Steam.
  • El juego también debe implementar métodos de integración de la herramienta de soporte.

Sigue leyendo solo si...

Piensas crear tu propio servicio de seguimiento de recursos. El resto de este documento describe la API de la web requerida.
De lo contrario, si planeas usar el servicio de inventario de Steam el servicio de inventario de Steam no necesitas seguir leyendo.

Intercambios de Steam

El sistema de intercambios de Steam emplea una interfaz web para realizar intercambios y ver inventarios. Estas páginas se llenan con los resultados de GetContexts, GetContextContents, GetAssetClass y GetAssetClassInfo en la API de recursos. Una vez que ambos usuarios confirman un intercambio, se realiza una implementación de tres fases en todos los juegos afectados. Toda la lógica de implementación y reversión para este proceso de tres fases se gestiona en el servidor de economía de Steam. Hace que se produzcan cambios de propiedad en los juegos a través de los métodos TradeSetUnowned y TradeSetOwned.
GETGetContexts/v0001Devuelve la lista de contextos para un usuario.
GETGetContextContents/v0001Devuelve la clase de recurso de cada uno de los recursos del usuario y la moneda para mostrar en un intercambio o en la comunidad de Steam.
GETGetAssetClass/v0001Devuelve la clase de recurso y el propietario de una lista de recursos para mostrar en un intercambio o en la comunidad de Steam.
GETGetAssetClass/v0001Devuelve la información para mostrar del usuario para una única clase de recurso.
POSTTradeSetUnowned/v0001Se utiliza cuando el servidor de economía necesita que el juego elimine un recurso o alguna cantidad de moneda del usuario.
POSTTradeSetOwned/v0001Se utiliza cuando el servidor de economía necesita que el juego cambie un recurso existente sin propietario para que pase a ser propiedad de un usuario.

Integración de la herramienta de soporte

La herramienta de soporte es el sistema que los agentes de soporte de Steam utilizan para ayudar a resolver los problemas que surgen con los recursos de un usuario (y cualquier otro problema de la cuenta en Steam). La implementación de estas APIs permite que ambas formas del acceso de la herramienta de soporte a los recursos en un juego.

El acceso a la herramienta de soporte para juegos en Steam Economy se proporciona a través de dos páginas: Economía e Historial. La página de Economía interactúa con los recursos en un contexto con GetContextContents y GetAssetClassInfo. La página de Historial utiliza GetUserHistory, GetHistoryCommandDetails, HistoryExecuteCommands. Ambas páginas mostrarán los detalles de los recursos con los resultados de SupportGetAssetHistory. ContextCommand se usa para permitir que los agentes de soporte realicen acciones a nivel de contexto y de recursos.
POSTContextCommand/v0001Ejecuta un comando de contexto desde la herramienta de soporte.
GETGetUserHistory/v0001Devuelve el historial de auditoría de un usuario para su uso con la herramienta de soporte.
GETGetHistoryCommandDetails/v0001Devuelve a un agente de soporte una lista detallada de acciones de comando para un comando de historial.
POSTHistoryExecuteCommand/v0001Ejecuta para un agente de soporte un conjunto de acciones de comando de historial sobre un usuario.
GETSupportGetAssetHistory/v0001Devuelve para nosotros información de historial acerca de un recurso en la herramienta de soporte.

Compras en la web

Se puede permitir a los usuarios adquirir desde la web artículos para un juego implementado las siguientes API.
POSTStartWebAssetTransaction/v0001Inicia una transacción por el artículo especificado en nombre de un usuario. Llamada a ISteamMicroTxn/InitTxn para que Steam configure la transacción y obtenga una URL de reenvío.
POSTFinalizeWebAssetTransaction/v0001Llamado después de que el usuario paga por los artículos en la transacción. Debería llamar a ISteamMicroTxn/FinalizeTxn antes de intentar darle elementos al usuario.
GETGetAssetPrices/v0001Devuelve los precios y categorías de artículos que los usuarios pueden comprar.

Reembolsos de Steam

La Política de reembolsos de Steam permite a los usuarios obtener un reembolso por las compras efectuadas dentro del juego en menos de 48 horas tras la compra, siempre que ninguno de los artículos adquiridos se haya consumido, modificado o transferido. Si se desea participar en esta política, es preciso implementar las siguientes API.
GETQueryRefundAllowed/v0001Se utiliza para comprobar el estado de cada artículo en una compra integrada dentro del juego.
POSTRefundPurchase/v0001Se utiliza cuando se aprueba un reembolso, ya sea automáticamente o por parte de un agente de soporte.

Recursos foráneos

Si tu juego importa recursos de otro juego, puedes llamar a GetExportedAssets para extraer los recursos.
GETGetExportedAssets/v0001Devuelve una lista de artículos exportados por otro juego en Steam.

Control de versión de la interfaz

Para dar cabida a futuras versiones de la API de recursos, el servidor de economía adjunta un número de versión a todas las URL a las que llame. En este momento, todos los métodos están en la versión 1, por lo que "/v0001" se adjuntará a cada URL. Entonces, si el URL de tu servidor de recursos es https://api.mygame.com/assetapi entonces el método GetContexts se llamará como https://api.mygame.com/assetapi/GetContexts/v0001, seguido de los parámetros GET especificados
para ese método.

Claves de API

Si estableces una clave de API en la pestaña Economía de los detalles técnicos de tu juego, esa clave se transferirá a cada llamada realizada por el servidor de economía.
La clave estará en un parámetro GET o POST (según el tipo de solicitud) denominado "key". Debe comprobarse que la clave coincide con lo que se estableció en la pestaña Economía al recibirse una llamada, para asegurar que la llamada procede del servidor de economía.

Preguntas frecuentes

P. ¿Qué es la economía de Steam?

R. La plataforma Steam incluye características para lograr intercambios seguros y fiables, un mercado mundial con moneda real, información detallada sobre objetos fuera del juego a través de la comunidad de Steam y mucho más. Es posible incorporar cualquiera de estas características o todas ellas.

P. ¿Cuáles son las ventajas de participar en la economía de Steam?

R. Los artículos en los juegos con economía habilitada son más valiosos que los que solo se usan en ecosistemas de un juego, lo que crea clientes más satisfechos.

Los jugadores pueden incluir vínculos a artículos en los perfiles de Steam y en chats, lo que aumenta la exposición tanto del juego como de sus artículos. En el caso de juegos que admiten el intercambio, los artículos tienen valor no solo para sus actuales propietarios, sino para los demás jugadores activos y las posibles incorporaciones. Esto significa, por ejemplo, que todos los juegos que utilizan el sistema de economía de Steam se vuelven inmediatamente más interesantes y valiosos para los jugadores de los demás juegos con economía (como Team Fortress 2 y Dota 2).

Además, se puede aprovechar nuestra infraestructura existente de intercambio/transacciones de moneda y soporte, así como incorporarse gratuitamente a cualquier funcionalidad futura.

P. ¿Cuáles son los requisitos para participar?

R. R. La aplicación debe poseer un "backend" que no se almacene en el cliente del juego (también denominado servidor de artículos). Se requerirá algún tipo de base de datos que exista en un centro de datos.
Ese centro de datos podría ser propiedad de un editor o desarrollador, o podría ser proporcionado por un servicio de alojamiento en la nube. Steam ofrece gratuitamente un Servicio de inventario que se utilizará como almacenamiento persistente de elementos para tu juego. Ese backend debe implementar un pequeño número de Web API para que Steam pueda comunicarse con él.

P. ¿Podemos participar solo en ciertas partes de la economía o tiene que ser en todas?

R. Las Web API a las que llama Steam proporcionan una interfaz unificada a la comunidad de Steam para ver artículos, hacer intercambios entre juegos y desarrollar el Mercado de la comunidad de Steam. Es posible desactivar características de forma general (p. ej., activar todos los intercambios, pero desactivar todas las transacciones del Mercado) o detallada (p. ej., todos los artículos pueden verse en la comunidad; algunos pueden intercambiarse, pero solo algunos concretos pueden aparecer en el Mercado). Se pueden cambiar estos ajustes por cada artículo en cualquier momento.

P. ¿Dispone Valve de un backend de artículos persistente que podamos usar como parte de Steamworks?

R. El servicio de inventario de Steam está disponible para su utilización.