StepFlow
AWS Step Functions for Blueprints and C++: start, track and stop workflows, run Express workflows synchronously, read execution history and make the game an activity worβ¦
Highlights
All 14 features βStepFlow connects your game to AWS Step Functions. Keep multi-step backend logic - reward pipelines, match result processing, crafting queues, moderation, account deletion, AI chains - in state machines on AWS and drive them straight from Blueprints or C++.
Start Execution launches a workflow and returns its execution ARN. Run Execution starts it and waits for the result in one node, with a progress pin after every check and an optional timeout; Wait For Execution does the same for an execution started elsewhere. Start Sync Execution runs an Express workflow and returns its output, error and billed duration and memory in a single call. Describe, Stop, List (status and redrive filters, paging) and Redrive cover the rest of the execution life cycle.
Get Execution History returns the full event log as typed events with their details as JSON. Get State Timeline turns it into one entry per state with durations, Get Last Error And Cause finds the state that failed, and Get State Output reads the result of any state.
The StepFlow Activity Worker component makes the game - a client, a dedicated server or an editor tool - a Step Functions activity worker. It long-polls for tasks on a background thread, never on the game thread, fires On Task Received with the task token and JSON input, and waits for Complete Current Task or Fail Current Task. Automatic heartbeats keep long tasks alive, a pending-task limit pauses polling while work is queued, and tasks that expire on AWS are reported. Send Task Success, Send Task Failure and Send Task Heartbeat also answer callback tasks (waitForTaskToken) from Lambda, SQS or EventBridge.
Live-ops and tools get the control plane: list, describe, create, update and delete state machines, validate definitions on the service, publish versions, read aliases and their routing, manage activities and inspect or tune Distributed Map runs.
Players get credentials from an Amazon Cognito identity pool: as guests, or signed in with a token from a Cognito user pool, Google, Apple, Facebook or any OpenID provider through Set Login Token. Static keys and the default AWS credential chain are available for development, dedicated servers and tools. ARN builders and parsers, unique execution names, X-Ray trace headers and JSON helpers (Struct To JSON, JSON To Struct, Get JSON Field, Make JSON Object, Set JSON Field) complete the 79 Blueprint nodes.
StepFlow 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.
Key features
- Start Execution, Run Execution (start and wait), Wait For Execution with progress and
- Start Sync Execution for Express workflows: output, error / cause, billed duration and
- Describe, Stop, List (status / redrive filters, paging) and Redrive executions
- Execution history as typed events, state timeline, last error and cause, state outputs
- Activity Worker component: background long polling, task tokens, Complete / Fail
- Send Task Success / Failure / Heartbeat for activity and callback (waitForTaskToken) tasks
- State machines: list, describe, create, update, delete, validate definition, versions
- Activities: create, delete, list, describe; Distributed Map runs: list, describe, update
- Plain names instead of ARNs with the Account Id setting; Default State Machine for
- ARN builders and parsers, unique execution names, X-Ray trace headers, console links
- JSON helpers for workflow input and output
- Amazon Cognito identity pools for guest and signed-in players; static keys and the
- Background worker threads, automatic retries, cancellable latent nodes, results on the
- C++ API with native callbacks
Blueprint & C++ API
Every call is reachable from more than one place β pick the entry point that fits your project:
| Class | Type | Nodes | Use it for |
|---|---|---|---|
| StepFlowLibrary | Function library | 30 | Configuration, identity, ARN, history and JSON helpers for StepFlow. |
| StepFlowActivityWorkerComponent | Actor component | 15 | Turns the game (a client, a dedicated server or a tool) into a Step Functions activity worker. |
| 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
Worker 15
| Node | Type | Available on | Description |
|---|---|---|---|
| Start Worker(Activity Override: String) | Callable | Component | Starts polling for tasks in the background. |
| Stop Worker | Callable | Component | Stops polling. A poll in flight ends by itself within its long-poll time (up to 60 s); a task it still delivers is reported normally. |
| Is Running() β Boolean | Pure | Component | True from Start Worker until Stop Worker (also while waiting for answers). |
| Get Worker State() β Step Flow Worker State | Pure | Component | Stopped, Polling, Waiting (Max Pending Tasks reached) or Stopping. |
| Complete Current Task(Output: String) β Boolean | Callable | Component | Reports the oldest pending task as succeeded with a JSON output (empty = {}). Returns false when no task is pending. |
| Fail Current Task(Error: String, Cause: String) β Boolean | Callable | Component | Reports the oldest pending task as failed with an error name and cause. Returns false when no task is pending. |
| Complete Task(Task Token: String, Output: String) | Callable | Component | Reports a specific pending task (by token) as succeeded. Also accepts tokens this worker does not hold. |
| Fail Task(Task Token: String, Error: String, Cause: String) | Callable | Component | Reports a specific task (by token) as failed. |
| Hand Off Task(Task Token: String) β Boolean | Callable | Component | Removes a task from the pending list without answering it, for example after handing its token to your backend. |
| Get Current Task Token() β String | Pure | Component | The token of the oldest pending task, empty when none. |
| Get Current Task() β Boolean, Task | Pure | Component | The oldest pending task (token, input, arrival time). False when none. |
| Get Pending Tasks() β Array of Step Flow Activity Task | Pure | Component | Every task waiting for an answer, oldest first. |
| Send Heartbeat Now | Callable | Component | Sends a heartbeat for every pending task now. |
| Set Auto Heartbeat Interval(Seconds: Float) | Callable | Component | Changes the automatic heartbeat interval (seconds, 0 = off). |
| Get Stats() β Step Flow Worker Stats | Pure | Component | Counters since Start Worker: tasks received / completed / failed, heartbeats, empty polls, errors, uptime, last error. |
StepFlow 2
| Node | Type | Available on | Description |
|---|---|---|---|
| Cancel | Async | Async | Stops waiting for this request: none of its output pins fire any more. The request itself may still complete on AWS. |
| Is Finished | Async | Async | True after Cancel was called or the node finished. |
Config 5
| Node | Type | Available on | Description |
|---|---|---|---|
| Set Region(Region: String) | Callable | Static | Switches the AWS region used by every following request. |
| Set Credential Mode(Mode: Step Flow 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. |
| Set Default State Machine(State Machine: String) | Callable | Static | Overrides the settings' Default State Machine Arn at runtime (used by nodes that leave State Machine empty). |
| Set Account Id(Account Id: String) | Callable | Static | Overrides the settings' Account Id at runtime, so nodes accept plain state machine / activity names. |
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. |
| 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>. |
ARN 6
| Node | Type | Available on | Description |
|---|---|---|---|
| Make State Machine Arn(Name: String, Qualifier: String, Region: String, Account Id: String) β String | Pure | Static | Builds a state machine ARN: arn:aws:states:<region>:<account>:stateMachine:<name>[:<qualifier>]. |
| Make Activity Arn(Name: String, Region: String, Account Id: String) β String | Pure | Static | Builds an activity ARN: arn:aws:states:<region>:<account>:activity:<name>. Empty Region / Account Id = the configured values. |
| Make Execution Arn(State Machine: String, Execution Name: String, Express: Boolean) β String | Pure | Static | Builds the ARN of a named execution from its state machine (ARN or name): ...:execution:<machine>:<name> (Express: ...:express:...). |
| Parse Arn(Arn: String) β Boolean, Parts | Pure | Static | Splits a Step Functions ARN into partition, region, account, resource type, name and qualifier. False if it is not a states ARN. |
| Get Name From Arn(Arn: String) β String | Pure | Static | The state machine / activity name of an ARN ("arn:...:stateMachine:Quest:3" -> "Quest"). Plain names come back unchanged. |
| Get Execution Name(Execution Arn: String) β String | Pure | Static | The execution name at the end of an execution ARN. |
Executions 5
| Node | Type | Available on | Description |
|---|---|---|---|
| Is Terminal Status(Status: Step Flow Execution Status) β Boolean | Pure | Static | True for Succeeded, Failed, Timed Out and Aborted (the execution will not change any more). |
| Make Unique Execution Name(Prefix: String) β String | Callable | Static | A unique execution name: <Prefix>-<UTC yyyyMMdd-HHmmss>-<8 random hex>, at most 80 characters. Names make starts idempotent. |
| Is Valid Execution Name(Name: String) β Boolean | Pure | Static | Checks the execution / state machine / activity naming rules: 1-80 characters, no whitespace, brackets, wildcards, quotes, control characters or other special cβ¦ |
| Make Trace Header(Sampled: Boolean) β String | Callable | Static | Builds an AWS X-Ray trace header "Root=1-<hex time>-<24 hex>;Sampled=1" to pass to Start Execution. |
| Get Execution Console Url(Execution Arn: String) β String | Pure | Static | The AWS console page of an execution (for logs and support tools). |
History 4
| Node | Type | Available on | Description |
|---|---|---|---|
| Get Events Of Type(Events: Array of Step Flow History Event, Type: String, Contains: Boolean) β Array of Step Flow History Event | Pure | Static | The events whose Type matches. |
| Get Last Error And Cause(Events: Array of Step Flow History Event) β Boolean, Error, Cause, State Name | Pure | Static | The newest event that carries an error, with its error, cause and the state it happened in. False when nothing failed. |
| Get State Timeline(Events: Array of Step Flow History Event) β Array of Step Flow State Visit | Pure | Static | Pairs StateEntered / StateExited events into one visit per state with times and durations, in execution order. |
| Get State Output(Events: Array of Step Flow History Event, State Name: String) β Boolean, Output | Pure | Static | The JSON output of the last exit of a state (needs history with Include Data). False if the state never exited. |
JSON 5
| Node | Type | Available on | Description |
|---|---|---|---|
| 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 (for example an execution's Output); 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 "player.stats[2].score". Strings are returned as-is, numbers and booleans as text, objects and arrays as JSON. |
| Make JSON Object(Fields: Map String β String, Parse Values: Boolean) β String | Pure | Static | Builds a JSON object from key / value pairs, for example an execution input. |
| Set JSON Field(Json: String, Path: String, Value: String, Value Is Json: Boolean) β Boolean, Result | Pure | Static | Sets (or adds) one field of a JSON object and returns the new JSON. Path may be nested ("player.level"); missing objects are created. |
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 Task Received | Task (Step Flow Activity Task) | StepFlowActivityWorkerComponent | A task arrived. Answer it with Complete Current Task / Fail Current Task (or by token). |
| On Task Answered | Task Token (String), Delivered (Boolean), Error (Step Flow Error) | StepFlowActivityWorkerComponent | The answer (success or failure) of a task reached Step Functions (Delivered) or could not be sent (Error). |
| On Task Lost | Task Token (String), Error (Step Flow Error) | StepFlowActivityWorkerComponent | A pending task timed out or no longer exists on AWS (seen by a heartbeat); it was removed from the pending list. |
| On Worker Error | Error (Step Flow Error) | StepFlowActivityWorkerComponent | A poll failed. Retryable errors are retried with back-off; others also stop the worker (On Worker Stopped follows). |
| On Worker Stopped | β | StepFlowActivityWorkerComponent | The worker stopped polling (Stop Worker, a permanent error or end of play). |
| On Success | Execution (Step Flow Execution), Error (Step Flow Error) | StepFlowExecutionAction | |
| On Failure | Execution (Step Flow Execution), Error (Step Flow Error) | StepFlowExecutionAction | |
| On Completed | Result (Step Flow Sync Result), Error (Step Flow Error) | StepFlowSyncAction | |
| On Succeeded | Execution (Step Flow Execution), Error (Step Flow Error) | StepFlowWaitAction | |
| On Failed | Execution (Step Flow Execution), Error (Step Flow Error) | StepFlowWaitAction | |
| On Polled | Execution (Step Flow Execution), Error (Step Flow Error) | StepFlowWaitAction | |
| On Task | Task (Step Flow Activity Task), Error (Step Flow Error) | StepFlowGetTaskAction | |
| On No Task | Task (Step Flow Activity Task), Error (Step Flow Error) | StepFlowGetTaskAction |
Project settings
Configure once under Project Settings βΊ Plugins βΊ StepFlow β 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 state machines and identity pool, for example "us-east-1" or "eu-west-1". |
| Credential Mode | Credentials | Credential Mode | Where request credentials come from. |
| Identity Pool Id | Credentials | String | Cognito identity pool, for example "us-east-1:01234567-89ab-cdef-0123-456789abcdef". |
| Allow Guest Access | Credentials | Boolean | Allow unauthenticated (guest) identities before Set Login Token is called. 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). |
| Endpoint Override | Connection | String | Custom endpoint, for example a local emulator such as "http://localhost:8083". Empty = the regional AWS endpoint. |
| Request Timeout Ms | Connection | Integer | Total time a normal 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). Each running activity worker occupies one thread while it polls. |
| 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 (LogStepFlow). |
| Default State Machine Arn | Step Functions | String | State machine used when a node leaves State Machine empty: an ARN, or a plain name when Account Id is set. |
| Account Id | Step Functions | String | Your 12-digit AWS account id. Lets nodes accept plain state machine / activity names instead of ARNs. |
| Activity Worker Name | Step Functions | String | Worker name sent with Get Activity Task (shows up in the execution history). Empty = the computer name. |
| Long Request Timeout Ms | Step Functions | Integer | Timeout in milliseconds of the long-running calls: Get Activity Task (a 60 second long poll; AWS asks for at least 65 seconds) and Start Sync Execution (an Expr⦠|
| Wait Poll Interval Seconds | Step Functions | Float | Seconds between two Describe Execution calls of Wait For Execution / Run Execution when the node's interval is 0. |
Options & enums
| Enum | Values |
|---|---|
| Credential Mode | Cognito Identity Pool Static Keys Default Credential Chain |
| Execution Status | Any / Unknown Running Succeeded Failed Timed Out Aborted Pending Redrive |
| State Machine Type | Standard Express |
| Map Run Status | Unknown Running Succeeded Failed Aborted |
| Redrive Filter | Any Redriven Not Redriven |
| Worker State | Stopped Polling Waiting Stopping |
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 |
|---|---|---|
| StepFlow | Runtime | Default |
Technical details
| Code modules | StepFlow (Runtime), StepFlowSdk (External, Source/ThirdParty - prebuilt AWS SDK for C++) |
|---|---|
| Blueprints | 0 Β· C++ classes: 22 |
| 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), with the AWS Common Runtime libraries, in Source/ThirdParty/StepFlowSdk |
| Engine versions | Unreal Engine 4.27 Β· 5.8 β a build for each is included |
| C++ classes | 22 + 17 structs |
| Blueprint nodes | 47 |
| Events | 13 |
| Documentation | Documentation.html (in the download) |
| Download | StepFlow.zip Β· 35.4 MB |
| Version | v1.0.0 |
What's in the download
| File | What it is |
|---|---|
| StepFlow 4.27.zip | Plugin build for Unreal Engine 4.27 |
| StepFlow 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 StepFlow folder into your project's Plugins/ folder (create it if needed).
- Open the project, enable StepFlow under Edit βΊ Plugins and restart the editor.
- Fill in Project Settings βΊ Plugins βΊ StepFlow.
- Right-click in any Blueprint graph and search Worker β 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; Step Functions and Cognito usage is billed by AWS. The activity worker's 60-second long poll runs on a plugin worker thread and never blocks the game thread. 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, so StepFlow can be installed next to other AWS-based plugins. Never ship long-term access keys in a game client: use a Cognito identity pool for players. Developed and maintained by Alpha XP.
Everything included
- Start Execution, Run Execution (start and wait), Wait For Execution with progress andβ¦
- Start Sync Execution for Express workflows: output, error / cause, billed duration andβ¦
- Describe, Stop, List (status / redrive filters, paging) and Redrive executions
- Execution history as typed events, state timeline, last error and cause, state outputs
- Activity Worker component: background long polling, task tokens, Complete / Failβ¦
- Send Task Success / Failure / Heartbeat for activity and callback (waitForTaskToken) tasks
- State machines: list, describe, create, update, delete, validate definition, versionsβ¦
- Activities: create, delete, list, describe; Distributed Map runs: list, describe, update
- Plain names instead of ARNs with the Account Id setting; Default State Machine forβ¦
- ARN builders and parsers, unique execution names, X-Ray trace headers, console links
- JSON helpers for workflow input and output
- Amazon Cognito identity pools for guest and signed-in players; static keys and theβ¦
- Background worker threads, automatic retries, cancellable latent nodes, results on theβ¦
- C++ API with native callbacks
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 StepFlow β 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