This is an open source plugin for Unreal Engine to efficiently send game engine analytics (client/server) and/or logs (server) data to any HTTPS endpoint that can receive JSON data, including the SparkLogs Cloud or open source forwarding agents like vector.dev.
Join the discord community to ask questions, provide feedback, or collaborate on enhancements.
Free accounts are available with SparkLogs to ingest up to 25 GB/month. That's enough free quota for over 1 million analytics sessions of data every month (assuming each session records 16 events and each event is about 1.5 KiB).
The SparkLogs Cloud provides a turn-key analytics pipeline that scales effortlessly with your game to 100s of millions of active users, auto extracts structured fields from your unstructured logs, and also provides daily analytics snapshots, user geolocation (country), currency conversion for analytics purchase events, and other features. SparkLogs has no cardinality limits and has no limits on the size and number of custom JSON fields for your logs and analytics events.
-
Logs: Ingest and aggregate log data from backend game servers as well as editor environments or dev builds. (Collecting log data from client builds is possible but not recommended, use analytics to understand behavior of your players in production builds.)
-
Analytics: Collect analytic events of various kinds, including session start and end, design, progression, real money purchases, ads, resource grants and sinks, and error or other textual events. A textual reason and custom JSON fields can optionally be associated with each analytics event.
- If the feature is enabled for your SparkLogs workspace, daily snapshots of game engine analytics events will automatically be computed, so you can analyze daily active users (DAU), average session and ad statistics, progression funnels, and other key game metrics.
-
Ease of Use: Once configured, the plugin automatically captures logs and analytics events, including built-in analytics events generated by the Unreal Engine. You can record analytics events either from Blueprints or in C++ code using thread-safe static methods. The plugin does not require preconfiguration of any field values or schemas.
-
Performance: Keeping overhead low and not interfering with game performance is top priority. The plugin is stress tested to require no more than 0.1% of CPU even at data volumes 10x higher than average. Additionally, in an extreme event where 10s of megabytes of data are generated every second (should never happen in production under normal circumstances), the plugin will process only a fixed amount of work per second -- this is guaranteed to keep CPU overhead low while queuing data. Transmitted data is efficiently compressed to reduce network bandwidth by ~8x.
-
Scale: Automatically scales from 0 to 100s of millions of daily active users. Schemaless with no limits on custom fields, and no cardinality limits.
-
Reliability: Logs and analytics data are persistently queued until receipt is acknowledged. If a player's local clock is inaccurate, the SparkLogs Cloud will automatically adjust for clock skew.
-
Resiliency: If the game engine crashes, it will attempt to flush to disk any pending logs and events, and then when the game engine is restarted, it will resend any queued data. It will also detect any previously open game engine analytics session that was not closed properly (e.g., due to a crash) and will automatically close that session with a session end time of the last known analytics event for that session. Works with concurrent game engine sessions. Payloads for retried requests are identical, even across process crashes, allowing SparkLogs to deduplicate identical payloads and avoid recording duplicate data.
-
Security: Data is transmitted over HTTPS and requests are authenticated.
-
Flexibility: The plugin supports desktops and mobile platforms. The plugin can be configured to send data to the SparkLogs Cloud or any HTTPS endpoint of your choice.
-
Developer-Friendly: Compatible with various developer modes, including play-in-editor sessions and concurrent client/server processes running on the same system.
-
Gradual Roll Out: For games with large user bases, you may want to gradually roll out use of the plugin. To do this, you can configure the plugin to only activate a certain percentage of the time, or you can completely control when data is shipped based on custom code. You can also use this plugin in parallel with your existing analytics plugin to ease the transition.
Tested to be compatible with Unreal Engine 4.27 through 5.6 for Windows, Mac, and Linux. iOS and Android are in a beta state where they are expected to work but are not yet as mature as desktop platforms. The plugin is likely compatible with slightly older and newer engine versions but such support is untested.
Pull requests to add support for other platforms are welcome. The plugin currently requires multithreading support so adding support for single-threaded platforms would be a little more work but possible, so contact us if this is important to you.
Refer to the full plugin documentation for how to install, configure, use, and deploy the plugin. This also includes information on game engine analytics features, including session management and supported event types.
The plugin has a full suite of unit and automation tests. Run them by opening the session frontend
in the Unreal Editor, going to the Automation tab, and then selecting and running the sparklogs tests.
All contributions are welcome! Open an issue or pull request, and please join our discord to share your ideas and collaborate. Be sure to run the test suite before opening a pull request, and also include a note confirming that you're willing to contribute the code under the project's open source license.