MultiplayerStack
Player accounts, player profiles and matchmaking on AWS in one plugin: Amazon Cognito sign-in, DynamoDB profiles, stats and leaderboards, and GameLift FlexMatch, wired tβ¦
Highlights
All 12 features βMultiplayerStack is the online backbone of a multiplayer game in a single plugin. Players create accounts and sign in with Amazon Cognito, their profile, stats and rating live in Amazon DynamoDB, and Amazon GameLift FlexMatch puts them into matches with players of similar skill - and the three are already connected, so your game needs no wiring of its own.
Sign In And Connect signs the player in, gets their AWS credentials through the identity pool and creates or loads their profile in one node. Restore Session And Connect does the same for returning players with the remembered session. From then on every DynamoDB and GameLift request runs with the player's own credentials, and the tokens are renewed automatically.
Each player has one profile item keyed by their player id: name, rating, wins, losses, draws, numeric stats and text fields. Update Player Stats changes counters atomically, Record Match Result counts the match and updates the Elo rating safely, and Get Leaderboard ranks all players by rating or any stat. Matchmake With Profile sends the player's rating and measured region latencies to FlexMatch; Find Match And Travel also takes the player to the game server when the match is ready. The MultiplayerStack Subsystem broadcasts On Signed In, On Profile Loaded, On Match Found and more for your UI.
Underneath, MultiplayerStack covers the same features as the Alpha XP plugins CognitoPass, DynamoLedger and GameLiftMatch: the full Cognito account flow (sign-up, MFA, authenticator apps, password reset, attributes), DynamoDB with plain JSON (items, queries, batches, transactions, counters) and GameLift for the client (FlexMatch, queue placement, session search, latencies, connect URLs). It uses one shared AWS connection, one set of credentials and one settings page, and can be installed next to those plugins.
All requests run on background worker threads with automatic retries, results arrive on the game thread, and every latent node can be cancelled. MultiplayerStack is part of the Alpha XP AWS collection for Unreal Engine 4.27 and 5.8. It includes the AWS SDK for C++ prebuilt for Win64, Linux and Android and ships with styled HTML documentation, including a setup guide for the user pool, identity pool, profile table, FlexMatch rule set and an example IAM policy.
Key features
- Sign In And Connect, Restore Session And Connect, Connect Player, Sign Out Everywhere
- Get Player Id / Get Player Name - one player id (the Cognito identity id) for every
- Player profiles in DynamoDB: Ensure, Load, Save, Update Profile Attributes
- Update Player Stats (atomic counters) and Get Leaderboard by rating or any stat
- Record Match Result with an Elo rating update, plus Calculate Elo
- Matchmake With Profile (rating + region latencies to FlexMatch) and Find Match And Travel
- Full Cognito user-pool accounts: sign-up, sign-in with challenges, TOTP / SMS / e-mail
- DynamoDB with plain JSON: Put / Get / Update / Delete Item, Query, Scan, Batch Get /
- GameLift client: Find Match, Start / Wait / Accept / Stop Matchmaking, game session
- Game Instance Subsystem events: On Signed In, On Signed Out, On Session Refreshed, On
- Credentials from a Cognito identity pool (guest or signed in), static keys or the
- 83 Blueprint nodes; background worker threads, retries with back-off, cancellable
Blueprint & C++ API
The API is organised into these entry points:
| Class | Type | Nodes | Use it for |
|---|---|---|---|
| MultiplayerStackLibrary | Function library | 8 | Configuration and identity helpers shared by every area of MultiplayerStack (Login, Data, Match). |
| MultiplayerStackDataLibrary | Function library | 4 | Configuration, identity and JSON helpers for MultiplayerStack. |
| MultiplayerStackLoginLibrary | Function library | 4 | Session, token and configuration helpers for MultiplayerStack. |
| MultiplayerStackGlueLibrary | Function library | 3 | Player helpers that combine the Login, Data and Match areas. |
| MultiplayerStackMatchLibrary | Function library | 3 | Configuration, identity and connection helpers for MultiplayerStack. |
| MultiplayerStackSubsystem | Game Instance subsystem | 3 | The player's online state in one place: account events, the cached player profile and the running matchmaking. |
| Async action nodes | Latent Blueprint nodes | 2 | Latent node with success / failure output pins. |
Callable runs when executed Β· Pure no exec pin, returns a value Β· LatentAsync finishes later and fires its outputs
MultiplayerStack 2
| Node | Type | Available on | Description |
|---|---|---|---|
| Cancel | Async | Async | Stops waiting for this request: none of its output pins fire any more. |
| Is Finished | Async | Async | True after Cancel was called or the node finished. |
Data βΊ JSON 4
| Node | Type | Available on | Description |
|---|---|---|---|
| Make Key JSON(Name: String, Value: String, Sort Name: String, Sort Value: String, Sort Value Is Number: Boolean) β String | Pure | Static | Builds a key JSON object such as {"pk": "{IdentityId}", "sk": "inventory"}. Leave Sort Name empty for tables without a sort key. |
| Struct To JSON(Struct: Integer) β Boolean, Json | Callable | Static | Converts any struct to a JSON object string (property names are used as keys). |
| JSON To Struct(Json: String) β Boolean, Out Struct | Callable | Static | Fills a struct from a JSON object string; fields that are missing keep their default values. |
| Get Json Field(Json: String, Path: String) β Boolean, Value | Pure | Static | Reads one value from a JSON document with a path such as "inventory[2].count". Strings are returned as-is, numbers and booleans as text, objects and arrays as JSON. |
Player 2
| Node | Type | Available on | Description |
|---|---|---|---|
| Get Player Id() β String | Pure | Static | The player id used by every area: the Cognito identity id (key of the player profile, default GameLift player id, {IdentityId} in DynamoDB JSON), else the user-β¦ |
| Get Player Name() β String | Pure | Static | The player's display name: the cached profile's Player Name, else the user name of the signed-in player (empty for guests). |
Profile 2
| Node | Type | Available on | Description |
|---|---|---|---|
| Calculate Elo(Player Rating: Float, Opponent Rating: Float, Outcome: Multiplayer Stack Match Outcome, K Factor: Float) β Float, Rating Delta, Expected Score | Pure | Static | Elo rating change for one match: Expected = 1 / (1 + 10^((Opponent; Player) / 400)), New = Player + K * (Score; Expected). |
| Get Cached Player Profile() β Multiplayer Stack Player Profile | Pure | Subsystem | The profile last loaded or written by a profile node (Valid is false before that and after sign-out). |
Config 3
| Node | Type | Available on | Description |
|---|---|---|---|
| Set Region(Region: String) | Callable | Static | Switches the AWS region used by every following request (empty = the region of the User Pool Id). |
| Set Credential Mode(Mode: Multiplayer Stack Credential Mode) | Callable | Static | Overrides the credential mode from the project settings at runtime. |
| Is Configured() β Boolean, Problem | Pure | Static | Checks the settings and returns false with a reason when requests cannot work yet. |
Identity 5
| Node | Type | Available on | Description |
|---|---|---|---|
| Set Login Token(Provider: String, Token: String) | Callable | Static | Signs the player in to the Cognito identity pool with a token from an identity provider. Not needed after Sign In: the user-pool ID token is registered automatically. |
| Clear Login Tokens | Callable | Static | Forgets all login tokens and the cached identity (the player becomes a guest again). |
| Set Static Credentials(Access Key Id: String, Secret Access Key: String, Session Token: String) | Callable | Static | Uses these credentials from now on (Static Keys mode), for example temporary keys handed out by your own backend. |
| Get Identity Id() β String | Pure | Static | The Cognito identity id of this player, empty until credentials were resolved once. |
| Make User Pool Provider Name(Region: String, User Pool Id: String) β String | Pure | Static | Builds the identity-pool login key of a Cognito user pool: cognito-idp.<region>.amazonaws.com/<user pool id>. |
Login 4
| Node | Type | Available on | Description |
|---|---|---|---|
| Is Signed In() β Boolean | Pure | Static | True while a player is signed in (the tokens may be renewed automatically when a node needs them). |
| Get Session() β Multiplayer Stack Login Session | Pure | Static | The signed-in player's session: user name, sub, ID and access tokens and their expiry. Valid is false when nobody is signed in. |
| Get Token Claims(Token: String) β Boolean, Claims, Json | Pure | Static | Decodes the claims of a JWT such as the session's ID Token (for example "email", "sub", "cognito:groups", "exp"). |
| Get User Pool Provider Name() β String | Pure | Static | The identity-pool login key of the configured user pool: cognito-idp.<region>.amazonaws.com/<user pool id>. |
Match βΊ Connect 2
| Node | Type | Available on | Description |
|---|---|---|---|
| Make Connect Url(Connection: Multiplayer Stack Match Connection, Player Id: String, Extra Options: Map String β String, Prefer Dns Name: Boolean) β String | Pure | Static | Builds the URL that joins a game session: "host:port?PlayerSessionId=psess-...?Key=Value". The game server reads PlayerSessionId from the login options and validates it. |
| Travel To Game Session(Player Controller: Player Controller, Connection: Multiplayer Stack Match Connection, Player Id: String, Extra Options: Map String β String, Prefer Dns Name: Boolean) β Boolean, Url | Callable | Static | Builds the connect URL (see Make Connect URL) and travels the player there. Returns false when there is no address or no player controller. |
Match βΊ Latency 1
| Node | Type | Available on | Description |
|---|---|---|---|
| Get Best Region(Latencies: Multiplayer Stack Match Latency Map) β String, Latency Ms | Pure | Static | The region with the lowest latency in a Measure Region Latencies result; empty when there is none. |
Matchmake 2
| Node | Type | Available on | Description |
|---|---|---|---|
| Cancel Matchmaking() β Boolean | Callable | Subsystem | Stops the running Matchmake With Profile / Find Match And Travel node and its ticket. Returns false when none is running. |
| Is Matchmaking() β Boolean | Pure | Subsystem | True while a Matchmake With Profile / Find Match And Travel node is waiting for a match. |
Events & delegates
Bind these in Blueprint (drag off the object β Bind Event) or with AddDynamic in C++.
| Event | Parameters | Fires on | When it fires |
|---|---|---|---|
| On Success | Identity Id (String), Error (Multiplayer Stack Error) | MultiplayerStackIdentityAction | |
| On Failure | Identity Id (String), Error (Multiplayer Stack Error) | MultiplayerStackIdentityAction | |
| On Condition Failed | Old Item Json (String), Error (Multiplayer Stack Error) | MultiplayerStackDataPutItemAction | |
| On Not Found | Item Json (String), Error (Multiplayer Stack Error) | MultiplayerStackDataGetItemAction | |
| On Challenge | Challenge Name (String), Challenge Parameters (Multiplayer Stack Login String Map) | MultiplayerStackSignInAndConnectAction | |
| On Status Changed | Ticket (Multiplayer Stack Match Ticket), Error (Multiplayer Stack Error) | MultiplayerStackMatchTicketWaitBase | Fires whenever the ticket status changes (Queued, Searching, Requires Acceptance, Placing). Not final. |
| On Requires Acceptance | Ticket (Multiplayer Stack Match Ticket), Error (Multiplayer Stack Error) | MultiplayerStackMatchTicketWaitBase | Fires when a proposed match needs Accept Match from every player (Ticket.PlayerIds). Not final. |
| On Matched | Ticket (Multiplayer Stack Match Ticket), Error (Multiplayer Stack Error) | MultiplayerStackMatchTicketWaitBase | Final: the match is ready; Ticket.Connection holds the server address and a player session per player. |
| On Failed | Ticket (Multiplayer Stack Match Ticket), Error (Multiplayer Stack Error) | MultiplayerStackMatchTicketWaitBase | Final: the ticket Failed, was Cancelled or Timed Out, the wait limit was reached, or a request failed. |
| On Placed | Placement (Multiplayer Stack Match Placement), Error (Multiplayer Stack Error) | MultiplayerStackMatchWaitPlacementAction | Final: the game session is running; Placement.Connection holds the address and player sessions. |
| On Signed In | Session (Multiplayer Stack Login Session) | MultiplayerStackSubsystem | A player signed in (Sign In, Respond To Challenge, Restore Session, Sign In And Connect, ... ). |
| On Signed Out | β | MultiplayerStackSubsystem | The player signed out, deleted the account, or the saved session was rejected by the user pool. |
| On Session Refreshed | Session (Multiplayer Stack Login Session) | MultiplayerStackSubsystem | The ID and access tokens were renewed (Refresh Session or an automatic refresh). |
| On Profile Loaded | Profile (Multiplayer Stack Player Profile) | MultiplayerStackSubsystem | The player profile was loaded, created or changed by a profile node (the cached profile was updated). |
| On Match Found | Ticket (Multiplayer Stack Match Ticket) | MultiplayerStackSubsystem | Matchmake With Profile / Find Match And Travel found a match (Ticket.Connection holds the server). |
| On Matchmaking Failed | Ticket (Multiplayer Stack Match Ticket), Error (Multiplayer Stack Error) | MultiplayerStackSubsystem | Matchmake With Profile / Find Match And Travel ended without a match (failed, timed out, cancelled on AWS, travel failed). |
Project settings
Configure once under Project Settings βΊ Plugins βΊ MultiplayerStack β values are saved to the project's config .ini, so they travel with the project and your build.
| Setting | Section | Type | What it does |
|---|---|---|---|
| Region | Connection | String | AWS region of your user pool, identity pool, tables and GameLift resources, for example "us-east-1" or "eu-west-1". |
| Request Timeout Ms | Connection | Integer | Total time a request may take, in milliseconds. |
| Connect Timeout Ms | Connection | Integer | Time allowed to open the connection, in milliseconds. |
| Max Retries | Connection | Integer | Automatic retries with exponential back-off for throttled and transient failures. |
| Worker Threads | Connection | Integer | Worker threads that run requests in the background (requests never block the game thread). |
| Verify SSL | Connection | Boolean | Verify TLS certificates. Only disable for a local emulator. |
| Log Sdk Warnings | Connection | Boolean | Forward SDK warnings and errors to the Output Log (LogMultiplayerStack). |
| Credential Mode | Credentials | Credential Mode | Where request credentials come from. Signed-in players are registered with the identity pool automatically. |
| Identity Pool Id | Credentials | String | Cognito identity pool, for example "us-east-1:01234567-89ab-cdef-0123-456789abcdef". Its identity id is the player id. |
| Allow Guest Access | Credentials | Boolean | Allow unauthenticated (guest) identities before the player signs in. The pool must allow guest access too. |
| Access Key Id | Credentials | String | Access key for Static Keys mode. Keys saved here end up in DefaultGame.ini - use them for development and servers only. |
| Secret Access Key | Credentials | String | Secret key for Static Keys mode. |
| Allow Static Keys In Shipping | Credentials | Boolean | Static keys are refused in Shipping builds unless this is enabled (for example on a dedicated server). |
| User Pool Id | Login | String | Cognito user pool, for example "us-east-1_AbCdEf123" (Amazon Cognito > User pools > the pool's overview). |
| App Client Id | Login | String | App client of the user pool. It needs the ALLOW_USER_PASSWORD_AUTH and ALLOW_REFRESH_TOKEN_AUTH flows. |
| App Client Secret | Login | String | Only for app clients created with a client secret: every request then carries the SECRET_HASH. |
| Remember Session | Login | Boolean | Keep the player signed in between game sessions: the refresh token is stored in the SaveGame slot "MultiplayerStackSession". Restore Session uses it. |
| Auto Refresh | Login | Boolean | Refresh the tokens automatically (about 5 minutes before they expire) when a node needs them. |
| Login Endpoint Override | Login | String | Custom user-pool endpoint, for example a local emulator such as "http://localhost:9229". Empty = the regional AWS endpoint. |
| Table Prefix | Data | String | Prepended to every table name, for example "mygame-prod-" so a node can just say "players". |
| Consistent Reads By Default | Data | Boolean | Use strongly consistent reads for Get Item, Batch Get and for Query / Scan on the table itself (global secondary indexes are always eventually consistent). |
| Data Endpoint Override | Data | String | Custom DynamoDB endpoint, for example DynamoDB Local at "http://localhost:8000". Empty = the regional AWS endpoint. |
| Profile Table | Player Profile | String | Table that holds one profile item per player (the Table Prefix applies). Its partition key is Profile Key Name (String). |
| Profile Key Name | Player Profile | String | Partition key attribute of the profile table. Its value is the player id (the Cognito identity id). |
| Ensure Profile On Connect | Player Profile | Boolean | Create the profile with the defaults below during Sign In And Connect / Restore Session And Connect / Connect Player. |
| Default Rating | Player Profile | Float | Rating a new profile starts with. |
| Elo K Factor | Player Profile | Float | Elo K-factor used by Record Match Result when its K Factor input is 0 (larger = ratings move faster). |
| Default Stats | Player Profile | Map String β Float | Extra numeric stats every new profile starts with, for example kills = 0, xp = 0. |
| Leaderboard Partition Key | Leaderboard | String | Leaderboards: every profile carries this attribute with the value Leaderboard Partition Value, so a global secondary index with this partition key and a stat as⦠|
| Leaderboard Partition Value | Leaderboard | String | Value of Leaderboard Partition Key in every profile (one board for everybody). |
| Leaderboard Index Format | Leaderboard | String | Index name Get Leaderboard queries for a stat; {stat} is replaced by the stat name, for example "Rating-index". |
| Default Matchmaking Configuration | Match | String | FlexMatch matchmaking configuration used when Start Matchmaking / Find Match / Matchmake With Profile leave Configuration Name empty. |
| Default Queue Name | Match | String | Game session queue (name or ARN) used when Start Game Session Placement leaves Queue Name empty. |
| Default Fleet Id | Match | String | Fleet (id or ARN) used by Search / Describe / Create Game Session when neither a fleet nor an alias is given and Default Alias Id is empty. |
| Default Alias Id | Match | String | Alias (id or ARN) used by Search / Describe / Create Game Session when neither a fleet nor an alias is given. Takes precedence over Default Fleet Id. |
| Poll Interval Seconds | Match | Float | Seconds between status checks of Wait For Match, Find Match, Matchmake With Profile and Wait For Placement when the node leaves Poll Interval at 0. |
| Rating Attribute Name | Match | String | Matchmaking attribute (Number) that Matchmake With Profile fills with the profile's Rating. Must exist in the FlexMatch rule set. |
| Match Endpoint Override | Match | String | Custom GameLift endpoint, for example a local emulator such as "http://localhost:4566". Empty = the regional AWS endpoint. |
| Latency Regions | Latency | Array of String | Regions measured by Measure Region Latencies (and Matchmake With Profile) when no latencies are given. List the Regions and locations of your fleets. |
| Latency Host Format | Latency | String | Host that Measure Region Latencies connects to; {region} is replaced by the region name. |
| Latency Port | Latency | Integer | TCP port that Measure Region Latencies connects to. |
Options & enums
| Enum | Values |
|---|---|
| Match Outcome | Win Loss Draw |
| Match Ticket Status | Unknown Queued Searching Requires Acceptance Placing Completed Failed Cancelled Timed Out |
| Match Placement Status | Unknown Pending Fulfilled Cancelled Timed Out Failed |
| Match Session Status | Unknown Active Activating Terminated Terminating Error |
| Match Attribute Type | String Number String List String Number Map |
| Credential Mode | Cognito Identity Pool Static Keys Default Credential Chain |
Compatibility
One ready-made build per engine version is included in the download β copy the one that matches your project.
| Platform | Supported in |
|---|---|
| Windows | Editor & packaged |
| Linux | Editor & packaged |
| Android | Packaged builds |
| Module | Type | Loading phase |
|---|---|---|
| MultiplayerStack | Runtime | Default |
Technical details
| Code modules | MultiplayerStack (Runtime), MultiplayerStackSdk (External, Source/ThirdParty - prebuilt AWS SDK for C++) |
|---|---|
| Blueprints | 0 Β· C++ classes: 68 |
| Network replicated | No |
| Development platforms | Windows: Yes, Mac: No, Linux: Yes |
| Target build platforms | Win64, Linux, Android |
| Third-party software | Yes - AWS SDK for C++ 1.11.916 (Apache-2.0) and the AWS Common Runtime libraries (Apache-2.0), in Source/ThirdParty/MultiplayerStackSdk |
| Engine versions | Unreal Engine 4.27 Β· 5.8 β a build for each is included |
| C++ classes | 68 + 14 structs |
| Blueprint nodes | 27 |
| Events | 16 |
| Documentation | Documentation.html (in the download) |
| Download | MultiplayerStack.zip Β· 50.3 MB |
| Version | v1.0.0 |
What's in the download
| File | What it is |
|---|---|
| MultiplayerStack 4.27.zip | Plugin build for Unreal Engine 4.27 |
| MultiplayerStack 5.8.zip | Plugin build for Unreal Engine 5.8 |
| Documentation.html | Documentation (open in a browser) |
Quick start
- Unzip the download and pick the build that matches your engine (4.27 Β· 5.8).
- Copy the MultiplayerStack folder into your project's Plugins/ folder (create it if needed).
- Open the project, enable MultiplayerStack under Edit βΊ Plugins and restart the editor.
- Fill in Project Settings βΊ Plugins βΊ MultiplayerStack.
- Right-click in any Blueprint graph and search MultiplayerStack β or include the public headers from C++.
- Package for your target platform (Windows, Linux, Android).
Good to know
Built for Unreal Engine 4.27 and 5.8. Requires an AWS account with an Amazon Cognito user pool and identity pool, a DynamoDB table for player profiles and, for matchmaking, an Amazon GameLift fleet with a FlexMatch configuration; usage is billed by AWS. The app client needs the ALLOW_USER_PASSWORD_AUTH and ALLOW_REFRESH_TOKEN_AUTH flows. On Linux and Android the SDK uses the engine's libcurl and OpenSSL and the engine's certificate store. On Win64 the SDK is one DLL with a plugin-specific name, and every module, class, log category and setting has its own name, so MultiplayerStack can be installed next to other AWS-based plugins. The remembered refresh token is stored in a local SaveGame file. Developed and maintained by Alpha XP.
Everything included
- Sign In And Connect, Restore Session And Connect, Connect Player, Sign Out Everywhere
- Get Player Id / Get Player Name - one player id (the Cognito identity id) for everyβ¦
- Player profiles in DynamoDB: Ensure, Load, Save, Update Profile Attributes
- Update Player Stats (atomic counters) and Get Leaderboard by rating or any stat
- Record Match Result with an Elo rating update, plus Calculate Elo
- Matchmake With Profile (rating + region latencies to FlexMatch) and Find Match And Travel
- Full Cognito user-pool accounts: sign-up, sign-in with challenges, TOTP / SMS / e-mailβ¦
- DynamoDB with plain JSON: Put / Get / Update / Delete Item, Query, Scan, Batch Get /β¦
- GameLift client: Find Match, Start / Wait / Accept / Stop Matchmaking, game sessionβ¦
- Game Instance Subsystem events: On Signed In, On Signed Out, On Session Refreshed, Onβ¦
- Credentials from a Cognito identity pool (guest or signed in), static keys or theβ¦
- 83 Blueprint nodes; background worker threads, retries with back-off, cancellableβ¦
Platforms
Requirements
- Unreal Engine 4.27 and 5.8
- Develop on Windows (Win64)
- Blueprints and C++
In the download
Personal
One non-commercial project
- 1 activation seat
- 1 year of updates
- One end product
- Non-commercial use
- Community support
- 14-day refund window
Commercial
Ship paid products
- 5 activation seats
- 1 year of updates
- One paid end product
- Unlimited end users
- Priority support
- Source files
- 14-day refund window
Extended
Resell & white-label
- Unlimited activation seats
- Lifetime updates
- Unlimited end products
- White-label & resell
- 1-hour SLA
- Seat-free team use
- 14-day refund window
One purchase per product, no subscription. Each licence comes with a signed key β 1 seat on Personal, 5 seats on Commercial, unlimited seats on Extended. Paid licences can be refunded within 14 days from your order page.
- v1.0.0Latest
- Unreal Engine 4.27 and 5.8
- Blueprint and C++ API, HTML documentation
Be the first to review MultiplayerStack β reviews come from customers who bought it, so every one is a verified purchase.
Frequently asked
How do I get the files after paying?
Straight after checkout you land on your order page with the download button and your licence key. A receipt is emailed to you, and every order stays in My library.
Which licence do I need?
Personal β One non-commercial project. Commercial β Ship paid products. Extended β Resell & white-label. The Licences tab compares them side by side.
On how many devices can I activate it?
1 seat on Personal, 5 seats on Commercial, unlimited seats on Extended.
How long do I get updates?
Personal: 1 year of updates, Commercial: 1 year of updates, Extended: lifetime updates, counted from your purchase.
Can I get a refund?
Yes β paid licences can be refunded within 14 days, straight from your order page.
Is the download safe?
The file was scanned with ClamAV when it was published. Its SHA-256 checksum is listed under Features β In the download, so you can verify the file you receive.
Do I need an account?
No. Checkout only needs your email. Signing in keeps all your purchases, keys and downloads together in My library.
More like this
AudioLens
Real-time audio analysis: FFT spectrum, onset and beat detection, and a full set of time- and frequency-domain descriptors..
β β β β β No reviews yetTTechHarbour$14.00BlueprintTCP
BlueprintTCP lets you connect to any TCP server and exchange data entirely from Blueprints β no C++ and no networking boilerplate.
β β β β β No reviews yetTTechHarbour$12.99BluetoothLink
Bluetooth Low Energy for Unreal - scan, connect, read, write and subscribe to BLE devices on Android and iOS.
β β β β β No reviews yetTTechHarbour$11.99ClusterLink
SocketCluster realtime client for Unreal - pub/sub channels, auth engine and JSON codec, usable from Blueprints.
β β β β β No reviews yetTTechHarbour$11.99