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

# Inicio rápido de PlayFab Online Subsystem (OSS)

> Inicio rápido de PlayFab Online Subsystem en Unreal Engine, que abarca la configuración del chat de voz de Party, los lobbies y el emparejamiento con el SDK de Multiplayer.

# Inicio rápido: PlayFab Online Subsystem

Este artículo le ayuda a configurar y usar características multijugador de PlayFab como Lobby, Matchmaking y Party para juegos creados con Unreal Engine 4 o Unreal Engine 5. Para ver la lista completa de plataformas y versiones compatibles en Unreal Engine 4 o Unreal Engine 5, consulte [Plataformas compatibles](/services/playfab/multiplayer/networking/party-unreal-engine-oss-overview).

Después de seguir los pasos pertinentes que se describen en esta página para sus plataformas de destino, estará listo para empezar a usar el PlayFab Online Subsystem (PF OSS). La autenticación, las redes, el VOIP, la agrupación en lobbies y el emparejamiento se gestionan en su nombre sin necesidad de otros cambios.

## Descarga e instalación de PlayFab Online Subsystem

Vaya a [PlayFab Online Subsystem](https://github.com/PlayFab/PlayFabMultiplayerUnreal) para descargar o clonar el código fuente de PF OSS. El nombre del repositorio descargado o clonado es PlayFabMultiplayerUnreal. Debe cambiarse el nombre del repositorio a OnlineSubsystemPlayFab.

## Lo que necesita

* **TitleID de PlayFab:** si no tiene un TitleID configurado para los kits de desarrollo de software (SDK) de PlayFab Party y Multiplayer, consulte [Habilitación de PlayFab Party](/services/playfab/multiplayer/networking/enable-party).

### Microsoft Game Development Kit (GDK), PC, Switch, PlayStation®5 y PlayStation®4

* **Bibliotecas de PlayFab Party y de Lobby y Matchmaking específicas de la plataforma:** consulte [Obtención de las bibliotecas de PlayFab Party y Multiplayer](/services/playfab/multiplayer/networking/party-unreal-engine-oss-obtaining-playfab-party-libraries).

## Configuración inicial

### Base de código de Unreal Engine

* Copie la carpeta OnlineSubsystemPlayFab y su contenido en el directorio de Unreal Engine en **Engine\Plugins\Online**.
* Ejecute `GenerateProjectFiles.bat` para crear los archivos de proyecto del motor.
* Cargue el proyecto en Visual Studio seleccionando el nuevo archivo `UE5.sln`.
* Establezca la configuración de la solución en **Development Editor** y la plataforma de la solución en **Win64**. Seleccione el destino **Unreal Engine 5** y, después, seleccione **Build**.

### Base de código del juego

* Para agregar OnlineSubsystemPlayFab a su lista de complementos, aplique los siguientes cambios a la sección Plugins del archivo de proyecto.
  * Quite las plataformas en las que no vaya a publicar
  * Use XboxOneGDK en lugar de XB1 si usa Unreal Engine 4. Unreal Engine 5 deja en desuso XboxOneGDK

```json theme={null}
{
    "Name": "OnlineSubsystemPlayFab",
    "Enabled": true,
    "PlatformAllowList": [
    "XB1",
    "WinGDK",
    "XSX",
    "Win64",
    "Switch",
    "PS4",
    "PS5"
    ],
    "SupportedTargetPlatforms": [
    "XB1",
    "WinGDK",
    "XSX",
    "Win64",
    "Switch",
    "PS4",
    "PS5"
    ]
}
```

* Genere el archivo de solución del juego seleccionando el archivo `{ProjectName}.uproject` y, después, seleccione **Switch Unreal Engine Version** hacia la ruta del código de Unreal Engine.

## Configuración del juego

* Independientemente de la plataforma de destino, su juego debe configurar ciertos valores específicos de PlayFab en el archivo INI del destino de plataforma previsto (ubicado en \[yourGameDirectory]/Platforms/\[yourPlatform]/Config).
  * **XBOX Series X GDK:** XSXEngine.ini
  * **PC GDK:** WinGDKEngine.ini
  * **XBOX One GDK:** XB1Engine.ini (o XboxOneGDKEngine.ini si usa Unreal Engine 4)
  * **PC Steam:** WindowsEngine.ini (o búsquelo en \[yourGameDirectory]/Config/Windows)
  * **Nintendo Switch** SwitchEngine.ini
  * **PS4™** PS4Engine.ini
  * **PS5™** PS5Engine.ini
* Reemplace las secciones INI en la configuración si ya existen (por ejemplo, Engine.GameEngine) por las que se presentan en las secciones siguientes.
* Asegúrese de reemplazar todos los campos *\<REPLACE ME>* por sus datos:
* En UE 5.6 y versiones posteriores, el parámetro `DriverClassName` requiere el prefijo "/Script/". Por ejemplo, use `"/Script/OnlineSubsystemPlayFab.PlayFabNetDriver"` en lugar de `"OnlineSubsystemPlayFab.PlayFabNetDriver"`.

```ini theme={null}
[OnlineSubsystemPlayFab]
bEnabled=true
PlayFabTitleID=<REPLACE ME with your PlayFab title ID>
MaxDeviceCount=<REPLACE ME with your max player count (note: split screen is still 1 device). In the example of an 8 player game, this would be 8.>
MaxDevicesPerUserCount=<REPLACE ME with your max player count per box (note: split screen is still 1 device) In the example of an 8 player game, this would be 1.>
MaxEndpointsPerDeviceCount=<REPLACE ME with your max player count per box (note: split screen is still 1 device)  In the example of an 8 player game, this would be 1.>
MaxUserCount=<REPLACE ME with your max player count (note: split screen is still 1 device)  In the example of an 8 player game, this would be 8.>
MaxUsersPerDeviceCount=<REPLACE ME with your max player count per box (note: split screen is still 1 device)  In the example of an 8 player game, this would be 1.>
DirectPeerConnectivityOptions=<REPLACE ME with your connectivity options, in the form of an array of strings. The default case corresponds to the following:
+DirectPeerConnectivityOptions=AnyPlatformType
+DirectPeerConnectivityOptions=AnyEntityLoginProvider.
If you want to disable P2P and use cloud relay instead, set DirectPeerConnectivityOptions=None>
bHasPlayFabVoiceEnabled=<REPLACE ME with true/false>

[/Script/OnlineSubsystemPlayFab.PlayFabNetDriver]
NetConnectionClassName="OnlineSubsystemPlayFab.PlayFabNetConnection"
ReplicationDriverClassName="<REPLACE ME with your existing replication driver class name>" . Skip if the game doesn't have a replication driver class (https://docs.unrealengine.com/5.2/en-US/replication-graph-in-unreal-engine/).
ConnectionTimeout=15.0
InitialConnectTimeout=30.0

[/Script/Engine.GameEngine]
!NetDriverDefinitions=ClearArray
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/OnlineSubsystemPlayFab.PlayFabNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
```

## Consideraciones específicas de la plataforma

Con todo eso hecho, ya casi hemos terminado. Solo quedan por establecer algunos parámetros clave específicos de la plataforma.

### GDK

Al desarrollar juegos con el GDK, configure los servicios de plataforma.

```ini theme={null}
[OnlineSubsystem]
DefaultPlatformService=PlayFab
NativePlatformService=GDK
```

### Steam

Si desarrolla juegos para Win64 con Steam, defina sus servicios de plataforma.

```ini theme={null}
[OnlineSubsystem]
DefaultPlatformService=PlayFab
NativePlatformService=Steam
```

### Switch

Para obtener más información sobre Switch, consulte el archivo [ReadMe.md](https://dev.azure.com/PlayFabPrivate/Switch/_git/PlayFabMultiplayerUnrealSwitch?path=/README.md) que se incluye con el PlayFab OSS para Switch. Si no tiene acceso, puede [solicitar acceso](/services/playfab/sdks/request-access-for-sdks-samples) a nuestros repositorios privados.

### PS5™ y PS4™

Para obtener más información sobre PS5™ y PS4™, consulte el archivo [ReadMe.md](https://dev.azure.com/PlayFabPrivate/PS5/_git/PlayFabMultiplayerUnrealPlayStation?path=/README.md) que se incluye con el PlayFab OSS para PS5™ y PS4™. Si no tiene acceso, puede [solicitar acceso](/services/playfab/sdks/request-access-for-sdks-samples) a nuestros repositorios privados.

### Multiplataforma

Si su juego usa la compatibilidad con redes multiplataforma de PlayFab, defina qué plataformas permite conectar.

```ini theme={null}
[/Script/OnlineSubsystemUtils.OnlineEngineInterfaceImpl]
!CompatibleUniqueNetIdTypes=ClearArray
+CompatibleUniqueNetIdTypes=STEAM
+CompatibleUniqueNetIdTypes=GDK
+CompatibleUniqueNetIdTypes=SWITCH
+CompatibleUniqueNetIdTypes=PS4
+CompatibleUniqueNetIdTypes=PS5
```

Todas las plataformas permiten VoIP de forma predeterminada. Para deshabilitar VoIP en una plataforma específica, agregue el nombre del modelo de plataforma a su archivo de configuración de Unreal Engine, como se muestra en el ejemplo siguiente.

```ini theme={null}
[OnlineSubsystemPlayFabVoiceChatDisabledPlatforms]
!Platforms=ClearArray
+Platforms=WIN64
+Platforms=STEAM
+Platforms=SWITCH
+Platforms=PS4
+Platforms=PS5
```

Estos pasos completan la configuración del OSS necesaria para usarlo en su juego.

## Uso en el código del juego

<Note>
  PlayFab Online Subsystem solo admite el nombre de la sesión de juego como `NAME_GameSession`
</Note>

De forma similar al uso de otros complementos de Online Subsystem:

Agregue `PublicDependencyModuleNames.AddRange(new string[] { "OnlineSubsystem", "OnlineSubsystemUtils" });` en Game.Build.cs y, a continuación, úselo de la misma manera que otros complementos del juego.

Código de ejemplo en GameSession.cpp:

```cpp theme={null}
#include "OnlineSubsystem.h"
#include "OnlineSubsystemUtils.h"

...

bool Game::JoinSession(const FUniqueNetIdPtr UserId, FName SessionName, const FOnlineSessionSearchResult& SearchResult)
{

    IOnlineSubsystem* OnlineSub = Online::GetSubsystem(GetWorld()); // Using OnlineSubsystemPlayFab plugin
    if (OnlineSub)
    {
        IOnlineSessionPtr Sessions = OnlineSub->GetSessionInterface(); // Using OnlineSessionInterfacePlayFab.h
        if (Sessions.IsValid() && UserId.IsValid())
        {
            // ...
        }
    }
    // ...
}
```

Código de ejemplo en GameFriends.cpp:

```cpp theme={null}
#include "OnlineSubsystem.h"
#include "OnlineSubsystemUtils.h"

...

void Game::ViewFriendProfile()
{
    IOnlineSubsystem* OnlineSub = Online::GetSubsystem(GetWorld()); // Using OnlineSubsystemPlayFab plugin
    if (OnlineSub)
    {
        IOnlineIdentityPtr Identity = OnlineSub->GetIdentityInterface(); // Using OnlineIdentityInterfacePlayFab.h
        if (Identity.IsValid() && Friends.IsValidIndex(FriendIndex))
        {
            // ....
        }
    }
}
```

## Solución de problemas

Maneras de ayudarle a solucionar problemas.

### Compilaciones instaladas de Unreal Engine

Los usuarios pueden enfrentarse a problemas al intentar crear una compilación instalada de Unreal Engine con OnlineSubsystemPlayFab en las variantes de compilación de GDK. Proporcionamos las siguientes instrucciones para superar correctamente este problema hasta que haya una solución más completa.

**Si usa Unreal Engine 5.4, 5.5, 5.6 o 5.7:**

* Es posible que encuentre el siguiente error en tiempo de ejecución: `Runtime dependency Party.dll is configured to be staged from C:\Program Files (x86)\Microsoft GDK\<version>\Party.dll and Engine\Plugins\Online\OnlineSubsystemPlayFab\Platforms\GDK\Redist\Party.dll`
* Vaya a Engine\Platforms\GDK\Plugins\Online\OnlineSubsystemGDK\\
* Abra OnlineSubsystemGDK.uplugin y establezca `PlayFabParty` como deshabilitado:

```json theme={null}
{
    "Name": "PlayFabParty",
    "Enabled": false
}
```

* Vaya a Engine\Platforms\GDK\Plugins\Online\OnlineSubsystemGDK\Source\\
* Abra OnlineSubsystemGDK.Build.cs y comente la inclusión de `PlayFabParty`:

```csharp theme={null}
if (Target.bCompileAgainstEngine)
{
    //PublicDependencyModuleNames.Add("PlayFabParty");
}
```

**Si usa Unreal Engine 5.0 - 5.3:**

* Localice el directorio donde está instalado Unreal Engine en la máquina.
* Vaya a Engine\Platforms\GDK\Plugins\Online\PlayFabParty
* Abra PlayFabParty.uplugin y actualice la configuración de Modules con **PlatformDenyList**:

```ini theme={null}
"Modules": [
        {
            "Name": "PlayFabParty",
            "Type": "Runtime",
            "LoadingPhase": "Default",
            "HasExplicitPlatforms": true,
            "PlatformDenyList": [ "WinGDK", "Win64" ]
        }
    ],
```

* Repita este proceso para XB1 (PlayFabParty\_XB1.uplugin) y XSX (PlayFabParty\_XSX.uplugin) si estas plataformas son necesarias para la compilación instalada. Si Win64 también es una plataforma necesaria para la compilación instalada, agregue Win64 en la matriz de **PlatformDenyList**.

**Si usa Unreal Engine 4.27+:**

* Localice el directorio donde está instalado Unreal Engine en la máquina.
* Vaya a Engine\Platforms\GDK\Plugins\Online\PlayFabParty
* Abra PlayFabParty.uplugin
* Reemplace la clave **WhitelistPlatforms** por **BlacklistPlatforms**
* Repita el proceso para XboxOneGDK (PlayFabParty\_XboxOneGDK.uplugin) y XSX (PlayFabParty\_XSX.uplugin) si estas plataformas son necesarias para la compilación instalada. Si Win64 también es una plataforma necesaria para la compilación instalada, agregue Win64 en la matriz de **BlacklistPlatforms**.

Ejemplo de configuración de Modules en PlayFabParty.uplugin para Unreal Engine 4.27+:

```ini theme={null}
"Modules": [
       {
            "Name": "PlayFabParty",
            "Type": "Runtime",
            "LoadingPhase": "Default",
            "BlacklistPlatforms": ["WinGDK", "Win64"]
        }
    ],
```

### Error de protocolo de enlace en Steam

Si ve errores de protocolo de enlace (como `LogHandshake: IncomingConnectionless: Error reading handshake packet`), consulte esta [publicación del foro de Unreal Engine](https://forums.unrealengine.com/t/ue-5-1-steam-sockets-problem/696726) para comprobar la configuración.

## Flujo de trabajo de OnlineSubsystemPlayFab

Los pasos descritos en la sección [Consideraciones específicas de la plataforma](#platform-specific-considerations) le piden que incluya:

```ini theme={null}
[OnlineSubsystem]
DefaultPlatformService=PlayFab
```

El módulo OnlineSubsystemModule de Unreal Engine crea una instancia del subsistema en línea para PlayFab y comienza a crear ⁠PlayFabSingleton. En este punto, el SDK se inicializa en⁠ `FOnlineSubsystemPlayFab::Init()`,
donde inicializa los SDK de Party y Multiplayer con el TitleID de PlayFab (este titleID se define dentro del archivo de [configuración del juego](#game-configuration)). Durante la inicialización, se ejecutará `⁠CreatePlayFabSocketSubsystem()` como subsistema en línea principal.

Flujo de trabajo del SDK de Multiplayer: `FOnlineSubsystemPlayFab::Init()` inicializa el singleton del SDK multijugador `InitializeMultiplayer()` para su título. En `PlayFabLobby.cpp`, `FPlayFabLobby::DoWork()` procesa los
cambios de estado desencadenados por las API de Multiplayer (vea `Platforms/GDK/Include/PFLobby.h` para las API).

Flujo de trabajo del SDK de Party: `FOnlineSubsystemPlayFab::Init()` inicializa el singleton del SDK multijugador `InitializeParty()` para su título. En `OnlineSubsystemPlayFab.cpp`, `FOnlineSubsystemPlayFab::DoWork()` procesa los
cambios de estado desencadenados por las API de Party (vea `Platforms/GDK/Include/Party.h` para las API).

"PlayStation" es una marca comercial registrada o marca comercial de Sony Interactive Entertainment Inc.

"PS4" es una marca comercial registrada o marca comercial de Sony Interactive Entertainment Inc.

"PS5" es una marca comercial registrada o marca comercial de Sony Interactive Entertainment Inc.


## Related topics

- [Configuración de servidores dedicados con PlayFab Online Subsystem (OSS)](/es/services/playfab/multiplayer/networking/party-unreal-engine-oss-dedicated-servers.md)
- [Notas de la versión de PlayFab OnlineSubsystem para Unreal Engine](/es/services/playfab/multiplayer/networking/unreal-release-notes.md)
- [Azure PlayFab Party Online Subsystem para Unreal](/es/build/console-features/networking/game-mesh/party-unreal-online-subsystem.md)
- [PlayFab Online Subsystem (OSS)](/es/services/playfab/multiplayer/networking/party-unreal-engine-oss-overview.md)
- [Integración del complemento de PlayFab del Marketplace de Unreal Engine](/es/services/playfab/multiplayer/networking/party-unreal-engine-oss-playfab-plugin-integration.md)
