Devlog #3 - The timer became a line


It's been a while. The project kept moving, but most of the last two months went into deciding things rather than building them, and decisions make poor screenshots. I also took a couple of weeks off without a computer, which I recommend.

At the end of the last devlog I said something felt off about the pacing around the sweep timer. It took longer to work out than I expected, and the answer turned out to be that the timer was the wrong object entirely.

What a timer bar actually does

The sweep used to be a bar that filled up. When it was full, the whole board resolved at once: every match, everywhere, in one beat.

Watching people play, the problem was not the resolution. It was what happened before it. Players would stop and wait. They'd hold a quad, look at the bar, and not place anything until the board had cleared, because placing into a board that was about to change wholesale felt like guessing.

That's a flow problem, and it's the worst kind: nothing looks broken. The game just quietly becomes turn-based against its own clock.

The line

So the bar became a line that crosses the grid and resolves matches as it passes over them. Lumines does this, and it solves the waiting problem by removing the moment there was anything to wait for. Resolution is continuous now, so there is no "after" to hold out for.

Two consequences I did not anticipate, both good:

The progress bar could go. The line's position is the countdown. Having both was saying the same thing twice, in two places, one of which was nowhere near the action.

Where you drop started to matter more than when. A quad placed just ahead of the line resolves almost immediately. The same quad placed just behind it waits a full pass. That was always technically true. Making the clock visible on the board is what turned it into something a player can actually play with.

The part that took a session to see

Then a subtler thing surfaced, on non-square boards.

The pass had a fixed duration. The line always took the same number of seconds to cross, whatever it was crossing. That sounds harmless. It isn't: on a 5×3 board, rotating it meant the line covered three cells in the time it used to cover five. Same seconds, fewer columns. The short orientation wasn't a different rhythm, it was strictly harder.

Which meant grid rotation, the verb the whole game is built on, had a correct answer and a wrong one. There was no decision to make.

The fix is small and the reasoning wasn't. The line now has a constant speed, expressed in seconds per column, and the pass duration is whatever falls out of that. Rotate a 5×3 board and the line doesn't speed up or slow down. What changes is the period: the short axis sweeps often, cleaning up small groups and keeping the board tidy. The long axis sweeps rarely, letting big groups build, and letting the board fill up while they do.

Same button. Opposite strategies. That's the thing I was trying to get to.

And then the same bug, through the back door

One more, because it's a good example of how a fix can be incomplete in a way that looks complete.

There's a pressure mechanic: play too passively and the game eventually drops a quad for you. It counted per pass. But the long orientation gives fewer passes for the same amount of play, so after fixing the speed, the forced-drop rate was still lopsided, just for a different reason.

It now counts over a fixed window of columns crossed. On a square board a window is exactly one pass, which is how I could ship it knowing it changed nothing for the existing levels.

What I don't know yet

All of the above lives on non-square boards. And here's the honest part: I have barely played them. There's one in the new build, called Tempo, and until people play it, "rotation is a tempo decision" is a hypothesis I find convincing rather than a property of the game.

I did finally sit down with it to record the clips for this post, and about ten minutes in it turned up a bug in exactly this: rotate mid-pass and the line ran clean off the edge of the board, or stopped halfway across it going the other way. Fixed in this build. Ten minutes of actually playing the thing found what a month of reasoning about it did not, which is roughly my point.

One thing in particular I can't judge alone. Rotating mid-pass doesn't restart the sweep: the line keeps its place in the run, so part of the board can end up behind it and wait for the next pass. That's deliberate. I don't know whether it reads as a rule or as something going wrong.

If you play it, the feedback form takes about three minutes. That question is in there.

One thing you'll notice that isn't finished

The menu has three entries now, and one of them is greyed out. Endless is a mode where the difficulty climbs for as long as the run lasts, and it's what I'm building next. It isn't playable yet.

I'd rather ship the entry switched off than pretend the plan doesn't exist. No date, because I don't have one.


Get PRJ-CQUADS (codename)

Leave a comment

Log in with itch.io to leave a comment.