24
Réaliser un jeu cross- plateformes avec WebGL et Babylon.JS

Réaliser un jeu cross plateformes avec WebGL et babylon.js

  • Upload
    davrous

  • View
    1.892

  • Download
    5

Embed Size (px)

DESCRIPTION

Contenu de la présentation effectuée à FranceJS le 23/11/2013 . Version étendue de la présentation effectué à ParisJS le 20/11/2013 :)

Citation preview

Page 1: Réaliser un jeu cross plateformes avec WebGL et babylon.js

Réaliser un jeu cross-plateformes avec WebGL et Babylon.JS

Page 2: Réaliser un jeu cross plateformes avec WebGL et babylon.js

David CatuheWindows Clients Evangelist Lead

http://aka.ms/david@deltakosh

David RoussetWindows Clients Evangelist

http://aka.ms/davrous@davrous

Page 3: Réaliser un jeu cross plateformes avec WebGL et babylon.js

Agenda Why building a WebGL 3D engine ?

The old school way: Using the 2D canvas Using WebGL directly

Using Babylon.js to create 3D apps and games How to use Babylon.js? Advanced features

What we’ve learned… Tracking and reducing the pressure on garbage collector Performance first Handling touch devices

Lastest experiment Building a Windows Store Apps in an hour Roadmap

Page 4: Réaliser un jeu cross plateformes avec WebGL et babylon.js

Why building a WebGL 3D engine ?

Page 5: Réaliser un jeu cross plateformes avec WebGL et babylon.js

The oldschool way: using 2D canvas

Build a 3D “Software” engine that only uses the CPU

Wirefram

e

Rasterization

Lights &

Shadows

Textures

Page 6: Réaliser un jeu cross plateformes avec WebGL et babylon.js

Soft Engine

DEMONST

RATIO

N

Page 7: Réaliser un jeu cross plateformes avec WebGL et babylon.js

Using WebGL directly

Requires a compatible browser:

A new context for the canvas:

canvas.getContext("webgl", { antialias: true}) || canvas.getContext("experimental-webgl", { antialias: true});

Page 8: Réaliser un jeu cross plateformes avec WebGL et babylon.js

Using WebGL directly

WebGL is a low level API

Need to handle everythingexcept the rendering:

Shaders code (loading, compilation) Geometry creation, topology, transfer Shaders variables management Texture and resources management Render loop

Page 9: Réaliser un jeu cross plateformes avec WebGL et babylon.js

WebGL 101

DEMONST

RATIO

N

Page 10: Réaliser un jeu cross plateformes avec WebGL et babylon.js

Using Babylon.js to create 3D apps & games

Page 11: Réaliser un jeu cross plateformes avec WebGL et babylon.js

How to use Babylon.js ?

Open source project (Available on Github)

http://www.babylonjs.comhttps://github.com/babylonjs/babylon.js

How to use it? Include one file and you’re ready to go!

To start Babylon.js, you’ve just need to create an engine object:

<script src="babylon.js"></script>

var engine = new BABYLON.Engine(canvas, true);

Page 12: Réaliser un jeu cross plateformes avec WebGL et babylon.js

Advanced features

Offline supportIndexedDB

Network optimizationsIncremental loading

Blender exporterDesign & render

Complete collisions engine

Page 13: Réaliser un jeu cross plateformes avec WebGL et babylon.js

Unleash babylon.js

DEMONST

RATIO

N

Page 14: Réaliser un jeu cross plateformes avec WebGL et babylon.js

What we’ve learned ?

Page 15: Réaliser un jeu cross plateformes avec WebGL et babylon.js

Tracking & reducing the pressure on GC

A 3D engine is a place where matrices, vectors and quaternions live.And there may be tons of them!

Pressure is huge on the garbage collector

Page 16: Réaliser un jeu cross plateformes avec WebGL et babylon.js

Tracking & reducing the pressure on GC

Maximum reuse of mathematical entities Pre-instantiate Stock variables

GC friendly arrays (able to reset size at no cost)

When the scene is up and running, aiming at no allocation at all

Page 17: Réaliser un jeu cross plateformes avec WebGL et babylon.js

Using F12 to reduce memory pressure

DEMONST

RATIO

N

Page 18: Réaliser un jeu cross plateformes avec WebGL et babylon.js

Performance first

Efficient shadersDo only what is REALLY

requiredScene partitioningFrustum / submeshes /

octreesComplete cache system

Update WebGL only when required

Page 19: Réaliser un jeu cross plateformes avec WebGL et babylon.js

Handling touch devices

Page 20: Réaliser un jeu cross plateformes avec WebGL et babylon.js

Hand.js and the TouchCamera

DEMONST

RATIO

N

Page 21: Réaliser un jeu cross plateformes avec WebGL et babylon.js

Latest experiments

Page 22: Réaliser un jeu cross plateformes avec WebGL et babylon.js

Building a Windows Store app in a few minutes

DEMONST

RATIO

N

Page 23: Réaliser un jeu cross plateformes avec WebGL et babylon.js

Roadmap

Lens flares Multi-views to add support for Oculus Rift Simple Editor Sandbox mode / Drag'n'drop support Support for a physic engine Collisions on webworkers Binary file format

Page 24: Réaliser un jeu cross plateformes avec WebGL et babylon.js

Questions ?@deltakosh / @davrous