Apr 2023

  • Released Astro, a sprite container library for LÖVE.
  • Updated RText (0.1.0 -> 0.1.1):
    • Added Block Merge mode, which should result in smaller Document sizes (at the cost of more overhead during creation).
  • ProdUI:
    • I split Vacuum, ProdUI’s default skinning system, into multiple files. It was one 2000-line file that provided skin definitions for all built-in widgets. With every new widget, it became increasingly confusing and difficult to navigate. The main file is down to about 460 lines now, with the rest migrated to 17 additional source files (one for each skin; one for generic shape rendering).
    • Cleaned up some longstanding problems with the tabular menu, formerly called the chart menu. (More like cursed menu.)
      • Re-order columns by clicking and dragging
      • Toggle visibility of columns with a right-click context menu
      • Added some very basic icon support to cells
      • Minor improvements to sorting by ascending / descending for each column.
  • Some stuff that isn’t ready for release this month:
    • Worked on procedurally-generated texture concepts, intended for scalable graphical elements in ProdUI.
    • Wrote another Lua table serializer for storing draw commands, using nested parentheses similar to S-Expressions.
    • Wrote a basic pseudorandom number generator so that brush-strokes and objects have stable placement, even if math.random or love.math.random change. (You wouldn’t want to use it in game logic, let alone anything else. But the output for any given seed is stable, and that’s all that matters.)
    • Wrote some basic gradient shaders: radial, linear, linear+absolute value (like a pole), square/diamond. Adapted the box blur shader from Moonshine. Adapted a debanding noise shader from this tutorial.


A semi-functional file browser, using the tabular menu widget. The ‘folder’ and ‘paper’ icons are drawn with calls to love.graphics.line(), which is why I started looking into a procedural texture system.


A sorting test for the tabular menu widget. The pop-up menu controls which categories are visible.


An experiment in making procedurally generated textures that wrap. The GIF steps through nine consecutive seed values.