this focus sheet has come to and end!
- Read the recap here
Here we go! The first named alpha tag for luxe is upon us. I have tried to come up with some lower hanging fruit for people to get some contributions in - and with the first alpha there is a lot to figure out in terms of how we go about this so we will dive straight in.
As mentioned in about alpha focus - each alpha is going to be named after notable contributors that made luxe (and snow, flow and the snowkit collective) possible at one point or another.
The first alpha is named after Jon Wayne Parrott.
Years ago (2006? I have no idea), I was working with a different c++ tech stack - I met Jon hanging out on an IRC channel, and he became a good friend and my development sounding board. Whenever I had a code design challenge or issue to resolve, I could rely on him to sanity check my ideas and poke holes in everything I did. The same applied for snowkit.
At the time we met, he was working on an experimental 2D rendering engine called Phoenix and after redoing it - it wound up being a slimmed down rendering focused framework called phoenixCore. I really liked it, so I used it for a previous engine. Once I moved over to haxe, I loved the design of phoenix and I ported it over and started solving the issues we had run into along the way - so it's quite different from the original.
You'll notice the rendering backend in luxe is also called phoenix, this is where that comes from.
Jon has created many things - his current focus is an excellent Google Cloud Platform toolkit used around various large scale applications called Ferris. The latest version ferris 3 was released as alpha recently.
As mentioned, the first focus sheet is related to more common text issues and refactoring and some of the annoyances with the way tiles are drawn. One example is that tilemaps need an option for static layers to be a single geometry, so that each tile is not separate. Another example is that font options are semi flexible, but not flexible enough (like the alignment helpers and everything are all in one function internally, instead of exposed as helpers).
The list is shown below, and will change slightly in the time frame.
Each named alpha focus has a simple sample to address some of the frequently asked questions that aren't written as guides (yet) or don't even fit a guide - just a fun and simple practical code example to learn from.
click first to enable key input in the iframe
Click to run sample
The above example can be found inside the repo at
samples/alphas/1_0_parrott and contains the following concepts :
- rendering the entire default render path into a texture
- applying a shader to this render path
- simple state use to drive rooms/menus/states using
- "transient"/stacked states using
The code is heavily commented and to the point, so be sure to check that out because it mentions some pros and cons to things shown. The code can be found here online.
To contribute to a focus sheet
- read "focus sheets: how they work" if you haven't
- find the
focus sheetissue in question
- pick tasks that you want to help with, and commit to helping
- comment on the focus sheet issue on github in this format :
- #123, #234, #456 (an issue number - see below for numbers)
- //other comments/info (I need help, I have done this already etc)
- after roughly 7 days of allowing people to pick tasks, the focus sheet issue will be locked
- discuss features/suggestions/ideas/unlisted issues on
note that some tasks are still going to be trickling in over the next few days!
alpha~0 ish update log
In case you haven't been following the repo too closely, quite a lot of change and fixes and contributions have been made up until this point. [This is not a complete list! The complete list is here on github. These are just the most important notes of what has been changed recently, and to mention contributors that have been helping out. There have also been quite a few clean up and performance commits in there as well ommitted for brevity.
During the alpha it is still a good idea to check for commits and update regularly, and make sure you update flow and snow if they aren't up to date. Now that each alpha is named and there are milestones it will be easier to follow if you prefer a slower rate.
States; add missing destroy concepts to state, state machine. Added remove, kill and destroy (get em!) to machine and added destroy() to state. implement ondestroy in the state class to listen for when any of the situations (including shutdown etc) happen) commit
ColorHSL; Bugfix in ColorHSL.fromColor() (thanks le-doux) commit
CompositeGeometry; Removing geometry from CompositeGeometry unlinks their transforms. Added test project for this features. (thanks KeyMaster) commit
Debug; Log; fix default native trace as Sys.println doesn't work on android? (thanks Norgg for report) commit
Transform; MINOR CHANGE; transform is only decomposed automatically if flagged. read commit log for more commit
Batcher; add empty() starting construct for #119 commit
load_from_bytearray, and remove unnecessary width/height params from
load_from_bytearray(thanks netgrind for report) commit
load_from_pixelsfor already decoded pixel bytes (thanks netgrind for report) https://github.com/underscorediscovery/luxe/commit/ada6a5469dcf188061b66361254d0950e3eec28f)
Utils; Maths; add lerp and weighted average functions commit
States; fix null enter param and add remove leave_with convenience (thanks whuop for report) commit
::MINOR BREAKING CHANGE:: TilemapVisuals; -> TilemapVisual commit
Tilemap; add batcher/depth/group flags for controlling tile map rendering easier short term (thanks @Dvergar for report) commit
BitmapFont; fix load timing issues where font won't draw in web vs native commit
States; add enabled query by name for checking enabled state without the state instance commit
SpriteAnimation; fix frame size uv defaults not being assigned for
set_frameas well as animation playback. fix #138 (thanks smvilar for report) commit
Parcel; change text/data types to include async flag and add a large text file to the test for web page crashing text assets commit
API; make sure text/data/json assets are not assuming sync and add async flag, allowing web requests to be async for large assets commit
Batcher; Added function to set blend equation (thanks KeyMaster) commit