I recently watched this talk from Björn Ritzl where he covered best practices for successful web game releases. Here’s my key takeaways.
Think about where and how to release your game.
Distinguish between open platforms (like itch.io) and curated ones (with approval processes).
Select a launch partner wisely. Their alignment with your game’s audience matters.
Design for monetization from the start. Study successful games in your genre, understand their game loop and meta, and apply the learnings to your game.
Ad revenue is the most popular choice for web games. Distributors like Poki, Facebook, Yandex, or GameDistribution, have their own ad SDKs that you have to use in order to launch on their platform. Alternatively, Google has a platform-agnostic solution, Ad Placement, that you can use wherever you want.
You can also license your game to a publisher like GameSnacks, or sell it on itch.io.
In-app purchases are way more popular on native mobile games than on web games, so you probably don’t want to go that route.
Poki created this metric “conversion to play” that tracks what percentage of players drop off between discovery and first play. Their data shows clear correlation between slow loading times and player attrition. (You can learn more in this talk by Kasper Mol.)
To improve discovery, make sure to stand out from the crowd. Really work on your icon, banner, title, etc.
Prioritize the loading experience. Make it visually interesting. Show a progress indicator. Show helpful tips?
Attention spans are short. You have around 8 seconds to engage players. Skip the main menu for new players, drop them straight into a tutorial. For recurring players, reduce the amount of interaction needed to start a game.
[…] giving something to the player, in hopes that they will sort of subconsciously decide
ok that was cool, I’ll give you more of my time, what else you got.
Can you play your game and have a meaningful experience in the time it takes for a barista to make your macchiato?
The game engine you choose will have an impact on the size of your distributables. Make sure it aligns with your requirements.
Optimize content size:
- Pack and compress textures.
- Compress sounds. (Do you really need stereo?)
- Generate things procedurally.
- Use gzip/brotli when serving game data.
Split content into chunks. Download only what’s needed initially, then load additional content as players progress.
People play web games not just on desktop, but also on mobile. Consider things like orientation, aspect ratio, and camera notch / island.
Support gamepads. It’s essential for desktop, and for potential console ports. Handle disconnects, for example by pausing the game.
Take browser policies into account. You can only start playing sounds in response to a user interaction. Remember to pause sounds while showing ads. Add settings to toggle music and sound effects, and persist them between sessions.
Localize game content. At a minimum consider EFIGS. Depending on launch partner, you may need more: Yandex will require Russian, GameDistribution will require Polish and Portuguese, etc. Try to auto-detect device language.