Skip to content

v0.19.0

Latest
Compare
Choose a tag to compare
@davesmith00000 davesmith00000 released this 07 Mar 08:54
· 4 commits to main since this release

The UI Framework is Dead, Long live the UI Framework!

The previous release, 0.18.0, introduced a new UI framework / system to Indigo. It had taken most of last year to get working, and honestly it was a long hard road to reach a point where it looking kinda-plausibly-shippable.

Unfortunately, the new UI framework did not survive first contact with the real world, and major issues quickly became apparent with the design. The root cause of this was that the UI system had been originally designed as part of the Roguelike-Starterkit, and while it worked great in that context, the design wasn't flexible enough for other types of graphical layout.

However, many of the issues have now been resolved, and a set of UI examples can be found with working code and live demos, in the docs.

A bonfire of 'nice ideas'

This release also removes a number of features that seemed ok but had serious flaws.

TextBox has been removed

TextBox was a stinker. The idea was to provide a way to quickly put text on the screen without too much ceremony for the purposes of debugging and temporary graphics. Also at the time, we had no mechanism by which to include arbitrary fonts in games. Textbox hit the brief, but came with hidden costs:

  1. Ugly rendering with no way to make it better. This was because under the covers it was using Canvas API, and that has no way to disable anti-alising.
  2. Performance. Textbox was very, very slow. It was ok for the occasional text instance but using it for a lot of labels was a framerate killer. This was because it required a lot of side effecting calls to canvas api, and they were not quick.
  3. Not a portable solution. There is a dream, one day, of running Indigo outside the browser (JVM or native) and text box was wholly incompatible with that notion!
  4. Engine complexity. To make text box work require a lot of hacky processes in the engine, and removing it goes some way towards making the rendering pipeline more sensible.

Depth has been removed

The whole notion of 'Depth' has been removed, but this is not such a big deal as it might seem.

Depth in indigo was weird and caused people a lot of problems, because how it worked and how it behaved along side other depth control mechanisms really wasn't clear. Additionally, the engine had to sort the whole scene on every frame just in case you were using depth.

Depth now is simply 'the order in which you present elements'. So if you want to sort your on-screen elements for some reason, you just have to do it yourself! ...which in the grad scheme of things a) isn't difficult, b) is much more efficient and c) is easier to reason about.

Old UI components have been removed

Now that we have a new UI system in place ...one that works... the old standalone components were just causing confusion, and have been removed.

Better Font generators

Finally I wanted to mention that the Font embedding / generators have been improved. Since we no longer have TextBox, using Text is now the only way to get text into your games, and the font embedding needed some improvement.

A working text example with a live demo can be found in the docs.

...and more!

There were many more smaller fixes and improvements made in this release, see below!

Big thanks!

...to our contributors! Your efforts are greatly appreciated. 🙏

What's Changed

New Contributors

Full Changelog: v0.18.0...v0.19.0