One nice reusable abstraction my LÖVE apps have all converged on is an immediate-mode button primitive. I draw all my buttons each frame along with all the callbacks they need, and a couple of framework-y lines of code in the mouse-press callback is all it takes to get them working. Last night I realized (while poking around in the LÖVE forums) that my hacky sliders in Lua Carousel's settings admit a similar abstraction (even better than the one there). The only additional complexity is it needs a couple more lines in the update callback that continually refresh the backing value as you drag the slider.
The Game of Life is one of my favorite programs, but I've never tried to go deep in learning about it, and as a result I still learn fairly obvious (with hindsight) things about it. This time I realized two things:
I don't need to keep checking if a cell is in bounds. Just don't update a border of cells!
I don't need to clean up the new array at each time step! :facepalm:
spell-cards.love (exercising my phone's microphone for the first time)
Both qualified successes. I didn't uncover any bugs, but the programs were 250 and 350 lines long, which starts to feel too long for my implementation of scrollbars.
From here on out I only want to work on UI polish and accessibility. Let's see how long it can stay running without incompatibilities that require upgrades.
Achievement unlocked: I've built an app large enough that it crashes my programming environment that puts all the code on a spatial surface.
Or spread out enough, rather. It's not really about lines of code, just how much area the code occupies.
The problem: I do this snazzy initial animation (see video) that takes in the whole thing before zooming back in somewhere.
That animation works by drawing the whole surface to an in-memory canvas before transforming it. Turns out drawing to a canvas still uses the video card, and I don't have enough video RAM for a virtual "monitor" of this resolution.