If you read any SEO or UX handbooks for websites, you can find that loading time is really important parameter. However, how is it with browser games having often higher tens of megabytes? Is there still importance to care about every megabyte of filesize?
First of all, let's look at an average internet connection speed which look really promising at the paper. Current global average internet connection speed achieving to 7.2Mbps which would be able to download 100mb slightly below 2 minutes. Moreover, from the graph below, the average speed grows around 30% from year to year.
Even a closer look at average internet connection speed in various countries according to statistics filled on Wikipedia does not throw any red flags enforcing a filesize optimization. Average speed of 100th country (Philippines) is 5,5Mbps.
Are you really excited by the paper statistics data? Now let's return to reality. All points mentioned below are got from real games, real downloaded files.
Local test on my device: (MacBook Air ,13-inch, Early 2015)
Download speed: 13Mbps. Downloaded file (101mb), Download time: 3 minutes.
Numbers received from a test on local device look strange comparing to paper statistics data. The download speed of 100 mb should be around 1 minute with internet connection speed of 13Mbps, so why is it 3x bigger?
- It is not about downloading one file only. There is often a combination of them. Game files are also often in a compressed state which a browser must uncompress and then load to memory during downloading. All of these interrupt permanent downloading.
- Cloud storage speed. Downloading speed depends on a cloud speed in a given location.
Are you saying now, waiting time of 3 minutes is ok? Well, sit down in front of the monitor and watch clocks for next 3 minutes without doing any additional work. The 3 minutes will seem to be infinite. This is how a user feels during waiting till a game will be downloaded.
To get real data about percentage of people waiting for minutes, I pulled out data from 4 games with various filesize. To make them more relevant, I filtrated new users only. Data are selected for period of 4 days (September 7–10).
A user which have never played this or any other game of the developer (is not his fan). Also games are not loaded from cache — a user wait till files are downloaded.
- Game 1: Insurgents | 100 mb
- Game 2: Masked Forces | 51 mb
- Game 3: 4x4 Truck CAr Hill Race 3D | 14 mb
- Game 4: Impossible Ball Glow Twist | 8 mb
Here are the results:
Data shown in the image look terrible. Although they are made on basis of low amount of audience, they provide fairly accurate view how it would look in a bigger scale. Due to the filtering for new users only, these are the worst results possible to get regarding losses during game loading.
Getting loss rate of users in games (in GameArter developer dashboard)
For basic overview, there is sufficient to check section reports / playability.
Process to count loss rate of a game manually (on basis of data got by using GameArter SDK with natively implemented Google Universal analytics).
1. Get number of started downloads of your game in Behavior/All Pages/Game
2. Get number of completed downloads in Behavior/Events/Game. Look for action “time-goal” with label “loaded” .
3. Select audience of which you want to get the data. — users (all / new / returning), certain browser / OS / country / web… Every group will have probably different loss rate.
4. Count your loss rate (in %) according to following formula: (started downloads — completed downloads)/started download *100
Best practices to achieve minimum rate of escapes during game load
- Progress bar designed to does not be stuck for a longer time during loading
- Get an user attention for the game by displaying good-looking images from game, game tips and so on.
- Keep filesizes as low as possible to minimize time needed for downloading. If your game is large, you should partion it to lower — dynamically loaded files in a time they are needed (e.g. separated file for every map).
- Using a caching should be matter of course.
- Use game engines which provides builds which do not need to be fully downloaded before a user can start play.
- Treat crashes. If you use a Unity, there can occur issue with indexedDB, memory, or a crash of 3-rd party script or service connected with your game (user authetication / ads / analytics…). Be sure you are able to detect and treat the crashes.
- Correct tracking of loading process. Implement your tracking solution cleverly on basis of knowledge of events which can occur. Short explanation: When you distribute your game at other websites, be sure you do not count number of launches and other analytics data on base of requests for opening index.html file (on server side). Websites use various mechanisms of displaying preroll ads which can be loaded later than your game, which resulting in removing your game and reinserting it again once the preroll ad is completed. In this case, you would notice 2 start of downloads while only one would be successful due to external manipulation by preroll ad displaying process.
Closer look at Insurgents game user losses during game loading
- There was detected problem with browser’s IndexedDB in 5% of cases. This 5% of “download stared” had no chance to be completed. This problem occured in a case of all major browsers. — Have a mechanism able to detect this and make necessary steps is important.
- There are not significant differencies for various browsers. Losses in all browsers are in a ratio of 44±5%.
- Losses according to source of visits reflect average connection speed in user’s country. Turkish gaming websites have worse results comparing to gaming websites in other countries.
- If I look at data of users who already know the developer (have experience with this or different developer’s game), there are losses on a level of 40% (-7% comparing to new users). From other metrics I can see, that most users is new to this game. On this audience, the ratio between new and returning users to the game does significant difference.
By the end, here’s preview of GameArter's loading screen for games
- Showcase of various images from the game
- wide progress bar (movement is more visible than on a short)
- Text information (how many megabytes must be downloaded)
- spinner in a gif format (still in motion)
- Text “First load can take longer”
- Possibility to use modules during loading (game informations, videos, discussions…)
Losses caused by high file size are common and everyone creating software for masses of users should consider its importance. For example dependency of filesize and conversion rate of apps on Google Play you can find in post Shrinking APKs, growing installs.