A number of technical changes were introduced under the hood of the 0.63.1 APK. From the start to finish, the new APK highlights a maturing platform for AR gaming. Although Niantic’s platform is far from finished, the new APK shows traces of their vision.
Memory Pools for better memory management
The 0.63.1 APK shows a new approach to memory management – Memory Pools! Our data mine shows that Niantic implemented Zenject, a lightweight dependency injection framework for Unity3D, that features a built-in support for memory pools.
Memory pools are a software concept that helps prevent memory fragmentation and speeds up memory management. They are almost exclusively used for heap memory management and have a number of advantages over manual memory allocation:
- Memory pools allow memory allocation with constant execution time. The memory release for thousands of objects in a pool is just one operation, not one by one if malloc is used to allocate memory for each object.
- Memory pools can be grouped in hierarchical tree structures
- Fixed-size block memory pools do not need to store allocation metadata for each allocation
- Memory pools help to avoid out of memory errors.
It’s not yet clear if Memory pools are already activated in this APK.
Namespace changed from NianticLabs to Niantic.Platform
A change that repeated quite a few times in the APK mine was the namespace change from NianticLabs to Niantic.Platform. The namespace change hints that a portion of the Pokémon GO codebase is being reused in other applications, or is being prepared for reuse.
[old] => .NianticLabs.MODULENAME [new] => .Niantic.Platform.MODULENAME
This change is in line with Niantic’s plans for Ingress 2.0 and their general plan to become a global AR gaming platform provider.
A number of modules have been transferred to the Niantic.Platform namespace, mostly related to authentication and mapping. The next feature, push notifications, are completely written in a related NianticProject.Platform namespace.
Push notifications are now powered by Google Cloud Messaging
A whole sleeve of tools and code was added to support real time push notifications. Niantic opted for the Google Cloud Messaging service to server as their notification backend.
GCM is a popular solution to enable features like real time alerts and push interaction and enables sending messages “up and down” between the server (Niantic’s backend) and the client (the game on your mobile device).
We expect this feature to change over time and update to Firebase Cloud Messaging, as GCM is in the process of being updated to FCM. Both messaging systems are free for use.