The official Unreal Engine plugin for Prototir, where creators publish playable prototypes and testers play them and leave feedback. Upload a packaged desktop build of your game to Prototir. Testers who download it pair it with their Prototir account once. Every play then shows up in your dashboard as a session with its events and score, and testers get Feedback & tools (Screenshot, Comment, Console and Performance) without you writing any code.
Beta (0.1). Unreal 5.4 and newer. Built and tested on Windows with Unreal 5.8. The code is written for Mac and Linux too, but not yet run there: tell us if you try it.
- Download
Prototir-<version>.zipfrom the latest release. - Unzip it into your project's
Pluginsfolder, so you havePlugins/Prototir/Prototir.uplugin. - Open the project, enable Prototir in Edit > Plugins, and restart the editor. It is off until you enable it, so a Blueprint-only project compiles it into the game when packaging.
The release includes the editor binaries for Unreal 5.8 on Windows, so the editor opens the plugin
without compiling. On other versions (5.4 to 5.7), Mac or Linux, Unreal compiles it from Source when
the project opens, which needs a C++ project (add any C++ class in the editor first). Packaging a game
always compiles the plugin, so it needs Visual Studio on Windows or Xcode on Mac, as for any plugin
with code.
The plugin starts with your game, so you don't need to place anything in a level. From any Blueprint:
| Node | What it does |
|---|---|
| Prototir Ready | Call once the game is genuinely interactive (when play can begin, not while a loading screen shows). Starts the measured play session. |
| Prototir Event | Counts an event such as level_complete. Names use 1 to 64 lowercase letters, numbers and _ . : -. |
| Prototir Score | The player's score. The session keeps the best one. |
| Show Prototir Pairing Screen | The built-in screen that walks a tester through pairing. Put it behind a menu button, for example "Connect to Prototir". |
| Show Prototir Feedback | Opens the comment composer, for your own feedback button or pause menu. |
For everything else, use Get PrototirSubsystem:
- Pairing: Is Paired, Get Pairing State, Begin Pairing and Unpair, plus the events On Pairing Started, On Pairing Succeeded and On Pairing Failed to draw your own pairing screen.
- Feedback: Take Screenshot For Feedback, Send Feedback, Set Feedback Tools Visible and Get Console Text, plus the events On Feedback Opened and On Feedback Closed (for example to pause while a tester writes) and On Feedback Sent.
- Sessions: Flush Session and Configure.
From C++, add "Prototir" to your module's dependencies:
#include "PrototirSubsystem.h"
if (UPrototirSubsystem* Prototir = UPrototirSubsystem::Get(this))
{
Prototir->Ready();
Prototir->Event(TEXT("level_complete"));
Prototir->Score(1200);
}A downloaded build has no browser session, so it shows a code and a QR. The tester opens the link on
any device, signs in to Prototir, and approves it. The build remembers the pairing on that machine
(under Saved/Prototir) until the tester disconnects it. Builds that aren't paired report nothing.
You don't need to set which prototype the build belongs to. When you upload a build, Prototir writes
the prototype into the download (prototir-prototype.json next to the game's .exe). To test pairing
before your first upload, set Project Settings > Plugins > Prototir > Prototype Slug to the slug
in your prototype's URL (prototir.com/p/<slug>).
In a build that knows its prototype, a Feedback & tools control sits in the bottom-left corner, the same one testers see on the web. It unfolds into:
- Screenshot: captures the game as the tester sees it, including your HUD but without Prototir's own controls. The tester places a pin and writes what is wrong.
- Comment: a written comment.
- Console: the game's log (Unreal's output log, without Verbose lines), recorded from the start, so the error a tester saw before opening the panel is already there. Copy it, or attach it to a comment.
- Performance: frame rate, slowest frame and memory over the last minute, recorded only while the panel is open. Copy the summary, or attach it to a comment.
A message is always required: a screenshot, log or summary is what the comment is about, never sent alone. Comments are posted as the paired tester. If the build isn't paired yet, the composer asks the tester to connect first and keeps their draft.
F8 unfolds the tools and shows the cursor, for games that capture the mouse. Change the key, or turn the control off and use Show Prototir Feedback from your own menu, in Project Settings > Plugins > Prototir. The control is drawn over your game in Slate, so you don't need to add any widgets or assets.
Tools > Prototir > Publish to Prototir packages the project for the computer you're on (Windows, macOS or Linux), uploads it, and opens prototir.com with the build waiting. You finish there: title, cover, visibility and rights. The editor never publishes on its own.
- Linking: the first time, your browser opens to link this editor to your Prototir account, once per computer. The link can only upload builds. Remove it with Unlink This Editor, or under Linked editors on your account page.
- Which prototype: with a Prototype Slug in Project Settings, the build goes to that prototype's builds in Studio. Without one, the upload page opens for a new prototype.
- Version: Project Settings > Description > Project Version is offered as the build's version.
- Configuration: you choose, under Publish in Prototir's settings. Development (the default) keeps the game's log for testers' Console tool. Shipping is smaller, but Unreal removes the log, so the Console row stays off and greyed, and its tooltip explains why. Even an empty Unreal project packages to about 250 MB (Shipping) or 330 MB (Development), so check that your build fits your Prototir plan (Free 250 MB, Pro 500 MB, Team and Enterprise 1 GB).
- Build id: each package carries
prototir-build.json, so Prototir can tell when a tester runs an older build than the one you uploaded.
The same command is available as the console command Prototir.Publish.
The editor checks for a newer plugin once a day and shows a notice with a link to the release. Close
the editor, then replace Plugins/Prototir with the new release. Tools > Prototir > Check for
Prototir Updates checks now.
- The play so far is sent every 30 seconds, and when the game window loses focus.
- Quitting leaves no time for a request, so the last part of the play is saved to disk and sent the next time the game starts. The same applies to a tester who plays offline.
- Play in the editor never reports a session. Ready, events and scores are written to the Output
Log (
LogPrototir) instead. Pairing still works in the editor, so you can try the pairing screen.
Unreal's .ini files read // as the start of a comment, so a web address written by hand must be in
quotes: ApiBaseUrl="http://127.0.0.1:7071/api". Project Settings writes it correctly for you.
tools/build.ps1 copies the plugin and the test project in HostProject to D:\PrototirUnreal and
builds there, because engine builds take several gigabytes. Set PROTOTIR_UE_ROOT and
PROTOTIR_UE_WORK to change the engine and the work folder.
tools\build.ps1 test # build the editor and run the automation tests (Prototir.*)
tools\build.ps1 plugin # package the plugin on its own
tools\build.ps1 game # package the test project as a Windows gameThe test game (HostProject) calls Ready at start. Press E to send an event, S to report a
score, and P to open the pairing screen. Pass -PrototirSlug=<slug> -PrototirApi=<url> to point
it at a prototype, and -PrototirPair to open pairing at launch.
MIT. See LICENSE.md.