Unreal Steam

Enlace al repositorio de
GitHub

Integración del SDK de AppsFlyer con Unreal Steam

AppsFlyer permite a los marketers de gaming tomar mejores decisiones al proporcionarles potentes herramientas para realizar atribuciones multiplataforma.

La atribución de un juego requiere que este integre el SDK de AppsFlyer, que registra los primeros inicios, las sesiones consecutivas y los eventos in-app. Por ejemplo, los eventos de compra.
Te recomendamos que uses esta aplicación de muestra como referencia para integrar el SDK de AppsFlyer en tu juego de Unreal Steam. Nota: El código de ejemplo que sigue actualmente solo se admite en un entorno Windows.


Requisitos previos:

  • Unreal Engine 4.2x
  • SDK de Steamworks integrado dentro de tu UE4 (generalmente está incluido dentro de los recursos de terceros de UE4 y no es necesario descargarlo).
  • Cliente Steam instalado con un usuario activo.

AppsflyerSteamModule - Interfaz

AppsflyerSteamModule.h, incluido en appsflyer-unreal-steam-sample-app/AppsflyerSteamIntegrationFiles/AppsflyerSteamModule , contiene el código y la lógica necesarios para conectarse a los servidores de AppsFlyer y reportar eventos.

Init

Este método recibe tu clave API e ID de aplicación e inicializa el módulo AppsFlyer.

Firma de método

void init(const char* devkey, const char* appID)

Usage:

AppsflyerSteamModule()->init("DEV_KEY", "STEAM_APP_ID");

Arguments:

  • STEAM_APP_ID: se encuentra en SteamDB.
  • DEV_KEY: puedes obtenerlo del marketer o en AppsFlyer HQ.

Start

Este método envía las solicitudes de primeros inicios/sesiones a AppsFlyer.

Firma de método

void start(bool skipFirst = false)

Usage:

// without the flag
AppsflyerSteamModule()->start();

// with the flag
bool skipFirst = [SOME_CONDITION];
AppsflyerSteamModule()->start(skipFirst);

LogEvent

Este método recibe un nombre de evento y un objeto json y envía eventos in-app a AppsFlyer.

Firma de método

void logEvent(std::string event_name, json event_values)

Usage:

//set event name
std::string event_name = "af_purchase";
//set json string
std::string event_values = "{\"af_currency\":\"USD\",\"af_price\":6.66,\"af_revenue\":24.12}";
AppsflyerSteamModule()->logEvent(event_name, event_values);

IsInstallOlderThanDate

Este método recibe una cadena de fecha y devuelve true si la fecha de modificación de la carpeta del juego es más antigua que la cadena de fecha. El formato de cadena de fecha es: "2023-January-01 23:12:34".

Firma de método

bool isInstallOlderThanDate(std::string datestring)

Usage:

// the modification date in this example is "2023-January-23 08:30:00"

// will return false
bool dateBefore = AppsflyerSteamModule()->isInstallOlderThanDate("2023-January-01 23:12:34");

// will return true
bool dateAfter = AppsflyerSteamModule()->isInstallOlderThanDate("2023-April-10 23:12:34");

Ejecución de la aplicación de muestra

  1. Abre el motor de UE4.
  2. Elige New Project (Nuevo proyecto) > Games (Juegos) > First Person (Primera persona).
  3. Selecciona C++ (en lugar de Blueprints).
  4. Nombra el proyecto AppsFlyerSample y haz clic en Create project (Crear proyecto).
  5. Sigue las instrucciones para implementar AppsFlyer en tu juego de Steam.
  6. Inicia la aplicación de muestra desde el editor del motor de UE4.
  7. Después de 24 horas, el panel de control se actualiza y muestra las instalaciones orgánicas y no orgánicas y los eventos in-app.

Implementación de AppsFlyer en tu juego de Steam

Setup

  1. Asegúrate de que Steam esté en los recursos de terceros de UE4. Aprender más
  2. Agrega las siguientes definiciones a Config/DefaultEngine.ini. Como referencia, consulta el archivo appsflyer-unreal-steam-sample-app/AppsflyerSteamIntegrationFiles/DefaultEngine.ini file.
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
DefaultPlatformService=Steam
bEnabled=true
SteamDevAppId=480 //replace "480" with your steam app id.
NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"
  1. En tu editor de Unreal, ve a Plugins, activa Online Subsystem Steam y reinicia el editor.
  2. Abre el proyecto en tu editor C++ preferido y en el archivo [YOUR-APP-NAME].Build.cs , y agrega OpenSSL, OnlineSubsystem y OnlineSubsystemSteam to your dependencies and HTTP as a private dependency:
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay", "OpenSSL", "OnlineSubsystem", "OnlineSubsystemSteam" });
PrivateDependencyModuleNames.Add("HTTP");
  1. En tus archivos de Unreal Project, bajo el directorio Source, crea un nuevo directorio llamado AppsflyerSteamModule.
  2. Copia los siguientes archivos desde appsflyer-unreal-steam-sample-app/AppsflyerSteamIntegrationFiles/AppsflyerSteamModule a la nueva carpeta:
  • AppsflyerModule.cpp
  • AppsflyerSteamModule.cpp
  • AppsflyerSteamModule.h
  • DeviceID.h
  • RequestData.h
  1. Genera archivos de proyecto para agregar OpenSSL. Aprender más.
  2. En el GameMode.h , agrega la StartPlay() function:
class AAppsFlyerSampleGameMode : public AGameModeBase
{
    GENERATED_BODY()

public:
    AAppsFlyerSampleGameMode();
    virtual void StartPlay() override;
};

  1. Abre la carpeta Source/AppsFlyerSample/AppsFlyerSampleGameMode.cpp y agrega el siguiente include a tu archivo GameMode.cpp file:
#include "AppsflyerSteamModule/AppsflyerSteamModule.cpp"
  1. Agrega la siguiente función, asegurándote de reemplazar el DEV_KEY and STEAM_APP_ID in the init: con los detalles de tu aplicación:
void AAppsFlyerSampleGameMode::StartPlay()
{
    Super::StartPlay();
    if (SteamAPI_Init()) {
        // init the AF module
        AppsflyerSteamModule()->init("DEV_KEY", "STEAM_APP_ID")

        // check whether the install date was not older than 2023-January-02 23:12:34
        bool isInstallOlderThanDate = AppsflyerSteamModule()->isInstallOlderThanDate("2023-January-02 23:12:34");

        // send the firstOpen/session event (if the install date is not older than the given date, the AF module will skip the first-open event)
        AppsflyerSteamModule()->start(!isInstallOlderThanDate);

        // Use the following code to send in-app event
        // set event name
        std::string event_name = "af_purchase";
         // set json string
        std::string event_values = "{\"af_currency\":\"USD\",\"af_price\":6.66,\"af_revenue\":24.12}";
        AppsflyerSteamModule()->logEvent(event_name, event_values);
    }
}
  1. Inicializa e inicia la integración de AppsFlyer.
  2. Reporta los eventos in-app.

Eliminación de Steam Cloud Saves (restablecer la atribución)

  1. Desactiva Steam Cloud.
  2. Elimina los archivos locales.