OpenFL!
This is the technology that was used for Papers, Please.
It lets you keep the flash workflow and export to the following targets:
AND you can use Flash SWF animation assets and a language (haxe) that is extremely close to Actionscript.
OpenFL is the best candidate for replacing Flash.
It lets you keep the flash workflow but you can export to way more targets:
Even better you can still use Flash SWF animation assets and a language (haxe) that is extremely close to Actionscript.
OpenFL is our best hope for a flash replacement, because it lets developers carry their knowledge over to a similar programming environment without relying on the flash player. Unless flash devs have a reasonable place to go, we'll see the flash player sticking around for a long time.
It lets people create the same sorts of things they could in flash (including vector SWF animations, and you can even use the Flash CC editor for setting up your visuals), and it supports the following export targets:
I think OpenFL is a great way to make that transition happen.
(Haxe-based reimplementation of the flash API. From one codebase, in a language quite similar to AS3, you can export to Flash, C++ (mac/win/linux/iOS/Android), HTML5 (webGL/canvas/DOM), and soon home game consoles.)
And you can even still use SWF assets and the old Flash CC workflow!
Papers, Please does indeed use OpenFL, which is a Haxe framework with an Android target. You'd have to ask the developer as to why he hasn't published an Android version though. :)
Something to note though: it's not like having the ability to compile to Android is enough, you probably also have to write code to support the various resolutions, handle touch input etc etc...
To elaborate a bit on what /u/lordkryss said... OpenFL is just a port of the Flash API ported to Haxe. HaxeFlixel was built using OpenFL to bring the Flixel game framework to Haxe. I'm assuming you want to make a 2D game of some kind using Haxe, based on that...
If you are a Flash developer that is comfortable using the Flash API, and you want to use an existing framework to provide useful features to your game, go to http://haxeflixel.com/ and get started there (don't worry about flixel.org, unless you want to use the original Flixel framework, which is written in ActionScript 3 for Flash.)
If you are experienced in developing for Flash, but don't want to use a game framework and plan on coding all of the features of your game engine yourself, then OpenFL would be a useful tool that would allow you to get to work quickly in an environment you are already accustomed to (the Flash API). You can get more info here: http://www.openfl.org/
To help clear up any remaining confusion you might have, I highly recommend reading this short article that lays out what OpenFL is all about and why Flash developers are excited about it: http://www.gamasutra.com/blogs/LarsDoucet/20140318/213407/Flash_is_dead_long_live_OpenFL.php
Finally, if you do not have any experience with Flash, then it's kind of up to you... You can look into using a game framework or components that are purely written from the ground up in Haxe, or you could learn the Flash API through OpenFL and HaxeFlixel.
I've been doing a lot of looking into Haxe, OpenFL, and HaxeFlixel as of late, so let me know if you have any other questions!
I'd check out OpenFL. For 2D I'd recommend it it moreso even. I recently relased a game with with it for Android, iOS, and PC and Mac for Steam in a few days. Even had a swf file lite version online. There's plenty of open source frameworks for it like HaxeFlixel, a more complete game framework, box2d... I recently used one called Steamwrap by the Papers Please dev to add steam achievements.
Very good crossplatform capabilities (compiles to native C++ code for performance), great community, and written in Haxe which is very similar to Actionscript or javascript too in some ways.
I just tried HaxeFlixel for the first time today. I'm pleasantly surprised that it was really easy get started on Linux. The installer script (installer-haxe.sh) provided on the OpenFL website ran perfectly and downloaded all the dependencies.
Soda Dungeon was created with OpenFL (http://www.openfl.org/) which is more of a framework than an engine. I'm looking at switching to Unity for future projects though. I'm not sure if I can fully recommend OpenFL to a newcomer or not :/
This seems like the best way to transition from the Flash Player, long-term:
It's an open source re-implementation of the Flash API using the Haxe programming language (itself similar, but superior to, Actionscript), that lets developers still target flash, but also HTML5, and native desktop/mobile. That way there's legacy support for flash in the short-term, and the ability to target new platforms for the long term. Haxe is a cross-compiler, so the HTML5 target is JS code (properly minified with dead-code-elimination) and the Desktop/Mobile are native (C++ mixed with the mobile native SDK's), so not VM-based like AIR or C#.
It's even compatible with the Flash authoring tool, so developers can keep the old workflow: https://www.youtube.com/watch?v=BhE07Y9TUJU
The real key to transitioning from the Flash player is to get developers to switch over, and this seems like the best bet.
As for alternative Flash PLAYERS, there's shumway and things like that, which is a bit of a help but mostly a band-aid as I don't see them ever having full compatibility. Got to get the content moved over.
I'm working on a large game coded in Haxe. What do you want to know?
As for Papers, Please, you're correct, he used Haxe, and specifically the OpenFL library.
To my knowledge Lucas was developing PP back when OpenFL had yet to fork away from its predecessor NME, so I'm not entirely sure what the Assets pipeline was back then.
Nowadays, OpenFL packages up your Assets in a pretty convenient way so that you can easily use them cross-platform from say, Flash, C++, etc. The latest build process is incremental so your assets only get repackaged when changes are made.
They recently even added an ability to let you update your asset manifest while your game is running. I use this to tweak my UI markup data in Notepad++, then alt-tab to a command line, update the manifest, alt-tab back and hit a key in my state to refresh it and see the changes. Much more convenient then recompiling my app every time I want to see data changes. This "live reloading" feature is pretty recent, and the lack of it when PP was first being developed might be what Lucas was driving at.
EDIT: OP -- that is a seriously sweet game, my favorite from LD this year so far.
OpenFL is great! I'm currently developing a puzzle game for android platform and it's dead easy, especially if you used to flash and actionscript.
Although, I wouldn't recommend using HaxeFlixel or HaxePunk for mobile development (tried both and it was nothing but waste of time, with fps drops and crashes), they still work great on desktop.
What I really dislike about OpenFL is complete lack of api documentation. Really, it's either use this old version, or read code directly. Not as pleasant as it could be.
I think you're looking for OpenFL. It compiles to all those targets and mimics the Flash API (so those tutorials that looked like they were for Flash would all work with OpenFL).
I believe it's possible to bundle everything together into a single .exe file, but I've never done this myself, so you'll have to search the forums. Failing that, the non-bundled versions are still portable: just zip up the folder, transfer, and unzip.
If you hate the Flash API, you can use Lime (the layer under OpenFL) or Kha, a totally separate library. I'm not very familiar with Kha, but it seems to have very similar features.
Have you considered OpenFL? The syntax is very similar to ActionScript (I ported an old little flash game of mine to Haxe in about a day of work), and you can build for desktop and mobile targets in addition to web.
Haxeflixel is a 2D game engine that boasts many features, however, it's mainly what I would call a "framework". There is no engine per se; the rendering part is handled by the different platforms haxeflixel compiles to through OpenFL. Haxeflixel also does not make use of an integrated visual editor or IDE; You could use Flash for that effect, but Flash is an open-ended IDE that is not focused on games making, and doesn't integrate specially well with external libraries, so it did not make it on this list.
So where does Node come into your equation? Genuinely curious.
OpenFL is for Haxe and extremely cross-platform, including consoles. Can be used with TypeScript and JavaScript as well, but I don't think the JavaScript usage is meant to compile for desktop.
While you can use things like Electron / NW.js - I mean, how important is JavaScript for you for your desktop games? Business / monetization models for browser games often differ from desktop games, too. Or don't they.
> It was originally a flash game
+
> JavaScript for browsers
Traditionally used with Haxe, but starting with version 7 also usable with TypeScript, ES6 JavaScript and ES5 JavaScript.
> OpenFL uses the familiar Flash API, but goes everywhere that Flash Player cannot. Use a familiar workflow to accelerate development, and even leverage Adobe Animate as an integrated art pipeline.
Doesn't this sound perfect for your needs and your background?
(Adobe Animate is purely optional, don't get fooled by above quote).
I'm using haxe language and openfl framework. http://www.openfl.org/ I'm not sure if openfl can be called "game engine", since it's basically a big collection of classes that help you get started with game making but it's really fun to use (at least for me :) )
I'm also learning Unity3D and C#. Unity is probably one of the most popular game engines right now.
This should have everything you need to get started, and I believe that the installer here should work as well. I'm currently running Arch and using Sublime for my development, and I have had no problems with doing so. There are a couple Haxe packages for highlighting etc., but you're likely going to have to do your building from the command line. The great thing about OpenFL is that you can just look up AS3 tutorials/references and in 99% of the cases it will translate directly.
Good luck!
I'd figure most flash game designers are moving to mobile anyway.
That said Html5 works just fine for web games, even more so because browser updates let you add more features over time and you can design different experiences for smaller screens. They could also use something like OpenFL to get the flash api on every platform.
http://www.openfl.org/showcase/
You don't really need flash, flash is just a really common way to do web games. People are building Html5 tools now. For instance
https://www.scirra.com/ makes a game maker that can let you make games in html5.
Also Firefox is actually building it's own flash plugin in javascript.
https://github.com/mozilla/shumway
My point being is just because people do something one way now doesn't mean that it won't change in the future. Firefox is future proofing.
Sorry dude, there's a lot of good 2D engine/platforms out there, particularly from the Flash Family:
For 2D cross-platform you can go OpenFL (FOSS) which cross-compiles to a bunch of platforms (Papers Please, etc) or Adobe Flash Pro (proprietary)/Apache Flex (FOSS)(Machinarium, McPixel, Super Hexagon) which compiles to AIR which cross-compiles to Win/Mac/iOS/Android native.
"Next" is OpenFL 2.1, but AFAIK there have been huge improvements under the hood (in Lime and C++ code). I don't fully understand the architecture of OpenFL, but from what I've read this new version will also make it easier for people to contribute to the Haxe APi in OpenFL.
Since version 7 (currently 8.xx is the latest) you can use JavaScript (ES5/ES6) and TypeScript with OpenFL (alongside Haxe):
I think it's capable of producing small file sizes on the HTML5 platform, but I only read about that, I haven't used it myself for at least a year.
A few recent OpenFL conference videos:
Haxe can cross-compile to quite a few different languages, including C++. I've used Haxe with OpenFL for making games and cross-compile them into native Windows, OSX, Linux, iOS and Android programs.
Haxe can interface with native codes by writing some interfaces/externs so you can use native codes within Haxe. Usually you'd do it this way instead of editing the cross-compiled output, which may not always be human-readable.
The Haxe compiler can also do a number of optimizations like DCE, inlining, and you can write macros too.
Well no. I'm using a framework called openFL that let's me build my programs akin to ActionScript 3, as the original LR builds were done in flash, so it made porting over easier. The framework has a graphics API with basic drawing functions, such as drawLine, beginFill, drawRectangle, etc. While this isn't as easy to optimize as a direct openGL usage (which I could do if in Haxe I knew how), this does make it easier for me to just get simple graphics working. So when my program calls to render a new line, rather than creating a new object for that individual line and drawing on that, I find the chunk layers it'll be cached under, and call the drawLine functions on the layers. The major downside to this is I can't isolate individual lines with anything graphical related, so when the user erases a line, it has to clear each layer, then redraw each line minus the one that was just removed.
The whole project is open sourced, if you want to check it out here, and this class is where line drawing gets handled.
Performance is great, Lua is probably the fastest dynamic language out there because of LuaJIT.
I will list some few downsides:
It's not exactly beginner friendly. I mean, It doesn't have a UI to help you like Unity does, instead it gives you the basic stuff you need to build your game. I don't think this is a bad thing at all, but I know this may be a turnoff for some people.
HTML5 support. Is not exactly a thing... I've seen a effort from the community to solve this problem, including some interesting projects like love.js, but I wouldn't say its quite there yet.
If you don't care for any of this you will probably have a good time with love2d. I'd also recommend you to have a look into openfl, it's a pretty neat engine and even the latest official Power Ranger game is running on it!
I've not made any significantly large game with Haxe, so take this with a grain of salt, but I would say yes, it can be better than this.
Not sure why exactly Evoland has issues on Linux, not knowing how it was made (besides being written in Haxe), but it seems to me like OpenFL, a huge Haxe library for creating games (and really any kind of multimedia project) seems to support Linux better. "Papers, Please" was made with OpenFL, so that's probably a good indicator of what kind of Linux support you can get using Haxe and OpenFL.
From the documentation:
> We need both an .mp3
and an .ogg
version of our music - Flash is only compatible with .mp3
files, however, it is the only platform that can use them on (you can read more the reasons why here) - besides, .ogg
is generally a better format to use. You can find free tools on the internet, such as Audacity to convert your audio file formats if you're not sure how to do that.
>
> Once you have both versions of your music stored in assets/music, replace your assets tag with:
>
> <assets path="assets/data" include="*.oel" />
>
> <assets path="assets/images" include="*.png" />
>
> <assets path="assets/sounds" include="*.wav" />
>
> <assets path="assets/music" include="*.mp3" if="flash" />
>
> <assets path="assets/music" include="*.ogg" unless="flash" />
>
> This will simply load the assets from each of our specified folders, grabbing only the files that match the wildcards we've specified. For the music, we load .mp3
files if we're building for Flash, and .ogg
if we're building for anything else.
>
> [...]
>
> Now that we have different versions of our music, we need to make sure we play the right version. In Main.hx, replace the line where we start playing our music with:
>
> #if flash
>
> FlxG.sound.playMusic(AssetPaths.HaxeFlixel_Tutorial_Game__mp3, 1, true);
>
> #else
>
> FlxG.sound.playMusic(AssetPaths.HaxeFlixel_Tutorial_Game__ogg, 1, true);
>
> #end
It's definitely doable. You'll come across problems like that fairly often if you try and do everything from scratch.
Reinventing the wheel sometimes isn't the best course of action. If you're interested in developing games using already established libraries and tools, I would suggest OpenFL or Luxe. There are a lot of examples and guides available for those libraries (especially OpenFL) so finding help when you're stuck will be easy.
Glad to hear at least one of the article helped you! :D
Anyway, I suppose you're talking about this issue?: (http://www.openfl.org/archive/community/bugs/slowdown-when-moving-mouse-cursor/?ccm_paging_p=2)
Yes, I have the same issue. My only guess is that this is a OSX-specific issue. I tried opening my sample HaxeFlixel project's SWF file and it lags when I move my mouse, BUT it seems to work smoothly if I drag the SWF file into my browser to play.
Just a reminder, Haxe's first big success story was Papers, Please.
Keep in mind if you're trying to develop a multiplatform app, Haxe alone is not enough to do it. You will still need to write platform-specific code for each target platform. However, when used together with the OpenFL library, you CAN target all platforms from a single code base.
The showcase should give you a good idea of what kind of multiplatform apps Haxe is good for.
I love the idea of using it as a better Typescript, too.
Great analysis. Also if anyone else is using AS3 via Flex like myself and wants to work with a better supported platform I'd check out Haxe:
http://www.openfl.org/documentation/setup/install-haxe/
There's even a really good port of the AS3 Flixel framework: http://haxeflixel.com/
I'll be using these for future projects
There are plenty of tools for writing html5 apps in other languages ~~that don't suck~~ and compiling it into yavascript. Off the top of my head, there's OpenFL for Haxe, Pyjs for python, and asm.js, which allows for compilation of native code programs. HTML development no longer requires forgoing of such luxuries as predictable typing, real OOP, and scoping that isn't totally batshit insane.
Installing haxe and openfl shouldn't be any problem if you follow their guide. Just do everything under "Automatic Install" section.
FlashDevelop should support haxe out of the box, so you only need to create new openfl project and you're set.
Wait, I'm talking about the Flash Player in browsers, not about the Animate CC product. Are you talking about the Adobe Animate, formerly known as Flash?
If Adobe Animate is what they want to use, I won't stop them. But if they're trying to release their games as Flash games for browsers, they're having a hard time in 2018 and beyond. You can't deny that, or can you.
AS3: Oh well, it's just a language like so many others. But I'd recommend Haxe for more fun (originally derived from AS2/As3). Macros and stuff. I don't think AS3 has macros or does it?
I think you can attach OpenFL to Adobe Animate products somehow. OpenFL is a popular and very well maintained game dev framework for Haxe - and can also be targetted with JavaScript and TypeScript since version 7. It was invented as 'Open Flash Library' in the beginning but has evolved a lot since then.
To conclude: I'm not spilling hate on Flash / Adobe Animate and the language AS3, I just think it probably isn't a good idea to focus on the Flash browser plug-in as a target.
Haxe and OpenFL can still target the Flash plug-in for browsers if need be, but at the same time offer about any platform you can imagine (HTML5, desktop, consoles, mobile). Adobe Animate can target a lot of platforms, too, today, but Haxe has a huge upside: The price tag.
Haxe is fairly similar to Java. It has the same programming model (object-oriented) but it's lighter-weight than Java and has some pretty good game libraries (for example, OpenFL) and frameworks with decent documentation. If you want to challenge yourself but still stay within the same model as Java so you don't get overwhelmed, Haxe might be good for the job.
I suggest having a look at
and the underlying
They've been successfully used in several gamejams in the past.
If you like flash check out: http://www.openfl.org/ Write ActionScript and cross compile to everything in native code.
The streak is keeping me going I'm sure, but I'd do it anyway now. It's part of my daily life.
Currently you are using javascript/html for desktop and mobile. For me that is not the best example of the multi-platform approach of haxe, because javascript/html are not native languages.
I've used both app.js and Phonegap for projects (Not with haxe, but I wrote the javascript on my own) and I wasn't very happy with the results. At bigger projects it becomes noticeable that the application still runs on a browser - it's slow, unresponsive and resource-intense.
Why not use haxe to it's full potential and compile your code to native languages like Java for Android and C++ for Desktop. I can recommend using OpenFl which has an abstract api and allows for easy deployment on all platforms. The problem with OpenFl is that it's made for game development, but not for ui's, so you might want to look for something else.
I'd suggest trying it since it can make your work a lot easier
If your click Project > new Project you might already be able to create an OpenFL project, otherwise you'd have to download it.
I've only ever been using Haxe with OpenFL, so I don't know how to correctly load fonts without.
Haxe is a programming language that can compile to different languages. For instance it can compile to Actionscript 3, javascript, C#, C++, java. The syntax is based on Actionscript 3, probably also why OpenFL picked up steam so fast.
Kha is build on top of Haxe ( although there is a native C++ lib also if you rather work in C++ ). Taking advantage of all Haxe powers allowing you to do cross game dev. Write code once, compile to many targets. One of the key signatures of Kha is that it completely abstracts graphics API's. If you compile to windows you get DirectX if you compile to android you get OpenGL-ES. For iPhone there is Metal support. HTML5 > WebGL. Etc. Kha allows you to do cross platform development far more transparent.
with that said:
>I don't do HTML5 or much mobile dev
Well considering that if you use haxe and kha you don't really touch any javascript, java or objectiveC code. Just like if you would use OpenFL, you just write your code in haxe and the compiler takes care of the rest. So if you made a desktop game it will also run in your browser or mobile device.
> Too much frameworks over frameworks for me!
Regarding Kha, not really, just download the kha repo and you can start cooking.
Ah, sorry it wasn't much help. :(
Regarding texture size, relaxguy mentioned in this page that it's device dependent. The haxeflixel documentation also talked about it in the mobile targets page.
I've never tried anything beyond 1024x1024 for texture size, so I can't tell you if going beyond 8000 is okay.
The Haxe equivalent to XNA would be OpenFL. It's the framework around which HaxeFlixel is built. Both are great. Several successful commercial games have been shipped using OpenFL, the most notable of which is Papers Please. http://www.openfl.org/
Haxe is also a very pleasant language to use, especially with OpenFL and its various build systems. And, knowing C#, Haxe should be pretty easy to pick up.
There is also go mention OpenFL. Written in Haxe you Can deploy to multiple targets including iOS and android plus many more. All native. And open source. http://www.haxe.org and http://www.openfl.org
You can't do it directly with the haxeflixel library but it can be done with openfl. Check out this guide it might be helpful: http://www.openfl.org/archive/community/programming-haxe/integrating-admob-openfl/
Talk is cheap - I'll believe this when I see it. "Next" was announced almost immediately after 2.0 came out back in May, and 2.0 itself was supposed to be a groundbreaking new version. Issues have gone unresolved for months because "Next is coming" is the answer for all of them. If after Next is released and people start finding bugs, another radically different new version is proposed, I won't be too surprised.
I'm not sure why everyone is downvoting this - it's a fact that the project has changed very rapidly, and many companies (including the one I work at, where I've unsuccessfully proposed using OpenFL before) are averse to that kind of risk. I'm not alone in thinking so. I like and use OpenFL but I don't think anyone would argue that it's very stable.
Since I worked with it for more than a year now, I'd go for a HaXe-based approach. With OpenFL/Lime.
You can build directly to HTML5 or flash, but also native windows, linux, mac targets (c++ or neko)
The interface is pretty similar to ActionScript 3, with a few HaXe specific syntax properties.
Some great games have been made in OpenFL, including Papers, Please by Lucas Pope.
It does involve a lot of programming, though, as it is not a specific "Adventure Game Engine".
I saw that you're looking to learn Haxe, in which I have quite a bit of experience. Nothing Haxe-related is particularly active on Reddit, but the Haxe Google group is a great resource, as is the OpenFL forum (if you're using OpenFL).
Honestly the best way to learn code, once you have the basics down, is to contribute to an open source project. Other people will be reviewing your code, providing feedback, etc. and you'll learn a lot by seeing how things are implemented already. I contribute to HaxeFlixel occasionally, and the experience has been invaluable, but YMMV.
Second level is too hard for me. The extra ball is not exactly extra.
If you like Flex you should take a look at OpenFL. It's the Flash API rewritten for Haxe which is a language similar to AS3.
The advantages are that you can compile your game to a lot more platforms than Flash. Inclusive mobile. It's also open source.