... | ... | @@ -6,21 +6,22 @@ This is the main documentation for FixIt. |
|
|
|
|
|
---
|
|
|
- [Quick start](#quick-start)
|
|
|
- [Project integration](#project-integration)
|
|
|
- [Project settings](#project-settings)
|
|
|
- [Login and creating an issue](#login-and-creating-an-issue)
|
|
|
- [From blueprint](#from-blueprint)
|
|
|
- [Setting up UI](#setting-up-ui)
|
|
|
- [More details](#more-details)
|
|
|
- [Player and platform data collection](#player-and-platform-data-collection)
|
|
|
- [Back-end credentials management](#back-end-credentials-management)
|
|
|
- [Project integration](#project-integration)
|
|
|
- [Project settings](#project-settings)
|
|
|
- [Login and creating an issue](#login-and-creating-an-issue)
|
|
|
- [From blueprint](#from-blueprint)
|
|
|
- [Setting up UI](#setting-up-ui)
|
|
|
---
|
|
|
Also look at the second section for more details:
|
|
|
- [More details](https://lab.frogg.it/machinmachines/unreal/fixit/-/wikis/home/More-Details)
|
|
|
- [Player and platform data collection](https://lab.frogg.it/machinmachines/unreal/fixit/-/wikis/home/More-Details#player-and-platform-data-collection)
|
|
|
- [Back-end credentials management](https://lab.frogg.it/machinmachines/unreal/fixit/-/wikis/home/More-Details#back-end-credentials-management)
|
|
|
- [Side note: keeping credentials safe](#side-note-keeping-credentials-safe)
|
|
|
- [Setting up credentials](#setting-up-credentials)
|
|
|
- [Backend: Jira](#backend-jira)
|
|
|
- [Pre and post events](#pre-and-post-events)
|
|
|
- [Crash Report Client integration](#crash-report-client-integration)
|
|
|
- [Making it crash](#making-it-crash)
|
|
|
|
|
|
- [Setting up credentials](https://lab.frogg.it/machinmachines/unreal/fixit/-/wikis/home/More-Details#setting-up-credentials)
|
|
|
- [Backend: Jira](https://lab.frogg.it/machinmachines/unreal/fixit/-/wikis/home/More-Details#backend-jira)
|
|
|
- [Pre and post events](https://lab.frogg.it/machinmachines/unreal/fixit/-/wikis/home/More-Details#pre-and-post-events)
|
|
|
- [Crash Report Client integration](https://lab.frogg.it/machinmachines/unreal/fixit/-/wikis/home/More-Details#crash-report-client-integration)
|
|
|
- [Making it crash](https://lab.frogg.it/machinmachines/unreal/fixit/-/wikis/home/More-Details#making-it-crash)
|
|
|
---
|
|
|
|
|
|
You may also have a look at the [sandbox project](https://lab.frogg.it/machinmachines/unreal/sandbox) where FixIt is integrated, demoing a simple usage in its [dedicated Content folder](https://lab.frogg.it/machinmachines/unreal/sandbox/-/tree/main/Content/FixIt?ref_type=heads).
|
... | ... | @@ -118,100 +119,3 @@ Create a new blueprint class inheriting from FixIt MainWindow class: |
|
|
|
|
|
Create an instance of this widget and add it to the player viewport:
|
|
|
 |
|
|
|
|
|
# More details
|
|
|
|
|
|
## Player and platform data collection
|
|
|
FixIt can handle data collection and transmission to the backend.
|
|
|
It distinguishes between:
|
|
|
- platform data that gets collected once, is kept throughout an entire run of the executable. So it covers information that will not change during that period - typically hardware information.
|
|
|
- player data that is collected for every new bug submission. This is transient information such as player location, what appears on screen at this point etc.
|
|
|
|
|
|
Platform data is collected once into a text file that gets attached to every new submitted issue.
|
|
|
The best way to see the complete list of what gets collected is to look at the fields of the structure `FFixItPlatformData` located in `FixIt/Source/FixItCore/Public/FixItPlatformData.h`
|
|
|
|
|
|
Player data needs to get explicitly collected. It is made of text data appended to the bug comment and also include any number of additional files attached to it.
|
|
|
By default player data includes:
|
|
|
- a prefilled string with
|
|
|
- the user name
|
|
|
- a BugItGo string similar to what is given by the `bugit` [console command](https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/Engine/GameFramework/UCheatManager/BugIt?application_version=5.3).
|
|
|
- a screenshot of what was onscreen
|
|
|
|
|
|
## Back-end credentials management
|
|
|
|
|
|
Most issue tracking software (backends) require their user to be logged in in order to create issues. For FixIt this implies to feed user credentials to the backend at some point.
|
|
|
|
|
|
In FixIt there are two kind of credentials:
|
|
|
- *default credentials*: those are hardcoded and thus stored in the binary executable so changing them require rebuilding the executable.
|
|
|
- *override credentials*: those are stored in configuration files and as such may be changed any time, including from within the executable itself.
|
|
|
|
|
|
Only one of them is required and if both are provided, as it name implies the *override credentials* will take precedence.
|
|
|
|
|
|
This way you may distribute the same build to "public testers" (such as VIPs, open beta players etc.) that will emit issues with the default credentials without having to create an account, while still allowing an internal team to report issues with their personal account from the same build.
|
|
|
|
|
|
### Side note: keeping credentials safe
|
|
|
|
|
|
From a safety standpoint either kind of credentials are similar: credentials stored in a configuration file in a plain format are trivially retrievable, but so far default credentials are stored non-encrypted in the binary and thus their retrieval is less trivial but still very easy.
|
|
|
|
|
|
In case you do care about not leaking your credentials here are a few alternatives:
|
|
|
- Not providing default credentials at all and requiring users to create an account and setup their own credentials
|
|
|
- In case you do rely on default credentials, making sure the account associated with it has permissions properly setup so leaking the credentials would not provide too much damage to your issue tracking system
|
|
|
- Hiring us so we can develop a feature for default credentials to be stored in a safe way: [contact us!](https://machinmachines.froggit.page/machinmachines/contact/)
|
|
|
|
|
|
### Setting up credentials
|
|
|
|
|
|
Override credentials can be setup from the UI (see [here](#setting-up-ui)) or from the project settings (see [there](#project-settings)).
|
|
|
|
|
|
Default credentials are defined in `Source/FixItCore/Private/FixItDefaultCredentials.cpp`.
|
|
|
|
|
|
In case your depot is private you may commit this file so it can be shared with the entire team, otherwise it is advised to only edit it locally and use a command to ignore the local change, making sure your credentials never get pushed to the server.
|
|
|
|
|
|
With git this can be done with ["assume-unchanged"](https://git-scm.com/docs/git-update-index#Documentation/git-update-index.txt---no-assume-unchanged):
|
|
|
|
|
|
```
|
|
|
git update-index --assume-unchanged "Source/FixItCore/Private/FixItDefaultCredentials.cpp"
|
|
|
```
|
|
|
|
|
|
#### Backend: Jira
|
|
|
In Jira credentials are made of:
|
|
|
- an account email address
|
|
|
- an API token that can be retrieved as described [here](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/)
|
|
|
|
|
|
## Pre and post events
|
|
|
|
|
|
In order to customise FixIt behaviour there are events to get notified when actions happen.
|
|
|
So far these are available and can be subscribed to (directly from the FixIt subsystem):
|
|
|
- OnPlayerDataCollectionStarted, that happens when the player infos get collected, before the screenshot is taken
|
|
|
- OnPlayerDataCollectionDone when all playeer data collection is over, even the screenshot
|
|
|
|
|
|
This allows for example to have debug infos to be displayed on screen (at the OnPlayerDataCollectionStarted event) so the screenshot that will be attached to the issue shows them.
|
|
|
Or notify the player systems (at the OnPlayerDataCollectionDone event) that data collection being done it can now move on.
|
|
|
|
|
|
## Crash Report Client integration
|
|
|
|
|
|
FixIt can be integrated into the [Crash Reporter Client](https://dev.epicgames.com/documentation/en-us/unreal-engine/crash-reporting-in-unreal-engine) so whenever a crash occurs and the CRC gets shown to the user, there is a chance to directly file a bug report to your issue tracking software.
|
|
|
|
|
|
The way it is done is that FixIt is split in two modules:
|
|
|
- A "core" module implementing the core communication with the different backends.
|
|
|
- An engine module for integrating into any project, either through C++ or blueprint API.
|
|
|
|
|
|
Only the core module needs to get integrated into the CRC.
|
|
|
|
|
|
**Please notice that doing so requires a source build of the engine (github or similar) and modifying some files of the engine itself - at your own risk!**
|
|
|
|
|
|
This can be done by following those steps:
|
|
|
- Make FixIt an engine plugin by moving its folder to `UNREALENGINE_ROOT/Engine/Plugins/FixIt`
|
|
|
- apply all modifications from [this branch](https://github.com/EpicGames/UnrealEngine/compare/release...MachinMachines:UnrealEngine:fixit_crc_5_2_1) on our custom fork. Obviously you may want to check beforehand obviously but the changes are tiny. If you are used to Good Ol' Times patching (or curious to try) you can:
|
|
|
- use [this link](https://github.com/EpicGames/UnrealEngine/compare/release...MachinMachines:UnrealEngine:fixit_crc_5_2_1.patch) to retrieve a patch file
|
|
|
- perform a dry run: `git apply --check release...MachinMachines UnrealEngine fixit_crc_5_2_1.patch`
|
|
|
- and if you are happy with the result then apply the patch: `git am release...MachinMachines UnrealEngine fixit_crc_5_2_1.patch`
|
|
|
- Build the CRC `Engine/Source/Programs/CrashReportClient`
|
|
|
|
|
|
Now you have a custom Crash Reporter Client with an additional button `"Send Bug Report"`. Clicking on it will create a new bug with its content filled with th text entered in the "detailed information" textbox of the CRC, and with the additional crash details attached to it.
|
|
|
|
|
|
### Making it crash
|
|
|
|
|
|
If ever you need it, there is a console command:
|
|
|
```
|
|
|
FixIt.Crash
|
|
|
``` |