Forge of Empires d'AS3 Ă  Haxe. Post mortem

Dans les commentaires sur la traduction du rapport de HaxeUp Sessions 2020 Hamburg - The Winter Haxe Status Report - une question a été posée sur la raison pour laquelle Haxe est nécessaire. Bien sûr, ils lui ont répondu au même endroit, dans les commentaires. La traduction proposée d'un autre rapport du passé HaxeUp devrait, à mon avis, être un argument supplémentaire pour défendre Haxe, comme ce reportage concerne un jeu qui a rapporté plus de 500 millions d'euros.


L'auteur du rapport, Nenad, est l'un des programmeurs InnoGames qui a travaillé sur la conversion de Forge of Empires d'ActionScript en Haxe. Il y a 2 ans à Amsterdam, InnoGames a parlé de leur travail dans ce sens. Aujourd'hui, nous pouvons dire qu'ils l'ont fait entièrement - maintenant les deux versions du client Web (Flash et html5) sont assemblées à partir d'une base de code unique sur Haxe. Et ce rapport est essentiellement une revue du travail accompli et des décisions prises, à la fois réussies et pas très bonnes.


image


Commençons par l'introduction - qui sont InnoGames?


InnoGames — (. ) 400 . , , ( ). (lifetime revenue) 1 . .


image


Forge of Empires — :


  • InnoGames ( )
  • : , ( ). PvE, PvP .
  • 500 .
  • , 2012
  • Android iOS.

image


, Forge of Empires , InnoGames Flash. , html5- , Flash-.


, , , html5-:


image


1. , InnoGames — , , tween-, .


image


, (, CreateJS Flash API ActionScript- JavaScript). Egret OpenFL — . Egret , . Egret — , "", . , .
Haxe OpenFL — , .. . , OpenFL .


image


2. :
:


  • . ActionScript- , ActionScript- . , "" ActionScript-, ,
  • ,
  • html5- flash-. ( QA), . , . flash-, html5- .

:


  • , .
  • ,
  • ,

image


2018 html5-, . .


html5- -.


, .


A/B , html5-, — flash-. 2018 html5- -. html5- 85-86% .


image


3. :


  • - -. Egret, .. . , : Forge of Empires , ActionScript Haxe, InnoGames . , InnoGames ActionScript->Haxe. InnoGames , , , ( InnoGames Haxe).
  • .. , InnoGames
  • Haxe OpenFL
  • Haxe .

image


4. , mocked-, .


image


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


"" (, ). Haxe- :


  • mocked- Haxe
  • mocked-
  • .

( ) .


image


5. — , ActionScript- , "" :


  • ( , ..)
  • ( Haxe-)
  • Haxe-

.. — , ActionScript-.


image


6. , , , — . .


flash- - swf, ATF-. , html5-. : html5-, flash- .


: swf- , OpenFL .


image


7. ( ) — , . Pull Request Flash JavaScript.


, UI-.


html5- Flash-.


image


8. (dependency injection) Robotlegs, swiftsuspenders. swiftsuspenders . Haxe- @:rtti — xml-, . .. , html5- ( xml- ). , : @:rtti ITypeDescriptionAware — , , , , ( ). , .


image


9. Canvas- , .. , Microsoft Edge — ( ).


image


10. ? , - .
InnoGames OpenFL , , WebGL, drawcall.


image


11. OpenFL . SubBitmapData — , ( — !). , , drawcall.


image


12. ? , !
html5- . — , drawcall ( , drawcall’, ; gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS)). drawcall’. .


image


13. ? — !
- html5- 60 , Internet Explorer — webgl-, . , , Internet Explorer 10% , "" !


Internet Explorer Flash- .


image


, InnoGames Haxe, .. Flash- ActionScript-, html5- — Haxe-, . html5-, OpenFL html5.


, InnoGames (. . 4), , , , ActionScript. Haxe . , "" .
.


Haxe-, Flash, JavaScript. , Haxe- .


, — .


image


: OpenFL html5-, Flash- , .


HaxeUp.


image


14. ( ) — Haxe, 2 . , ( Haxe- , IDE), :


  • -, . , . , , src ActionScript-, Haxe- . , "" CI, IDE, . " " (ActionScript- ), , , , " ", Haxe git, ActionScript-
  • -, . Haxe , ActionScript-. Haxe ActionScript- Ant-. .

, :


image


1. (workflow) — 2 : . , — . , mocked-, .


ActionScript Haxe, ( ).


image


2. — . Haxe- :


  • master- ""
  • conversion- Haxe-
  • develop- -.

merge-, - ActionScript develop- Haxe-. , "". .


image


3. — html5- , . , Internet Explorer Flash-, , Haxe .


Par conséquent, si l'équipe devait relancer le développement du convertisseur, ce serait le plus multiplateforme possible.


image


Mais maintenant, les deux versions du client du navigateur Forge of Empires utilisent le code Haxe. Merci pour l'attention!


All Articles