html5 game development
play

HTML5 Game Development In-depth RICHARD DAVEY, PHOTON STORM LTD. - PowerPoint PPT Presentation

HTML5 Game Development In-depth RICHARD DAVEY, PHOTON STORM LTD. Introduction Choose the platform When to use DOM / CSS Preparing Graphics What well cover Preparing Audio Game Frameworks Physics Libraries Distribution Who am I? Who do


  1. HTML5 Game Development In-depth RICHARD DAVEY, PHOTON STORM LTD.

  2. Introduction Choose the platform When to use DOM / CSS Preparing Graphics What we’ll cover Preparing Audio Game Frameworks Physics Libraries Distribution

  3. Who am I? Who do we build games for? Director, Photon Storm Ltd. 50+ HTML5 games in 20 months.

  4. Choose the platform

  5. Desktop Mobile Native browser browser desktop Native Web Wii U mobile View

  6. Desktop browsers Mobile browsers Fast!  Slow!  Great audio Terrible legacy audio Webcams No camera yet 3D / WebGL Limited 3D / WebGL Lots of memory Very little memory Wired / broadband Wireless / 3G Great tools Very few tools

  7. When to use DOM / CSS You need IE8 support Text or UI heavy game Relatively simple game Doesn’t need any pixel effects Read: High performance animations

  8. Native Desktop Games: node-webkit GPU accelerated Cross-platform (Windows, OS X, Linux) File Access Video / Audio Access Near zero overhead 60MB+ package QbQbQb by Rezoner

  9. Native Mobile Games: CocoonJS Accelerated canvas API (95% support) WebGL support Web View over the top iOS / Android test launcher Native mobile features Cloud hosted compiler

  10. WebView: TreSensa Game Engine WebViews are painfully slow On average 3x slower than mobile browser But exceedingly popular Games within games / apps Game Engine + Distribution

  11. Pitfall #1 – Flash On Desktop Flash isn’t yet dead. Don’t rule it out. Especially if you need: IE8 – complex video – webcam – accessibility

  12. Preparing Graphics

  13. Texture Packer Use Texture Atlases Saves http requests and GPU memory On mobile limit textures to 1024 x 1024 WebGL prefers power of 2 sized textures Artwork by Brandissimo! 2013

  14. Flash CS6 and Flash CC MovieClips can export to Sprite Sheets Timeline tweaks needed Complex nested clips often fail Flash CC Avatar release is imminent Contains a brand new method of exporting animations Artwork by Jet Morgan Games 2013

  15. Pitfall #2 – Atlas rendering artefacts Leave 2px shape padding. May not appear on your machine – GPU specific.

  16. Shoe Box Essential free graphical swiss-army knife ◦ Sprite Sheets ◦ Sprite Extraction ◦ Pivots ◦ Slice-9 ◦ Bitmap Fonts ◦ & lots more!

  17. 2D Skeletal Animation Ideal for desktop / native Be careful on mobile (can be very slow) Spine (Spine Features KS now on!) Spriter Animo Sprites (XML export)

  18. PNG – Save bandwidth CRUSH THEM PNG8 THEM PNG Out (Windows) TinyPNG (online) OptiPNG (Linux) ImageAlpha (OS X) PNG Gauntlet (Windows) ImageOptim (OS X) Kraken.io Extremely advanced. Web based + API.

  19. Pitfall #3 – Memory Limits If Mobile Safari crashes back to the Home Screen for no reason, you ran it out of memory.

  20. Preparing Audio

  21. Web Audio rocks! Node based audio system Built-in effects (echo, delay) iOS6+ Chrome FireFox (finally) Hurry-up IE No more excuses. Use it. Artwork by Jet Morgan Games 2013

  22. HTML Audio (does not rock) • Terrible Performance • Usually 1 sound channel (yes, really) • Codec issues (mp3, ogg, m4a, amr, ac3) • Use Audio Sprites

  23. Pitfall #4 – Packing Audio Leave 2000ms of silence at the start and end of audio sprites. Leave at least 1000ms between markers.

  24. Game Frameworks

  25. “Why do I need a framework? I prefer to roll my own” Platform Game

  26. Platform Requirements Loader Scaling Audio Renderer Animation Input Math Events

  27. Platform - Loader Load CDN Image xhr2 Progress Support Files Audio XML / Object CORS Files JSON Pool Script Multi-part Local 3G Loader Loads Storage

  28. • Preloading – Load progress, error failure, xhr2, audio, images, data Loader • Asset cache with multiple format parsers • Device scaling - Viewport management, mobile scaling, UI removal Scaling • Full Screen API • Web Audio – Context manager, effects, node pooling Audio • Legacy Audio – Audio sprites, file format support • Canvas – Display List, Transforms, Context batching, Blend Modes Renderer • WebGL – Shaders, Batching, IE11 support Animation • Sprite Sheets, Tweens, Skeletal Animation • Touch – Multi-touch, MSPointer, Gestures, multi-input devices Input • Keyboard, Mouse, Game Pad API – Browser over-rides, latency

  29. Building on shifting ground 2,200 changes to WebKit and Chromium per week From Canary to Chrome in 12 weeks iOS and Android automatic updates over the air Automatic browser updates Things you’re told are not possible today might be by the end of the project. Be prepared to un-learn what you know every 6 months

  30. If you roll your own … jQuery Howler Modernizr Hammer.js GSAP Viewporter Now you can Pixi.js start your game

  31. Pitfall #5 – Finding answers online Googling a problem? Check the dates of the answers. Disregard anything > 1 year old.

  32. 3D WebGL - Turbulenz Console quality framework Rendering effects Particles Physics Animation 3D Audio Multiplayer Developer Hub

  33. 3D WebGL – Goo Engine Modular and feature packed engine Shaders, particles, animation, post effects Goo Create Fully browser based 3D game editor Exports via CocoonJS

  34. 2D WebGL / Canvas – Phaser Optimised for mobile and desktop Extremely easy to use Loader, Cache, Animation, Sound, Particles, State Manager, Physics, Display List, Input & more Uses Pixi.js for rendering Very active community Documentation & 150+ Examples

  35. Wolfblood: Mystery of Stoneybridge 19 Puzzles Unlockable Map Multi-part loader (memory issues on Android) Primary / Secondary Devices Desktop and Mobile Custom UI Components BBC Games Grid

  36. Pitfall #6 – Test early and test often Don’t assume everyone has an iPad. You will never be able to test all device combinations.

  37. So many HTML5 Game Frameworks! Pick one you feel comfortable with Curated list with ratings and reviews: http://html5gameengine.com/

  38. Physics Libraries IT’S NOT ALL BOX2D

  39. p2.js http://schteppe.github.io/p2.js/ For 2D games Pure JavaScript Rigid Body Physics Contacts, Friction Constraints, Motors Springs, Shapes Documentation Still evolving

  40. Physics JS http://wellcaffeinated.net/PhysicsJS/ For 2D games AMD or Global Modular (31k core) Renderer agnostic Clean JavaScript code Very new, API changes Poor documentation

  41. ammo.js https://github.com/kripken/ammo.js/ For 2D or 3D games Direct port of Bullet Uses Emscripten Uses asm.js Automated port Needs powerful CPU Not mobile friendly Also see CannonJS

  42. RUBE https://www.iforce2d.net/rube/ Visual physics editor Bodies, fixtures, vertices, joints, scripting Cross platform Exports to JSON

  43. Distribution APP STORES AND NETWORKS

  44. App Stores that accept HTML5 games Note: Some require native wrappers. Clay.io will help you reach the stores easily.

  45. 5 million MONTHLY Y USERS RS 400 00 rd Party GAMES ES – MOST 3 rd PREDOMI MINAN NANTLY TLY EUROPE PE + SOUTH AMERIC ICA 20 20 NEW GAMES ES A MONTH BoosterMedia.com HTML5 Gaming Portal Network

  46. Community GAME DEVELOPMENT IS MULTI-PLAYER

  47. Don’t struggle alone! Active Forum & Chat Coding Help Game Showcase Constantly great new content Official forum of: Pixi.js, Phaser, Babylon.js, SpellJS http://www.html5gamedevs.com/

  48. Creating HTML5 games is hard work D on’t give up! Feed back in to the community No-one will ever create something in the same way as you do Your vision is unique - embrace that

  49. Thank you! Richard Davey rich@photonstorm.com @photonstorm Slides will be at http://gametest.mobi/migs/

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend