Releases: QwackStack/FlockUnrealSdk
Release list
v1.2.0
What's Changed
- feat: leaderboard by @SalmanFallatah in #27
Full Changelog: v1.1.0...v1.2.0
What's Changed
- feat: leaderboard by @SalmanFallatah in #27
Full Changelog: v1.1.0...v1.2.0
UE 5.x Support
What's Changed
- feat: versions 5.x support and auto release set up by @SalmanFallatah in #26
Full Changelog: v1.0.0...v1.1.0
Flock Official release
Flock Unreal SDK 1.0.0
The first stable release of the Flock SDK for Unreal Engine — a complete client for Flock's
game backend: authentication, player data, game configuration, a shop, game commands,
downloadable assets, and analytics, usable from both C++ and Blueprint.
Everything documented is shipping. The 0.x history was development only and was never
published; 1.0.0 marks the point where the feature set is complete and the API is one we
intend to keep. Nothing here is a breaking change from anything you can have installed.
Requirements
- Unreal Engine 5.5. This is the version the SDK is built and tested against.
- A C++ toolchain on every machine that builds the project — Visual Studio 2022 with the
Game development with C++ workload on Windows, Xcode on macOS. The plugin ships source
rather than binaries, and build output isn't usually committed, so each developer compiles
their own copy. - A C++ project. Blueprint-only projects work, but need a one-time conversion — see
Blueprint-only projects. You never have to write any C++.
Installation
Extract the attached zip into your project's Plugins/ folder. The archive nests everything
under FlockUnrealSdk/, so you end up with YourProject/Plugins/FlockUnrealSdk/ and nothing
to rename. Then right-click your .uproject → Generate Visual Studio project files, and
rebuild.
The archive contains source only and no compiled binaries — you build it once with your
project, against your engine version and toolchain.
Getting started
- The Flock panel walks you through setup. The first time you open a project with the
plugin installed, a dockable Flock tab opens and lists whatever is missing, with the
button that fixes each item. Credentials are editable inline and save toDefaultGame.ini.
Reopen it any time from Tools → Flock → Flock Panel. - Test Connection names the credential that's wrong. One authenticated round-trip reports
an unreachable API URL, a rejected API key, or a Game Version name that doesn't exist —
rather than a generic failure. It also reads back the game your key belongs to and warns
if your configured Game Name disagrees. - The panel only interrupts when something is actionable. It opens on a broken setup or
your first time in a project, and stays quiet otherwise. It is never a modal dialog, and any
notice can be muted per-developer.
What's included
Core
UFlockSubsystem— aUGameInstanceSubsystemready when the game starts, and the entry
point to everything below.- Offline, synchronous initialization. The Game Version ID is resolved at edit time and
baked intoDefaultGame.ini, so runtime init makes no network call. Resolution and baking
happen automatically when you edit your settings. - HTTP transport with automatic retry (exponential backoff with jitter,
Retry-After
aware) over a callback + result surface — no C++ exceptions. JSON is (de)serialized to and
from yourUSTRUCTmodels. - Typed errors. Every failure is an
FFlockErrorcarrying a typedEFlockErrorType, the
server'sEFlockErrorCode, and the server's own message — Blueprint-readable, with
UFlockErrorLibraryexposing display text and coded-error group checks. - A single event hub (
GetEvents()) for lifecycle, auth, session, and consent events,
Blueprint-assignable, with init-safeCallOrRegisterentry points for late binders.
Backend features
- Authentication — email, device, Google, Apple, and Steam login and registration,
encrypted token persistence, automatic session restore, silent token refresh, and the
account management flows. - Game config — fetch configs and patches by id, name, tag, or version tag, and resolve a
config's effective values (the patch for this game version, else its base data). Read values
by dotted path in Blueprint, or bind them to yourUSTRUCTin C++. - Player data & templates — read a player's saved rows, browse the templates that define
them, and check ban status. - Game commands — the server-validated way to change player data, with an offline queue
that replays automatically on reconnect or next sign-in. - Shop — browse shops and items, buy an item, and read a player's inventory. A purchase is
money-safe: never retried on an ambiguous failure, never queued offline, and reported for
revenue metrics. - Assets — fetch your game version's asset list and download by name or id, as a texture,
as text, as raw bytes, or as a file. Downloads stream to disk rather than buffering in
memory, and are cached on disk keyed by asset and version. - Analytics — a diagnostic log API, session tracking, automatic exception capture with
symbolicatable callstacks, an offline queue that survives crashes, consent gating, and
next-launch crash reporting.
Offline
- Read-API responses are snapshotted to disk and served when the network is unavailable.
A completed request of any kind clears the offline state, so it is self-healing and can
never get stuck. Money operations are deliberately never queued or replayed.
Editor
- Live SDK state during Play In Editor. The Flock panel switches to showing whether the SDK
initialized, the signed-in player, the analytics session and consent, how many offline
commands are queued, connectivity, and a running list of SDK events. - Setup problems surface everywhere they matter — the panel, the Project Settings page, a
Play-In-Editor warning, and a packaging guard that blocks a build the SDK could not
initialize from. - Code generation. Sync your backend schemas and get typed accessors: Blueprint structs,
enums, and one-node macros with no compile step, or a generated C++ module. Includes a
commandlet for CI.
Blueprint
- The whole surface is available in Blueprint — async nodes for every call family, pure
accessors for reading structured data, and a convenience library so a graph doesn't have to
fetch the subsystem first.
Notes and known gaps
- Custom gameplay event tracking is not exposed. Analytics ships the diagnostic log API
and purchase/transaction reporting; gameplay event tracking is held back pending backend
work rather than shipped half-built. - No sound-wave asset download. Unreal has no engine API for turning mp3/ogg bytes into a
USoundWave, and a WAV-only helper would fail silently on most of what a CDN holds — use
Flock Download Asset Filefor audio. - A few surfaces are C++-only — config patch reads and configs by version tag. In
Blueprint,Flock Resolve Config Dataalready returns the patched-or-base values, which is
what most graphs want. - Asset uploads are not included. The SDK reads and downloads assets; publishing them is a
dashboard operation. - No binary distribution yet. Consuming the plugin without a compiler requires builds
verified against each supported engine version. That pipeline doesn't exist yet, so the
toolchain is required for now.
Documentation
- README — setup, initialization, and quick start
- Feature guides — authentication, analytics, game config, player data, game
commands, shop, assets, events, logging, and code generation - CHANGELOG — full version history
- Docs site: https://docs.qwacks.com/sdk/unreal
- Support: salman@qwacks.com
MIT licensed.
What's Changed
- feat: setting up sdk config and general clean up by @SalmanFallatah in #1
- feat: SDK boot/init global accessor + editor version baking by @SalmanFallatah in #2
- feat: HTTP layer + automatic edit-time version baking by @SalmanFallatah in #3
- feat: HTTP error responses + Blueprint error surface by @SalmanFallatah in #4
- feat: SDK event hub + auto-init-safe callbacks by @SalmanFallatah in #5
- feat: player authentication by @SalmanFallatah in #6
- feat: Analytics (Big chunk of a push to establish the entirety of mirroring Unity) by @SalmanFallatah in #7
- feat: Blueprint metadata builders for analytics by @SalmanFallatah in #8
- feat: sessioning logic , refactor by @SalmanFallatah in #9
- feat: game config + game providers with offline snapshot cache by @SalmanFallatah in #10
- feat: shop provider (catalog, purchase, inventory) + analytics transactions by @SalmanFallatah in #11
- refactor: expose free-form data/stats as an FFlockJsonData handle by @SalmanFallatah in #12
- feat: player data/templates/bans provider + shared FFlockStructuredData handle by @SalmanFallatah in #13
- feat: game commands provider with money-safe offline queue by @SalmanFallatah in #14
- feat: codegen blueprint support complete — one-node reads, writes, and commands by @SalmanFallatah in #15
- feat: codegen — a generated C++ module, and a restructured README by @SalmanFallatah in #16
- feat: prepare the SDK for public release by @SalmanFallatah in #17
- feat: close out the offline layer — reachabi...