luxe alpha-1.0+parrott recap

sign up sign in

Time to wrap this up! Quite a lot slower than I had intended it to be (I have been busy with work stuff) but the good news is that there's plenty of good progress anyway, and plenty of excellent contribution by the community.

You can read the original focus sheet post here

fast change
A lot of the changes have been in the repo already, but since some are pushed more recently in a large group - please be sure to report any issues on the chat or below in the comments, or file an issue on the repo.

guides, docs and test updates
Since some features are brand new and have details that include some caveats and usage patterns - it's important to have them all documented in one spot for use. This post is not the place for that, but the guides for these features will follow shortly after each focus sheet wraps up.

Similarly, the live code may mismatch the API documentation for a very short period of time while all the house keeping is done on the repo for a proper tag to be made. This also means that potentially, some of the tests to have mismatched code and don't build, but all tests will be updated and run against the latest code before the tag is added to the repo.

Full change logs will be posted, in the mean time the current place to find that would be the git commit log as well as the closed issue list marked off here.

community updates
People have been making some really cool stuff, some larger games have been showing at expos and I will be making a bit of a round up posts for this type of info in a post on this site following the focus sheet.


Thanks to the community contributors for their support! There are many others in the community that have helped out by finding and reporting issues with test code, asking questions and more on the chat (see below), but these are the code contributors for the first alpha.

NicoM1, whuop, anissen, JustSuds, KeyMaster-, jonathanhirz, smvilar

Unifill by Mandel59 is included with permission, a great contribution for easy unicode support. Also because of Typogenic influence, chman should get a mention this update as well.

notable new features

  • TextGeometry introduced, greatly simplifies raw text geometry use, and massively improves performance of text rendering (especially when drawing immediate style or updating every frame), as well as removes memory leaks from text immediate mode drawing.
  • TextGeometry, BitmapFont all properly handle unicode implicitly now
  • Text updated to leverage TextGeometry in full, changes text options
  • TextGeometry includes a completely new Signed Distance Field Text Rendering shader and features as an option (more details below).
  • Text wrapping convenience helpers by column (in Luxe.utils), including a regular version, and a knuth+plass algorithm (wip) version
  • Text wrapping by bounding rectangle in BitmapFont
  • Trace console uses wrapping now
  • Initial work on proper window/view resizing events
  • Initial work on refactoring options and fixing connection between Visual and it's Geometry
  • Work on the rendering context flags for more explicit control over the OpenGL context you require on desktop/mobile targets.
  • Included Unifill in luxe.utils package for use with unicode strings. See the readme on the unifill repo for what that means

notable code changes

  • All forms of text size options changed to point_size, this will complain about "Int should be Vector" during compilation now
  • If you set depth_bits for 3D or 2.5D rendering on the WindowConfig, it is now under the RenderConfig (i.e config.render.depth_bits). Currently you also need to set config.render.depth = true; as well as the depth bits. In the near future, depth_bits will falls away, and only depth would be required.
  • Removed legacy JSON parser from the core and used haxe.Json in place. This should have no impact on code, but worth mentioning.
  • Default Font changed name from cabin to default. In sublime text, this means if you see Error: Resource file not found : luxe/defaults/fonts/cabin.png in the Code Completion your hxml for the project is outdated. In sublime text this is fixed by simply setting the active project again, which refreshes the hxml. This also happens if you modify/save the flow file that was set as active.

potential difference

  • Visual has some things commented out (namely shader+texture inherited from the parent visual onto the geometry...this relationship is incorrect and needs reworking. This is a wip, but shouldn't affect much unless you were explicitly relying on this upside down behavior.
  • New bitmap font default shader with some complexity and specificity may introduce problems at first on some targets - so far I have tested on iOS/Android/Mac/Windows/Linux/Web and ensured it worked on each, but if you find shader errors please report it with details on where. Work for this sort of thing has been started using this, which will be integrated soon.

notable test updates

Things you can see updated in the tests/ folder worth seeing from before.


whuop added the code for the tile offsets in isometric to complete that feature. What it does is when you query a tile -> world coordinate, you can ask for an offset, like "I want the middle of the tile" or "I want the offset to be on the top right corner". With the finalizing of that, whuop added the code to display these offsets in tests/features/tiles, you can see it by running the test and moving the mouse over the tiles. You should see a green circle displayed at the closes tile offset, like this :

text and text2

The text feature test added a bunch of different updates to test various different things - and a second test to test the bounds and post-creation update flags specifically.

Community chat

There is a snowkit community chat on Gitter, where you sign in with your github profile. There are public logs and you can ask questions and get answers, follow development more closely, and get help. There are already nearly 70 users, which is a great start for no real announcement of the chat.

It is very important to note that the community chat follows the same policies and rules here and is a very focused place - it is for discussion for snowkit users only. Off topic chat is not good for this space. People come from various timezones, scrolling through many lines of unhelpful discussion removes value from the purpose of the chat. Please bear that in mind, but questions and discussion are welcome.

As with this site - the chat is a positive, friendly, helpful place. It is for everybody.

Important note on "using snowkit"

Some people have been using the term snowkit as a name for the technologies they are using to build stuff with. This is actually quite incorrect - and important to understand the difference! You are a part of the snowkit community. We are snowkit, the libraries are snowkit, all of them separately. No specific combination or group of libraries should be called snowkit.

snowkit is a collective, a group of developers and libraries.
You cannot use snowkit to build something. It is not a library. This is similar to saying that you use the "Haxe foundation" to build projects. Actually, you would likely be using Haxe, or another library maintained by the parent entity. Similarly, you are using luxe, or perhaps snow.


Keep an eye out for the docs + guides updates, I will post a post on this site, on twitter and in the chat when they are updated. Around the same time you will see the official alpha-1.0 tag be marked off as a 'release' on github, with a full in depth change list with it.

Until that time, we will test and prod the new code in the repo and update the docs, the guides and prepare the next focus sheet.

Also look out for a post about the focus sheet post mortem, and things that might change slightly to ensure more fluid workflows and less friction during development.

future focus sheets

The next focus sheet will also include a bit of a look ahead at the focus sheets after it, so that more issues can be brought up ahead of them, and that people are more aware of the things they need to worry about or not.

Thanks again to all contributors and community discussions, finding issues and reporting them with really useful test code - it really helps move everybody forward.