play with html games

24
Huan Du (杜欢) , MagnetJoy Games Twitter: @huandu

Upload: huan-du

Post on 18-Dec-2014

1.248 views

Category:

Technology


3 download

DESCRIPTION

A brief introduction to technologies used in HTML games. The goal is to show off what HTML can do in game now.

TRANSCRIPT

Page 1: Play with html games

Huan Du (杜欢) , MagnetJoy Games

Twitter: @huandu

Page 2: Play with html games

When I Say HTML Here… ◦ Not only talk about the mark-up language itself,

but also refers to all related web technologies

◦ Including features listed on http://www.w3.org/standards/webdesign/

HTML and CSS

Audio and Video

Scripting and AJAX

Graphics

Etc…

2011/5/30 Play with HTML Games 2

Page 3: Play with html games

See what HTML can do with game now ◦ Angry Birds: http://chrome.angrybirds.com/

◦ The Pop Star Defense on Google I/O 2011

◦ http://agent8ball.com/

◦ http://www.benjoffe.com/code/games/torus/

◦ And more…

More and more people create HTML games now

2011/5/30 Play with HTML Games 3

Page 4: Play with html games

2011/5/30 Play with HTML Games 4

Page 5: Play with html games

Portable ◦ Based on public standard

◦ Same API on different devices

◦ Supported by all major browser vendors

Light weight and easy to play No installation required

Seamless integration with existing web sites

2011/5/30 Play with HTML Games 5

Page 6: Play with html games

Let’s See What You Can Use

In Game

2011/5/30 Play with HTML Games 9

Page 7: Play with html games

Create and Use 2d Canvas Context ◦ Quick start var canvas = document.getElementById('the-canvas-id'); var context = canvas.getContext('2d'); // start to draw something on context context.font = '20pt Tahoma'; context.fillText('Hello, world!', 10, 50);

◦ Tutorial

https://developer.mozilla.org/en/Canvas_tutorial

2011/5/30 Play with HTML Games 10

Page 8: Play with html games

Ways to improve 2d canvas performance ◦ Use it less

More image, less stroke()/fill()

Reduce number of calls to stroke()/fill()

Use getImageData()/putImageData()

◦ Use other technology

3d context (webgl) if available

Fallback to CSS or DOM animation

2011/5/30 Play with HTML Games 11

Page 9: Play with html games

A Timeline-based Animation ◦ Spec: http://www.w3.org/TR/css3-animations/

◦ Must add –webkit- prefix in webkit based browser

@-webkit-keyframes move { from {top: 10px;} to {top: 100px;} } .move {-webkit-animation: move 1s; top: 100px;}

◦ DOM Events: webkitAnimationStart/End/Iteration

2011/5/30 Play with HTML Games 12

Page 10: Play with html games

Audio quick start

◦ <audio src="sample.mp3" autoplay></audio> or

var audio = new Audio(); audio.src = "sample.mp3"; // or data URL // always play from beginning audio.currentTime = 0; audio.play();

Video is similar to audio

2011/5/30 Play with HTML Games 13

Page 11: Play with html games

Problem ◦ Cannot keep more than one audio object

Sample code

var a1 = new Audio(), a2 = new Audio(); // assign different values to a1.src and a2.src // play a1, then play a2, and then a1 a1.play(); a2.play(); // a1 will be stopped automatically a1.play(); // iOS Safari fails to play it

Solution?

2011/5/30 Play with HTML Games 14

Page 12: Play with html games

Web fonts quick start ◦ Spec:

http://www.w3.org/TR/css3-fonts/#font-resources

◦ Sample @font-face { font-family: 'VT323'; src: local('VT323'), url('the-url') format('woff'); }

Benefits ◦ Enrich system fonts – Important on mobile device

◦ International

2011/5/30 Play with HTML Games 15

Page 13: Play with html games

Resource ◦ Google Web Font

http://www.google.com/webfonts

<link href='http://fonts.googleapis.com/css?family=VT323' rel='stylesheet' type='text/css'>

2011/5/30 Play with HTML Games 16

Page 14: Play with html games

Stringify everything ◦ All media can be stored/transferred as string

Audio

Video

Image

◦ Embed small images to files to save download cost

◦ Possible to generate dynamic media files

2011/5/30 Play with HTML Games 17

Page 15: Play with html games

Local & Session storage ◦ Key-value storage

◦ Storage features

Persistent

Traceable - thru DOM event “storage”

More than 5 MB space (Vary in different browsers)

Usage ◦ Game auto-save/high score/…

◦ Cache media resource thru data url

2011/5/30 Play with HTML Games 18

Page 16: Play with html games

Pretends to be a native app ◦ Spec: http://www.w3.org/TR/html5/offline.html

◦ Quick start

In HTML

<html manifest=“your-app-cache.manifest">

In manifest file (served as text/cache-manifest) CACHE MANIFEST CACHE: your.html your.css your.js NETWORK: *

2011/5/30 Play with HTML Games 19

Page 17: Play with html games

Detect offline status ◦ Check online status

navigator.onLine

window.ononline and window.onoffline

◦ Application cache object

Global app cache object

window.applicationCache

Listen events

progress/cached/checking/…

Update cache

applicationCache.update()/swapCache()

2011/5/30 Play with HTML Games 20

Page 18: Play with html games

Facebook integration

2011/5/30 Play with HTML Games 24

Page 19: Play with html games

HTML Weakness ◦ Overall performance isn’t good enough

◦ Many standard specs are partially implemented

When to Use HTML ◦ Casual game without complex UI or game logic

◦ Want to integrate into some mobile web sites

◦ Design for Chrome Market

2011/5/30 Play with HTML Games 25

Page 20: Play with html games

2D Canvas 3D Canvas CSS Animation

Firefox 4 Yes Partial No

IE9 Yes No No

Chrome 11 Yes Partial Yes

Safari 5 Yes No Yes

Opera 11.1 Yes No No

iOS Safari 4.2 Yes No Yes

Android 2.2 Yes No Yes

Data from http://www.caniuse.com/ on May, 2011

2011/5/30 Play with HTML Games 26

Page 21: Play with html games

2011/5/30 Play with HTML Games 27

Audio Video Web Fonts

Firefox 4 Yes Yes Yes

IE9 Yes Yes Yes

Chrome 11 Yes Yes Yes

Safari 5 Yes Yes Yes

Opera 11.1 Yes Yes Yes

iOS Safari 4.2 Yes Yes Yes

Android 2.2 Yes Yes Partial

Data from http://www.caniuse.com/ on May, 2011

Page 22: Play with html games

2011/5/30 Play with HTML Games 28

Data URL Storage API App Cache

Firefox 4 Yes Yes Yes

IE9 Yes Yes No

Chrome 11 Yes Yes Yes

Safari 5 Yes Yes Yes

Opera 11.1 Yes Yes Yes

iOS Safari 4.2 Yes Yes Yes

Android 2.2 Yes Yes Yes

Data from http://www.caniuse.com/ on May, 2011

Page 23: Play with html games

2011/5/30 Play with HTML Games 29

Messaging HTTP Origin Web Socket

Firefox 4 Yes Yes Yes

IE9 Yes Partial No

Chrome 11 Yes Yes Yes

Safari 5 Yes Yes Yes

Opera 11.1 Yes No Yes

iOS Safari 4.2 Yes Yes Yes

Android 2.2 Yes Yes No

Data from http://www.caniuse.com/ on May, 2011

Page 24: Play with html games

Welcome to follow me

My twitter @huandu

2011/5/30 Play with HTML Games 30