luxe alpha-3.0+bennpowell focus/recap

sign up sign in

This is a combination open-and-closed post! In dev log 10 and snow alpha-2.0 update post it was mentioned that luxe alpha-3.0 is largely complete, so this post is just going to wrap up what all has been happening before we move onto luxe alpha-4.0.

Benn Powell

This alpha is named after a long time friend and game developer with the same name (coincidence!?). As you should know, the alphas are named this way to remember and honour those that made luxe a possibility and Benn has been around helping me test it since before luxe - even as far back as the second generation of luxe in my old javascript/c++ engine.

Not only does Benn have a lot of great ideas for games on his site that he has made, but is also one of the early developers that I approached to use luxe for a bit of a bigger project. Benn (like the 0010 team) trusted that they'd be able to make their game effectively during the development and like with Westport, his game has come along really well too. You've probably seen it mentioned in the docs.

It is called Operator Overload.

The game includes a level editor, over a hundred levels, all manner of cool shaders and effects and is built using a lot of 3D subtlety. The game is quite close to polished up and done, and is a great puzzle game (like many of his other puzzle games offers a fun and formidable challenge at times).

You can follow the rest of the development on his twitter, https://twitter.com/bennpowell/

alpha sample

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/3_0_powell and contains the following concepts :

  • overriding the ParcelProgress class for custom loading screens
  • using Parcel states
  • using Parcel events

The code can be found here online.

outcomes

In dev log 7 (about the new renderer in development, embers) I went over the idea of luxe alpha-3.0 being about aligning phoenix a little closer to embers so that transitioning will be easier later. We did manage to get a lot sorted through, but also things that don't make sense to resolve because they'll cost more time than they'll solve.

We also managed to find and fix a number of bugs and outstanding issues, both old and new (from the update to snow). There are also a number of improvements to performance, both from the new update to snow as well as some phoenix clean up.

phoenix

The main idea wasn't to fix all the issues with phoenix, since it's going away, but to explore low hanging fruit which would make transitioning to embers easier. Some of the tasks were also created to help on the performance bottlenecks described in dev log 7 as well.

It's important for us to stick to the exploration approach here, to validate the amount of time we'd need to trade between phoenix and embers. There were a few things needed before embers can be worked on that gave us a window to explore on phoenix - this alpha has been good in giving us the time to answer in practice whether it's possible to fix certain things quickly or not. There would be no point in spending a month on phoenix fixes, when that time is better spent on embers.

It turns out, changing some structure would redefine how things worked, while easy to facilitate syntactic change, would define new patterns of usage. These pattern changes require testing, validation, and all of which disposable - all of which steals time from the actual renderer.

Going forward, it's less likely that phoenix will see any major improvement as is, and all focus on the rendering side will be on embers.

notable changes

Since many of the changes have already been in the repo for months there isn't much to worry about in terms of code change for this alpha that hasn't already happened.

Instead, I'll quickly mention some relevant things that may have been missed that are worth making note of. While a lot of the work this alpha was done by me or some of the core contributors, there are still at least 10 unique community contributors in the issues alone, not to mention on the chat who helped find and fix things. All contributions are valuable here, and I'm excited for alpha-4.0 where we are back to the regular focus sheet workflow where the community has more space to contribute code and learn as well.

There were 316 commits since alpha-2.0 milestone was tagged, including the upstream of snow alpha-2.0 so we have actually gotten quite a bit done this alpha. We're down from 50+ issues to just 26 at the moment, with a bunch of PR's closed and pulled in as well. I tagged a bunch of issues into the alpha-3.0 milestone, all of which are listed below in the focus sheet.

  • Lots of performance fixes + clean up for phoenix Geometry (esp construction time). This was mentioned around LD33
  • A letter_snapping exploratory flag for luxe.Text, for pixel perfect fonts
  • Added luxe.structural.Pool and renamed the old one to luxe.structural.Cache. This better reflects the intended usage pattern, as well as test/features/structural that demonstrates the new Pool usage.
  • Resolved High DPI handling via snow alpha-2.0
  • A couple of fixes on Parcel and ParcelProgress, some good code contributions from the community
  • Lots of bug fixes on phoenix and the engine overall
  • Bunches of clean up and removing legacy or old code and concepts

forward

That wraps up that alpha focus and we'll be diving into alpha-4.0 very soon. There's a few more dev logs and postmortems for THREES still to come. If you haven't seen the Patreon update post you should read it as well - some of the posts will land there first and then make their way here.

Thanks for the contributions, issues filed, discussions had and being a part of the community - like always - it's really appreciated.

You can follow the snõwkit community twitter, hang out in the chat and see what people are up to using #luxeengine or #snowkitcommunity. Don't forget to post here on snowkit.org as well!

--

focus sheet

milestone

Tags
luxealphafocuschangeschangenotesalpha-3.0alpha-3.0+bennpowell