What the player allowed
The build asks its player what this playtest may collect before it collects anything, and their answer decides what the rest of this page does:
Flock Is Playtest Feature Enabled already answers for both at once: a feature the playtest turns on
and the player left out reads as off, everywhere. Flock Get Playtest Consent gives the answer
itself, and the question, how a game asks it in its own screens, and the setting that turns it off are
on the Unreal plugin page.
The feedback form is not covered by that answer. It is sent only when a player fills it in and
presses Send, which is their own doing either way — and a form an earlier launch could not send is
still sent later, whatever they answered since.
Video recording
The game’s screen is recorded from the moment the playtest loads, one recording per launch, into a WebM file a browser plays. Background time is not recorded. The Video Recording settings in Flock Playtest Settings set the size, frame rate and bitrate — 1280×720, 30 frames a second and Video Bitrate (kbps) 2000 by default — and two limits, whichever comes first: Recording Length Limit (Minutes), 60, and Recording Size Limit (MB), 1536. A recording is uploaded to its session:- when a length or size limit ends it;
- when the game asks, with Flock Stop And Upload Playtest Recording or the feedback form’s Upload your recording button;
- when the game stops it for good, with Flock Stop Video Recording;
- and at the start of a later launch, for anything an earlier launch could not send: a failed upload, a quit, a crash.
Quitting does not upload. A whole recording cannot be sent inside a shutdown, so it is kept and
the next launch sends it. A recording is deleted once uploaded, and one that no playtest session ever
started for is deleted by the next launch, since it can never be sent.
Saved/FlockPlaytest/Recordings/, inside Recordings Disk Budget (MB), 4096.
When room is short the oldest test videos go first and recordings waiting to be uploaded go last.
Offer a player a way to send their recording only while Flock Can Send Playtest Recording is true.
It is false when no session has started for the recording, and a button pressed then would stop the
recording and send nothing. To tell the player how it went, bind On Recording Upload Finished: it
is raised once when the launch’s recording finishes — uploaded, or not uploaded with the reason,
including when the upload could not begin at all. It is not raised while the game is closing.
Heavy analytics
The plugin sends these through the Flock SDK’s analytics, under theplaytest category, and they read
on Dashboards → Game Metrics:
performance_windowfor every ten seconds of play: median, 95th and 99th percentile frame time, hitches, and memory used and at its peak;level_loadedfor every level this game instance loads, with the level before it and, for a blocking load, how long it took;- your own events, with Flock Record Playtest Event. Build their properties with the Set Command nodes.
Exceptions
Exceptions stay the Flock SDK’s. It captures error lines, failed ensures, Blueprint script errors such as Accessed None, and crashes, with its own settings under Analytics | Exceptions, and reports them on Diagnostics → Errors. A playtest’s exception switch never turns that on or off; when a playtest asks for exceptions and Analytics Capture Exceptions is off, the log warns once as the session starts. To check that exceptions reach the dashboard, typeFlock.RaiseTestException error or
Flock.RaiseTestException blueprint 100 in the console of a Development build. A hundred of the same
fault arrive as one report, then one repeat report counting the other ninety-nine once the repeat
window closes.
The feedback form
When the playtest publishes a form, players open it with Feedback Form Key (F9 by default; set it to none to turn the key off), or your game opens it with Flock Open Feedback Form — from a pause menu, for example. Check Flock Can Open Feedback Form first: it is false when the playtest published no form, so your game can leave its own entry out rather than offering nothing.
A published form, drawn from the playtest: every question, and the button that sends the recording.
A form of your own
Flock Get Feedback Form hands your UI the questions: each one’s id, kind, label, help text, options and whether it needs an answer. Record answers with Set Feedback Text Answer, Set Feedback Rating Answer (1 to 5), Set Feedback Checkbox Answer and Set Feedback Chosen Option, check them with Find Feedback Form Problems, and send them with Flock Send Feedback Form Answers. Compare a question’s kind with the Flock Feedback Question Kind nodes rather than typing it, and treat a kind you do not know as text, which is how the server reads it.Blueprint nodes
All under Flock | Playtest. Each finds the playtest from the calling graph.Trying it in the editor
Before any playtest exists, tick Record Video In Play In Editor in Project Settings → Plugins → Flock Playtest Local Settings and press Play, or typeFlockPlaytest.RecordTestVideo 30 in a
Development build’s console. Test videos are saved under
Saved/FlockPlaytest/Recordings/TestVideos/ and never uploaded.
Against a real playtest, press Play with the settings from the setup page and sign in with
Flock.LoginWithDevice. Then, in a Development build’s console:
The waits exist because every
-ExecCmds command runs on the first frame, before anything has been
recorded or a session has started.
Checking a playtest build
FlockPlaytest.SelfTest checks everything a playtest build does against your real Protokite in one go,
and logs a line per step and a count at the end: Playtest self-test finished: 16 passed, 0 failed, 1 skipped. Development builds only.
Each check sits beside a request Protokite must refuse: a wrong API key, a missing one, a version no
playtest is linked to, a session start that names no player, a form missing a needed answer or choosing
an option that is not on the list, and a form, upload link and end for a session that does not exist. A
check that only ever succeeds cannot tell a working build from a broken one, so a refusal passes only
with its own HTTP status and, for a form, the question it names.
It signs nobody in, so sign in first. From a script:
- It ends the launch’s session as its last step, so run it in a launch of its own. A session a refusal should have prevented is ended at once, so a run leaves nothing open.
- It leaves a trace on your dashboards: one filled-in form on its session, one
playtest_self_testevent, one Blueprint fault raised twice so its repeat is counted, and the launch’s recording. - A step is skipped, saying why, when nobody has answered what the playtest may collect (answer it
first with
FlockPlaytest.AnswerConsent video_and_play_data); when the playtest does not turn its feature on; when the build has no video encoder, which is every platform but 64-bit Windows; when the launch cannot draw (-nullrhi), since nothing is recorded; when Analytics Cache Failed Events is off, since a report sent the moment it is made cannot be watched; and for a closed playtest unless you name one.