> ## 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.

# Primeiros passos com estatísticas baseadas em eventos

> Passo a passo inicial para configurar um evento e uma estatística do XBOX Live no Partner Center e, em seguida, adicionar código para enviar eventos e atualizar estatísticas.

Para títulos configurados no Partner Center com estatísticas baseadas em eventos, este tópico mostra como configurar um evento e uma estatística no Partner Center e, em seguida, adicionar código ao seu título para enviar eventos e atualizar estatísticas.

## Entrar no Partner Center

Os exemplos a seguir usam o Partner Center para configurar experiências de jogo XBOX.

Depois que sua empresa tiver um contrato para criar produtos para XBOX, configure seu conteúdo no Partner Center. Se sua empresa ainda não tiver acesso ao Partner Center e você estiver desenvolvendo um jogo, entre em contato com seu gerente de conta da Microsoft. Se você estiver desenvolvendo um aplicativo, entre em contato com XBOX App Partner Requests ([xboxapps@microsoft.com](mailto:xboxapps@microsoft.com)). Se você estiver trabalhando com o programa ID\@XBOX, entre em contato com ID Setup ([idsetup@microsoft.com](mailto:idsetup@microsoft.com)).

O programa ID\@XBOX permite que desenvolvedores de jogos qualificados de todos os tamanhos liberem sua criatividade publicando jogos digitais por conta própria no XBOX One (ou posterior). Isso dá aos estúdios as ferramentas e o suporte de que precisam para ajudar a maximizar seu sucesso. Para saber mais, acesse [https://www.xbox.com/Developers](https://www.xbox.com/Developers).

Depois de ter acesso ao Partner Center, a Microsoft precisará criar um grupo de produtos para o seu jogo. Seu gerente de conta da Microsoft pode ajudar nesse processo.

Depois que a Microsoft criar um grupo de produtos para o seu jogo, use o Partner Center para configurar os serviços XBOX para o seu jogo. A configuração dos serviços XBOX do seu jogo também é chamada de *configuração de serviço*.

Use as etapas a seguir para ir até o local no Partner Center em que você pode adicionar os eventos, estatísticas, conquistas e leaderboards do seu jogo.

1. Entre na sua conta no [Partner Center](https://developer.microsoft.com/dashboard/windows/overview).

2. Selecione o grupo de produtos que contém ou conterá seu jogo.

3. Na página **Product Group**, selecione seu jogo ou selecione **Add New Product** para criar uma nova entrada.

4. Se você estiver criando um novo produto, insira um nome para ele.

5. Para o acesso a recursos, selecione **Exclusive Resource Access (ERA)**.

6. Escolha se você precisa produzir mídia física para o jogo ou se ele será somente um download digital.

7. Selecione **Create Product**.

8. Na parte inferior do painel esquerdo, expanda a sandbox em que seu produto foi criado.

   As configurações de serviço são definidas no nível da sandbox. Se você exportar seu produto para outra sandbox, também precisará exportar sua configuração de serviço.

9. No submenu da sandbox, selecione **Service Configuration**. Use esta página para configurar os serviços XBOX para seu título na sandbox atual.

## Identificar e definir os eventos para seus cenários

No Partner Center, antes de podermos definir as regras que implementam as experiências de jogador que queremos alcançar, precisamos identificar e definir os eventos que acionarão essas experiências.

No modelo baseado em eventos, conquistas e leaderboards são baseados em estatísticas de jogador. Por isso, podemos analisar as estatísticas que vamos definir para ver quais eventos nosso título precisará enviar.

Para viabilizar as experiências que definiremos neste exemplo, usaremos um evento enviado ao final de cada volta em uma corrida.

Vamos chamar esse evento de `LapCompleted`. Usaremos esse evento para acionar nossas experiências personalizadas. Para viabilizar essas experiências, também definiremos os seguintes campos como parte do evento `LapCompleted`.

* **LapTime**: um campo que indica o tempo em minutos para concluir uma volta.

* **CarModel**: um campo de string que indica o modelo do carro usado para concluir a volta.

* **WeatherCondition**: um campo de string que identifica a condição climática da pista quando a volta foi concluída.

* **TrackId**: a ID da pista em que a volta foi concluída.

Agora vamos definir esse evento no Partner Center.

1. No Partner Center, no painel esquerdo, selecione **Test Sandbox** > **Service Configuration** > **Events & Stat Rules**.

2. Selecione **New** para criar um novo evento. A caixa de diálogo **Add New Event** é exibida, conforme mostrado a seguir.

   <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 tela da caixa de diálogo Add New Event no Partner Center." width="350" height="560" data-path="images/gdk/services/AddNewEvent-XDP.png" />

3. Selecione **Base** em **Base Event**.

4. Insira *LapCompleted* em **Event Name**.

5. Opcionalmente, insira uma descrição para o evento em **Description**.

6. Selecione **Add Event Field**.

7. Insira *LapTime* em **Field Name** e especifique o **Type** como **Double**, conforme mostrado a seguir.

   <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 tela da caixa de diálogo Add New Event Field no Partner Center." width="352" height="439" data-path="images/gdk/services/LapTimeField-XDP.png" />

8. Selecione **Add Event Field**.

9. Repita o processo para adicionar os seguintes campos de evento.

   * *CarModel*: **UnicodeString**

   * *WeatherCondition*: **UnicodeString**

   * *TrackId*: **Int32**

   Seu evento deve ficar parecido com a captura de tela a seguir.

   <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 tela do evento LapCompleted recém-definido no Partner Center." width="347" height="644" data-path="images/gdk/services/LapCompletedEvent-XDP.png" />

10. Selecione **Save Event** para salvar o evento na sua sandbox.

## Criar regras de estatística

Agora que definimos as experiências de jogador, podemos começar a criar as regras de estatística que implementam essas experiências. Como estamos usando `LapTime` para os três cenários (estatísticas em destaque, conquistas e leaderboards), vamos configurá-lo primeiro.

Essa estatística aparecerá como uma estatística em destaque (também conhecida como hero stat) e também será usada para um leaderboard global com metadados adicionais.

O jogo dispara eventos no jogo quando determinadas ações acontecem, e esses eventos são considerados os dados brutos para a criação de estatísticas. Pelo menos uma estatística deve ser criada ou atualizada por cada evento.
(Para obter mais informações sobre como gerar várias estatísticas em um único evento, veja [Visão geral das estatísticas baseadas em eventos](/pt-BR/services/xbox-services/player-data/stats-leaderboards/event-based/live-stats-eb-overview).)

1. Na página **Events & Stat Rules**, selecione o evento **LapCompleted** na lista de eventos.

2. Selecione **New** (à direita de **Stat Rules**) para criar uma nova regra de estatística. Ela será baseada no evento selecionado. A caixa de diálogo **Add Stat Rule** é exibida, conforme mostrado a seguir.

   <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 tela da caixa de diálogo Add Stat Rule no Partner Center." width="473" height="474" data-path="images/gdk/services/AddNewStatRule-XDP.png" />

3. Insira *FastestLap* em **Stat Rule Name**.

4. Como queremos que outros aplicativos e títulos acessem as estatísticas criadas por essa regra, marque a caixa de seleção **Open read access to any title**.

   As regras de estatística têm uma lógica que define como o evento cria ou atualiza a estatística. Como queremos acompanhar a volta mais rápida, só queremos atualizar o valor da estatística se o novo tempo de volta for menor que o tempo de volta mais rápido existente.

5. Para fazer isso, selecione **Min** em **Operator** e **LapTime** em **Parameter**, conforme mostrado a seguir.

   <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 tela das seleções de Operator e Parameter para uma regra de estatística no Partner Center." width="465" height="470" data-path="images/gdk/services/MinLapTime-XDP.png" />

Por fim, precisamos garantir que o evento contenha todos os dados extras (conhecidos como *contexto da estatística* ou *metadados*) de que precisamos para essa estatística específica: o carro, a pista e as condições climáticas do jogador.

6. Para adicionar o campo aos metadados, selecione **CarModel** e, em seguida, selecione **Add Event Field**.

7. Repita isso para os campos **WeatherCondition** e **TrackId**, conforme mostrado a seguir.

   <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 tela da regra de estatística FastestLap com metadados no Partner Center." width="462" height="537" data-path="images/gdk/services/FastestLapStatRule-XDP.png" />

8. Selecione **Add Stat Rule** para criar a regra de estatística.

## Configurar estatísticas em destaque, leaderboards e conquistas

### Estatísticas em destaque

Agora que a regra de estatística está concluída, queremos que a estatística apareça na guia Achievement do GameHub. Por isso, devemos configurar uma estatística em destaque (conhecida como hero stat no Partner Center).

1. No Partner Center, no painel esquerdo, selecione **Test Sandbox** > **Service Configuration** > **Hero Stats**.

2. Selecione **New** para adicionar uma nova estatística em destaque/hero stat.

3. Insira *Fastest Lap* em **Hero Stat Display Name**.

4. Selecione **ShortTimespan** em **Display Format**. Selecione **Seconds** em **Display Units**.

5. Selecione **Best** em **Display Semantic**. Isso indica aos aplicativos complementares que o valor representa a melhor pontuação da estatística.

6. Selecione **Select an Instance** e, em seguida, selecione **FastestLap** em **Stat Instance**. Isso indica que a estatística em destaque é baseada no valor da estatística `FastestLap`.

7. Insira *1* em **Ordinal**. Isso indica que essa estatística em destaque deve ser exibida primeiro ao listar as estatísticas em destaque.

8. Selecione **Ascending** em **Sort Order**. Isso indica que valores menores são melhores que valores maiores, conforme mostrado a seguir.

   <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 tela da hero stat Fastest Lap no Partner Center." width="462" height="422" data-path="images/gdk/services/FastestLapHeroStat-XDP.png" />

9. Selecione **Add New Hero Stat** para criar a estatística em destaque/hero stat.

### Leaderboard global

Usando a mesma estatística de tempo de volta, podemos configurar um leaderboard para que todos os jogadores possam ver como seu tempo de volta se classifica em relação a todos os outros jogadores do mundo.

1. No Partner Center, no painel esquerdo, selecione **Test Sandbox** > **Service Configuration** > **Leaderboards**.

2. Selecione **New** para criar um novo leaderboard global.

3. Insira *FastestLap* em **Leaderboard ID**.

4. Selecione **Select an Instance**, selecione a regra de estatística **FastestLap** que criamos anteriormente e, em seguida, selecione **Add Stat Instance**.

5. Selecione **Ascending** em **Sort**, conforme mostrado a seguir. Essa seleção indica que tempos menores são melhores.

   <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 tela do leaderboard Fastest Lap no Partner Center." width="462" height="321" data-path="images/gdk/services/FastestLapLeaderboard-XDP.png" />

6. Selecione **Add New Leaderboard** para criar um novo leaderboard global.

À medida que as estatísticas de jogador são atualizadas, o leaderboard também é atualizado para refletir qualquer alteração nas classificações.

Se houver estatísticas de jogador existentes quando você criar o leaderboard, pode levar várias horas para atualizar o novo leaderboard com essas estatísticas.

### Conquistas baseadas em eventos

Recomendamos que você use conquistas gerenciadas pelo título. No entanto, para títulos que ainda usam conquistas baseadas em eventos, você pode usar eventos para acionar o desbloqueio de conquistas no serviço, da seguinte maneira.

**Para usar eventos para desbloquear conquistas baseadas em eventos**

1. No Partner Center, no painel esquerdo, selecione **Test Sandbox** > **Service Configuration** > **Achievements & Challenges**.

2. Selecione **New** para adicionar uma nova conquista.

3. Insira *Under 60 seconds* em **Achievement Name**.

4. Insira *Completed a lap in under 60 seconds* em **Description**. Essa descrição é exibida aos jogadores quando a conquista é desbloqueada.

5. Insira *Complete a lap in under 60 seconds* em **Not Achieved Description**. Essa descrição é exibida aos jogadores enquanto a conquista ainda está bloqueada.

6. Carregue um arquivo .png de 1920 × 1080 pixels para servir como **Achievement Icon**, conforme mostrado a seguir.

   <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 tela da caixa de diálogo Add New Achievement no Partner Center." width="338" height="595" data-path="images/gdk/services/Under60Achievement-XDP.png" />

7. Selecione **Add Achievement** para criar a conquista.

8. Verifique se a conquista **Under 60 seconds** está selecionada na lista de conquistas. Selecione **New** à direita de **Rewards** para dar ao jogador uma recompensa por desbloquear a conquista.

9. Dê ao jogador 20 pontos de gamerscore por desbloquear essa conquista. Em **Reward Type**, selecione **Gamerscore**.

10. Insira *20* em **Value**, conforme mostrado a seguir.

    <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 tela da caixa de diálogo Add New Award no Partner Center." width="462" height="250" data-path="images/gdk/services/Under60AchievementReward-XDP.png" />

11. Selecione **Add Reward**.

12. Verifique se a conquista **Under 60 seconds** ainda está selecionada na lista de conquistas. Selecione **New** à direita de **Rules** para definir as condições que desbloqueiam a conquista.

13. Insira *Under 60 seconds rule* em **Rule Name**. Esse valor não é visto pelo jogador, então você pode chamá-lo como quiser.

14. Selecione **Min** em **Action**. Isso indica que a conquista é desbloqueada quando a instância de estatística selecionada é menor ou igual ao valor limite.

15. Insira *60* em **Threshold**.

16. Selecione **Select an Instance**, selecione a regra de estatística **FastestLap** e, em seguida, selecione **Add Stat Instance**.

17. Selecione **Add Rule** para criar a regra da conquista, conforme mostrado a seguir.

    <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 tela da caixa de diálogo Add New Rule de uma conquista no Partner Center." width="462" height="338" data-path="images/gdk/services/Under60AchievementRule-XDP.png" />

### Adicionar código para enviar o evento a partir do seu jogo

Agora que definimos o evento `LapCompleted` que os serviços XBOX usarão para atualizar nossos cenários de jogador, precisamos adicionar código ao jogo para enviar o evento quando um jogador concluir uma volta de corrida no jogo.

Para gravar um evento, chame a função [XblEventsWriteInGameEvent](/pt-BR/reference/live/xsapi-c/events_c/functions/xbleventswriteingameevent) com o nome de evento `LapCompleted`.

**API C simples**

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

## Veja também

[Visão geral dos eventos](/pt-BR/services/xbox-services/player-data/stats-leaderboards/event-based/events/live-game-events)


## Related topics

- [Configuração no portal de estatísticas e leaderboards baseados em eventos](/pt-BR/services/xbox-services/player-data/stats-leaderboards/event-based/config/live-statslb-eb-config-nav.md)
- [Configuração](/pt-BR/services/xbox-services/player-data/stats-leaderboards/event-based/config/index.md)
- [Estatísticas baseadas em eventos vs. estatísticas gerenciadas pelo título](/pt-BR/services/xbox-services/player-data/stats-leaderboards/live-stats-eb-vs-tm.md)
- [Visão geral das estatísticas baseadas em eventos](/pt-BR/services/xbox-services/player-data/stats-leaderboards/event-based/live-stats-eb-overview.md)
- [Obter estatísticas baseadas em eventos](/pt-BR/services/xbox-services/player-data/stats-leaderboards/event-based/how-to/live-getting-eb-stat.md)
