Have you played Hearthstone? It was released in 2013 and I wouldn't call their graphics "high end" by any stretch of the imagination. If racing games or FIFA run fluently on a Galaxy Tab S4, so should Hearthstone...
Even their PC version is laggy, check out streamers restarting the game (!) before important and action packed battlegrounds turns.
Racing games and FIFA can reuse a lot of texture data. Same rock. Same uniform. Repeating crowd. That said, HS just runs on mobile. It's not optimized for it. It's obvious when you can only look at a chunk of your collection at a time instead of smoothly scrolling that the cards take up a lot of ram.
Users also have a lot more control over what is shown on screen. For a FIFA game everything is loaded beforehand. In a card game that has to hide information, it has to load as the game progresses.
I don't think that's actually a fair explanation for why the game is so janky. Very simple animations that aren't loading new resources like Ysera Unleashed visibly badly lag even on the top end machines used for tournaments.
Maybe more clearly, whenever you enter a game there's a loading spinner that freezes for several seconds even on the very highest end desktops; you'd think for a game whose main graphics concern is exactly "image asset streaming from disk", they have wouldn't need to hard-freeze the menu UI to do the loading.
Its not an explanation for why the game is janky. Its a rebuttal to the comment that HS(card games in general, really) is bare bones or should be trivial to run well. Almost certainly they could fix the issue with background thread loading and some UI tweaks if they wanted to. That said, the issue is most likely that they're simply loading texture data from disk on the main thread. This is the default Unity behavior with asset loads and it's not really possible to hit their RAM quotas if they load every card. A subset of cards reveals information.
That's really not an excuse. Doing some back of the envelope math shows that even the full collection of all Hearthstone cards would easily fit into RAM:
~0.25MB (size of a sample original artwork from[0]) * 3410 (number of playable cards in the game[1]) = ~850MB
> For a FIFA game everything is loaded beforehand. In a card game that has to hide information, it has to load as the game progresses.
During every single match of Hearthstone all the cards are also known beforehand (to the device), and they are a fraction of the full card collection.
Hearthstone cards have several texture maps per card for the foil card effects. When textures are stored in ram they are not compressed (not as png or jpeg anyway). Its closer to a full 4 bytes per pixel. Textures also use mipmaps which take up an extra 33%. Not to mention the animations, effects and and the texture memory they bring. Its much more RAM than you think. Just look at the (fully compressed) install size of over 3GB. The menu textures do not take over 2GB.
The game came out in 2014 when the latest iPhone had 1GB of RAM (less than 512MB usable for the whole app, essentially.) Its tuned to be under that cap, which forces a lot of disk reads instead of keeping things in RAM.
>During every single match of Hearthstone all the cards are also known beforehand (to the device), and they are a fraction of the full card collection.
This is actually false as some cards can spawn a random card from the full collection.
The restarting is independent from the games performance. Battle times actually eat into the time you have after the battle to update your team, and at some point restarting the game is faster than watching the battle unfold.