27
HTML 5 Game Process & Optimization Jason Arena, Keith McCullough, Matt Leffler

Browser Based Game Performance: I’m Over My Old Flame

  • Upload
    fitc

  • View
    281

  • Download
    2

Embed Size (px)

DESCRIPTION

Browser Based Game Performance: I’m Over My Old Flame with Jason Arena Presented at FITC Toronto on April 27-29, 2014 More info at www.FITC.ca Whenever Jason Arena asks other developers if they’re embracing browsers based game development – he typically hear the same responses: performance is slow, animation looks bad, not all devices support it, and the big one – it’s just not ready for primetime. Jason will share some of the things we’ve learned about browser based game development over the past two years. He will discuss misconceptions, optimization, coding environments and best practices for making robust browser based games.

Citation preview

Page 1: Browser Based Game Performance: I’m Over My Old Flame

HTML 5 GameProcess & Optimization

Jason Arena, Keith McCullough, Matt Leffler

Page 2: Browser Based Game Performance: I’m Over My Old Flame

Every time I discuss HTML 5 with

developers I hear the same thing…

!

Page 3: Browser Based Game Performance: I’m Over My Old Flame

It’s not ready for Primetime.

Page 5: Browser Based Game Performance: I’m Over My Old Flame

Back Story Where we’ve beenWhy the transition to HTML 5?

Our clients • All browsers and devices

• Served into Webviews for Apps • Easy to update with new content

For Workinman

!

!

Page 6: Browser Based Game Performance: I’m Over My Old Flame

HTML5 Environments Engines we’ve Considered;

PlayN

Construct2 CreateJS

HAXE • NME (Now OpenFL)

• Flambé

A Few HTML 5 Engines

(for a good laugh)

!

Page 7: Browser Based Game Performance: I’m Over My Old Flame

Why Flambé• Easy transition from Flash

• Animation support

• Good performance

Also allows for lots of builds

• HTML 5

• iOS

• Android

• Flash (for IE 8 Desktops)

• Researching Steam

!

Page 8: Browser Based Game Performance: I’m Over My Old Flame
Page 9: Browser Based Game Performance: I’m Over My Old Flame

WM Environments AnimationFlump

Takes a Flash animation and creates a

tweened animation with an atlas file

!

SpriterA stand-alone animation tool

• Bones

• State blending

!

Page 10: Browser Based Game Performance: I’m Over My Old Flame

Design • Flash

• Photoshop

• Illustrator

!

WM Environments

Page 11: Browser Based Game Performance: I’m Over My Old Flame

Think FirstThere is no way for us to make graphics

for every device.

Screen Resolutions/Ratios • Design a modular UI (if possible)

• Scale graphics to screen size

• Bleed the rest for ratio. (Safe Area)

• Oversize art

• Responsive: Brain Crush Example

!

Page 12: Browser Based Game Performance: I’m Over My Old Flame

It’s easy to set up good keyboard input

first, but don’t forget touch!

!

Designing for both touch & keyboards

• We focus on making the game work with touch first and then add keyboard

!

Avoid soft buttons if possible • Especially for action games

• For some reason producers love them

Think First

Page 13: Browser Based Game Performance: I’m Over My Old Flame

No Silver Bullet

• A lot of small savings add up • Static image compression

• Strategic use of animation tools

!

Manage the loading experience • Show art fast! • Keep them Clicking!

Optimization

Page 14: Browser Based Game Performance: I’m Over My Old Flame

Load time Optimizations

Break down the loading process

1. Load Splash graphic

2. Load loader graphic

3. Load UI and game play graphics

4. Load level art on demand (5MB)

!

~ We try to keep initial loads under 1MB but sometimes it’s a judgment call.

Tips & Tricks

Page 15: Browser Based Game Performance: I’m Over My Old Flame

In extreme cases: • Load less content on specific devices

• Load smaller animations or backgrounds

• Create device specific asset bundles

!

!

Tips & Tricks

Page 16: Browser Based Game Performance: I’m Over My Old Flame

Loader Folder

Page 17: Browser Based Game Performance: I’m Over My Old Flame

Compress static assets as much as possible

PNGs Optimization • Posterization

• Dirty Transparency

• TinyPNG.org

• 8 Bit dithered PNG for hard edge assets

• Use 80% sized graphics. Scale them upUse compressed JPGs as Backgrounds

!

Tips & Tricks

Page 18: Browser Based Game Performance: I’m Over My Old Flame

Compress AnimationsFlump

Use for main characters

• Great for detailed Flash animations

• Typically smaller download

• Bigger memory footprint

– Show Power Rangers Characters

!

Tips & Tricks

Page 19: Browser Based Game Performance: I’m Over My Old Flame

Flump Atlas File Json FIle

Page 20: Browser Based Game Performance: I’m Over My Old Flame

Compress AnimationsPNG Sequences

Best for Enemies, Power Ups, & Particles

• Lower animation Framerate

• Typically larger download

• Smaller memory footprint

!

!

Tips & Tricks

Page 21: Browser Based Game Performance: I’m Over My Old Flame

Use tweens for animation

• Lowest memory and download

• Best for small items animating

• Simple rotation

• Scaling

!

Example: SB Gone Missing background characters

!

Tips & Tricks

Page 22: Browser Based Game Performance: I’m Over My Old Flame

General Performance: PoolingHuge performance hit when instantiating or

disposing elements.

Example:

• Create all particles before gameplay

• Store them in the pool array

• Only add to render list when needed

Tips & Tricks

Page 23: Browser Based Game Performance: I’m Over My Old Flame

Device Performance

• Branch to handle device exceptions

• Game may look a little different

!

Show Korra Example

Test on every device!

Tips & Tricks

Page 24: Browser Based Game Performance: I’m Over My Old Flame

Audio – different versions Mp3, OGG

!

Multi channel audio issues

• WebAudio support in iOS

• Android only supports <audio> tags

• 3rd party wrappers

!

!

Tips & Tricks

Page 25: Browser Based Game Performance: I’m Over My Old Flame

Wrappers Ludei: Cocoon JS

• Improved Audio support

• Improved performance?

• Better memory management Vs

Webview

• Consistent cross platform environment

Page 26: Browser Based Game Performance: I’m Over My Old Flame

A lil’ SomethingWM JS Embed Script• A JS library to embed games into HTML

• Handles Scaling

• APIs for game communication

• Inform Events:

• Game to HTML

• HTML to Game

!

https://github.com/workinKeith/JSEmbed

Page 27: Browser Based Game Performance: I’m Over My Old Flame

Thank You!Email with any questions

[email protected]