minko - creating cross-platform 3d apps with minko

Post on 31-May-2015

1.358 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Meetup iOS DevelopersCreating cross-platform 3D apps with Minko.

Jean-Marc Le RouxCEO and co-founder of Aerys

Creator of Minko (http://minko.io)

@promethe42jeanmarc@aerys.in

http://minko.io

@Minko3D

by

3D. Everywhere.Deliver engaging, interactive and rich 3D content and applications on

desktops, mobiles and the web.

Minko Enterprise

“We chose Minko because its exclusive compression algorithms help

us distributing cutting edge 3D content on mobiles and the web.”

Gaël Seydoux, Chief of the NBO lab at

It’s like Dropbox for 3D files Visualize, share, annotate, collaborate…

On mobiles, tablets, the web and desktops

Exclusive 3D streaming algorithms Load and display 3D files up to 200 times faster

Cloud. Light. Mobile.

Compatible with all major 3D CAO/design tools 77+ supported file formats

What You See Is What You Get Physics

Animations

Lights

Materials

....

…Minko Studio Design. Integrate. Live.

Minko Engine

Develop once, deploy everywhere

The power of native, the reach of the

web

Open source, with enterprise-class

support

“We chose Minko to be the 3D engine in one of our new Flash-based gamesbecause we think it’s a highly professional […] solution in termsof development ecosystem and high performance.”

André Weissflog, Head of Development at

Skyrama 2 by BigPoint

Mobile. Web. Native.

International Gaming References

New Game Released: IronForce

Published by EA/Chillingo

http://www.chillingo.com/games/iron-force/

Tank MMORPG

Already available on iOS

Available soon on Android

New Game Released: IronForce

Minko VS Unity - Architecture

Unity

Core Library

Mono VM

Application

OS

Minko

Core Framework & Plugins

Lua VM

Application

OS

Native Plugins

Javascript VM Javascript VM (WIP)

Minko VS Unity – Open Source

Unity

Core Library

Mono VM

Application

OS

Minko

Core Framework & Plugins

Lua VM

Application

OS

Native Plugins

Javascript VM Javascript VM (WIP)

Supported Platforms

Platforms Unity Minko

Windows YES YES

WinRT / Windows 8 UI / Windows Store YES YES

OS X YES YES

Linux Desktop (Ubuntu, SteamOS, TVs…) YES YES

Linux Server NO YES

HTML5 NO YES

iOS YES YES

Android YES YES

Flash Player NO WIP

Windows Phone YES WIP (WP 8.1)

Minko coming to Windows Phone!

Windows Phone 8.1 only

But all existing Windows

Phones should be supported!

Games have a big success

on the Windows Store.

Windows Store, Downloads per category – Worldwide, Jan. 2014

2D/3D file formats

50+ 3D file formats

– 3DS, BLEND (Blender 3D), DAE/Collada, FBX, IFC-STEP , ASE, DXF, HMP, MD2, MD3 , MD5,

MDC, MDL, NFF, PLY, STL, X, OBJ, SMD, LWO, LXO, LWS, TER, AC3D , MS3D , COB, Q3BSP,

XGL, CSM, BVH, B3D, NDO, Ogre XML, Q3D

20+ 2D file formats

– JPEG, PNG, TIF, TGA, RAW, PSD…

Optimized Minko dedicated formats

– Scene, material, texture, geometry…

– Open source (de)serializer

– Extensions (Physics 3D compression, 3D streaming…)

C++ 2011

Standard, fast, well documented and supported by a vast community

Already fully supported by all major compilers (VS, GCC, LLVM…)

New additions make it closer to what we’re used to with AS3/Javascript

– Closures/lambda functions

– Type inference (instead of dynamic typing)

– Shared pointers

C++11 Example – Closures

// callback is removed when mouseWheel is set to nullptr

C++11 Example – Shared pointers

Components – Ex: Directional Light

The Transform component is not mandatory

– Scene nodes do not necessarily have a 3D transform: lighter and more customizable

– Yet our directional light is pointless without a configurable direction…

Components – Ex: Camera

Our camera has 3 components:

– Transform will make our Camera position/orientation customizable

– PerspectiveCamera will provide actual camera related data to the rendering

API

– Renderer will do the actual DrawCall storage/frame rendering

Emscripten https://github.com/kripken/emscripten

Open source project driven by Mozilla

– Based on LLVM, which is supported by Google, Apple, Intel and many more

Cross-compile C++ code to Javascript code

– Binds OpenGL to WebGL

– Provide virtual file system

– C++ Javascript bindings

Code optimizations

– Closure compiler

– asm.js (2x performances of native code!)

Code compression using LZMA

Premake http://industriousone.com/premake

Cross-platform build system

– Windows, Mac and Linux

– Reference in the video game industry

– Well documented

Compatible with most IDEs/tools

– gmake

– Visual Studio

– XCode

Easy to extend and customize

– Based on LUA script configuration files

– Adding support for emscripten was easy

HTML5 UI (WIP)

Portable

– Chromium on desktop

– WebView on mobiles

– DOMElement on the web

Responsive UI design

Leverage existing HTML5 tools and

frameworks

Video

3D backbuffer

HTML5 UI overlay

Parallelization

Workers

Threads (except for HTML5)

Coroutines (Lua)

SCRIPTING

Core Framework Language Fast

Rich & expressive

Optimized for each target

Scripting Language Simple

Interpreted

Dynamic

VSC, C++, Java, C#... Javascript, Python, AS3…

We chose… Lua!

Fits all the requirements of a scripting language

Vastly used by the video game industry (World of Warcraft, Fable II & III, NeverwinterNights, …)– Complete list of games scripted with Lua

Very (very) fast– LuaJIT is comparable to Javascript V8, if not faster

Designed to be embedded

Designed to script games– Simple but very efficient syntax– Minimalistic set of features but very extensible– Coroutines!

C++ Lua? LuaGlue!

C++/Lua bindings

Open source project

– https://github.com/Tomasu/LuaGlue

– We contribute as much as possible

Leverage C++11

– Optimize as compile time as much as possible

– Simple binding interface

Used to bind 90% of Minko’s C++ API

– Write 100% of your app in Lua

Coroutines

A function can suspend its execution…

– coroutine.yield()

… and then resume « sometime later »

– coroutine.resume()

Gives the illusion of parallelism

– Yet no complicated threading stuff

– Fully cross-platform

Allow the creation of non-blocking (heavy) functions

Can (always?) be used in place of events/callbacks

Coroutines

function myScript()

doSomething()

while isIdle do

say(‘hello how are you?’)

wait(seconds(3))

end

while not isIdle do

wait(keyboard.anyKeyDown)

handleKeyboard()

end

end

Event driven Coroutine driven

Action => reaction

Breaks the code in multiple handlers

Messy execution flow

Messy scopes

Wait for « something » to

happen

Non-blocking

Simple execution flow

Meaningful and readable

You choose!

C++

– Performances

– Rich and powerful language

Lua

– Simple and efficient

– Fast iteration times

Mix both in any project on any target

Is it really ready?

SoccerPun.ch comming to HTML5 and native iOS/Android!

About SoccerPun.ch

Lots of important game-related features– 3D graphics– Physics– Animations– AI– Gamepad– …

Developped in 2 days using Minko 2 and AS3– Entirely re-developped in C++/Lua

Should be one of the most advancedWebGL game so far– Then we can juge whether HTLM5 is ready or

not for games

Conclusion

Open source

– More than 15 OS projects used

– 1 million lines of code

Public beta coming in March

– New website

– 50+ tutorials

– 10+ example projects

– 800 000 lines of code

THANK YOU!

Aerys USInstitut Mines-Télécom Silicon Valley

NASA Research Park

Moffett Field

CA 94035 Mountain View

USA

Aerys Europe15 rue Jean-Baptiste Berlier

Hall B

75013 Paris

France

Customer service

+33 805 690 489Monday to Friday, from 9:00 to 17:00 UTC

hello@aerys.in

http://aerys.in

Jean-Marc Le Roux

CEO

jeanmarc@aerys.in

+336 20 56 45 78

Warren Seine

CTO

warren@aerys.in

+336 79 51 64 66

Ymane Amrane

Sales Manager

ymane@aerys.in

+339 72 28 55 83

http://minko.io

top related