MAJOR rework

- improves a lot on the Go side including better config and logging libraries (including log rotation), better internal package distribution, and new a3go functionality to make data transfer more performant
- SQF side preprocessing of capture data is now minimal - arrays in hashmap format are sent directly to the extension and parsed there to minimize game impact
- CBA custom events are implemented in a better fashion
- README update
- license change
- with performance improvements, the deep customization of integrated metric gathering is removed in return to a single refreshRateMs, defining the interval at which core metrics are captured
- peeled back the list of core metrics to the core information used in troubleshooting and benchmarking
This commit is contained in:
2023-10-10 00:44:50 -07:00
parent cf45d6b263
commit dc822c4c93
75 changed files with 4335 additions and 3347 deletions

View File

@@ -0,0 +1,28 @@
#include "script_component.hpp"
private _hashesOut = [];
{
_x params ["_playerID", "_ownerId", "_playerUID", "_profileName", "_displayName", "_steamName", "_clientState", "_isHC", "_adminState", "_networkInfo", "_unit"];
_networkInfo params ["_avgPing", "_avgBandwidth", "_desync"];
if (_unit == objNull || _isHC) then {
continue;
};
_tags = +GVARMAIN(standardTags);
_tags pushBack ["playerUID", _playerUID];
_tags pushBack ["playerName", _profileName];
_hashesOut pushBack ([
["bucket", "player_performance"],
["measurement", "network"],
["tags", _tags],
["fields", [
["avgPing", _avgPing],
["avgBandwidth", _avgBandwidth],
["desync", _desync]
]]
]);
} forEach (allUsers apply {getUserInfo _x});
_hashesOut;