Ich mache Sie auf eine Übersetzung des Berichts von Robert Conrad von den letzten HaxeUp Sessions 2019 Linz im vergangenen Oktober aufmerksam . In diesem Vortrag geht es darum , das ursprünglich in HTML5 geschriebene CrossCode- Spiel auf die Konsole zu portieren . Wenn Ihnen die Übersetzung gefällt, empfehle ich Ihnen, sie auch im Original auf Englisch anzusehen - Robert ist eine sehr fröhliche Person, er scherzt ständig und es ist interessant, ihm zuzuhören.

: 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 ( ):
- JavaScript, . Canvas WebAudio API. ,
- JIT- JavaScript (, V8), JavaScript
- , 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-:
— 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:
, (.. — , , , ).

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
Object
— Multiple
.

— (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).

, , :

, Haxe:
, , , Haxe - , ( — ).

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

JavaScript, , :

, JavaScript CrossCode ( ), JavaScript — , .

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

Und ein wenig zu Deck13 Spotlight - dem Herausgeber von CrossCode:
Wenn Sie Ihren JavaScript-Compiler nicht schreiben möchten (oder ähnliche Dinge tun möchten), kann Robert dies als Mitarbeiter des Unternehmens tun :)
Deck13 Spotlight veröffentlicht kleine Indie-Spiele und ein wichtiges Argument für die Zusammenarbeit ist die Möglichkeit, erfahrene Entwickler aus dem Deck13-Studio zu gewinnen. Daher kann der Publisher Indie-Unternehmen in allen Fragen im Zusammenhang mit der Entwicklung und Portierung von Spielen unterstützen.
Vielen Dank für Ihre Aufmerksamkeit!