OpenFL is a
free and open-source
Free and open-source software (FOSS) is a term used to refer to groups of software consisting of both free software and open-source software where anyone is freely licensed to use, copy, study, and change the software in any way, and the source ...
software framework
In computer programming, a software framework is an abstraction in which software, providing generic functionality, can be selectively changed by additional user-written code, thus providing application-specific software. It provides a standard ...
and platform for the creation of multi-platform
application
Application may refer to:
Mathematics and computing
* Application software, computer software designed to help the user to perform specific tasks
** Application layer, an abstraction layer that specifies protocols and interface methods used in a c ...
s and
video games.
OpenFL applications can be written in
Haxe,
JavaScript (
EcmaScript 5 or 6+), or
TypeScript,
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.
The most popular editors used for Haxe and OpenFL development are:
* Visual Studio Code (with plugin)
* HaxeDevelop (supports
code folding,
code refactoring and
interactive debugging)
* Sublime Text (with plugin)
* IntelliJ IDEA (with plugin)
OpenFL contains Haxe ports of major graphical libraries such as
Away3D,
Starling,
Babylon.js, Adobe Flash and DragonBones. 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, 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.
Technical details
OpenFL
OpenFL is designed to fully mirror the Flash API.
SWF
SWF ( ) is an Adobe Flash file format used for multimedia, vector graphics and ActionScript.[Open Screen Pr ...](_blank)
files created with
Adobe Flash Professional or other authoring tools may be used in OpenFL programs.
OpenFL supports rendering in
OpenGL
OpenGL (Open Graphics Library) is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve hardwa ...
,
Cairo,
Canvas
Canvas is an extremely durable plain-woven fabric used for making sails, tents, marquees, backpacks, shelters, as a support for oil painting and for other items for which sturdiness is required, as well as in such fashion objects as handbags ...
,
SVG and even
HTML5 DOM. In the browser, OpenGL is the default renderer but if unavailable then canvas (CPU rendering) is used.
Certain features (
shape.graphics
or
bitmapData.draw
) will use CPU rendering, but the display list remains
GPU accelerated as far as possible.
Lime
OpenFL uses the Lime library for low-level rendering. Lime provides
hardware-accelerated rendering of
vector graphics on all supported platforms.
[Getting started with Haxe and Starling](_blank)
, OpenFL Community, Dec 2017
Lime is a library designed to provide a consistent "blank canvas" environment on all supported targets, including
Flash Player,
HTML5,
Microsoft Windows
Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for serv ...
,
macOS,
Linux,
iOS,
Android
Android may refer to:
Science and technology
* Android (robot), a humanoid robot or synthetic organism designed to imitate a human
* Android (operating system), Google's mobile operating system
** Bugdroid, a Google mascot sometimes referred to ...
, consoles, set-top boxes and other systems.
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.
Haxe
Haxe is a high-level
cross-platform multi-paradigm
Programming paradigms are a way to classify programming languages based on their features. Languages can be classified into multiple paradigms.
Some paradigms are concerned mainly with implications for the execution model of the language, suc ...
programming language and
compiler that can produce applications and source code, for many different
computing platform
A computing platform or digital platform is an environment in which a piece of software is executed. It may be the hardware or the operating system (OS), even a web browser and associated application programming interfaces, or other underlying s ...
s, from one code-base.
It is
free and open-source software
Free and open-source software (FOSS) is a term used to refer to groups of software consisting of both free software and open-source software where anyone is freely licensed to use, copy, study, and change the software in any way, and the source ...
, 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 format
A file format is a standard way that information is encoded for storage in a computer file. It specifies how bits are used to encode information in a digital storage medium. File formats may be either proprietary or free.
Some file formats ...
s.
[Introduction to the Haxe Standard Library](_blank)
, Haxe Docs Haxe also includes platform-specific
application programming interface
An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how t ...
(API) for
Adobe Flash, C++, PHP and other languages.
Haxe originated with the idea of supporting
client-side and
server-side programming in one language, and simplifying the communication logic between them.
Code written in the Haxe language can be
source-to-source compiled into
ActionScript 3,
JavaScript,
Java,
C++,
C#,
PHP,
Python,
Lua
Lua or LUA may refer to:
Science and technology
* Lua (programming language)
* Latvia University of Agriculture
* Last universal ancestor, in evolution
Ethnicity and language
* Lua people, of Laos
* Lawa people, of Thailand sometimes referred t ...
and
Node.js.
[Haxe, iPhone & C++ At Last](_blank)
, GameHaxe website Haxe can also directly compile
SWF
SWF ( ) is an Adobe Flash file format used for multimedia, vector graphics and ActionScript.[Open Screen Pr ...](_blank)
, HashLink and
NekoVM bytecode
Bytecode (also called portable code or p-code) is a form of instruction set designed for efficient execution by a software interpreter. Unlike human-readable source code, bytecodes are compact numeric codes, constants, and references (norma ...
.
Starling
The Haxe port of the
Starling Framework runs on
Stage3D and supports GPU-accelerated rendering of vector graphics.
It uses a custom Stage3D implementation, and does not require the OpenFL display list to work.
Starling for OpenFL
, "The "Cross-Platform Game Engine", Github
References
See also
* Haxe
* Adobe AIR
{{Video game engines
Free software
Software licenses
Software using the MIT license
Software frameworks