खा बनाम एचटीएमएल 5: सी ++ में जावास्क्रिप्ट का संकलन

मैं आपके ध्यान में अक्टूबर के आखिरी हैक्सअप सत्र 2019 लिंज़ से रॉबर्ट कॉनराड की रिपोर्ट का अनुवाद लाता हूं यह चर्चा क्रॉसकोड गेम को पोर्ट करने के बारे में है , जो मूल रूप से कंसोल में HTML5 में लिखा गया है यदि आपको अनुवाद पसंद है, तो मेरी सलाह है कि आप इसे अंग्रेजी में भी देखें - रॉबर्ट एक बहुत ही हंसमुख व्यक्ति हैं, वह लगातार मजाक कर रहे हैं और उन्हें सुनना दिलचस्प है।


छवि


: Deck13, , ( ). (, Surge 2).


(), , .
.


छवि


Kha, Kinc Krom — . . SDL, - - ( , ).


Kinc C/C++. Kha — Haxe Kinc (Windows, Linux, Mac OS, Android, iOS, Nintendo Switch ..), , Kha (WebGL Canvas).


Krom — JavaScript, Web-API. API, Kinc, JS , .. . Krom Chakra Microsoft Kha.


छवि


, Kha — Armory3D ArmorPaint:



छवि


RPG Playground — , Kha. RPG Maker’ .


छवि


, Kha / Kinc / Krom 2D-, 3D-.


— CrossCode:
CrossCode — Action RPG, . , — 30 , 20 .


छवि


CrossCode Windows, MacOS Linux PlayStation 4, Xbox One Nintendo Switch. CrossCode HTML5-, .
“HTML5-” CrossCode?


  • JavaScript
  • Canvas 2d API WebAudio API

छवि


“ ” “ JavaScript?”: , , , - Java :)
, ( , )...


छवि


Java? Java — - .


छवि


, - ?
, , - — Simula Smalltalk.


छवि


Simula — , , , , .


Simula, ( C++). , , — . , , , .


छवि


Smalltalk . , Simula , :


  • Smalltalk ,
  • Smalltalk JIT-
  • Smalltalk —

.


छवि


Smalltalk Self — -, Smalltalk , :


  • « »,
  • .

Self , , .


छवि


, Java (.. , ):
Java Simula — . C Java Smalltalk: JIT- (garbage collection). Java, .


छवि


, , JavaScript:


  • JavaScript — ( Smalltalk) , ,
  • JavaScript — . , — (, , SIMD)
  • JavaScript . , var let, == ===. JavaScript — , : [] + "". , ( ) . CrossCode , .
  • JavaScript Self ( ). Smalltalk JavaScript . — .

छवि


— CrossCode , :


  • . , ,
  • , , , . . , , . .

छवि


- CrossCode 2018 , Deck13 Spotlight , . . , — — . , . , .


छवि


:



छवि


Impact — 2D- HTML5. 2010 , . Impact , 2018 MIT.


छवि


Impact Kha, . CrossCode — 3 ( ):


  1. JavaScript, . Canvas WebAudio API. ,
  2. JIT- JavaScript (, V8), JavaScript
  3. , JavaScript

छवि


:


  • Kinc ( Kinc — Xbox 360 Playstation 3)
  • Duktape — JavaScript
  • Canvas WebAudio API — ( ), .

PlayStation 4 .


छवि


, PlayStation. , JavaScript, C++, . , .. JavaScript, JavaScript . .


छवि


— JIT- JavaScript:
V8 — , Krom, , .. . V8 CrossCode.


JavaScriptCore — , , EA Webkit — , Electronic Arts. EA Webkit , - , GPL, Electronic Arts , , .


छवि


— Chakra — JIT- Microsoft. , . Chakra , .. Microsoft Edge Chromium, , . CrossCode , Chakra .


छवि


Chakra ( — ).
JIT- — , .
. — , NDA.


छवि


, , iOS. , JIT- iOS?
:


  • iOS . iOS (writable memory). iOS- Firefox Chrome Webkit , .

, , .


- “ ” JIT- JavaScript. , .. .


छवि


— .
, CrossCode — . : , , , .
, , Minecraft, Minecraft . .


छवि


. Ahead-of-Time (AOT) JavaScript. , .


— . “ ”.


छवि


:
CrossCode — ~1 GB json- . , . “” — , — . .


छवि


— . “” ~10 ( 3.4 ). , JavaScript (, , WebWorker API, CrossCode API ). , , 60 , , , : JIT-, , JavaScript- , V8 ( V8 , ).


, , .


छवि


— , AOT- , , . 30 , .


छवि


, , . , , . .


छवि


AOT- JavaScript ?


, JavaScript.
, . , , 60 . “” 16,6 , — , , . (, ), .


, , . , . .


छवि


, — , “” a, ( ).


छवि


JavaScript, ., , .


, , JavaScript ( Self) : , , , ..


छवि


. :
xx = b.x;, x — .


1 2 , 1 “-” (cache miss).


JavaScript - :


  • ,
  • , , . . .

, C- ( , C-).


छवि


— CrossCode , JavaScript-:


  • CrossCode.
  • CrossCode. .

— Nintendo Switch ( CrossCode — , - ., “Switch when?”)!


छवि


JavaScript AOT-:
Flow Facebook ( , , ).


TypeScript — , JavaScript.


छवि


“AOT JavaScript”, , AOT-. , ( ) — :


  • , . .

, 2 JS- ( , .. , , ..).


छवि


, AOT- PHP — , .


छवि


— :
, CrossCode . - , JavaScript C++. , , CrossCode :)


छवि


NectarJS — AOT- JavaScript ( ). . . , .. , JavaScript-, . , .


छवि


Haxe.
:


  • Haxe JavaScript. , , : Haxe ActionScript 3; ActionScript 3 — , ECMAScript 4; ECMAScript 4 — JavaScript
  • Haxe ( JavaScript, , ). . ,
  • Haxe C++ ( , ), “” ( , )
  • Haxe

— JavaScript- Haxe. , , , :


  • Haxe ,
  • Haxe , JavaScript .

छवि


Impact , : Impact ig.Class, ( Java :) ) — JavaScript ( JavaScript , , ).
, , , .. , ig.Class Haxe. CrossCode ! , JavaScript- Java.


छवि


, , Impact:


  • script-, src
  • DOM, .

, (.. — , , , ).


छवि


Haxe , JavaScript — JavaScript this , bind.
Haxe- ( JavaScript-) .


छवि


Haxe JavaScript , .


, Haxe JavaScript, , ( ). .


छवि


, Haxe JavaScript — . , JavaScript — 64- . Haxe JavaScript , Math.round/ceil/floor. Haxe ( ), Haxe — 32-. , , . , . , .. , , - ( , 32 ) . -.


, .. Haxe Math.fround/fceil/ffloor, .


छवि


: Haxe JavaScript , , JavaScript ( ECMAScript 2015) , , . Haxe . Haxe.


छवि


, , Haxe . , Haxe , , , , .


, . CrossCode hxcpp. Haxe- JavaScript, , , - . , , .


छवि


hxcpp (hxcpp — C++ Haxe) HL/C, - HashLink C-. , HL/C, , hxcpp- . hxcpp — CrossCode .


Deck13 IncrediBuild — , “” (, C++ ) , .


“” — point-and-click :) , , : , , .


छवि


Kha hxcpp, CrossCode:
-, Kha. Kha (audio mixer), Haxe. . , : hxcpp , , , . — “”.


, ( hxcpp), Kha .


छवि


-, hxcpp, .


Haxe 4, hxcpp -. hxcpp Kha — hxcpp, Kha.


छवि


-, , (generational garbage collector). - hxcpp , . hxcpp , “” , , 30 “”.
: - , , .
, Kha, generational garbage collector - . , — , :)


छवि


, :
Unknown.


:


  • 1, “”, Double ( , JavaScript , )
  • Boolean Array ( Array, , [], )
  • . , Impact, . , , . , , “” (map-like) . , “” , , ,

छवि


:


  • String
  • ,
  • Multiple. , , , , . Multiple , , , , ( Multiple, , ).
  • Nothing
  • Function “” (.. JavaScript )
  • Undecidable — “ ” (boss enemy) — . , — JSON ( , , ). Undecidable- Multiple-, , .

छवि


:
, “” , .
— “ ”. — . a.x, a ( a), x . x . , “” , . x “” . , Boolean Double Object, .. JavaScript . Double ObjectMultiple.


छवि


— (type clash), :


  • ,
  • .

a , , b. b , a “”.


छवि


“” (soft type clash), — JavaScript , , null undefined. Multiple.


छवि


, , — , .
Undecidable, .. .
Undecidable-.
Undecidable-, , Unknown- ( , ). Undecidable .
, , Undecidable-, . , , Undecidable-, JSON.


छवि


“ ”. ?
JavaScript- , , , (.. , ).
( , ). : , . , .
, .


छवि


, , Mutliple-: , , “” , Mutliple-.
, “”:


  • , x
  • var a = {};
  • “” , Multiple-
    x a (a[‘x’] = x;), “” . , Mutliple- (var xx = a[‘x’]; // xx Multiple)

छवि


  • , Mutliple-, () (xx.something(really_weird_object);)
  • (, , )
  • , , , . , , , .

, ( ) ( ). , , ( ).


छवि


, CrossCode eval — , JavaScript , . JavaScript, JavaScript-. JavaScript, eval.


छवि


, , , . , Multiple- . Multiple, “” “ ” (type hints), JavaScript- , . CrossCode — , Multiple, , , , .


छवि


, CrossCode — , V8 ( , V8).


छवि


, , :


  • , ,
  • ( CrossCode )
  • “” ( )

छवि


, Haxe:


  • ,
  • , JavaScript Haxe.

, , , Haxe - , ( — ).


छवि


CrossCode, “” JavaScript, Haxe ( , , , ).


छवि


JavaScript, , :


  • , ,
  • ECMAScript ( ). ,
  • , .

छवि


, JavaScript CrossCode ( ), JavaScript — , .


छवि


, JavaScript- “” Java- ( JavaScript Java, ), JavaScript- . AOT-.


छवि


और डेक 13 स्पॉटलाइट के बारे में थोड़ा, क्रॉसकोड के प्रकाशक:
यदि आप अपने जावास्क्रिप्ट कंपाइलर (या ऐसी चीजें) नहीं लिखना चाहते हैं, तो रॉबर्ट, कंपनी के एक कर्मचारी के रूप में, ऐसा कर सकते हैं :)


Deck13 स्पॉटलाइट छोटे इंडी गेम्स को प्रकाशित करने में लगी हुई है और उनके साथ काम करने के पक्ष में एक महत्वपूर्ण तर्क है कि डेकोर स्टूडियो के अनुभवी डेवलपर्स को आकर्षित करने का अवसर। इसलिए, प्रकाशक खेल के विकास और पोर्टिंग से संबंधित सभी मामलों में इंडी कंपनियों की मदद करने में सक्षम होगा।


ध्यान देने के लिए आपको धन्यवाद!


All Articles