Navigation
API > API/Plugins > API/Plugins/ConcertTransport
This file defines the Concert Protocol Tracing macros. Unreal Insights does not understand it by default and we add extensions in the ConcertInsights plugin to visualize it.
The heart of Concert Protocol Tracing are sequences. A sequence consists of actions that are performed by multiple endpoints. Example of a sequence:
- Every frame, client 1 collects data to replicate and sends it to the server.
- The server enqueues the data and sends it to client 2.
- Client 2 applies the data. Sequences are associated with a EProtocolSuite and grouped accordingly by the ConcertInsights extension.
For now there is only one type of trace: traced objects. See CONCERT_TRACE_OBJECT_ Macros. These associate actions with an object and a sequence ID, which groups together related changes. For example, in the context of replication a single frame's data being sent across the clients gets a single sequence ID:
- client 1 could trace a. how long it takes to serialize the data and then b. how long to compress it.
- the server could trace how long it takes to process the data
- client 2 could trace a. how long it apply the data to the UObject
ConcertInsights visualizes networking transport times. Transmission starts with CONCERT_TRACE_OBJECT_TRANSMISSION_START and ends with CONCERT_TRACE_OBJECT_TRANSMISSION_RECEIVE.
TODO DP: We might want to add CONCERT_TRACE_OBJECT_SEND and CONCERT_TRACE_OBJECT_RECEIVE macros to be explicit about sending and receiving.
Every endpoint writes to its own .utrace file and must be in context of a session ID (i.e. clients are in a session, server is told which session is being traced). When beginning to trace, the first event sent to the .utrace files is CONCERT_TRACE_INIT, which sets data needed to aggregate the .utrace files, such as endpoint IDs. Finally, ConcertInsights aggregates the .utrace files in the UI. The related .utrace files are grouped by SessionID, which Unreal Insights saves in the file by reading the -tracesessionguid command line; CONCERT_TRACE_INIT associates the .utrace file with the client / server endpoint ID. ConcertInsightsSynchronizedTrace implements synchronized recording.
| Name | UE::ConcertTrace::EProtocolSuite |
| Type | enum |
| Header File | /Engine/Plugins/Developer/Concert/ConcertMain/Source/ConcertTransport/Public/Trace/ConcertProtocolTrace.h |
| Include Path | #include "Trace/ConcertProtocolTrace.h" |
Syntax
namespace UE
{
namespace ConcertTrace
{
enum EProtocolSuite
{
Unknown,
Replication,
}
}
}
Values
| Name | Remarks |
|---|---|
| Unknown | |
| Replication | The traces are related to the replication system |