HPWU Beta APK Teardown

Harry Potter Wizards Unite

Niantic released an "open" beta of Harry Potter Wizards Unite (HPWU) to New Zealand just a few days ago. With this early access release, we finally get a look at the game and all it has to offer. But for those of us outside of NZ, all we can do is toy around with the app while we wait for the beta window to expand. This is my first APK teardown I've ever done a writeup for, so please bear with me.

First things first - tools used:
  • APKMirror - Easiest way to get a copy of the .apk file while it's restricted to NZ on the play store. The .apk has been removed via a DMCA request by Niantic, though.
  • APKTool - A fantastic tool built by iBotPeaches. Must-have for decompiling .apks.
  • UABE (Unity Assets Bundle Extractor) - A simple Windows tool for extracting assets from Unity asset bundles.
  • AssetStudio - Similar to UABE, but a bit better for bulk extracting assets from Unity asset bundles.
  • CyberChef - An entire toolshed of features for decoding everything. Even includes a poor-man's protobuf decoder.

The Game

Wizards Unite is built on the same game engine as Niantic's other games, Pokemon Go and Ingress Prime. At the core, their game engine is built on Unity, with the Niantic platform on top of that. Much of the client-side codebase appears to be shared between all their games and they all are backed by Niantic's proprietary database of points of interest. They also continue their trend of using Google Cloud Platform as the back-end for HPWU. While there are some references to Warner Bros Games (and Portkey Games) in the apk, it appears the vast majority of the game is running on Niantic's code and existing platform.


The APK


The HPWU .apk file is a measly 56 MB. It contains the basics to run the game, Unity libraries, camera libraries, some JVM code, and a number of assets. Looking through the smali code, you can see references to:
  • Facebook - login provider
  • Google - login provider
  • ARCore - since Niantic does a lot with augmented reality
  • Firebase Crashlytics - collects and analyzes crash logs
  • Helpshift - this is new to HPWU I believe. They are a support company, so perhaps used for gathering feedback during beta?
  • Neovisionaries websocket library - probably used for real-time interactions in battles. Faster than HTTP transport
  • WBGames and WBSF
    • A haptics library
    • Code for local notifications
    • Code for handling app permissions
    • A library for handling errors as your phone runs low on storage
  • Yasirkula Unity Native Gallery - a 3rd party Unity library for interacting with local images on Android
  • Yusuf Olokaba NatCam and NatCorder - a couple 3rd party Unity libraries for taking photos and video on Android
Smali code
A lot of Niantic code is compiled to a native binary format (libNianticLabsPlugin.so) and loaded into the Unity engine. While I've looked at this a little bit for Niantic's previous games, I didn't spend too much time on it for this .apk since I'm assuming it's mostly similar content to their other games (plus binary reverse engineering is hard).

The Assets

The assets are the really juicy part of this whole apk teardown, as they contain the biggest insight into actual gameplay.

Baby Niffler
Bane

Much like Pokemon Go and Ingress Prime, HPWU uses Google protocol buffers (protobufs) extensively. There is a protobuf file called GameDataClient, which I'm guessing is the master protobuf for game assets and it contains all sorts of info about the gameplay - encounters, spells, potions, ingredients, professions, etc. I would guess this file is analogous to PoGo's GAME_MASTER file. I'm sure several smarter people than me are currently working on better ways to decode the GameDataClient file so I won't spend too much time on that for this post. I did use it to cross-reference some of the image names, however.

Professions

There are currently 3 professions in the game. Auror, Magizoologist, and Professor. Each profession has a number of skills you can learn. There are also assets for 2 other "professions" - "Enemy" and "Map Ability". I believe these relate to abilities which can be used when battling in fortresses.
Auror mentor - Harry Potter
Here are all the Auror skills.

Magizoologist mentor - Rubeus Hagrid
Here are all the Magizoologist skills.


Professor mentor - Minerva McGonagal
Here are all the Professor skills.
Here are all the Enemy skills.
Here are all the Map Ability skills.

Spells

There are a number of spells currently in the game, some combat spells and some normal spells. Several of the spells don't seem to have glyphs and I could not figure out how to map the combat spell names to the glyphs at all.
The combat spells are:

  • Effervo
  • Ducklifors
  • Expecto Patronum
  • Incarcerous
  • Mustelifors
  • Petrificus Totalus
  • Reversis
  • Stupefy

Combat spells
The regular spells and their descriptions are:

  • Accio - Use the Water-Making Spell to conjure water [bad description?]
  • Aguamenti - Use the Water-Making Spell to conjure water
  • Alohomora - Use the Unlocking Spell to pick any lock
  • Arresto Momentum - Use this charm to slow the velocity of any object
  • Bombarda - Use the Exploding charm to provoke small explosions
  • Diffindo - Use the Severing Charm to percisely and accurately cut through objects
  • Ebublio - Use this jinx to entrap your target within a large bubble
  • Expecto Patronum - Cast a Patronus to repel Dementors
  • Finite - End the effects of a previously cast spell
  • Flipendo - Use the Knockback jinx to disable opponents
  • Incendio - Use the Fire-Making Spell to conjure fire
  • Meteolojinx Recanto - Use this counter-charm to cause the effects of Weather-Modifying Charms to cease
  • Rennervate - Use the Water-Making Spell to conjure water [bad description?]
  • Reparo - Use the repairing spell to fix a broken object
  • Revelio - Use the Water-Making Spell to conjure water [bad description?]
  • Ridikulus - Use the Fire-Making Spell to conjure fire [bad description and typo?]
  • Stupefy - Use the Water-Making Spell to conjure water [bad description?]
  • Ventus - Use the Water-Making Spell to conjure water [bad description?]
Regular spells
Finally - although there is no glyph for it, there is reference in the protobufs to the spell Legilimens. It sounds like it will appear on your passport (profile page) once you learn it.

Potions



Healing Potion

Here are the list of potions and their descriptions:
  • Baruffio's Brain Elixir - Grants you extra Wizard XP from each Trace and Portkey you complete.
  • Bountiful Brew - [no description]
  • Dawdle Draught - Reduces the Confoundable's likelihood of fleeing with the Foundable, giving you more chances to cast spells in a Trace.
  • [Weak] Exstimulo Potion - Improves your spellcast in both combat and Traces.
  • Strong Exstimulo Potion - Strongly improves your spellcast in both combat and Traces.
  • Potent Exstimulo Potion - Greatly improves your spellcast in both combat and Traces.
  • Felix Felicis Potion - [no description]
  • Healing Potion - Restores Stamina that you have lost in combat.
  • Invigoration Draught - Grants Focus for Strategic Spells in Wizarding Challenges.
  • Strong Invigoration Draught - Grants significant Focus for Strategic Spells in Wizarding Challenges.
  • Memory Potion - Yields extra Family XP from each Trace you complete.
  • Tonic for Trace Detection - Increases your perception of Trace magic, revealing more Traces as you explore.
  • Scintillation Potion - [no description]
  • Wideye Potion - Improves your speed and accuracy, producing a perfect spellcast.
  • Wit-Sharpening Potion - Increases your spell's efficacy against Master Foes in Challenges.

Weather


Much like Pokemon Go, HPWU has a weather system. All the possible weather effects:
  • Clear
  • Fog
  • Overcast
  • Partly Cloudy
  • Partly Cloudy Day
  • Rainy
  • Snow
  • Windy
  • Hazardous Warning
  • Severe Warning
  • Moon Phase
    • First Quarter
    • Full
    • New Moon
    • Third Quarter
    • Waning Crescent
    • Waning Gibbous
    • Waxing Crescent
    • Waxing Gibbous

And Much More

There is much, much more still to be revealed here, but at some point I should probably get some sleep. So, rather than going into encounters, wands types, foundables, challenges, etc, I will leave you with 3 things.

First, all of the possible potion ingredients.

Second, I found references to player levels from 1 to 60. The XP required to reach those levels is a bit off, so I'm guessing that I'm looking at something a little bit old. But it's certainly possible that level 60 is the max and they just tweaked the XP numbers some before release. There are also custom descriptions for the first 20 player levels:

  1. The I.C.W. thanks you for participating in the Calamity Containment Cause.
  2. Remember, you can stop by Inns to gather supplies.
  3. Only you can prevent the destruction of the International Statute of Wizarding Secrecy.
  4. Your continued service protects the Wizarding World from exposure.
  5. Remember, if you see suspicious magical activity, report it to the I.C.W. immediately.
  6. Your efforts are helping to restore order in the Wizarding World.
  7. Powerful Wizarding artefacts cannot be allowed to fall into the wrong hands.
  8. The Ministry thanks you for continuing to do your part for the Cause.
  9. The Calamity Containment Cause is still recruiting - tell your friends.
  10. Return every object - don't let magical artefacts become Muggle magnets.
  11. The Calamity continues, but the Cause endures.
  12. Return every creature - don't let magical beasts become Muggle feasts.
  13. You must have received 'Exceeds Expectations' on your O.W.L.s, because you are helping immensely.
  14. With your help, the Calamity will be contained.
  15. Return every Wizard - those you rescue today may rescue you tomorrow.
  16. Few Wizards have contributed to the Cause more than you.
  17. Word of your achievements is beginning to spread.
  18. The Wizarding World is in debt to you.
  19. The Minister of Magic has taken personal interest in your extraordinary efforts.
  20. If you keep this up, you'll be in the running for an Order of Merlin.

And lastly a glympse into an upcoming feature (hopefully not an abandoned idea?) - The Floo Network. Here are a few descriptions and error message strings for the Floo Network:

  • Coming soon - Align with #TeamHarry, #TeamHermione, or #TeamRon and compete in global events.
  • Add Floo Powder to Fortresses to take ownership for your team! The team with the most and best fortresses wins the Region! Who will you decide to help?
  • There is no active season available for Floo Network right now! Check back soon!
  • You are outside the playtest area! Go back to the San Francisco area to contribute Floo Powder!


Popular posts from this blog

SOS Assignments

HPWU Foundables and Traces