SlideShare una empresa de Scribd logo
1 de 38
Descargar para leer sin conexión
http://minko.io
@Minko3D

Meetup iOS Developers
Creating cross-platform 3D apps with Minko.

Jean-Marc Le Roux
CEO and co-founder of Aerys
Creator of Minko (http://minko.io)
@promethe42
jeanmarc@aerys.in
by
3D. Everywhere.
Deliver engaging, interactive and rich 3D content and applications on
desktops, mobiles and the web.
Minko Enterprise

Cloud. Light. Mobile.

 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

“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
Minko Studio

Design. Integrate. Live.

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

 What You See Is What You Get






Physics
Animations
Lights
Materials
....

…
Minko Engine

Mobile. Web. Native.

 Develop once, deploy everywhere
 The power of native, the reach of the
web

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

André Weissflog, Head of Development at

 Open source, with enterprise-class
support

Skyrama 2 by BigPoint
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
Application

Application

Unity

Minko

Mono VM

Javascript VM

Core Library

Native Plugins

OS

Lua VM

Javascript VM (WIP)

Core Framework & Plugins

OS
Minko VS Unity – Open Source
Application

Application

Unity

Minko

Mono VM

Javascript VM

Core Library

Native Plugins

OS

Lua VM

Javascript VM (WIP)

Core Framework & Plugins

OS
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

HTML5 UI overlay

– Chromium on desktop
– WebView on mobiles
– DOMElement on the web

 Responsive UI design
 Leverage existing HTML5 tools and
frameworks
 Video
3D backbuffer
Parallelization

 Workers
 Threads (except for HTML5)
 Coroutines (Lua)
SCRIPTING
Core Framework Language
 Fast

 Rich & expressive
 Optimized for each target

C, C++, Java, C#...

VS

Javascript, Python, AS3…

Scripting Language
 Simple

 Interpreted
 Dynamic
We chose… Lua!
 Fits all the requirements of a scripting language
 Vastly used by the video game industry (World of Warcraft, Fable II & III, Neverwinter
Nights, …)
– 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 advanced
WebGL 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 US

Institut Mines-Télécom Silicon Valley
NASA Research Park
Moffett Field
CA 94035 Mountain View
USA

Aerys Europe
Jean-Marc Le Roux
CEO

Warren Seine
CTO

Ymane Amrane
Sales Manager

jeanmarc@aerys.in
+336 20 56 45 78

warren@aerys.in
+336 79 51 64 66

ymane@aerys.in
+339 72 28 55 83

15 rue Jean-Baptiste Berlier
Hall B
75013 Paris
France

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

hello@aerys.in
http://aerys.in
http://minko.io

Más contenido relacionado

La actualidad más candente

Electron - Build cross platform desktop apps
Electron - Build cross platform desktop appsElectron - Build cross platform desktop apps
Electron - Build cross platform desktop appsPriyaranjan Mohanty
 
Polyglot programming and agile development
Polyglot programming and agile developmentPolyglot programming and agile development
Polyglot programming and agile developmentShashank Teotia
 
Electron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologiesElectron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologiesBethmi Gunasekara
 
CocoaHeads Rennes #13 : CocoaPods
CocoaHeads Rennes #13 : CocoaPodsCocoaHeads Rennes #13 : CocoaPods
CocoaHeads Rennes #13 : CocoaPodsCocoaHeadsRNS
 
Game Programming - Cloud Development
Game Programming - Cloud DevelopmentGame Programming - Cloud Development
Game Programming - Cloud DevelopmentNick Pruehs
 
Deployment Automation with Docker
Deployment Automation with DockerDeployment Automation with Docker
Deployment Automation with DockerEgor Pushkin
 
Next generation mobile gp us and rendering techniques - niklas smedberg
Next generation mobile gp us and rendering techniques - niklas smedbergNext generation mobile gp us and rendering techniques - niklas smedberg
Next generation mobile gp us and rendering techniques - niklas smedbergMary Chan
 
[Codelab 2017] Docker 기초 및 활용 방안
[Codelab 2017] Docker 기초 및 활용 방안[Codelab 2017] Docker 기초 및 활용 방안
[Codelab 2017] Docker 기초 및 활용 방안양재동 코드랩
 
J2ee strutswithhibernate-140121221332-phpapp01
J2ee strutswithhibernate-140121221332-phpapp01J2ee strutswithhibernate-140121221332-phpapp01
J2ee strutswithhibernate-140121221332-phpapp01Jay Palit
 
Endless runner game in unreal engine 4
Endless runner game in unreal engine 4Endless runner game in unreal engine 4
Endless runner game in unreal engine 4Vasilis Kamakaris
 

La actualidad más candente (20)

Electron - Build cross platform desktop apps
Electron - Build cross platform desktop appsElectron - Build cross platform desktop apps
Electron - Build cross platform desktop apps
 
Electron
ElectronElectron
Electron
 
Polyglot programming and agile development
Polyglot programming and agile developmentPolyglot programming and agile development
Polyglot programming and agile development
 
Intro to Asha UI
Intro to Asha UIIntro to Asha UI
Intro to Asha UI
 
Tizen Window System
Tizen Window SystemTizen Window System
Tizen Window System
 
Electron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologiesElectron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologies
 
Docker for a .NET web developer
Docker for a .NET web developerDocker for a .NET web developer
Docker for a .NET web developer
 
43 Languages
43 Languages43 Languages
43 Languages
 
CocoaHeads Rennes #13 : CocoaPods
CocoaHeads Rennes #13 : CocoaPodsCocoaHeads Rennes #13 : CocoaPods
CocoaHeads Rennes #13 : CocoaPods
 
Game Programming - Cloud Development
Game Programming - Cloud DevelopmentGame Programming - Cloud Development
Game Programming - Cloud Development
 
Docker containers on Windows
Docker containers on WindowsDocker containers on Windows
Docker containers on Windows
 
Deployment Automation with Docker
Deployment Automation with DockerDeployment Automation with Docker
Deployment Automation with Docker
 
Next generation mobile gp us and rendering techniques - niklas smedberg
Next generation mobile gp us and rendering techniques - niklas smedbergNext generation mobile gp us and rendering techniques - niklas smedberg
Next generation mobile gp us and rendering techniques - niklas smedberg
 
[Codelab 2017] Docker 기초 및 활용 방안
[Codelab 2017] Docker 기초 및 활용 방안[Codelab 2017] Docker 기초 및 활용 방안
[Codelab 2017] Docker 기초 및 활용 방안
 
J2ee strutswithhibernate-140121221332-phpapp01
J2ee strutswithhibernate-140121221332-phpapp01J2ee strutswithhibernate-140121221332-phpapp01
J2ee strutswithhibernate-140121221332-phpapp01
 
Demystifying Docker
Demystifying DockerDemystifying Docker
Demystifying Docker
 
server side Swift
server side Swift server side Swift
server side Swift
 
Chapter 1 java
Chapter 1 java Chapter 1 java
Chapter 1 java
 
Endless runner game in unreal engine 4
Endless runner game in unreal engine 4Endless runner game in unreal engine 4
Endless runner game in unreal engine 4
 
Hardware Accelerated 2D Rendering for Android
Hardware Accelerated 2D Rendering for AndroidHardware Accelerated 2D Rendering for Android
Hardware Accelerated 2D Rendering for Android
 

Destacado

Minko - Build WebGL applications with C++ and asm.js
Minko - Build WebGL applications with C++ and asm.jsMinko - Build WebGL applications with C++ and asm.js
Minko - Build WebGL applications with C++ and asm.jsMinko3D
 
[UniteKorea2013] Memory profiling in Unity
[UniteKorea2013] Memory profiling in Unity[UniteKorea2013] Memory profiling in Unity
[UniteKorea2013] Memory profiling in UnityWilliam Hugo Yang
 
Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5
Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5
Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5David Voyles
 
Game Development with Unity
Game Development with UnityGame Development with Unity
Game Development with Unitydavidluzgouveia
 
React in Native Apps - Meetup React - 20150409
React in Native Apps - Meetup React - 20150409React in Native Apps - Meetup React - 20150409
React in Native Apps - Meetup React - 20150409Minko3D
 
Game Development
Game DevelopmentGame Development
Game Developmenthorizongir
 

Destacado (6)

Minko - Build WebGL applications with C++ and asm.js
Minko - Build WebGL applications with C++ and asm.jsMinko - Build WebGL applications with C++ and asm.js
Minko - Build WebGL applications with C++ and asm.js
 
[UniteKorea2013] Memory profiling in Unity
[UniteKorea2013] Memory profiling in Unity[UniteKorea2013] Memory profiling in Unity
[UniteKorea2013] Memory profiling in Unity
 
Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5
Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5
Getting started with Emscripten – Transpiling C / C++ to JavaScript / HTML5
 
Game Development with Unity
Game Development with UnityGame Development with Unity
Game Development with Unity
 
React in Native Apps - Meetup React - 20150409
React in Native Apps - Meetup React - 20150409React in Native Apps - Meetup React - 20150409
React in Native Apps - Meetup React - 20150409
 
Game Development
Game DevelopmentGame Development
Game Development
 

Similar a Minko - Creating cross-platform 3D apps with Minko

Minko - Windows App Meetup Nov. 2013
Minko - Windows App Meetup Nov. 2013Minko - Windows App Meetup Nov. 2013
Minko - Windows App Meetup Nov. 2013Minko3D
 
Casual Engines 2009
Casual Engines 2009Casual Engines 2009
Casual Engines 2009David Fox
 
Cross platform development with C#
Cross platform development with C#Cross platform development with C#
Cross platform development with C#Michele Scandura
 
Minko - Scripting 3D apps with Lua and C++
Minko - Scripting 3D apps with Lua and C++Minko - Scripting 3D apps with Lua and C++
Minko - Scripting 3D apps with Lua and C++Minko3D
 
Minko - Targeting Flash/Stage3D with C++ and GLSL
Minko - Targeting Flash/Stage3D with C++ and GLSLMinko - Targeting Flash/Stage3D with C++ and GLSL
Minko - Targeting Flash/Stage3D with C++ and GLSLMinko3D
 
Open Kode, Airplay And The New Reality Of Write Once Run Anywhere
Open Kode, Airplay And The New Reality Of Write Once Run AnywhereOpen Kode, Airplay And The New Reality Of Write Once Run Anywhere
Open Kode, Airplay And The New Reality Of Write Once Run Anywhereguest991eb3
 
Minko - Why we created our own Flash platform and why you should care
Minko - Why we created our own Flash platform and why you should careMinko - Why we created our own Flash platform and why you should care
Minko - Why we created our own Flash platform and why you should careMinko3D
 
COMPUTER GRAPHICS AND MULTI MEDIA SOFTWARE LIST
COMPUTER GRAPHICS AND MULTI MEDIA SOFTWARE LISTCOMPUTER GRAPHICS AND MULTI MEDIA SOFTWARE LIST
COMPUTER GRAPHICS AND MULTI MEDIA SOFTWARE LISTtarun kumar sharma
 
IT TRENDS AND PERSPECTIVES 2016
IT TRENDS AND PERSPECTIVES 2016IT TRENDS AND PERSPECTIVES 2016
IT TRENDS AND PERSPECTIVES 2016Vaidheswaran CS
 
Minko - Flash Conference #5
Minko - Flash Conference #5Minko - Flash Conference #5
Minko - Flash Conference #5Minko3D
 
Paris Android User Group - Build 3D web, mobile and desktop applications with...
Paris Android User Group - Build 3D web, mobile and desktop applications with...Paris Android User Group - Build 3D web, mobile and desktop applications with...
Paris Android User Group - Build 3D web, mobile and desktop applications with...Minko3D
 
Silverlight
SilverlightSilverlight
Silverlightvishakpb
 
O futuro do .NET : O que eu preciso saber
O futuro do .NET : O que eu preciso saberO futuro do .NET : O que eu preciso saber
O futuro do .NET : O que eu preciso saberDanilo Bordini
 
Embedded Linux Multimedia
Embedded Linux MultimediaEmbedded Linux Multimedia
Embedded Linux MultimediaCaglar Dursun
 
Dot Net Project Mini Game
Dot Net Project Mini GameDot Net Project Mini Game
Dot Net Project Mini Gamevarun arora
 
#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...
#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...
#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...Paris Open Source Summit
 
Yet another DSL for cross platforms mobile development
Yet another DSL for cross platforms mobile developmentYet another DSL for cross platforms mobile development
Yet another DSL for cross platforms mobile developmentOlivier Le Goaër
 
Google Android Naver 1212
Google Android Naver 1212Google Android Naver 1212
Google Android Naver 1212Yoojoo Jang
 

Similar a Minko - Creating cross-platform 3D apps with Minko (20)

Minko - Windows App Meetup Nov. 2013
Minko - Windows App Meetup Nov. 2013Minko - Windows App Meetup Nov. 2013
Minko - Windows App Meetup Nov. 2013
 
Casual Engines 2009
Casual Engines 2009Casual Engines 2009
Casual Engines 2009
 
Cross platform development with C#
Cross platform development with C#Cross platform development with C#
Cross platform development with C#
 
Minko - Scripting 3D apps with Lua and C++
Minko - Scripting 3D apps with Lua and C++Minko - Scripting 3D apps with Lua and C++
Minko - Scripting 3D apps with Lua and C++
 
Minko - Targeting Flash/Stage3D with C++ and GLSL
Minko - Targeting Flash/Stage3D with C++ and GLSLMinko - Targeting Flash/Stage3D with C++ and GLSL
Minko - Targeting Flash/Stage3D with C++ and GLSL
 
Open Kode, Airplay And The New Reality Of Write Once Run Anywhere
Open Kode, Airplay And The New Reality Of Write Once Run AnywhereOpen Kode, Airplay And The New Reality Of Write Once Run Anywhere
Open Kode, Airplay And The New Reality Of Write Once Run Anywhere
 
Minko - Why we created our own Flash platform and why you should care
Minko - Why we created our own Flash platform and why you should careMinko - Why we created our own Flash platform and why you should care
Minko - Why we created our own Flash platform and why you should care
 
COMPUTER GRAPHICS AND MULTI MEDIA SOFTWARE LIST
COMPUTER GRAPHICS AND MULTI MEDIA SOFTWARE LISTCOMPUTER GRAPHICS AND MULTI MEDIA SOFTWARE LIST
COMPUTER GRAPHICS AND MULTI MEDIA SOFTWARE LIST
 
IT TRENDS AND PERSPECTIVES 2016
IT TRENDS AND PERSPECTIVES 2016IT TRENDS AND PERSPECTIVES 2016
IT TRENDS AND PERSPECTIVES 2016
 
DroidCon Berlin 2018 summary
DroidCon Berlin 2018 summaryDroidCon Berlin 2018 summary
DroidCon Berlin 2018 summary
 
Minko - Flash Conference #5
Minko - Flash Conference #5Minko - Flash Conference #5
Minko - Flash Conference #5
 
Paris Android User Group - Build 3D web, mobile and desktop applications with...
Paris Android User Group - Build 3D web, mobile and desktop applications with...Paris Android User Group - Build 3D web, mobile and desktop applications with...
Paris Android User Group - Build 3D web, mobile and desktop applications with...
 
Silverlight
SilverlightSilverlight
Silverlight
 
O futuro do .NET : O que eu preciso saber
O futuro do .NET : O que eu preciso saberO futuro do .NET : O que eu preciso saber
O futuro do .NET : O que eu preciso saber
 
Embedded Linux Multimedia
Embedded Linux MultimediaEmbedded Linux Multimedia
Embedded Linux Multimedia
 
Dot Net Project Mini Game
Dot Net Project Mini GameDot Net Project Mini Game
Dot Net Project Mini Game
 
Synapse india reviews sharing asp.net
Synapse india reviews sharing  asp.netSynapse india reviews sharing  asp.net
Synapse india reviews sharing asp.net
 
#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...
#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...
#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...
 
Yet another DSL for cross platforms mobile development
Yet another DSL for cross platforms mobile developmentYet another DSL for cross platforms mobile development
Yet another DSL for cross platforms mobile development
 
Google Android Naver 1212
Google Android Naver 1212Google Android Naver 1212
Google Android Naver 1212
 

Minko - Creating cross-platform 3D apps with Minko

  • 1. http://minko.io @Minko3D Meetup iOS Developers Creating cross-platform 3D apps with Minko. Jean-Marc Le Roux CEO and co-founder of Aerys Creator of Minko (http://minko.io) @promethe42 jeanmarc@aerys.in
  • 2. by
  • 3. 3D. Everywhere. Deliver engaging, interactive and rich 3D content and applications on desktops, mobiles and the web.
  • 4. Minko Enterprise Cloud. Light. Mobile.  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 “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
  • 5. Minko Studio Design. Integrate. Live.  Compatible with all major 3D CAO/design tools  77+ supported file formats  What You See Is What You Get      Physics Animations Lights Materials .... …
  • 6. Minko Engine Mobile. Web. Native.  Develop once, deploy everywhere  The power of native, the reach of the web “We chose Minko to be the 3D engine in one of our new Flash-based games because we think it’s a highly professional […] solution in terms of development ecosystem and high performance.” André Weissflog, Head of Development at  Open source, with enterprise-class support Skyrama 2 by BigPoint
  • 8. 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
  • 9. New Game Released: IronForce
  • 10. Minko VS Unity - Architecture Application Application Unity Minko Mono VM Javascript VM Core Library Native Plugins OS Lua VM Javascript VM (WIP) Core Framework & Plugins OS
  • 11. Minko VS Unity – Open Source Application Application Unity Minko Mono VM Javascript VM Core Library Native Plugins OS Lua VM Javascript VM (WIP) Core Framework & Plugins OS
  • 12. 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)
  • 13. 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
  • 14. 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…)
  • 15. 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
  • 16. C++11 Example – Closures // callback is removed when mouseWheel is set to nullptr
  • 17. C++11 Example – Shared pointers
  • 18. 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…
  • 19. 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
  • 20. 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
  • 21. 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
  • 22. HTML5 UI (WIP)  Portable HTML5 UI overlay – Chromium on desktop – WebView on mobiles – DOMElement on the web  Responsive UI design  Leverage existing HTML5 tools and frameworks  Video 3D backbuffer
  • 23. Parallelization  Workers  Threads (except for HTML5)  Coroutines (Lua)
  • 25. Core Framework Language  Fast  Rich & expressive  Optimized for each target C, C++, Java, C#... VS Javascript, Python, AS3… Scripting Language  Simple  Interpreted  Dynamic
  • 26. We chose… Lua!  Fits all the requirements of a scripting language  Vastly used by the video game industry (World of Warcraft, Fable II & III, Neverwinter Nights, …) – 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!
  • 27. 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
  • 28. 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
  • 29. 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
  • 30.
  • 31. 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
  • 32. You choose!  C++ – Performances – Rich and powerful language  Lua – Simple and efficient – Fast iteration times  Mix both in any project on any target
  • 33. Is it really ready? SoccerPun.ch comming to HTML5 and native iOS/Android!
  • 34. 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 advanced WebGL game so far – Then we can juge whether HTLM5 is ready or not for games
  • 35. 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
  • 37. Aerys US Institut Mines-Télécom Silicon Valley NASA Research Park Moffett Field CA 94035 Mountain View USA Aerys Europe Jean-Marc Le Roux CEO Warren Seine CTO Ymane Amrane Sales Manager jeanmarc@aerys.in +336 20 56 45 78 warren@aerys.in +336 79 51 64 66 ymane@aerys.in +339 72 28 55 83 15 rue Jean-Baptiste Berlier Hall B 75013 Paris France Customer service +33 805 690 489 Monday to Friday, from 9:00 to 17:00 UTC hello@aerys.in http://aerys.in