Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

The Haxe language as a Transmedia toolkit

No description
by

David Elahee

on 24 April 2015

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of The Haxe language as a Transmedia toolkit

The Haxe language as a Transmedia toolkit
One App
Many Runtimes
Millions of devices
One Codebase
David Elahee
game design / gpu / haxe
david.elahee@gmail.com
@blackmagic_mt
Indie game developer collective
Bordeaux since 2003
Haxe Foundation
Non-profit
Sponsors third party initiative
Self-funded
http://haxe.org/foundation/
and countless others !
Haxe is a big family already !
Who is Motion Twin ?
Open Source Contributor
SPOD
MTASC
H3D
AGAL
HAXE
Game, web and visual designers collective
No boss, all revenue shared, all technology shared
Big web industry player !
33 millions of accounts created overall
Creative excellence
Motion Twin family earned around 50 Ludum Dare medals
Only 11 people !
Multi millions earned in years
Scales well to market variation
High productivity per employee
13 years of gaming love !
Back in 2003, we explored many technologies...
There was always glitch...
C++ iterations too long... team gets bored...
PHP scales very badly..
Flash compiler too slow
lack of inlining
hidden api's
let's use flash ( we come from flash ) !
we come from the web
Let's create a tool for us.
Ultimately, we lacked efficient tools dedicated to our job...
Making GAMES for most users the fastest way.
low code reliability...
Previously worked as gamedev as 3rd party for Activision, Ubisoft, THQ and many more
@motiontwin
contact@motion-twin.com
Make a better Haxe for all
Why reinvent the wheel ?
Why was Haxe created ?
Nowadays...
We will talk about why Haxe matters...
But first, we must explain why Motion Twin made this tool.
Ex-kalysto employees
Big, low productive, friction full, meh...
And why investing was a successful choice.
The game dev tools have
proliferated
Some have been born, some have
died
We believe that gaming tech should be
shared
So many I can't event screen shot the whole wikipedia page !
But vendors are tying devs to
their
technologies...
Unity3D ( C# )
Apple ( Sprite Kit, Metal )
Google ( Play Store API's)
GAMEDEVS ARE FREE, THEY DON'T WANT ANYBODY TO OWN OUR GAMES EDITION, UPDATE AND DISTRIBUTION
Haxe breaks all this...
No more boring port
Shared logic
Code once, run everywhere
Readable / Reliable / Fast
Single man army enabled
Can output for PIZZA
Space time continuous
Portable
Why do us game developers need Haxe ?
Modern
Abstraction deleaking
Parametric enums
Lambda expressions
enum Ai {
Turtle( isKing : Bool);
Mushroom ( venomLevel : Int );
}
[ 0,1,2 ].apply( function(a) trace(a) ) ;
Compiler flow traversing Macros ( from parsing to generating)
(function( a ) {...}).bind( ennemies );
Generating types from data ( .ods, .xml, .json )
Generating class code from data
Write DSL ( gpu shader, physic lang )
"But...what is Haxe exactly ?"
oh...a transpiler...already said that...
Instanciate and cull code trees...
Inlining / Unrolling
Re-optimised by backend
Native backend access
Syntax conservative
Garbage collection
Abstract types
abstract Vector { @:op(A+B) function add(v,vv) {...} }
abstract Quaternion { @:op(A*B) function mul(q,qq) {...} }
ML Sugar
Generic Types
function<T> forall() { for( k in ks ) ... }
10 Languages
Especially when there are great products available...
Compile time is a priority
Advanced DCE
AS2
AS3
AVM Bytecode
C++
C
Python
Neko
PHP
More to come as people volunteer !
Lua
Obj-C
Java
C#
Js
LANGAGES
Runtimes
Node
Air
Flash player
Mono
JRE
Open Java
Browser
Win32
*nix
iOS
Devices
There is no limit.
PHP
NekoVM
Native profiling
Native debuggers
Well... sort of...
Our community is small and not influent
Our community is techy by nature
We rely on good will and benefactor
Tooling is an exponential issue
Haxe is ideal suited for one man armies !
Portable
Maintainability
We are very small team
Run everywhere at near native speed
Having one codebase implies less people to do all tasks.
Concise
Emphasize concise literals and modularity
Which explains why it is weapon of choice for ludum darers and indies...Because it leaves more time to think than to hack into getting your idea running.
We apply this to everything !
Haxe runs our servers via the Neko VM
Haxe runs our bills
Haxe runs our HR team
Haxe runs our game logic
Basically it runs everything at Motion Twin...
Haxe monitors the servers temperature
Somehow, Haxe bridged the babel problem for us...
Pre-optimising when runtime is slow
Haxe Foundation
Promote
Support
Develop
Share
Case Study : Drakarnage
What is Haxe ?
A transpiler and optimising compiler
It eats a dedicated language somehow a C#/js hybrid
It transpiles it to one of 10 languages
According to the toolchain you use you can then run your code to any compatible device/server/tv/ whatever...
our friends puzzl.com compiles to 13 targets
Thank you !
Questions ?
@blackmagic_mt
Redis
Neko
Tora
Apache
Visual Client
Custom HTML Renderer
Haxe/templo
HTML Page
Native Client
Play store
Facebook
Web
Faster
More control hence
Prototype in flash
Deployed on cpp
Prepared for HTML5
with live reloading script a la Unity 3D
All this using Haxe
Using very limited resources
Scales very well
Can be deployed through web to TV !
At native speed !
HAXE FTW !
Free And Open source
Funded Haxe via Nicolas Cannasse
templo
Classes
Lasy Static typing
Type inference
Reflection
coming from games, people are not taking us seriously...
it requires a good knowledge in IT to get started
More target more tools...
You learn Platforms rather than langages
We thus have more fuel for creativity !
Haxe/JS App
Haxe/cpp
Ruby
Python
package hxd;

import flash.utils.ByteArray;
import haxe.io.Bytes;

private typedef InnerData = #if flash flash.Vector<Float>
#elseif (openfl && cpp)
openfl.utils.Float32Array
#else
Array<Float>
#end

private class InnerIterator {
var b : InnerData;
var len : Int;
var pos : Int;
public inline function new( b : InnerData ) {
this.b = b;
this.len = this.b.length;
this.pos = 0;
}
public inline function hasNext() {
return pos < len;
}
public inline function next() {
return b[pos++];
}
}

abstract FloatBuffer(InnerData) {

public var length(get, never) : Int;

public inline function new(length = 0) {
#if js
this = untyped __new__(Array, length);
#elseif cpp
this = new InnerData(length);
#else
this = new InnerData(length);
#end
}

FOSDEM '15
Motion Twin since '11
won some awards
but also a tool made for game dev...
but they had the market shared !
Linux
The haxe foundation members are working hard but
a large part of the contributions are coming from public.
Full transcript