luxe setup help, learning resources

sign up sign in

This is short and succint guide for ensuring you are ready to dig in.


Resources

code examples, tutorials etc

You can find a plethora of resources, games, source code, examples and blog posts collated by anissen for the community right here :

https://github.com/anissen/awesome-snowkit

Setup Requirements

Basic requirements

You need to install haxe 3.1.3, from http://haxe.org


flow

There are no requirements for flow except Haxe.


snow

If you intend to use snow directly, you will need

web

no dependencies except flow

native
  • Windows - VC++ 2013.
  • Android - Android SDK, Android NDK setup, and then read below
  • Mac & iOS - XCode and Command Line Tools
  • iOS - ^ + iOS SDK
  • Linux - gcc/g++

You must download the native binaries at the moment, read this, and get them here :

http://build.luxeengine.com/snow/

 

*Previously VC 2010 was supported but this is being phased out. VS 2013 is better, includes platform SDK, 64 bit support, proper debugging tools, it's free and consistent where as VC2010 express was broken by default, and is incompatible with 2013.


luxe

luxe depends on snow + flow above. So it requires their dependencies plus :

The setup guide for luxe has the rest of the steps needed.



Android specific setup

When setting up for android, you will want to tell flow where to find the SDK, and ant build tools for it.

The NDK and others are configured by HXCPP, usually stored in [user home directory]/.hxcpp_config.xml and often if you have setup the NDK by the official Android guide - should be alright. If you have errors regarding the Android NDK path, you should open the hxcpp config xml file and tell it where to find the NDK. For example, <set name="ANDROID_NDK_ROOT" value="C:\your\android-ndk-r9d" />.

For the flow specific path setup, add a flow config node to your project flow file. It should look like this :

Note that on Windows, ant is a batch file, so it requires ant.bat to work.

{
    flow : {
        build: {
            android : {
                sdk : '/your/path/',
                ant_path : '/your/path/ant'
            }
        }
    },
    project : { ...

}

Slightly more info about this

Android emulator quick help

https://snowkit.org/2015/02/13/using-the-android-emulator/

Android “release” builds

To do android store submissions, you have to switch to a "release" type of build. This is in the flow project under project.app.mobile.android.build_type.

Since you might switch back and forth, it's easier to put it behind a define, and use that.

For example, when building with flow build android --d android_release, or putting defines:['android_release'] in your project defines, the following conditional will set the information needed for the builds:

  if:{
    android_release:{
      app:{
        mobile:{
          android: {
            build_type : "release",
            keystore_path: "my.keystore",
            keystore_alias: "myalias"
          }
        }
      }
    }
  }

android key store passwords

Since you are providing a keystore for android, you need to be able to provide the password. Currently, you can't pass the keystore password via command line, because of how it's set up. Also, because android build chain asks for the password on command line in plain text without masking, which is not good at all.

So to give the password, a separate android build .properties file is used. DO NOT check this password file into a repository - be very aware that android build toolchain makes you put a password in a plain text file! For this reason, it's not stored in the default properties files, or passed through project.flow or anything like that.

use a passwords.sensitive.properties file
The default android project will look for a file called passwords.sensitive.properties in the project build folder. To provide this file, you use a project.build.files node which will copy it from your project, allowing it to be added to .gitignore (or similar). The docs cover the files node, but if you put your file in the root folder of your project and call it "passwordfile", you can provide it like this :

build: {  
   files: {
        keystore_things : 'passwordfile => project/passwords.sensitive.properties'
   }
}

And inside the properties file:

#passwords.sensitive.properties file, do not commit to repo, treat this file with care
key.store.password=yourpassword  
key.alias.password=youraliaspassword  

Rough edges

There are rough edges around setup, especially for fickel platforms like Android - These will be rounded off closer to the end of alpha/beta.


All feedback and support is much appreciated!

Tags
helpsetup