Leet Haxe
For a while now I've wanted to talk a bit about Haxe. I was just never quite sure what to say about it. I'm still not sure what I'm going to say now, but let's get this show on the road.
Haxe is a toolkit based around a programming language of the same name that can be compiled into a wide assortment of target platforms. At the time of writing, the platforms Haxe supports include JavaScript, C++, Java, C#, Lua, PHP, and Python. Hell, you can even make Flash applications with it, if that's what floats your boat. There are more platforms yet, but I'm not entirely sure what some of them are. To top things off, it's all open source.
Now that sounds cool and all, but let's talk some practicality. Currently, I'm not all that interested in more than half the supported platforms. It being open source isn't even much of a turn on for me either, though I have taken a peek or two when I'm curious about some implementation. So what's the big deal about this thing? Glad you asked, hypothetical reader, but to answer that question we need to do some story time.
I was first introduced to Haxe at an internship during my third year at RIT. I was normally working on a project in C++, but was pulled onto a different project for a month or so. This other project was a pair of games, a mobile game programmed in ActionScript and a web game programmed in Haxe. I knew neither language at the time, but I'm a quick learner and got to it. I was mostly doing bug fixes and looking over the code bases, but I really enjoyed learning and working with Haxe.
I had just formally learned JavaScript during my previous semester and the similarities between JS and Haxe were very striking. In fact, I recall telling a friend that Haxe was 'everything I wished JavaScript was.' It was Strictly typed, had Classes and inheritance, and was a compiled language. Best of all, I could target web, desktop, or mobile from the same codebase without the headaches of building JS standalone or using tools like Unity. It basically offered me everything I wanted as a game developer all wrapped up in a syntax that was the love child of languages I knew well, like C# and JS (I later learned the syntax was essentially the same as ActionScript, but whatever).
Once I finished my internship, I took all this excitement and enthusiasm towards this new technology... and I did next to nothing with it. Nothing of note, I should say. I did play around with it a bit. Followed a few tutorials and prototyped some small ideas. Ultimately, however, I only really used it to make a few silly applications, such as an app that let me smack a picture of a friend of mine. The cursor was a hand and when dragged over his face it made a sound effect and a comic book "POW!" appeared. And through the power of Haxe I was able to build it for desktop platforms and the web! That way I could show it during Skype calls when sharing my screen or pull it up on my phone when on the go. Truly a wonderful use of this technology.
After graduating from RIT, I started using Haxe in earnest. The first true 'game' I attempted to make with Haxe was actually if(adventure), which is also where I truly started to appreciate its capabilities. Or at least its capabilities to replace JavaScript in my workflow, while also allowing me to support multiple platforms with ease. The cross-platform capabilities of Haxe are also what revitalized Served, a cross-platform game networking framework I have wanted to build for some time now. And last, but certainly not least, I chose Haxe as my JS alternative to build an HTML5 ARG, ARventure.
The kicker is that Haxe also benefits greatly from the community that has built around it. Open source technologies seem to bring people out of the woodworks to provide awesome libraries, and Haxe is no exception. Similar to how Node.js has npm, Haxe has haxelib. There are a whole lot of great libraries available to make life easier such as OpenFL for rendering, Actuate for tweening, hxmath for math of the hx variety, and Nape for physics. And many of these libraries have their own communities and great support. Though there are some, like the HaxeFlixel engine, that are incredibly popular and seemed great... up until I actually used them. But that's a conversation for another time.
Haxe is a toolkit based around a programming language of the same name that can be compiled into a wide assortment of target platforms. At the time of writing, the platforms Haxe supports include JavaScript, C++, Java, C#, Lua, PHP, and Python. Hell, you can even make Flash applications with it, if that's what floats your boat. There are more platforms yet, but I'm not entirely sure what some of them are. To top things off, it's all open source.
Now that sounds cool and all, but let's talk some practicality. Currently, I'm not all that interested in more than half the supported platforms. It being open source isn't even much of a turn on for me either, though I have taken a peek or two when I'm curious about some implementation. So what's the big deal about this thing? Glad you asked, hypothetical reader, but to answer that question we need to do some story time.
I was first introduced to Haxe at an internship during my third year at RIT. I was normally working on a project in C++, but was pulled onto a different project for a month or so. This other project was a pair of games, a mobile game programmed in ActionScript and a web game programmed in Haxe. I knew neither language at the time, but I'm a quick learner and got to it. I was mostly doing bug fixes and looking over the code bases, but I really enjoyed learning and working with Haxe.
I had just formally learned JavaScript during my previous semester and the similarities between JS and Haxe were very striking. In fact, I recall telling a friend that Haxe was 'everything I wished JavaScript was.' It was Strictly typed, had Classes and inheritance, and was a compiled language. Best of all, I could target web, desktop, or mobile from the same codebase without the headaches of building JS standalone or using tools like Unity. It basically offered me everything I wanted as a game developer all wrapped up in a syntax that was the love child of languages I knew well, like C# and JS (I later learned the syntax was essentially the same as ActionScript, but whatever).
Once I finished my internship, I took all this excitement and enthusiasm towards this new technology... and I did next to nothing with it. Nothing of note, I should say. I did play around with it a bit. Followed a few tutorials and prototyped some small ideas. Ultimately, however, I only really used it to make a few silly applications, such as an app that let me smack a picture of a friend of mine. The cursor was a hand and when dragged over his face it made a sound effect and a comic book "POW!" appeared. And through the power of Haxe I was able to build it for desktop platforms and the web! That way I could show it during Skype calls when sharing my screen or pull it up on my phone when on the go. Truly a wonderful use of this technology.
After graduating from RIT, I started using Haxe in earnest. The first true 'game' I attempted to make with Haxe was actually if(adventure), which is also where I truly started to appreciate its capabilities. Or at least its capabilities to replace JavaScript in my workflow, while also allowing me to support multiple platforms with ease. The cross-platform capabilities of Haxe are also what revitalized Served, a cross-platform game networking framework I have wanted to build for some time now. And last, but certainly not least, I chose Haxe as my JS alternative to build an HTML5 ARG, ARventure.
The kicker is that Haxe also benefits greatly from the community that has built around it. Open source technologies seem to bring people out of the woodworks to provide awesome libraries, and Haxe is no exception. Similar to how Node.js has npm, Haxe has haxelib. There are a whole lot of great libraries available to make life easier such as OpenFL for rendering, Actuate for tweening, hxmath for math of the hx variety, and Nape for physics. And many of these libraries have their own communities and great support. Though there are some, like the HaxeFlixel engine, that are incredibly popular and seemed great... up until I actually used them. But that's a conversation for another time.