SlideShare une entreprise Scribd logo
1  sur  34
Télécharger pour lire hors ligne
Flash Online Conference #7

Scripting 3D apps with Lua and C++

@Minko3D

http://minko.io
Available today on minko.io

LATEST MINKO 2 ADDITIONS
New Minko 2 Features
 Editor
– Auto-save
– Multiple optimizations

 Framework
– Mutiple fixes on the lighting system

Available today!
http://minko.io/download
Codename « Normandie »

MINKO 3
Motivations

 Target new platforms
– Keep the « design once, deploy everywhere » workflow
– Larger community

 Increase performances, epecially CPU-wise
– Multi-threading?

 Leverage existing codebase
Technological choices

 C++11 core framework and plugins
 Develop once, deploy everywhere
– Windows, Mac, Linux
– Android, iOS
– HTML5, Flash

 Work with all the tools you like
Demo – HTML5 Sponza

http://minko.io/showcase/sponza-html5
Babolat Play - First commercial project!

http://www.youtube.com/watch?v=ewUUerxdZ7U
Babolat Play - Fallback

Run web app.

yes

Is
WebGL
available
?

no

Generate JPEG on the
server

Thanks to Minko 3, the same code runs on the server side
and in the browser.
New Platforms
Platform

Status

Target

Languages

iOS

OK

Native

C/C++

Android

OK

Native

C/C++

Flash (Stage3D)

WIP

X-Compilation

C/C++, AS3

Windows (DirectX)

OK

Native

C/C++

Mac

OK

Native

C/C++

Windows (OpenGL)

OK

Native

C/C++

Linux

OK

Native

C/C++

HTML5 (WebGL)

OK

X-Compilation

C/C++, Javascript

Windows Phone

WIP

Native

C/C++

BlackBerry 10

NA

Native

C/C++

Firefox OS

NA

Native

C/C++
How can I help?
 Show your love for Crossbridge and Minko on the dedicated
feature request on Github!
– https://github.com/adobe-flash/crossbridge/issues/28

 Please leave a comment, even just a +1
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…
Effect files
 Store a fully setup multi-pass rendering effect
 Include 3rd party shaders and plug them in the engine using
bindings
 Support über-shaders using automated macro definition
based on bindings
 Handle multiple rendering techniques to choose from at
runtime
 Can fallback to another specific technique when the selected
one fails (WIP)
« flash » technique

« windows » technique

Portable Effects & Shaders
"techniques" : [
{
"configuration" : [ "windows" ],
"passes" : [
{
"vertexShader" : …
"fragmentShader" : …
}
},
{
"configuration" : [ "flash" ],
"passes" : [
{
"vertexShader" : …
"fragmentShader" : …
},
{
"vertexShader" : …
"fragmentShader" : …
}
}
]

 Group passes in a named
« technique »
 Select that technique at
runtime based on some
flags
– Platform
– Available features/plugins
– Custom flags
Leap Motion support

http://www.youtube.com/watch?v=p14kJNJ9Eoc
Oculus Rift support
SCRIPTING IN MINKO 3
C++11 is great, but…

 Is a new language for most developers
 It’s too complex for prototyping game design
 Requires some setup to get started
 Slow iteration times
Core Framework Language
 Fast
 Rich & expressive
 Optimized for each target

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

VS

Javascript, Python, AS3…

Scripting Language
 Simple
 Interpreted
 Dynamic
Complaints about ActionScript

 Garbage collector is messy
 No operators overloading
 Bad performances
 No (easy) concurrency
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
ActionScript VS Lua
ActionScript
 Messy garbage
collector

Lua
 Customizable garbage
collector

 No operators
overloading

 Operators overloading

 Bad performances

 Very fast + custom
C/C++ bindings

 No easy concurrency

 Coroutines
Minko 3 VS Flash
Application

Application

Flash Runtime

Minko 3

ActionScript VM

Lua VM

Core Library

OS

ANE

Core Framework & Plugins

OS
Flexible
Application

Application

Flash Runtime

Minko 3

ActionScript VM

Lua VM

Core Library

OS

ANE

Core Framework & Plugins

OS
Open Source
Application

Application

Flash Runtime

Minko 3

ActionScript VM

Lua VM

Core Library

OS

ANE

Core Framework & Plugins

OS
Customizable
Application

Application

Flash Runtime

Minko 3

ActionScript VM

Lua VM

Core Library

OS

ANE

Core Framework & Plugins

OS
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
say(‘hello how are you?’)
wait(seconds(3))
while no isIdle
wait(keyboard:keyDown())
handleKeyboard()
…
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 chose!
 C++
– Performances
– Rich and powerful language

 Lua
– Simple and efficient
– Fast iteration times

 Mix both in any project on any target
2014
 New Minko editor
–
–
–
–
–

Script editor
Live coding
ShaderLab
Animations editor
Plugins system

http://www.youtube.com/watch?v=yuR1e1PjU8Y

 Open beta of Minko 3 (January)
 An amazing new Minko product for businesses and teams
Don’t forget to check http://minko.io !

JOYEUX NOEL!
THANK YOU SERGEY 

Contenu connexe

Tendances

Docker in development (Story)
Docker in development (Story)Docker in development (Story)
Docker in development (Story)Quan Nguyen
 
Docker + Microservices in Production
Docker + Microservices in ProductionDocker + Microservices in Production
Docker + Microservices in ProductionPatrick Mizer
 
Structure programming – Java Programming – Theory
Structure programming – Java Programming – TheoryStructure programming – Java Programming – Theory
Structure programming – Java Programming – TheoryOXUS 20
 
Droidcon Nigeria 2021 - Still Sleeping on KMM?
Droidcon Nigeria 2021 - Still Sleeping on KMM? Droidcon Nigeria 2021 - Still Sleeping on KMM?
Droidcon Nigeria 2021 - Still Sleeping on KMM? Emmanuel Kehinde
 
Developing and Deploying PHP with Docker
Developing and Deploying PHP with DockerDeveloping and Deploying PHP with Docker
Developing and Deploying PHP with DockerPatrick Mizer
 
Introduction to Groovy Monkey
Introduction to Groovy MonkeyIntroduction to Groovy Monkey
Introduction to Groovy Monkeyjervin
 
Php Dependency Management with Composer ZendCon 2016
Php Dependency Management with Composer ZendCon 2016Php Dependency Management with Composer ZendCon 2016
Php Dependency Management with Composer ZendCon 2016Clark Everetts
 
Docker in production: reality, not hype (OSCON 2015)
Docker in production: reality, not hype (OSCON 2015)Docker in production: reality, not hype (OSCON 2015)
Docker in production: reality, not hype (OSCON 2015)bridgetkromhout
 
Building kubectl plugins with Quarkus | DevNation Tech Talk
Building kubectl plugins with Quarkus | DevNation Tech TalkBuilding kubectl plugins with Quarkus | DevNation Tech Talk
Building kubectl plugins with Quarkus | DevNation Tech TalkRed Hat Developers
 
Deployment Automation with Docker
Deployment Automation with DockerDeployment Automation with Docker
Deployment Automation with DockerEgor Pushkin
 
Core Java Slides
Core Java SlidesCore Java Slides
Core Java SlidesVinit Vyas
 
Dependency Management with Composer
Dependency Management with ComposerDependency Management with Composer
Dependency Management with ComposerJordi Boggiano
 
jbang: Unleash the power of Java for shell scripting
jbang: Unleash the power of Java for shell scriptingjbang: Unleash the power of Java for shell scripting
jbang: Unleash the power of Java for shell scriptingRed Hat Developers
 
Choosing the Right Framework for Running Docker Containers in Prod
Choosing the Right Framework for Running Docker Containers in ProdChoosing the Right Framework for Running Docker Containers in Prod
Choosing the Right Framework for Running Docker Containers in ProdJosh Padnick
 

Tendances (20)

Docker in development (Story)
Docker in development (Story)Docker in development (Story)
Docker in development (Story)
 
Docker + Microservices in Production
Docker + Microservices in ProductionDocker + Microservices in Production
Docker + Microservices in Production
 
Structure programming – Java Programming – Theory
Structure programming – Java Programming – TheoryStructure programming – Java Programming – Theory
Structure programming – Java Programming – Theory
 
Droidcon Nigeria 2021 - Still Sleeping on KMM?
Droidcon Nigeria 2021 - Still Sleeping on KMM? Droidcon Nigeria 2021 - Still Sleeping on KMM?
Droidcon Nigeria 2021 - Still Sleeping on KMM?
 
Developing and Deploying PHP with Docker
Developing and Deploying PHP with DockerDeveloping and Deploying PHP with Docker
Developing and Deploying PHP with Docker
 
Let me introduce you: DOTS
Let me introduce you: DOTSLet me introduce you: DOTS
Let me introduce you: DOTS
 
Introduction to Groovy Monkey
Introduction to Groovy MonkeyIntroduction to Groovy Monkey
Introduction to Groovy Monkey
 
Php Dependency Management with Composer ZendCon 2016
Php Dependency Management with Composer ZendCon 2016Php Dependency Management with Composer ZendCon 2016
Php Dependency Management with Composer ZendCon 2016
 
Docker in production: reality, not hype (OSCON 2015)
Docker in production: reality, not hype (OSCON 2015)Docker in production: reality, not hype (OSCON 2015)
Docker in production: reality, not hype (OSCON 2015)
 
Building kubectl plugins with Quarkus | DevNation Tech Talk
Building kubectl plugins with Quarkus | DevNation Tech TalkBuilding kubectl plugins with Quarkus | DevNation Tech Talk
Building kubectl plugins with Quarkus | DevNation Tech Talk
 
Core java
Core javaCore java
Core java
 
Deployment Automation with Docker
Deployment Automation with DockerDeployment Automation with Docker
Deployment Automation with Docker
 
Os Bubna
Os BubnaOs Bubna
Os Bubna
 
Core Java Slides
Core Java SlidesCore Java Slides
Core Java Slides
 
Dependency Management with Composer
Dependency Management with ComposerDependency Management with Composer
Dependency Management with Composer
 
.NET RDF APIs
.NET RDF APIs.NET RDF APIs
.NET RDF APIs
 
jbang: Unleash the power of Java for shell scripting
jbang: Unleash the power of Java for shell scriptingjbang: Unleash the power of Java for shell scripting
jbang: Unleash the power of Java for shell scripting
 
Pc54
Pc54Pc54
Pc54
 
C# tutorial
C# tutorialC# tutorial
C# tutorial
 
Choosing the Right Framework for Running Docker Containers in Prod
Choosing the Right Framework for Running Docker Containers in ProdChoosing the Right Framework for Running Docker Containers in Prod
Choosing the Right Framework for Running Docker Containers in Prod
 

Similaire à Minko - Scripting 3D apps with Lua and C++

WebGL games with Minko - Next Game Frontier 2014
WebGL games with Minko - Next Game Frontier 2014WebGL games with Minko - Next Game Frontier 2014
WebGL games with Minko - Next Game Frontier 2014Minko3D
 
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
 
Paris Android LiveCode - Creating cross-platform 3D apps with Minko
Paris Android LiveCode - Creating cross-platform 3D apps with MinkoParis Android LiveCode - Creating cross-platform 3D apps with Minko
Paris Android LiveCode - Creating cross-platform 3D apps with MinkoMinko3D
 
Minko - Flash Conference #5
Minko - Flash Conference #5Minko - Flash Conference #5
Minko - Flash Conference #5Minko3D
 
Minko - Creating cross-platform 3D apps with Minko
Minko - Creating cross-platform 3D apps with MinkoMinko - Creating cross-platform 3D apps with Minko
Minko - Creating cross-platform 3D apps with MinkoMinko3D
 
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
 
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
 
The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)Geekstone
 
Polyglot programming and agile development
Polyglot programming and agile developmentPolyglot programming and agile development
Polyglot programming and agile developmentShashank Teotia
 
soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch
 
Minko - Windows App Meetup Nov. 2013
Minko - Windows App Meetup Nov. 2013Minko - Windows App Meetup Nov. 2013
Minko - Windows App Meetup Nov. 2013Minko3D
 
Afik Gal @alphageeks: Flex Intro
Afik Gal @alphageeks: Flex IntroAfik Gal @alphageeks: Flex Intro
Afik Gal @alphageeks: Flex IntroAlphageeks
 
The Business of Microsoft Silverlight
The Business of Microsoft SilverlightThe Business of Microsoft Silverlight
The Business of Microsoft Silverlightgoodfriday
 
Cross Platform Mobile Technologies
Cross Platform Mobile TechnologiesCross Platform Mobile Technologies
Cross Platform Mobile TechnologiesTalentica Software
 
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
 
OpenSouthCode 2016 - Accenture DevOps Platform 2016-05-07
OpenSouthCode 2016  - Accenture DevOps Platform 2016-05-07OpenSouthCode 2016  - Accenture DevOps Platform 2016-05-07
OpenSouthCode 2016 - Accenture DevOps Platform 2016-05-07Jorge Hidalgo
 
"The Vision API Maze: Options and Trade-offs," a Presentation from the Khrono...
"The Vision API Maze: Options and Trade-offs," a Presentation from the Khrono..."The Vision API Maze: Options and Trade-offs," a Presentation from the Khrono...
"The Vision API Maze: Options and Trade-offs," a Presentation from the Khrono...Edge AI and Vision Alliance
 
Scaleable PHP Applications in Kubernetes
Scaleable PHP Applications in KubernetesScaleable PHP Applications in Kubernetes
Scaleable PHP Applications in KubernetesRobert Lemke
 

Similaire à Minko - Scripting 3D apps with Lua and C++ (20)

WebGL games with Minko - Next Game Frontier 2014
WebGL games with Minko - Next Game Frontier 2014WebGL games with Minko - Next Game Frontier 2014
WebGL games with Minko - Next Game Frontier 2014
 
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
 
Paris Android LiveCode - Creating cross-platform 3D apps with Minko
Paris Android LiveCode - Creating cross-platform 3D apps with MinkoParis Android LiveCode - Creating cross-platform 3D apps with Minko
Paris Android LiveCode - Creating cross-platform 3D apps with Minko
 
Minko - Flash Conference #5
Minko - Flash Conference #5Minko - Flash Conference #5
Minko - Flash Conference #5
 
Minko - Creating cross-platform 3D apps with Minko
Minko - Creating cross-platform 3D apps with MinkoMinko - Creating cross-platform 3D apps with Minko
Minko - Creating cross-platform 3D apps with Minko
 
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
 
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
 
The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)
 
Polyglot programming and agile development
Polyglot programming and agile developmentPolyglot programming and agile development
Polyglot programming and agile development
 
soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5
 
Minko - Windows App Meetup Nov. 2013
Minko - Windows App Meetup Nov. 2013Minko - Windows App Meetup Nov. 2013
Minko - Windows App Meetup Nov. 2013
 
Afik Gal @alphageeks: Flex Intro
Afik Gal @alphageeks: Flex IntroAfik Gal @alphageeks: Flex Intro
Afik Gal @alphageeks: Flex Intro
 
The Business of Microsoft Silverlight
The Business of Microsoft SilverlightThe Business of Microsoft Silverlight
The Business of Microsoft Silverlight
 
Cross Platform Mobile Technologies
Cross Platform Mobile TechnologiesCross Platform Mobile Technologies
Cross Platform Mobile Technologies
 
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
 
server side Swift
server side Swift server side Swift
server side Swift
 
OpenSouthCode 2016 - Accenture DevOps Platform 2016-05-07
OpenSouthCode 2016  - Accenture DevOps Platform 2016-05-07OpenSouthCode 2016  - Accenture DevOps Platform 2016-05-07
OpenSouthCode 2016 - Accenture DevOps Platform 2016-05-07
 
"The Vision API Maze: Options and Trade-offs," a Presentation from the Khrono...
"The Vision API Maze: Options and Trade-offs," a Presentation from the Khrono..."The Vision API Maze: Options and Trade-offs," a Presentation from the Khrono...
"The Vision API Maze: Options and Trade-offs," a Presentation from the Khrono...
 
Scaleable PHP Applications in Kubernetes
Scaleable PHP Applications in KubernetesScaleable PHP Applications in Kubernetes
Scaleable PHP Applications in Kubernetes
 

Dernier

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 

Dernier (20)

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 

Minko - Scripting 3D apps with Lua and C++

  • 1. Flash Online Conference #7 Scripting 3D apps with Lua and C++ @Minko3D http://minko.io
  • 2. Available today on minko.io LATEST MINKO 2 ADDITIONS
  • 3. New Minko 2 Features  Editor – Auto-save – Multiple optimizations  Framework – Mutiple fixes on the lighting system Available today! http://minko.io/download
  • 5. Motivations  Target new platforms – Keep the « design once, deploy everywhere » workflow – Larger community  Increase performances, epecially CPU-wise – Multi-threading?  Leverage existing codebase
  • 6. Technological choices  C++11 core framework and plugins  Develop once, deploy everywhere – Windows, Mac, Linux – Android, iOS – HTML5, Flash  Work with all the tools you like
  • 7. Demo – HTML5 Sponza http://minko.io/showcase/sponza-html5
  • 8. Babolat Play - First commercial project! http://www.youtube.com/watch?v=ewUUerxdZ7U
  • 9. Babolat Play - Fallback Run web app. yes Is WebGL available ? no Generate JPEG on the server Thanks to Minko 3, the same code runs on the server side and in the browser.
  • 10. New Platforms Platform Status Target Languages iOS OK Native C/C++ Android OK Native C/C++ Flash (Stage3D) WIP X-Compilation C/C++, AS3 Windows (DirectX) OK Native C/C++ Mac OK Native C/C++ Windows (OpenGL) OK Native C/C++ Linux OK Native C/C++ HTML5 (WebGL) OK X-Compilation C/C++, Javascript Windows Phone WIP Native C/C++ BlackBerry 10 NA Native C/C++ Firefox OS NA Native C/C++
  • 11. How can I help?  Show your love for Crossbridge and Minko on the dedicated feature request on Github! – https://github.com/adobe-flash/crossbridge/issues/28  Please leave a comment, even just a +1
  • 12. 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…
  • 13. Effect files  Store a fully setup multi-pass rendering effect  Include 3rd party shaders and plug them in the engine using bindings  Support über-shaders using automated macro definition based on bindings  Handle multiple rendering techniques to choose from at runtime  Can fallback to another specific technique when the selected one fails (WIP)
  • 14. « flash » technique « windows » technique Portable Effects & Shaders "techniques" : [ { "configuration" : [ "windows" ], "passes" : [ { "vertexShader" : … "fragmentShader" : … } }, { "configuration" : [ "flash" ], "passes" : [ { "vertexShader" : … "fragmentShader" : … }, { "vertexShader" : … "fragmentShader" : … } } ]  Group passes in a named « technique »  Select that technique at runtime based on some flags – Platform – Available features/plugins – Custom flags
  • 18. C++11 is great, but…  Is a new language for most developers  It’s too complex for prototyping game design  Requires some setup to get started  Slow iteration times
  • 19. Core Framework Language  Fast  Rich & expressive  Optimized for each target C, C++, Java, C#... VS Javascript, Python, AS3… Scripting Language  Simple  Interpreted  Dynamic
  • 20. Complaints about ActionScript  Garbage collector is messy  No operators overloading  Bad performances  No (easy) concurrency
  • 21. 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!
  • 22. 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
  • 23. ActionScript VS Lua ActionScript  Messy garbage collector Lua  Customizable garbage collector  No operators overloading  Operators overloading  Bad performances  Very fast + custom C/C++ bindings  No easy concurrency  Coroutines
  • 24. Minko 3 VS Flash Application Application Flash Runtime Minko 3 ActionScript VM Lua VM Core Library OS ANE Core Framework & Plugins OS
  • 25. Flexible Application Application Flash Runtime Minko 3 ActionScript VM Lua VM Core Library OS ANE Core Framework & Plugins OS
  • 26. Open Source Application Application Flash Runtime Minko 3 ActionScript VM Lua VM Core Library OS ANE Core Framework & Plugins OS
  • 27. Customizable Application Application Flash Runtime Minko 3 ActionScript VM Lua VM Core Library OS ANE Core Framework & Plugins OS
  • 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 say(‘hello how are you?’) wait(seconds(3)) while no isIdle wait(keyboard:keyDown()) handleKeyboard() …
  • 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 chose!  C++ – Performances – Rich and powerful language  Lua – Simple and efficient – Fast iteration times  Mix both in any project on any target
  • 33. 2014  New Minko editor – – – – – Script editor Live coding ShaderLab Animations editor Plugins system http://www.youtube.com/watch?v=yuR1e1PjU8Y  Open beta of Minko 3 (January)  An amazing new Minko product for businesses and teams
  • 34. Don’t forget to check http://minko.io ! JOYEUX NOEL! THANK YOU SERGEY 