One room, many shows
Only a week since the last entry, which I think is a first for this project. Three chunks of work, and the third one is the one that mattered.

The editor stopped trying to be two tools. It had been drifting into a chart editor and a light-rig editor sharing one sidebar, and doing neither especially well. So I cut it down to the chart. You can't move, retint or resize the lights in there any more — you pick a room when you make a chart, and from then on the room is the room. That sounds like a loss and mostly isn't: the thing you actually spend your time on is deciding what each note does, and every control that wasn't that was in the way of it.
The note controls also moved. You pick a note from the timeline along the bottom of the screen, and its settings used to live at the far end of a scrolling sidebar on the left — so doing one thing meant working in two opposite corners of the screen. They're their own panel on the right now, right next to what they belong to. The timeline became something you can actually work in, too: you can zoom into it, drag it around, and step between notes with two keys. Before that a two-minute song was squeezed into a strip where the notes sat shoulder to shoulder and you couldn't tell one from the next.
Notes can do more than move things. Until now a note could swing a light or slide it somewhere. Now it can also change its colour, its brightness, or its size — so a beat can flare a spotlight white without moving it an inch, or grow a beam wider as the music builds. That last one turns out to read much better than movement for a big hit.
The other change here is smaller but was the single most annoying thing about authoring: a light that hangs pointing 55 degrees down at the floor used to need you to type "55 degrees down" into both ends of a reaction, or the light would swing off somewhere into the ceiling the first time it fired. The form takes the swing you want now — "20 degrees left of where it's pointing" — and works out the rest against wherever that light actually hangs. Colour and brightness are still typed in directly, because a colour isn't relative to anything.
And the big one: the room became a real place. This is the thing I should have done first. The game and the editor had never been showing the same room. The stage you played in was built into the play scene by hand; the room you authored against in the editor was assembled out of numbers in a text file. So you'd wire up a light show against one room and then go play it in a different one — and worse, the game was loading both, so half the notes were driving a rig the chart had never heard of.
A room is now just a room: an actual built environment, with its lights and lasers and all the scenery around them, that both the editor and the game load the same way. The room says which of its fixtures are grouped together — this truss, that laser pair — and a chart says what those groups do when a note lands. Which means one venue can host completely different shows, and that was the whole point. It also means rooms can now have proper scenery in them, because a room is a normal piece of art rather than a list of numbers. Up to now everything in this project had to be generated from code, which kept me honest early on and had started costing more than it was worth.
Running it for real immediately turned up a good one: the room loaded, the lights were all there, and absolutely nothing reacted to anything. The game was going looking for what the notes should drive slightly before it built the room they live in, so it found an empty stage every time and said so. It had been that way for a while and had never mattered, because until now the room was always already there.
Still rough: the default track that loads when you just press play still opens in an empty room, because I haven't converted it over to the new stage yet — you have to pick a chart by name to see anything. The editor is still deliberately ugly. And the whole rig is still white, which I keep saying I'll fix and keep not fixing.
More soon.