Skip to main content
Economy v2 ya está disponible con carácter general. Para soporte y comentarios, vaya al Foro de PlayFab.
Economy v1 (heredado) tenía una característica integrada de tablas de botín que le permitía definir distribuciones aleatorias ponderadas de objetos directamente en Game Manager. Economy v2 no incluye las tablas de botín como característica nativa, pero puede implementar el mismo comportamiento —y con más flexibilidad— mediante Azure Functions en combinación con la API ExecuteInventoryOperations. Este tutorial le muestra cómo crear un sistema completo de botín aleatorio que:
  • Define tablas de botín con grupos de objetos ponderados en Title Data.
  • Usa una función de Azure para sortear objetos aleatorios de una tabla de botín.
  • Resta de forma atómica un token de contenedor y otorga los objetos seleccionados aleatoriamente en una sola llamada.

Cómo funciona

  1. Definir tablas de botín en Title Data: almacene las configuraciones de sus tablas de botín (identificadores de objetos, pesos, cantidades) como JSON en Title Data para poder actualizarlas sin volver a implementar código.
  2. Representar los contenedores como moneda virtual: use el mismo patrón de token de contenedor que los contenedores de contenido fijo: una moneda virtual que actúa como una caja de botín sin abrir.
  3. Llamar a una función de Azure para abrir el contenedor: la función lee la tabla de botín, ejecuta una selección aleatoria ponderada y luego llama a ExecuteInventoryOperations para restar de forma atómica 1 token de contenedor y agregar los objetos seleccionados aleatoriamente.

Requisitos previos

Paso 1: definir tablas de botín en Title Data

Almacene las definiciones de sus tablas de botín en Title Data para que los diseñadores puedan actualizar las tasas de caída sin cambios de código.

Estructura de ejemplo de una tabla de botín

Cree una clave de Title Data llamada LootTables con un valor JSON:
Cada tabla de botín incluye las siguientes propiedades:

Establecer Title Data

Game Manager

  1. Vaya a Content > Title Data.
  2. Cree una clave llamada LootTables.
  3. Pegue su configuración JSON de tablas de botín como valor.
  4. Seleccione Save.

API

Use SetTitleData:

Paso 2: crear la función de Azure

Cree una función de Azure a la que llame el cliente de su juego cuando un jugador quiera abrir un contenedor. La función:
  1. Comprueba que el jugador tiene al menos un token de contenedor.
  2. Lee la tabla de botín desde Title Data.
  3. Ejecuta la selección aleatoria ponderada.
  4. Llama a ExecuteInventoryOperations para restar de forma atómica el token y otorgar las recompensas.

Modelos de datos

Selección aleatoria ponderada

Función de Azure completa

La función auxiliar GetContainerCurrencyId asigna el nombre de una tabla de botín al identificador de la moneda de contenedor correspondiente. Puede almacenar esta asignación en Title Data junto con las tablas de botín, o usar una convención de nomenclatura.

Paso 3: otorgar tokens de contenedor a los jugadores

Otorgue tokens de contenedor a los jugadores mediante el propio juego, compras en la tienda o recompensas. Use el mismo enfoque descrito en Contenedores con contenido fijo.

Paso 4: llamar a la función desde el cliente del juego

Cuando el jugador quiera abrir un contenedor, llame a la función de Azure mediante ExecuteFunction:
La respuesta contiene las recompensas seleccionadas aleatoriamente:

Patrones de diseño de tablas de botín

Niveles de rareza

El clásico sistema de rareza con pesos que decrecen exponencialmente:
Probabilidades de caída:
  • Común: ~90,0 %
  • Poco común: ~9,0 %
  • Raro: ~0,9 %
  • Legendario: ~0,09 %

Sorteo múltiple con recompensas mixtas

Una caja de suministros que da tres objetos aleatorios de un grupo mixto:

Garantizado + aleatorio (sistema de compasión)

Para un patrón de “raro o mejor garantizado cada 10 aperturas”, registre el recuento de aperturas del jugador en Display Properties o en Player Data, y anule la selección aleatoria en la función de Azure cuando se alcance el umbral.

Tablas de botín anidadas

Una tabla de botín puede hacer referencia a otra tabla de botín por su identificador. Su función de Azure resuelve la referencia de forma recursiva:
La función comprueba si un ItemId empieza por TABLE: y, si es así, sortea en la tabla referenciada en lugar de otorgar el objeto directamente.

Consideraciones de seguridad

  • Ejecute siempre la lógica de botín en el lado del servidor en una función de Azure. Nunca confíe en el cliente para determinar qué objetos se sortearon. Este enfoque evita manipulaciones.
  • Use IdempotencyId en la llamada a ExecuteInventoryOperations para evitar otorgamientos duplicados si la función se reintenta. Para obtener más información, consulte Transacciones idempotentes y reintentos.
  • Valide la propiedad del contenedor comprobando el inventario del jugador antes de restar. La operación Subtract de ExecuteInventoryOperations falla si el jugador no tiene suficientes tokens, lo que revierte todo el lote.
  • Registre todos los sorteos con fines de auditoría. El valor devuelto de la función y los eventos de PlayStream proporcionan un rastro de lo que recibió cada jugador.

Consulte también

Última modificación el 28 de agosto de 2026