> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Primer vistazo a las estadísticas basadas en eventos

> Tutorial de primer vistazo para configurar un evento y una estadística de XBOX Live en Partner Center y, a continuación, agregar código para enviar eventos y actualizar estadísticas.

Para los títulos que se configuran en Partner Center mediante estadísticas basadas en eventos, en este tema se muestra cómo configurar un evento y una estadística en Partner Center y, a continuación, agregar código a su título para enviar eventos y actualizar estadísticas.

## Inicio de sesión en Partner Center

Los ejemplos siguientes usan Partner Center para configurar experiencias de juego de XBOX.

Después de que su empresa tenga un acuerdo para crear productos para XBOX, configure su contenido en Partner Center. Si su empresa aún no tiene acceso a Partner Center y está desarrollando un juego, póngase en contacto con su administrador de cuentas de Microsoft. Si está desarrollando una aplicación, póngase en contacto con XBOX App Partner Requests ([xboxapps@microsoft.com](mailto:xboxapps@microsoft.com)). Si está trabajando con el programa ID\@XBOX, póngase en contacto con ID Setup ([idsetup@microsoft.com](mailto:idsetup@microsoft.com)).

El programa ID\@XBOX permite a los desarrolladores de juegos cualificados de todos los tamaños dar rienda suelta a su creatividad mediante la autopublicación de juegos digitales en XBOX One (o posterior). Esto proporciona a los estudios las herramientas y el soporte que necesitan para ayudar a maximizar su éxito. Para obtener más información, vaya a [https://www.xbox.com/Developers](https://www.xbox.com/Developers).

Después de tener acceso a Partner Center, necesitará que Microsoft cree un grupo de productos para su juego. Su administrador de cuentas de Microsoft puede ayudarle con este proceso.

Después de que Microsoft haya creado un grupo de productos para su juego, use Partner Center para configurar los servicios de XBOX para su juego. La configuración de los servicios de XBOX para su juego también se denomina su *configuración de servicios*.

Siga estos pasos para ir a la ubicación de Partner Center donde puede agregar los eventos, las estadísticas, los logros y las tablas de clasificación de su juego.

1. Inicie sesión en su cuenta en [Partner Center](https://developer.microsoft.com/dashboard/windows/overview).

2. Seleccione el grupo de productos que contiene o contendrá su juego.

3. En la página **Product Group**, seleccione su juego o seleccione **Add New Product** para crear una nueva entrada.

4. Si está creando un producto nuevo, escriba un nombre para el producto.

5. Para el acceso a recursos, seleccione **Exclusive Resource Access (ERA)**.

6. Elija si necesita producir medios físicos para el juego o si solo será una descarga digital.

7. Seleccione **Create Product**.

8. En la parte inferior del panel izquierdo, expanda el sandbox en el que se creó su producto.

   Las configuraciones de servicios se definen en el nivel de sandbox. Si exporta su producto a otro sandbox, también debe exportar su configuración de servicios.

9. En el submenú del sandbox, seleccione **Service Configuration**. Use esta página para configurar los servicios de XBOX para su título en el sandbox actual.

## Identificación y definición de los eventos para sus escenarios

En Partner Center, antes de poder definir las reglas que implementan las experiencias de jugador que queremos lograr, debemos identificar y definir los eventos que impulsarán esas experiencias.

En el modelo basado en eventos, los logros y las tablas de clasificación se basan en estadísticas de jugador. Por lo tanto, podemos observar las estadísticas que definiremos para ver qué eventos deberá enviar nuestro título.

Para impulsar las experiencias que definiremos en este ejemplo, usaremos un evento que enviamos al final de cada vuelta en una carrera.

Llamemos a este evento `LapCompleted`. Usaremos este evento para impulsar nuestras experiencias personalizadas. Para impulsar esas experiencias, también definiremos los campos siguientes como parte de nuestro evento `LapCompleted`.

* **LapTime**: un campo que indica el tiempo en minutos para completar una vuelta.

* **CarModel**: un campo de cadena que indica el modelo del coche que se usa para completar la vuelta.

* **WeatherCondition**: un campo de cadena que identifica la condición meteorológica de la pista cuando se completó la vuelta.

* **TrackId**: el identificador de la pista en la que se completó la vuelta.

Ahora definiremos este evento en Partner Center.

1. En Partner Center, en el panel izquierdo, seleccione **Test Sandbox** > **Service Configuration** > **Events & Stat Rules**.

2. Seleccione **New** para crear un evento nuevo. Aparece el cuadro de diálogo **Add New Event**, que se muestra a continuación.

   <img src="https://mintcdn.com/microsoft-4404708b/gzrdvT5kpqAXKEQt/images/gdk/services/AddNewEvent-XDP.png?fit=max&auto=format&n=gzrdvT5kpqAXKEQt&q=85&s=d620d2ea30f73bfb53fcebfe7356f526" alt="Captura de pantalla del cuadro de diálogo Add New Event en Partner Center." width="350" height="560" data-path="images/gdk/services/AddNewEvent-XDP.png" />

3. Seleccione **Base** en **Base Event**.

4. Escriba *LapCompleted* en **Event Name**.

5. Opcionalmente, escriba una descripción para el evento en **Description**.

6. Seleccione **Add Event Field**.

7. Escriba *LapTime* en **Field Name** y, a continuación, especifique el **Type** como **Double**, como se muestra a continuación.

   <img src="https://mintcdn.com/microsoft-4404708b/gzrdvT5kpqAXKEQt/images/gdk/services/LapTimeField-XDP.png?fit=max&auto=format&n=gzrdvT5kpqAXKEQt&q=85&s=1ed0a8c599be8bd3551ce963df1945dd" alt="Captura de pantalla del cuadro de diálogo Add New Event Field en Partner Center." width="352" height="439" data-path="images/gdk/services/LapTimeField-XDP.png" />

8. Seleccione **Add Event Field**.

9. Repita el proceso para agregar los campos de evento siguientes.

   * *CarModel*: **UnicodeString**

   * *WeatherCondition*: **UnicodeString**

   * *TrackId*: **Int32**

   Su evento debería tener un aspecto similar al de la captura de pantalla siguiente.

   <img src="https://mintcdn.com/microsoft-4404708b/gzrdvT5kpqAXKEQt/images/gdk/services/LapCompletedEvent-XDP.png?fit=max&auto=format&n=gzrdvT5kpqAXKEQt&q=85&s=c30cfa0f508b2a7126abce03dccfda91" alt="Captura de pantalla del evento LapCompleted recién definido en Partner Center." width="347" height="644" data-path="images/gdk/services/LapCompletedEvent-XDP.png" />

10. Seleccione **Save Event** para guardar el evento en su sandbox.

## Diseño de reglas de estadísticas

Ahora que hemos definido las experiencias de jugador, podemos empezar a crear las reglas de estadísticas que implementan esas experiencias. Dado que usamos `LapTime` para los tres escenarios (estadísticas destacadas, logros y tablas de clasificación), lo configuraremos primero.

Esta estadística se mostrará como una estadística destacada (también conocida como estadística principal) y también se usará para una tabla de clasificación global con metadatos adicionales.

El juego desencadena eventos en el juego cuando ocurren determinadas acciones en él y se consideran los datos sin procesar para crear estadísticas. Cada evento debe crear o actualizar al menos una estadística.
(Para obtener más información sobre cómo generar varias estadísticas en un único evento, consulte [Información general sobre las estadísticas basadas en eventos](/services/xbox-services/player-data/stats-leaderboards/event-based/live-stats-eb-overview)).

1. En la página **Events & Stat Rules**, seleccione el evento **LapCompleted** en la lista de eventos.

2. Seleccione **New** (a la derecha de **Stat Rules**) para crear una nueva regla de estadística. Se basará en el evento seleccionado. Aparece el cuadro de diálogo **Add Stat Rule**, que se muestra a continuación.

   <img src="https://mintcdn.com/microsoft-4404708b/gzrdvT5kpqAXKEQt/images/gdk/services/AddNewStatRule-XDP.png?fit=max&auto=format&n=gzrdvT5kpqAXKEQt&q=85&s=1f3c0e2cdfb3a9df22550c6a07a80d44" alt="Captura de pantalla del cuadro de diálogo Add Stat Rule en Partner Center." width="473" height="474" data-path="images/gdk/services/AddNewStatRule-XDP.png" />

3. Escriba *FastestLap* en **Stat Rule Name**.

4. Dado que queremos que otras aplicaciones y títulos accedan a las estadísticas creadas por esta regla, active la casilla **Open read access to any title**.

   Las reglas de estadísticas tienen una lógica que define cómo el evento crea o actualiza la estadística. Dado que queremos hacer un seguimiento de la vuelta más rápida, solo queremos actualizar el valor de la estadística si el nuevo tiempo de vuelta es inferior al tiempo de vuelta más rápido existente.

5. Para ello, seleccione **Min** en **Operator** y **LapTime** en **Parameter**, como se muestra a continuación.

   <img src="https://mintcdn.com/microsoft-4404708b/gzrdvT5kpqAXKEQt/images/gdk/services/MinLapTime-XDP.png?fit=max&auto=format&n=gzrdvT5kpqAXKEQt&q=85&s=93ff9ebb88b0843595386481e4ae455c" alt="Captura de pantalla de las selecciones de Operator y Parameter para una regla de estadística en Partner Center." width="465" height="470" data-path="images/gdk/services/MinLapTime-XDP.png" />

Por último, debemos asegurarnos de que el evento contenga todos los datos adicionales (conocidos como *contexto de estadística* o *metadatos*) que necesitamos para esta estadística específica: el coche del jugador, la pista y las condiciones meteorológicas.

6. Para agregar el campo a los metadatos, seleccione **CarModel** y, a continuación, seleccione **Add Event Field**.

7. Repita esto para los campos **WeatherCondition** y **TrackId**, como se muestra a continuación.

   <img src="https://mintcdn.com/microsoft-4404708b/gzrdvT5kpqAXKEQt/images/gdk/services/FastestLapStatRule-XDP.png?fit=max&auto=format&n=gzrdvT5kpqAXKEQt&q=85&s=9d517a1980e04cff73ff42bbc058a5b9" alt="Captura de pantalla de la regla de estadística FastestLap con metadatos en Partner Center." width="462" height="537" data-path="images/gdk/services/FastestLapStatRule-XDP.png" />

8. Seleccione **Add Stat Rule** para crear la regla de estadística.

## Configuración de estadísticas destacadas, tablas de clasificación y logros

### Estadísticas destacadas

Ahora que la regla de estadística está completa, queremos que la estadística aparezca en la pestaña de logros de GameHub. Por lo tanto, debemos configurar una estadística destacada (conocida como estadística principal, o hero stat, en Partner Center).

1. En Partner Center, en el panel izquierdo, seleccione **Test Sandbox** > **Service Configuration** > **Hero Stats**.

2. Seleccione **New** para agregar una nueva estadística destacada/principal.

3. Escriba *Fastest Lap* en **Hero Stat Display Name**.

4. Seleccione **ShortTimespan** en **Display Format**. Seleccione **Seconds** en **Display Units**.

5. Seleccione **Best** en **Display Semantic**. Esto indica a las aplicaciones complementarias que el valor representa la mejor puntuación de la estadística.

6. Seleccione **Select an Instance** y, a continuación, seleccione **FastestLap** en **Stat Instance**. Esto indica que la estadística destacada se basa en el valor de la estadística `FastestLap`.

7. Escriba *1* en **Ordinal**. Esto indica que esta estadística destacada debe mostrarse en primer lugar al enumerar las estadísticas destacadas.

8. Seleccione **Ascending** en **Sort Order**. Esto indica que los valores más bajos son mejores que los más altos, como se muestra a continuación.

   <img src="https://mintcdn.com/microsoft-4404708b/gzrdvT5kpqAXKEQt/images/gdk/services/FastestLapHeroStat-XDP.png?fit=max&auto=format&n=gzrdvT5kpqAXKEQt&q=85&s=10ef730c295cc621a9489e24dab801f1" alt="Captura de pantalla de la estadística principal Fastest Lap en Partner Center." width="462" height="422" data-path="images/gdk/services/FastestLapHeroStat-XDP.png" />

9. Seleccione **Add New Hero Stat** para crear la estadística destacada/principal.

### Tabla de clasificación global

Con la misma estadística de tiempo de vuelta, podemos configurar una tabla de clasificación para que cada jugador pueda ver cómo se clasifica su tiempo de vuelta frente a todos los demás jugadores del mundo.

1. En Partner Center, en el panel izquierdo, seleccione **Test Sandbox** > **Service Configuration** > **Leaderboards**.

2. Seleccione **New** para crear una nueva tabla de clasificación global.

3. Escriba *FastestLap* en **Leaderboard ID**.

4. Seleccione **Select an Instance**, seleccione la regla de estadística **FastestLap** que creamos anteriormente y, a continuación, seleccione **Add Stat Instance**.

5. Seleccione **Ascending** en **Sort**, como se muestra a continuación. Esta selección indica que los tiempos más bajos son mejores.

   <img src="https://mintcdn.com/microsoft-4404708b/gzrdvT5kpqAXKEQt/images/gdk/services/FastestLapLeaderboard-XDP.png?fit=max&auto=format&n=gzrdvT5kpqAXKEQt&q=85&s=397f88a12dc095812ec3f83a5da1c3ec" alt="Captura de pantalla de la tabla de clasificación Fastest Lap en Partner Center." width="462" height="321" data-path="images/gdk/services/FastestLapLeaderboard-XDP.png" />

6. Seleccione **Add New Leaderboard** para crear una nueva tabla de clasificación global.

A medida que se actualizan las estadísticas de los jugadores, la tabla de clasificación también se actualiza para reflejar cualquier cambio en las clasificaciones.

Si existen estadísticas de jugador cuando crea la tabla de clasificación, la actualización de la nueva tabla de clasificación con estas estadísticas puede tardar varias horas.

### Logros basados en eventos

Se recomienda usar logros administrados por el título. Sin embargo, para los títulos que todavía usan logros basados en eventos, puede usar eventos para impulsar el desbloqueo de logros en el servicio, como se indica a continuación.

**Para usar eventos para desbloquear logros basados en eventos**

1. En Partner Center, en el panel izquierdo, seleccione **Test Sandbox** > **Service Configuration** > **Achievements & Challenges**.

2. Seleccione **New** para agregar un logro nuevo.

3. Escriba *Under 60 seconds* en **Achievement Name**.

4. Escriba *Completed a lap in under 60 seconds* en **Description**. Esta descripción se muestra a los jugadores cuando se desbloquea el logro.

5. Escriba *Complete a lap in under 60 seconds* en **Not Achieved Description**. Esta descripción se muestra a los jugadores cuando el logro todavía está bloqueado.

6. Cargue un archivo .png de 1920 × 1080 píxeles que sirva como **Achievement Icon**, como se muestra a continuación.

   <img src="https://mintcdn.com/microsoft-4404708b/gzrdvT5kpqAXKEQt/images/gdk/services/Under60Achievement-XDP.png?fit=max&auto=format&n=gzrdvT5kpqAXKEQt&q=85&s=a5b278e08b2cb2ff9659f51e309cbcf6" alt="Captura de pantalla del cuadro de diálogo Add New Achievement en Partner Center." width="338" height="595" data-path="images/gdk/services/Under60Achievement-XDP.png" />

7. Seleccione **Add Achievement** para crear el logro.

8. Asegúrese de que el logro **Under 60 seconds** esté seleccionado en la lista de logros. Seleccione **New** a la derecha de **Rewards** para dar al jugador una recompensa por desbloquear el logro.

9. Dé al jugador 20 puntos de gamerscore por desbloquear este logro. En **Reward Type**, seleccione **Gamerscore**.

10. Escriba *20* en **Value**, como se muestra a continuación.

    <img src="https://mintcdn.com/microsoft-4404708b/gzrdvT5kpqAXKEQt/images/gdk/services/Under60AchievementReward-XDP.png?fit=max&auto=format&n=gzrdvT5kpqAXKEQt&q=85&s=470435fd47f489a6e962741d921d6be8" alt="Captura de pantalla del cuadro de diálogo Add New Award en Partner Center." width="462" height="250" data-path="images/gdk/services/Under60AchievementReward-XDP.png" />

11. Seleccione **Add Reward**.

12. Asegúrese de que el logro **Under 60 seconds** siga seleccionado en la lista de logros. Seleccione **New** a la derecha de **Rules** para definir las condiciones que desbloquean el logro.

13. Escriba *Under 60 seconds rule* en **Rule Name**. El jugador no ve este valor, por lo que puede llamarlo como quiera.

14. Seleccione **Min** en **Action**. Esto indica que el logro se desbloquea cuando la instancia de estadística seleccionada es menor o igual que el valor de umbral.

15. Escriba *60* en **Threshold**.

16. Seleccione **Select an Instance**, seleccione la regla de estadística **FastestLap** y, a continuación, seleccione **Add Stat Instance**.

17. Seleccione **Add Rule** para crear la regla para el logro, como se muestra a continuación.

    <img src="https://mintcdn.com/microsoft-4404708b/gzrdvT5kpqAXKEQt/images/gdk/services/Under60AchievementRule-XDP.png?fit=max&auto=format&n=gzrdvT5kpqAXKEQt&q=85&s=09ee171845326525664f12f8e2c8d58d" alt="Captura de pantalla del cuadro de diálogo Add New Rule para un logro en Partner Center." width="462" height="338" data-path="images/gdk/services/Under60AchievementRule-XDP.png" />

### Adición de código para enviar el evento desde su juego

Ahora que hemos definido el evento `LapCompleted` que los servicios de XBOX usarán para actualizar nuestros escenarios de jugador, debemos agregar código al juego para enviar el evento cuando un jugador complete una vuelta de carrera en el juego.

Para escribir un evento, llame a la función [XblEventsWriteInGameEvent](/reference/live/xsapi-c/events_c/functions/xbleventswriteingameevent) con el nombre de evento `LapCompleted`.

**API de C plana**

```cpp theme={null}
    HRESULT hr = XblEventsWriteInGameEvent(
        xboxLiveContext,
        "LapCompleted",
        R"({"DifficultyLevelId":100, "GameplayModeId":"Adventure"})",
        R"({"LocationX":1,"LocationY":1})"
    );
```

## Consulte también

[Información general sobre los eventos](/services/xbox-services/player-data/stats-leaderboards/event-based/events/live-game-events)
