Hello dear developers!
Today I want to tell you how to dive directly into the creation of a game so that you can forget about platforms, sdk, compilers, builds, deployments and other ide. There is a way to simply write code in a modern high-level language and test it quickly on all platforms supported by your host axis.
So, besides C ++ and C #, there is also a language that makes it possible to develop cross-platform games -
haxe .
Haxe is a language, compiler for it, cross-platform standard library and system of additions, extensions, libraries -
haxelib .
')
The language is most similar to ActionScript and C #. The most important and strong point for me is the ability to compile code written in haxe, into code in other languages, such as C ++, JavaScript, C #, Java, PHP and others. And at the same time it is possible to make special access classes (bindes) to libraries in the language into which haxe code is now compiled.
But the development on Haxe would not be so attractive if it were not for the
snowkit .
snowkit = flow + snow + luxe + developers
Snowkit is not only a collection of libraries, utilities and other tools for creating games, but also a community that develops and supports this project, uses and is interested in them. Snowkit consists of
flow (project management and assembly),
snow (low-level system api abstracted from the platforms),
luxe (high-level game engine, while 2d).
Let's see how it is to develop on haxe-snowkit using the example of luxe.
Installation and Setup
Install the Haxe toolkit from the official
site . Windows was used to write this article, but for other desktop systems everything described should not be much different. If you use the installer for windows, then he will add the necessary paths to the path.
For windows development, you must have Visual Studio 2010 or higher installed, and you can use Express. I use
Express 2013 for Windows Desktop from here . If we want to develop for androyd, then we must have a corresponding minimum set (android sdk, android ndk, apache ant, jdk). Also, the system must contain the corresponding environment variables:
JAVA_HOME and
ANDROID_NDK_ROOT .
Important :
JAVA_HOME should indicate the path to jdk, not jre.
Now we will prepare and check our working environment. First, check that haxe is installed and working (in the console):
haxe -help haxelib
Now install hxcpp through the extension system built into haxe:
haxelib install hxcpp
hxcpp is support for compiling into native code for different platforms using different compilers.
Only to verify that hxcpp is up and running:
haxelib run hxcpp
Set the flow, snow, luxe:
haxelib git flow https://github.com/underscorediscovery/flow.git haxelib git snow https://github.com/underscorediscovery/snow.git haxelib git luxe https://github.com/underscorediscovery/luxe.git
Configuring flow:
haxelib run flow config build.android.sdk "path\to\android-sdk-windows\" haxelib run flow config build.android.ant_path "path\to\apache-ant-1.9.4\bin\ant.bat"
Running a test project
Next, in order to make sure that the current system works, we will copy the / haxe / lib / luxe / git / samples / alphas / 1_0_parrott directory
to any other directory convenient for tests. And now in the console in this directory:
haxelib run flow run
If there were no errors in the installation or compilation, then a window should appear with the application running.
On different systems, it might look like this:
haxelib run flow run windows haxelib run flow run linux haxelib run flow run mac
But the fun begins here:
haxelib run flow run web
Flow Not only will it compile the haxe-code correctly in JavaScript itself, but it will also prepare resources, create a page, launch a test web-server for your system and open a browser on this page. And in the same way for android:
haxelib run flow run android
The native android code is compiled, the necessary files for the android project are copied, resources, icons, a project is created, then the project is assembled with the help of android sdk and uploaded to the device.
Oh! It was really great! You do not find ?!
Sublime Integration
But what makes development even more pleasant is the integration with Sublime Text 3. Founder of all snowkit,
Sven Bergström (
Sven Bergström ) offers two options:
The advantage of the second option is its cross-platform, but it is closed and paid software. Just because Sublime pleased me for the time being, I tried to start with it and, perhaps, I was not mistaken. It is assumed that Package Control is installed
from here .
Enter in the command pallete:
Package Controll: Add Repository https://github.com/underscorediscovery/sublime_haxe_completion Package Controll: Add Repository https://github.com/underscorediscovery/sublime_flow Package Controll: Install Package sublime_flow Package Controll: Install Package sublime_haxe_completion
Next, in the open Sublime, add the directory with the project, in the root of which there is a .flow file (project.flow or any other convenient file name), and open this file. Now the
“Set as current flow project” item should appear in the context menu of the main Sublime work area.
It remains only to press Ctrl + B. Now in the context menu of any .flow or .hx file there will be a
“flow status” item, with the help of which you can change the build and launch settings of the project, for example, debug, verbose, the target platform. In my case, these are windows, android, and now, thanks to flow-snow-luxe, also the web.
But it's worth putting a couple of virtual locks, installing the necessary tools on them and opening the sublime project - I'm a super-mega-indie windows-linux-mac-android-ios-webgl game developer! Hopefully, after this article, I’m not the only one.
Links
»
Haxe.org
»
Lib.haxe.org
"
Snowkit.org
PS For me, acquaintance with haxe and snowkit began with
zzzzzzerg translation
posts :
one and
two . Thank you so much for showing this thing.
Update 1. Corrected the build command and run the application. They were:
haxelib run flow haxelib run flow web
And there should have been:
haxelib run flow run haxelib run flow run web
Update 2. Noted the importance of the path to jdk in
JAVA_HOME .