The past, present,
and the future of
HTML5 game development

ConFrontJS 2019

Andrzej Mazur@end3rEnclave Games
ConFrontJS 2019 in Warsaw, Poland, December 7th 2019

Andrzej 'End3r' Mazur

Andrzej Mazur


2011 vs 2019

2011: onGameStart, Warsaw

2012: Is HTML5 ready for gaming?

Poor Canvas performance

Poor performance

Way worse than native.

Crappy (or missing) audio

No audio

Play/sync issues, too many formats.

(Not) working offline


Web Storage, AppCache, IndexedDB, Web SQL.

Drafts of Web APIs

Web APIs

Gamepad, Pointer Lock, Fullscreen, etc...

Development tools

Dev environment

Borrowed from front-end.

No monetization

No monetization

Go native or go home.

2019: It works!

Good news

Performance improved

Audio working correctly


Offline with PWA

Offline with Service Workers

Web APIs support

Can I Use Gamepad

Lots of new tools

Phaser Editor

Lots of new tools

PlayCanvas Editor

Thousands of great games

js13kGames 2019: Bounce Back, [Swagshot], xx142-b2.exe

Technology is sufficient




Change of focus

  1. Licensing games
  2. Subscriptions
  3. Advert revenue share


  1. Protecting the assets
  2. Being cloned

Bright future

Technology • Discoverability • Monetization

2019: W3C workshop, Redmond

Improving technology



The death of PWAs

...wait, what?


Responsive Web Design

WebXR: MoonRider

Moon Rider

WebAssembly: Fluids


WebGPU: Cubes



is a remix

Hungry Fridge on mobile

Hungry Fridge mobile

Hungry Fridge with gamepad

Hungry Fridge gamepad

2D casual mobile game...

...offline PWA... VR...

...with WebGPU...

...and WebAssembly...

...streaming from the cloud.

Improving discoverability

Revolutionzing monetization

Enclave Games ❤️
Web Monetization


Cool, but how?

Monetized website

							<!DOCTYPE HTML>
							  <meta charset="utf-8">
							  <title>Flood Escape</title>
							  <meta name="monetization" content="your_payment_pointer">
							  // ...

Real-time money transfer

Detecting active subscribers

Checking the state

							if(document.monetization && document.monetization.state === 'started') {
							  // do something

Listening for an event

							function startEventHandler(event) {
							  // do something
							document.monetization.addEventListener('monetizationstart', startEventHandler);

Extra content

Levels, points, coins, weapons, bonuses, etc...

No advertisements

  • Privacy issues
  • Spying on users
  • Selling data

Go Web or go home.

Full control

  "Classic" publisher Web Monetization
Implementation: Complicated, changing code 1 line of HTML + 2 lines of JS
Income: Waiting months for reports Instant, streamed in real time


  1. Technology is sufficient → can be improved
  2. Discoverability problems → indexing tools
  3. Monetization issues → Web Monetization API

Go out and

build the future

of the Web!

Ender Efka @end3r