UPDATE 12/12/18
The issues addressed below have all been resolved.
GameAnalytics came out with their own Roblox SDK! This is awesome. However, there are concerning issues that should be addressed before using this in your game.
Issue 1: ProcessReceipt assigned improperly
On line 118 of the GameAnalyticsScript, the ProcessReceipt callback is assigned. This is bad because it’s a single-assign callback. In other words, it will override (or be overridden) by whatever ProcessReceipt function you have assigned yourself.
From the DevHub:
Issue 2: ProcessReceipt doesn’t return ProductPurchaseDecision
Related to issue 1, the ProcessReceipt callback provided does not return a ProductPurchaseDecision
value, which is necessary for the callback to function properly.
From the DevHub:
Issue 3: Using deprecated Lua functions
Scattered about the code is usage of table.getn
and string.len
. These are deprecated in favor of the #
operator. This is not a breaking issue, but should be addressed.
Issue 4: Services are accessed without game:GetService()
Because services can be renamed, any library code should always use game:GetService
when accessing a service. Instead, the SDK consistently uses dot-notation to access services like ReplicatedStorage. For most games, this is not an issue, but I would consider it dangerous to avoid this change.
Issue 5: SHA256 performance
The default implementation of the sha2_256
module can hit performance hard. @Widgeon has a fix for this in another thread. This is not a breaking issue, but I would recommend this change being made.
Issue 6: Device Recognition
As noted by @berezaa in this thread, the main GameAnalyticsClient script incorrectly fetches the client platform. Touchpad laptops will be marked as “mobile” devices.
Edit: @EchoReaper has submitted these issues under the GitHub repo Issues page.