Portolják az Unreal Engine-t JavaScript-re

Utána néztem kicsit a technológiának. C/C++ kódot eddig is lehetett JavaScript-re fordítani úgy, hogy lefordítottuk LLVM virtuális gépre, amit Emscripten-el lehet JavaScript-re fordítani. Pár alkalmazást portoltak is már így JavaScript-re. Persze ez azért jelentős teljesítmény romlást is jelent, mivel a JavaScript ugye nem natív kód.

Erre a Google megoldása a NaCl (Native Client), amivel natív kódot futtathatunk a böngészőben. Ez egy JavaScript-től teljesen független saját technológia, tehát a támogatásához külön plugin kell, illetve minden platformra külön kell fordítani (bár ha jól tudom, itt is készül LLVM-es megoldás, amit az adott platformon futtatás előtt fordítanak natív kódra).
 
A Mozilla megoldása (amit most az Unreal Engine-hez is használnak) egy asm.js nevű kiterjesztés a JavaScript-hez. Az asm.js-es kód sima JavaScript, de van benne néhány speciális változó, stb. amit az asm.js-t támogató JavaScript engine-ek jobban tudnak optimalizálni. Ezeknek a változóknak fix típusa van például, így ki lehet pl. hagyni a dinamikus változókat érintő plusz konverziókat, ellenőrzéseket, stb. illetve előre natív kódra lehet fordítani, így nem kell interpreterrel futtatni. Ennek ugye az a nagy előnye, hogy sima JavaScript, nem kell hozzá semmilyen böngésző plugin (mint az NaCl esetén), mégis natívhoz közeli sebességgel fut.

Itt még érdemes megemlíteni szerintem a Dart-ot, ami ugyancsak JavaScript-re fordítható, tehát plugin nélkül is tud futni a böngészőben, de ha a saját virtuális gépben fut, akkor az opcionális típusoknak, SIMD műveleteknek, stb. hála natív kódhoz közeli sebességgel futtathatunk kódot. Mivel a js fordítónak köszönhetően ehhez sem kell külső plugin, ezért ez sokkal inkább tekinthető az asm.js alternatívájának.  

Akármelyik technológiát is nézzük, a lényeg, hogy a webes alkalmazások lassan de biztosan kezdik teljesítményben is felvenni a versenyt a natív alkalmazásokkal.

#blog  

Reshared post from +TechCrunch

To show off what game developers can do with a modern browser & without plugins, Mozilla and Epic teamed up to port Unreal Engine 3 to the web.

Mozilla And Epic Games Bring Unreal Engine 3 To The Web, No Plugin Needed | TechCrunch
TechCrunch is a leading technology media property, dedicated to obsessively profiling startups, reviewing new Internet products, and breaking tech news.