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

# Unreal Engine (No-Code) SDK

> Interacting with Particle Auth within applications made using Unreal Engine.

## Particle Auth for Unreal Engine

Extending beyond directly programmatic implementations, **Particle Auth** also features full support for **Unreal Engine 5** through a no-code interface, enabling the integration of Particle's Wallet-as-a-Service in a familiar and straightforward environment when building games on Unreal Engine.

***

## Getting Started

Getting started with the **Particle Auth Unreal Engine SDK** is simple, although you must manually download and install the SDK using the [`particle-unreal` GitHub repository](https://github.com/Particle-Network/particle-unreal).

To install:

1. Open your project's root directly (you'll find your `.uproject` file here).
2. Create a new directory, `Plugins`, or skip this step if `Plugins` already exists.
3. Navigate to [`Plugins/ParticleSDK` within `particle-unreal`](https://github.com/Particle-Network/particle-unreal/tree/main/Plugins) and copy it to your `Plugins` directory.
4. Open the **Unreal Engine 5** editor, head over to **Menu**, then **Edit**, and finally **Plugins**, in which you'll find an option to enable **ParticleSDK**.

***

## Examples of utilization

### Initialization

To begin, you'll need to create a config object with your `projectId`, `clientKey`, and `appId` filled in.

<Note>Find a guide on how to set up a project and find the required keys: [Dashboard Guide](/social-logins/dashboard).</Note>

After retrieving and setting the necessary values, you must call the `Init` function to complete the initialization. The `Init` function accepts the following parameters:

* **Default Browser Widget**: Typically set to `W_ExecuteWebBrowser`. If you prefer to use a custom `WebBrowser` blueprint, you can do so if it follows the structure of `W_ExecuteWebBrowser`.
* **In Config**: This links to the previously defined configuration object containing `projectId`, `clientKey`, and `appId`.
* **In Theme**: An optional JSON string for customization. For more details, see [Particle Auth Set Auth Theme](/social-logins/auth/desktop-sdks/web#usecustomize).
* **In Language**: Specifies the language used in the modal. Options include `en`, `zh-cn`, `zh-tw`, `ja`, or `ko`.
* **In Chain Name & In Chain Id**: Defines the primary chain to be used, either EVM or Solana. For details on specific `chainId` and `chainName` configurations, refer to [EVM Chains Structure](/social-logins/network-coverage).

<img className="block dark:hidden" src="https://mintcdn.com/particlenetwork-fccf74d2/qB8nYCJPEodZ_ZLJ/social-logins/auth/multi/images/unreal.png?fit=max&auto=format&n=qB8nYCJPEodZ_ZLJ&q=85&s=eb9a7a0d7a31ee4ad7336000c2d1b946" alt="Particle Network app Unreal." width="2010" height="548" data-path="social-logins/auth/multi/images/unreal.png" />

<img className="hidden dark:block" src="https://mintcdn.com/particlenetwork-fccf74d2/qB8nYCJPEodZ_ZLJ/social-logins/auth/multi/images/unreal.png?fit=max&auto=format&n=qB8nYCJPEodZ_ZLJ&q=85&s=eb9a7a0d7a31ee4ad7336000c2d1b946" alt="Particle Network app Unreal." width="2010" height="548" data-path="social-logins/auth/multi/images/unreal.png" />

### Login

The `Login` function is the core method for onboarding and account creation/sign-in within **Particle Auth** on **Unreal Engine**. It supports social logins and includes the following parameters:

* **Preferred Auth Type:** (Optional) Specifies the authentication method. Options include:
  * `phone` for phone-based logins (sends a verification text and links the account to a phone number).
  * `email` for email-based logins (sends a verification email and links the account to an email address).
  * `jwt` for custom authentication using JWTs.

* **Account:** (Optional) Used to pass the expected values for an email address, phone number, or JWT.

Upon successful login, the function returns a **JSON** string containing detailed user information (such as email or phone, addresses, UUID, token, etc.) as event data.

<img className="block dark:hidden" src="https://mintcdn.com/particlenetwork-fccf74d2/qB8nYCJPEodZ_ZLJ/social-logins/auth/multi/images/unreal2.png?fit=max&auto=format&n=qB8nYCJPEodZ_ZLJ&q=85&s=2ed2241f100efdb6743d2ffcd567cb5f" alt="Particle Network app Unreal." width="1634" height="540" data-path="social-logins/auth/multi/images/unreal2.png" />

<img className="hidden dark:block" src="https://mintcdn.com/particlenetwork-fccf74d2/qB8nYCJPEodZ_ZLJ/social-logins/auth/multi/images/unreal2.png?fit=max&auto=format&n=qB8nYCJPEodZ_ZLJ&q=85&s=2ed2241f100efdb6743d2ffcd567cb5f" alt="Particle Network app Unreal." width="1634" height="540" data-path="social-logins/auth/multi/images/unreal2.png" />

### Sign Message

To prompt a standard message signature (for general strings, not typed data), you can use the `SignMessage` blueprint.

This blueprint displays a signature request for the end user to confirm. The `SignMessage` function includes the following parameter:

* `Message`: The message to be signed by the user. For EVM chains, this should be a standard UTF-8 string. For Solana, it should be a base58 string.

Upon successful confirmation, the signature is returned as event data via `OnSignMessageEvent`.

<img className="block dark:hidden" src="https://mintcdn.com/particlenetwork-fccf74d2/qB8nYCJPEodZ_ZLJ/social-logins/auth/multi/images/unreal3.png?fit=max&auto=format&n=qB8nYCJPEodZ_ZLJ&q=85&s=304436c77e2575434c2b546cc54868a5" alt="Particle Network app Unreal." width="1652" height="668" data-path="social-logins/auth/multi/images/unreal3.png" />

<img className="hidden dark:block" src="https://mintcdn.com/particlenetwork-fccf74d2/qB8nYCJPEodZ_ZLJ/social-logins/auth/multi/images/unreal3.png?fit=max&auto=format&n=qB8nYCJPEodZ_ZLJ&q=85&s=304436c77e2575434c2b546cc54868a5" alt="Particle Network app Unreal." width="1652" height="668" data-path="social-logins/auth/multi/images/unreal3.png" />

### Sign and Send Transaction

`SignAndSendTransaction` is the core method for sending transactions on EVM and Solana.

When called, it prompts the user with a transaction, allowing them to either confirm and push it to the network or reject and cancel the operation. The `SignAndSendTransaction` blueprint includes the following parameter:

* `Transaction`: A string representing the transaction object/structure to be sent. For EVM, this should be a standard UTF-8 string; for Solana, it should be a base58 string (it can be a stringified object).

You can also use the `MakeEvmTransaction` helper method to generate an EVM transaction, which can then be attached to the `Transaction` parameter in `SignAndSendTransaction` for no-code transaction creation.

Upon a successful signature, the event data, including the signature, is returned via `OnSignAndSendTransactionEvent`.

<img className="block dark:hidden" src="https://mintcdn.com/particlenetwork-fccf74d2/qB8nYCJPEodZ_ZLJ/social-logins/auth/multi/images/unreal4.png?fit=max&auto=format&n=qB8nYCJPEodZ_ZLJ&q=85&s=343146576a05a6103832e84225283732" alt="Particle Network app Unreal." width="1896" height="688" data-path="social-logins/auth/multi/images/unreal4.png" />

<img className="hidden dark:block" src="https://mintcdn.com/particlenetwork-fccf74d2/qB8nYCJPEodZ_ZLJ/social-logins/auth/multi/images/unreal4.png?fit=max&auto=format&n=qB8nYCJPEodZ_ZLJ&q=85&s=343146576a05a6103832e84225283732" alt="Particle Network app Unreal." width="1896" height="688" data-path="social-logins/auth/multi/images/unreal4.png" />

### Sign Typed Data

On **EVM** chains, you can use `SignTypedData` as an alternative to `SignMessage` for signing structured (typed) data.

The `SignTypedData` blueprint includes the following parameters:

* `Message:` The data to be signed is provided as a standard **JSON** string containing the data structure.
* `Version`: **Particle Auth** supports all three versions of `eth_signTypedData`: `v1`, `v3`, and `v4`. By default, `v4` is used.

Upon confirmation, the signature is returned via `OnSignTypedDataEvent`.

<img className="block dark:hidden" src="https://mintcdn.com/particlenetwork-fccf74d2/qB8nYCJPEodZ_ZLJ/social-logins/auth/multi/images/unreal5.png?fit=max&auto=format&n=qB8nYCJPEodZ_ZLJ&q=85&s=08e95fbe14e0f8873c4775d5118b0189" alt="Particle Network app Unreal." width="2102" height="736" data-path="social-logins/auth/multi/images/unreal5.png" />

<img className="hidden dark:block" src="https://mintcdn.com/particlenetwork-fccf74d2/qB8nYCJPEodZ_ZLJ/social-logins/auth/multi/images/unreal5.png?fit=max&auto=format&n=qB8nYCJPEodZ_ZLJ&q=85&s=08e95fbe14e0f8873c4775d5118b0189" alt="Particle Network app Unreal." width="2102" height="736" data-path="social-logins/auth/multi/images/unreal5.png" />

### Sign Transaction

`SignTransaction` is a **Solana-specific** method for signing a transaction without pushing it to the network. The `SignTransaction` blueprint includes the following parameters:

* `Transaction`: A **base58** string representing a valid transaction structure to be signed.

Upon a successful signature, the completed signature is returned via `OnSignTransactionEvent`.

<img className="block dark:hidden" src="https://mintcdn.com/particlenetwork-fccf74d2/qB8nYCJPEodZ_ZLJ/social-logins/auth/multi/images/unreal6.png?fit=max&auto=format&n=qB8nYCJPEodZ_ZLJ&q=85&s=3da53af088ea95000aac6afad5e76e19" alt="Particle Network app Unreal." width="1526" height="590" data-path="social-logins/auth/multi/images/unreal6.png" />

<img className="hidden dark:block" src="https://mintcdn.com/particlenetwork-fccf74d2/qB8nYCJPEodZ_ZLJ/social-logins/auth/multi/images/unreal6.png?fit=max&auto=format&n=qB8nYCJPEodZ_ZLJ&q=85&s=3da53af088ea95000aac6afad5e76e19" alt="Particle Network app Unreal." width="1526" height="590" data-path="social-logins/auth/multi/images/unreal6.png" />

### Sign All Transactions

The plural counterpart, `SignAllTransactions`, is another **Solana-specific** method for signing multiple transactions collectively without pushing them to the network.

The `SignAllTransactions` blueprint includes the following parameters:

* `Transactions`: An array of base58 strings, each representing a valid transaction to be signed.

Once the function completes and the signatures are generated, they are returned via `OnSignAllTransactionsEvent`.
.

<img className="block dark:hidden" src="https://mintcdn.com/particlenetwork-fccf74d2/qB8nYCJPEodZ_ZLJ/social-logins/auth/multi/images/unreal7.png?fit=max&auto=format&n=qB8nYCJPEodZ_ZLJ&q=85&s=49dcfd571450fe0c46c39714740f3933" alt="Particle Network app Unreal." width="1510" height="636" data-path="social-logins/auth/multi/images/unreal7.png" />

<img className="hidden dark:block" src="https://mintcdn.com/particlenetwork-fccf74d2/qB8nYCJPEodZ_ZLJ/social-logins/auth/multi/images/unreal7.png?fit=max&auto=format&n=qB8nYCJPEodZ_ZLJ&q=85&s=49dcfd571450fe0c46c39714740f3933" alt="Particle Network app Unreal." width="1510" height="636" data-path="social-logins/auth/multi/images/unreal7.png" />
