OpenFL

Last updated
OpenFL
Developer(s) OpenFL Contributors
Initial release30 May 2013;11 years ago (2013-05-30) [1]
Stable release
9.3.4 [2]   OOjs UI icon edit-ltr-progressive.svg / 22 July 2024;2 months ago (22 July 2024)
Repository
Written in Haxe
Operating system Microsoft Windows, macOS, Linux [3] [1]
Platform Microsoft Windows, macOS, Linux, iOS, Android, Flash Player, HTML5 [3] [1]
Type Software framework
License MIT License [4]
Website www.openfl.org OOjs UI icon edit-ltr-progressive.svg

OpenFL is a free and open-source software framework and platform for the creation of multi-platform applications and video games. [5] [6] OpenFL applications can be written in Haxe, JavaScript (EcmaScript 5 or 6+), or TypeScript, [7] and may be published as standalone applications for several targets including iOS, Android, HTML5 (choice of Canvas, WebGL, SVG or DOM), Windows, macOS, Linux, WebAssembly, Flash, AIR, PlayStation 4, PlayStation 3, PlayStation Vita, Xbox One, Wii U, TiVo, Raspberry Pi, and Node.js. [8]

Contents

The most popular editors used for Haxe and OpenFL development [9] are:

OpenFL contains Haxe ports of major graphical libraries such as Away3D, [11] [12] [13] Starling, [14] [15] Babylon.js, [16] Adobe Flash and DragonBones. [17] [18] Due to the multi-platform nature of OpenFL, such libraries usually run on multiple platforms such as HTML5, Adobe AIR and Android/iOS.

More than 500 video games have been developed with OpenFL, [19] including the BAFTA-award-winning game Papers, Please , Rymdkapsel , Lightbot, Friday Night Funkin', and Madden NFL Mobile .

OpenFL was created by Joshua Granick and is actively administrated and maintained by software engineer, board member and co-owner, Chris Speciale. [20]

Technical details

OpenFL

OpenFL is designed to fully mirror the Flash API. [1] [6] SWF files created with Adobe Flash Professional or other authoring tools may be used in OpenFL programs. [6]

OpenFL supports rendering in OpenGL, Cairo, Canvas, SVG and even HTML5 DOM. In the browser, WebGL is the default renderer but if unavailable then canvas (CPU rendering) is used. [21] Certain features (shape.graphics or bitmapData.draw) will use CPU rendering, but the display list remains GPU accelerated as far as possible. [21]

Lime

OpenFL uses the Lime library for low-level rendering. Lime provides hardware-accelerated rendering of vector graphics on all supported platforms. [22] [21]

Lime is a library designed to provide a consistent "blank canvas" environment on all supported targets, including Flash Player, HTML5, Microsoft Windows, macOS, Linux, iOS, Android, consoles, set-top boxes and other systems. [21] Lime is a cross-platform graphics, sound, input and windowing library, which means OpenFL can focus on being a Flash API, and not handling all these specifics. Lime also includes command-line tools. [21]

Haxe

Haxe is a high-level cross-platform multi-paradigm programming language and compiler that can produce applications and source code, for many different computing platforms, from one code-base. [23] [24] [25] [26] It is free and open-source software, distributed under the GNU General Public License (GPL) 2.0, and the standard library under the MIT License.

Haxe includes a set of common functions that are supported across all platforms, such as numeric data types, text, arrays, binary and some common file formats. [24] [27] Haxe also includes platform-specific application programming interface (API) for Adobe Flash, C++, PHP and other languages. [24] [28]

Haxe originated with the idea of supporting client-side and server-side programming in one language, and simplifying the communication logic between them. [29] [30] [31] Code written in the Haxe language can be source-to-source compiled into ActionScript 3, JavaScript, Java, C++, C#, PHP, Python, Lua [32] and Node.js. [24] [27] [33] [34] Haxe can also directly compile SWF, HashLink and NekoVM bytecode.

Starling

The Haxe port of the Starling Framework runs on Stage3D and supports GPU-accelerated rendering of vector graphics. [21] It uses a custom Stage3D implementation, and does not require the OpenFL display list to work. [21] [35]

Related Research Articles

<span class="mw-page-title-main">Adobe Flash</span> Discontinued multimedia platform used to add animation and interactivity to websites

Adobe Flash is a discontinued multimedia software platform used for production of animations, rich internet applications, desktop applications, mobile apps, mobile games, and embedded web browser video players.

Adobe Flash Player is a discontinued computer program for viewing multimedia content, executing rich Internet applications, and streaming audio and video content created on the Adobe Flash platform. It can run from a web browser as a browser plug-in or independently on supported devices. Originally created by FutureWave under the name FutureSplash Player, it was renamed to Macromedia Flash Player after Macromedia acquired FutureWave in 1996. After Adobe acquired Macromedia in 2005, it was developed and distributed by Adobe as Adobe Flash Player. It is currently developed and distributed by Zhongcheng for users in China, and by Harman International for enterprise users outside of China, in collaboration with Adobe.

Haxe is a high-level cross-platform programming language and compiler that can produce applications and source code for many different computing platforms from one code-base. It is free and open-source software, released under an MIT License. The compiler, written in OCaml, is released under the GNU General Public License (GPL) version 2.

<span class="mw-page-title-main">Adobe AIR</span> Cross-platform runtime system for building rich web applications

Adobe AIR is a cross-platform runtime system currently developed by Harman International, in collaboration with Adobe Inc., for building desktop applications and mobile applications, programmed using Adobe Animate, ActionScript, and optionally Apache Flex. It was originally released in 2008. The runtime supports installable applications on Windows, macOS, and mobile operating systems, including Android, iOS, and BlackBerry Tablet OS.

Web3D, also called 3D Web, is a group of technologies to display and navigate websites using 3D computer graphics.

This is a comparison of web frameworks for front-end web development that are heavily reliant on JavaScript code for their behavior.

Apache Cordova is a mobile application development framework created by Nitobi. Adobe Systems purchased Nitobi in 2011, rebranded it as PhoneGap, and later released an open-source version of the software called Apache Cordova. Apache Cordova enables software programmers to build hybrid web applications for mobile devices using CSS3, HTML5, and JavaScript, instead of relying on platform-specific APIs like those in Android, iOS, or Windows Phone. It enables the wrapping up of CSS, HTML, and JavaScript code depending on the platform of the device. It extends the features of HTML and JavaScript to work with the device. The resulting applications are hybrid, meaning that they are neither truly native mobile application nor purely Web-based. They are not native because all layout rendering is done via Web views instead of the platform's native UI framework. They are not Web apps because they are packaged as apps for distribution and have access to native device APIs. Mixing native and hybrid code snippets has been possible since version 1.9.

<span class="mw-page-title-main">WebGL</span> JavaScript bindings for OpenGL in web browsers

WebGL is a JavaScript API for rendering interactive 2D and 3D graphics within any compatible web browser without the use of plug-ins. WebGL is fully integrated with other web standards, allowing GPU-accelerated usage of physics, image processing, and effects in the HTML canvas. WebGL elements can be mixed with other HTML elements and composited with other parts of the page or page background.

<span class="mw-page-title-main">Away3D</span>

Away3D is an open-source platform for developing interactive 3D graphics for video games and applications, in Adobe Flash or HTML5. The platform consists of a 3D world editor, a 3D graphics engine, a 3D physics engine and a compressed 3D model file format (AWD).

Modern HTML5 has feature-parity with the now-obsolete Adobe Flash. Both include features for playing audio and video within web pages. Flash was specifically built to integrate vector graphics and light games in a web page, features that HTML5 also supports.

<span class="mw-page-title-main">Adobe Wallaby</span> Digital file converter application

Adobe Wallaby is an application that turns FLA files into HTML5. On March 8, 2011, Adobe Systems released the first version of an experimental Flash to HTML5 converter, code named Wallaby. It has been quickly superseded by various other Adobe tools.

In software development, a polyfill is code that implements a new standard feature of a deployment environment within an old version of that environment that does not natively support the feature. Most often, it refers to JavaScript code that implements an HTML5 or CSS web standard, either an established standard on older browsers, or a proposed standard on existing browsers. Polyfills are also used in PHP and Python.

<span class="mw-page-title-main">Three.js</span> JavaScript library for 3D graphics

Three.js is a cross-browser JavaScript library and application programming interface (API) used to create and display animated 3D computer graphics in a web browser using WebGL. The source code is hosted in a repository on GitHub.

<span class="mw-page-title-main">Starling Framework</span> Open-source game framework

Starling is an open source game framework used to create 2D games that run both on mobile and desktop platforms. It recreates the traditional Flash display list architecture on top of accelerated graphics hardware. Several commercial games have been built with Starling, including Angry Birds Friends and Incredipede.

<span class="mw-page-title-main">Flare3D</span>

Flare3D is a framework for developing interactive three-dimensional (3D) graphics within Adobe Flash Player, Adobe Substance and Adobe AIR, written in ActionScript 3. Flare3D includes a 3D object editor and a 3D graphics engine for rendering 3D graphics. Flare3D runs on current web browsers utilizing the Adobe Flash Player, and uses Stage3D for GPU-accelerated rendering. Flare3D has not been under active development since late 2014.

CrossBridge is an open-source toolset developed by Adobe Systems, that cross-compiles C and C++ code to run in Adobe Flash Player or Adobe AIR. Projects compiled with CrossBridge run up to 10 times faster than ActionScript 3 projects. CrossBridge was also known as "Alchemy" and the "Flash Runtime C++ Compiler", or "FlasCC".

Papervision3D is an open-source, 3D graphics engine for rendering 3D content within Adobe Flash Player and Adobe AIR.

Stage3D is an Adobe Flash Player API for rendering interactive 3D graphics with GPU-acceleration, within Flash games and applications. Flash Player or AIR applications written in ActionScript 3 may use Stage3D to render 3D graphics, and such applications run natively on Windows, Mac OS X, Linux, Apple iOS and Google Android. Stage3D is similar in purpose and design to WebGL.

LayaBox, also named Laya, is a Chinese-developed freeware framework which includes a web-based game engine named LayaAir which targets mobile and web platforms, as well as online publishing and digital distribution services. First announced on the Global Mobile Game Confederation in March 2015, it offers a feature set for developing multi-platform games.

References

  1. 1 2 3 4 "Introducing OpenFL". Joshua Granick Blog. 30 May 2013. Archived from the original on 2014-10-02.
  2. "Release 9.3.4". 22 July 2024. Retrieved 23 July 2024.
  3. 1 2 "openfl.org". Archived from the original on 2014-10-26.
  4. "LICENSE.md". Github. Archived from the original on 2017-03-30.
  5. "README.md". Github. Archived from the original on 2015-08-13.
  6. 1 2 3 Doucet, Lars (2014-03-18). "Flash is dead, long live OpenFL!". Gamasutra . Archived from the original on 2015-08-30.
  7. "OpenFL ReadMe". Github. Archived from the original on 2018-04-27.
  8. "OpenFL ReadMe". Github. Archived from the original on 2018-04-27.
  9. "openfl/openfl". GitHub. Archived from the original on 27 April 2018. Retrieved 27 April 2018.
  10. Haxe Support Archived 2015-07-06 at the Wayback Machine , FlashDevelop Wiki
  11. "Home > Away3D". away3d.com. Archived from the original on 19 November 2010. Retrieved 27 April 2018.
  12. Away Foundation roadmap 2014 Archived 2016-03-06 at the Wayback Machine , Away3D Foundation
  13. away3d 1.2.0 Archived 2016-03-06 at the Wayback Machine , Ported to OpenFL 2.x/Haxe, Haxelib
  14. Starling Framework Archived 2018-01-02 at the Wayback Machine , Gamua
  15. openfl/starling Archived 2017-03-30 at the Wayback Machine , The "Cross-Platform Game Engine", a popular Stage3D framework
  16. BabylonJS Archived 2018-01-01 at the Wayback Machine , 3D engine based on WebGL/Web Audio and JavaScript
  17. DragonBones Archived 2017-12-30 at the Wayback Machine , Character Rigging Platform
  18. openfl/dragonbones Archived 2018-04-27 at the Wayback Machine , Runtime support for DragonBones skeletal animation
  19. "Showcase". www.openfl.org. Archived from the original on 26 December 2017. Retrieved 27 April 2018.
  20. "Administrative Organization Changes". OpenFL Community. 2022-04-26. Retrieved 2022-11-17.
  21. 1 2 3 4 5 6 7 Getting started with Haxe and Starling Archived 2017-12-27 at the Wayback Machine , OpenFL Community, Dec 2017
  22. Benefits of using starling over openfl? Archived 2017-12-27 at the Wayback Machine , OpenFL Community
  23. "Nicolas' announcement of spelling change on Haxe official mail list".
  24. 1 2 3 4 Ponticelli, Franco (2008-02-11). Professional haXe and Neko. Wiley. ISBN   978-0470122136.
  25. Ivanov, Michael (2011-05-24). Away3D 3.6 Cookbook. Packt Publishing Ltd. ISBN   978-1849512817.
  26. Doucet, Lars (2015-06-03). "Haxe/OpenFL for home game consoles". Gamasutra. Archived from the original on 2015-09-08.
  27. 1 2 Introduction to the Haxe Standard Library Archived 2015-08-14 at the Wayback Machine , Haxe Docs
  28. Target Specific APIs, Introduction to the Haxe Standard Library Archived 2015-08-14 at the Wayback Machine , Haxe Docs
  29. "Haxe Interview". Io Programmo. 2009-04-01: 1–6. Archived from the original on 2015-12-08.{{cite journal}}: Cite journal requires |journal= (help)
  30. Grden, John; Mineault, Patrick; Balkan, Aral; Hughes, Marc; Arnold, Wade (2008-07-16). The Essential Guide to Open Source Flash Development. Apress. p. Chapter 9 (Using Haxe). ISBN   978-1430209942.
  31. Fisher, Matt (2013-01-01). HTML5 for Flash Developers. Packt Publishing Ltd. ISBN   978-1849693332.
  32. "Hello Lua! - Haxe". Archived from the original on 2016-08-06. Retrieved 2016-07-09.
  33. "hxnodejs (4.0.9)". Archived from the original on 2016-06-18. Retrieved 2016-07-09.
  34. Haxe, iPhone & C++ At Last Archived 2012-04-15 at the Wayback Machine , GameHaxe website
  35. Starling for OpenFL Archived 2017-03-30 at the Wayback Machine , "The "Cross-Platform Game Engine", Github

See also