66

Running HTML5 Mobile Web Games at 60fps

Embed Size (px)

Citation preview

Page 1: Running HTML5 Mobile Web Games at 60fps
Page 2: Running HTML5 Mobile Web Games at 60fps

Apoorv Saxena@apoorv_saxena

Page 3: Running HTML5 Mobile Web Games at 60fps
Page 4: Running HTML5 Mobile Web Games at 60fps
Page 5: Running HTML5 Mobile Web Games at 60fps
Page 6: Running HTML5 Mobile Web Games at 60fps
Page 7: Running HTML5 Mobile Web Games at 60fps
Page 8: Running HTML5 Mobile Web Games at 60fps
Page 9: Running HTML5 Mobile Web Games at 60fps

1998 2007 2009

Page 10: Running HTML5 Mobile Web Games at 60fps
Page 11: Running HTML5 Mobile Web Games at 60fps

What’s next?

Page 12: Running HTML5 Mobile Web Games at 60fps
Page 13: Running HTML5 Mobile Web Games at 60fps
Page 14: Running HTML5 Mobile Web Games at 60fps
Page 15: Running HTML5 Mobile Web Games at 60fps
Page 16: Running HTML5 Mobile Web Games at 60fps
Page 17: Running HTML5 Mobile Web Games at 60fps

Let the Data Speak!

Page 18: Running HTML5 Mobile Web Games at 60fps

Following are the stats of a Survey

Link: http://www.google.com/insights/consumersurveys/view?survey=xqnkc3hqtrucy

Page 19: Running HTML5 Mobile Web Games at 60fps
Page 20: Running HTML5 Mobile Web Games at 60fps
Page 21: Running HTML5 Mobile Web Games at 60fps

Smooth Navigation Jank Free Experience

Everything in 16ms

What is the need of the hour then?

Page 22: Running HTML5 Mobile Web Games at 60fps

HTML5 Mobile Games at 60fps

#perfmatters

Page 23: Running HTML5 Mobile Web Games at 60fps
Page 24: Running HTML5 Mobile Web Games at 60fps

Why is 60fps important?

Page 25: Running HTML5 Mobile Web Games at 60fps

At EdgeConf 2012, Facebook confirmed this when it

mentioned that in an A/B test, it slowed down scrolling from 60fps to 30fps, causing engagement to collapse.

Page 26: Running HTML5 Mobile Web Games at 60fps

16ms isn’t a lot of time

Page 27: Running HTML5 Mobile Web Games at 60fps

In a Nutshell..

Page 28: Running HTML5 Mobile Web Games at 60fps

Need for Speed

Page 29: Running HTML5 Mobile Web Games at 60fps

Evolution of the Web: Browser & Technologies

Page 30: Running HTML5 Mobile Web Games at 60fps
Page 31: Running HTML5 Mobile Web Games at 60fps

Optimizing Performance

● Performance is a feature. (Done)● Optimize Content Efficiency: Deliver your

content to users as quickly as possible. (Done)

● Once they're in, make interactions and rendering as smooth as possible.

Page 32: Running HTML5 Mobile Web Games at 60fps

Rendering at 60fps

Page 33: Running HTML5 Mobile Web Games at 60fps

Style/Layout PaintingJS Compositing

keep < 16ms!

1. Add CSS rules in style via JS.2. Recalculate style, maybe relayout.3. Paint the browser’s mental model to a layer4. Composite all layers into a final image

Page 34: Running HTML5 Mobile Web Games at 60fps
Page 35: Running HTML5 Mobile Web Games at 60fps

Performance Cheat Codes:

Page 36: Running HTML5 Mobile Web Games at 60fps

HARDWARE ACCELERATIONrules me

Page 37: Running HTML5 Mobile Web Games at 60fps

Force Hardware Accelerated Canvas(where supported)

Hack: Add 3D transform to the body via CSS

Page 38: Running HTML5 Mobile Web Games at 60fps

Do you know?

Page 39: Running HTML5 Mobile Web Games at 60fps

Canvas is not Hardware Accelerated in every browser

Page 40: Running HTML5 Mobile Web Games at 60fps

DOM Sprites

Page 41: Running HTML5 Mobile Web Games at 60fps
Page 42: Running HTML5 Mobile Web Games at 60fps

Build Games using DOM Elements

● Create Characters using Div, Spans and nested images

● Animate them using CSS and JS

Page 43: Running HTML5 Mobile Web Games at 60fps
Page 44: Running HTML5 Mobile Web Games at 60fps

● Cross Platform● Divs are hardware

accelerated on less capable hardware.

PROS● Doesn’t come anywhere

close in performance to Canvas (where hardware accelerated)

● Lacks in Complex Visualisations and Gameplay.

CONS

Page 45: Running HTML5 Mobile Web Games at 60fps
Page 46: Running HTML5 Mobile Web Games at 60fps
Page 48: Running HTML5 Mobile Web Games at 60fps

Don’t update Canvas unnecessarily.

(Repaints are costly and must be performed at adequate intervals)

Hint: requestAnimationFrame to the rescue.

Page 49: Running HTML5 Mobile Web Games at 60fps
Page 50: Running HTML5 Mobile Web Games at 60fps

Use Sprite Sheets to avoid texture swaps

Page 51: Running HTML5 Mobile Web Games at 60fps
Page 52: Running HTML5 Mobile Web Games at 60fps

Bind Events only when required

and turn them off when not in use

Page 53: Running HTML5 Mobile Web Games at 60fps
Page 54: Running HTML5 Mobile Web Games at 60fps
Page 55: Running HTML5 Mobile Web Games at 60fps

Garbage Collection is a necessary Evil.

Tip: Create Objects beforehand.

Page 56: Running HTML5 Mobile Web Games at 60fps
Page 57: Running HTML5 Mobile Web Games at 60fps

Adjust your operations as per Framerate

Page 58: Running HTML5 Mobile Web Games at 60fps
Page 59: Running HTML5 Mobile Web Games at 60fps

ONE STEP BACK:HOW COMPILATION WORKS

C/C++ => LLVM => Emscripten => JavaScript

Page 60: Running HTML5 Mobile Web Games at 60fps

LLVM's optimizer uses type information to perform many useful optimizations.

Decades of work have gone into developing optimization passes for C/C++ compilers.

Page 61: Running HTML5 Mobile Web Games at 60fps

MICROBENCHMARKS

Page 62: Running HTML5 Mobile Web Games at 60fps

REALISTIC/LARGE BENCHMARKS

Page 63: Running HTML5 Mobile Web Games at 60fps
Page 64: Running HTML5 Mobile Web Games at 60fps

Note: Our eyes are much more attuned to variance than framerate.

A steady 30Hz looks better than 60Hz that misses a few frames a second.

Page 65: Running HTML5 Mobile Web Games at 60fps
Page 66: Running HTML5 Mobile Web Games at 60fps

Thank You!